1

私の質問は基本的に、Tinkerpop によって作成された SailGraph を使用して SPARQL の更新を適切に実行する方法です。

DELETE { ?i_id_iri rdfs:label "BII-I-1" }
INSERT { ?i_id_iri rdfs:label "BII-I-4" }
WHERE
  { 
    ?investigation rdf:type obi:0000011.
    ?i_id_iri rdf:type iao:0000577.
    ?i_id_iri iao:0000219 ?investigation.
  } 

これまでのところ、別のファイルからプレフィックスが追加されたこのクエリがありますが、機能しません。私が実行するコードは次のとおりです

query = parser.parseUpdate(queryString, baseURI);
UpdateExpr expr = query.getUpdateExprs().get(0);
Dataset dataset = query.getDatasetMapping().get(expr);
GraphDatabase.getSailConnection().executeUpdate(expr, dataset, new EmptyBindingSet(), false);
4

1 に答える 1

0

私は Tinkerpop GraphSail にはあまり詳しくありませんが、Sesame SAIL API が正しく実装されていると仮定すると、次のSailRepositoryように でラップするだけで、SPARQL クエリの実行がはるかに簡単になります。

 TinkerGraph graph = new TinkerGraph();
 Sail sail = new GraphSail(graph);    

 Repository rep = new SailRepository(sail);
 rep.initialize();

その後、Sesame のRepository APIを使用できます。これは、SAIL で直接操作を行うよりもはるかにユーザー フレンドリーです (SAIL はその目的のために設計されていません)。

たとえば、接続を開いて SPARQL 更新を実行するには、次のようにします。

RepositoryConnection conn = rep.getConnection();
try {
      String sparql = "INSERT {?s a <foo:example> . } WHERE {?s ?p ?o } ";

      Update update = conn.prepareUpdate(QueryLanguage.SPARQL, sparql);
      update.execute();
}
finally {
  conn.close();
}

Sesame のリポジトリ API の詳細については、上記のリンクを参照するか、Javadocを確認してください。

于 2013-07-22T09:38:21.483 に答える