質問があります。
RDF ファイルを Jena TDB にロードしようとしています。
私はこのコードを書きました:
public void store(){
String directory = "C:\\tdb";
String source = "C:\\file1.rdf";
String source1 = "C:\\file2.rdf";
Dataset dataset = openTDB(directory);
Model tdb = loadModel(source, dataset);
dataset.addNamedModel("File1", tdb);
Model tdb1 = loadModel(source1, dataset);
dataset.addNamedModel("File2", tdb1);
queryTDB(tdb, dataset);
queryTDB(tdb1, dataset);
tdb.close();
tdb1.close();
dataset.close();
}
public Dataset openTDB(String directory) {
// open TDB dataset
Dataset dataset = TDBFactory.createDataset(directory);
return dataset;
}
public Model loadModel(String source, Dataset dataset) {
Model tdb = dataset.getDefaultModel();
FileManager.get().readModel( tdb, source, "RDF/XML" );
return tdb;
}
特に、2 つのファイルがあり、これらのファイルを Jena TDB にロードしたいと考えています。「addNamedModel」を使用してモデルに名前を追加できることをインターネットで読みました。その際、上記のコードに「File1」と「File2」という名前を追加しました。
今、このデータセットにクエリを実行したいので、次のコードを書き込もうとしています:
public void queryTDB(Model tdb, Dataset dataset) {
String queryStr = "SELECT * { ?s ?p ?o }";
Query query = QueryFactory.create(queryStr);
QueryExecution qexec = QueryExecutionFactory.create(query, tdb);
/*Execute the Query*/
ResultSet results = qexec.execSelect();
ResultSetFormatter.out(results) ;
qexec.close();
}
このコードは機能しますが、「File1」(または「File2」) という名前のモデルのクエリ結果のみを取得する方法を知りたいです。実際、そのように記述されたクエリを使用すると、両方のモデルの結果が得られます。
どのように私はそれを実現することができますか?