2016-05-28 7 views
0

以前に格納したJenaという名前のモデル(正確にはDBPedia TBox)をクエリしようとしています。ストレージはJena TDB:名前付きモデルのクエリ

Dataset dataset = TDBFactory.createDataset(path); 
dataset.begin(ReadWrite.WRITE); 
Model model = dataset.getNamedModel(graph); 
OntModel ontModel = ModelFactory.createOntologyModel(); 
model.add(FileManager.get().readModel(ontModel, dbpedia)); 
model.commit(); 
model.close(); 
dataset.commit(); 
dataset.end(); 
dataset.close(); 

パスがTDBへのパスを含む、以下の方法で行われ、グラフは、指定されたモデルとDBpediaのは、OWLファイルへのパスが含まれているの名前が含まれています。この時点まではすべてがうまくようだ:

私は後でモデルを照会したい場合は、私は次のようにします。次のように

Dataset dataset = TDBFactory.createDataset(path); 
dataset.begin(ReadWrite.READ); 
List<String> out = Lists.newArrayList(); 
try(QueryExecution qExec = QueryExecutionFactory.create("SELECT * { GRAPH ?g {?s ?p ?o}}", dataset.getNamedModel(graph))) { 
    ResultSet rs = qExec.execSelect(); 
    ResultSetFormatter.out(rs); 
    rs.forEachRemaining(triple -> out.add(triple.toString())); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
dataset.close(); 

ResultSetFormatter.out(rs)からの出力は、空である。しかし

----------------- 
| s | p | o | g | 
================= 
----------------- 

デバッガモードでは、のdataset.getNamedModel(graph)に明らかにデータがあります。

enter image description here

私は私の問題は、クエリであることを前提とし、その後、それは私には罰金です。何か不足していますか?

ありがとうございます!分離のグラフにクエリを要求し

答えて

1

​​

。グラフには名前がありません - データセット内のスロットには名前があります。

モデルのクエリは、クエリを実行するために内部的に作成されたデータセットのデフォルトグラフをクエリすることです。

お試しQueryExecutionFactory.create("SELECT * { GRAPH ?g {?s ?p ?o}}", dataset)

+0

ありがとうございます!それがトリックでした:-) – sergi123

関連する問題