2

Python の rdflib ライブラリを使用して RDF グラフからトリプルを削除しようとしていますが、成功していません。私のクエリは、http://www.w3.org/TR/sparql11-update/#deleteから学んだ次のとおりです。

plugin.register(
    'sparql', rdflib.query.Processor,
    'rdfextras.sparql.processor', 'Processor')
plugin.register(
    'sparql', rdflib.query.Result,
    'rdfextras.sparql.query', 'SPARQLQueryResult')

bdel= graph.query(""" 
PREFIX bibo: <http://purl.org/ontology/bibo/>                       
DELETE  {?s ?p ?o}
WHERE { 
         ?s bibo:reproducedIn ?o. 
      }""")

この問題を解決する手がかりとして、次のエラーが表示されます。前もって感謝します。

pyparsing.ParseException: Expected "SELECT" (at char 116), (line:4, col:17)
4

2 に答える 2

6

上記のように、graph.querySPARQLクエリの「SELECT」バージョンのみを実際に期待するものを使用しようとしているようです。ここで定義されているSPARQL 更新を実行するには、代わりに を使用する必要がありますgraph.processUpdate()。あなたの例では、次のようなものです:

processUpdate(graph, """ 
PREFIX bibo: <http://purl.org/ontology/bibo/>                       
DELETE  {?s ?p ?o}
WHERE { 
?s bibo:reproducedIn ?o. 
}""")

お役に立てれば!

于 2012-11-27T21:40:21.803 に答える
2

使用しているクエリはSPARQL Updateであり、これはSPARQL Queryとは異なる標準です。おそらく、graph.query関数は SPARQL クエリのみを想定していますか? 関連するrdflib ページで Sparql Update について言及されていません。

このページを見ると、代わりにのprocessUpdate()メソッドを使用する必要があるようです。rdflib-sparql

オンラインバリデーターは、これが有効なSPARQL クエリではないことに同意します(ただし、有効なSPARQL アップデートのように見えます)。

于 2012-11-01T22:34:56.280 に答える