2016-04-28 11 views
0

私はプロテジェ4.3および5b24の両方で非常に単純なSPARQLの更新をしようとしている:Protégéでトリプルを更新するには?

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
DELETE {?s ?p ?o} 
WHERE { ?s rdfs:isDefinedBy ?o } 

それは次のようなエラーがスローされます。

An error was thrown: org.openrdf.query.MalformedQueryException: Encountered " "delete" "DELETE "" at line 5, column 1. Was expecting one of: "base" ... "prefix" ... "select" ... "construct" ... "describe" ... "ask" ...

は、私の質問は以下のとおりです。

  1. されていますProtégéで許可されている更新はありますか?そうでない場合

  2. これを達成するための代替ファイルベースの方法は何ですか? (Protégéの非SPARQL手段を含む)

+0

Protégéがアップデートをサポートしていないという提案があります(http://stackoverflow.com/questions/30818173/malformed-sparql-delete-query)。しかし、これが当てはまらない場合は、おそらく[この回答](http://stackoverflow.com/questions/11456102/sparql-query-delete-all-statements)を試してみてください。また、Java環境で作業していると仮定すると、JENA APIの使用を検討することもできます。 - [ARQ - Jena向けSPARQLプロセッサ](https://jena.apache.org/documentation/query/index.html) SPARQL/Updatesをサポートしています。 – ishmaelMakitla

+0

SPARQLを使いたいのであれば、Protégé4はRDFベースではないので、おそらく良い選択ではありません。 Protégé3は、Jena、TopBraid Composerなど、他のRDFベースのツールを使用して、よりうまく動作するかもしれません。 – scotthenninger

+0

まあ、TopBraidを使いました。 'DELETE'はエラーをスローしませんでしたが、実際には動作しませんでした。しかし、INSERTはうまくいきました。とにかく、私はまだProtégéでそれができる方法に興味があり、SPARQLではなく他のものを使わなければならないとうまくいく。 –

答えて

0

DELETEグラフパターンにエラーがあります。 ?pWHERE句にバインドされていないため、DELETEグラフパターンは一致するものを見つけることができません。以下は、プロパティとしてrdfs:isDefinedByでトリプルを削除します:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
DELETE { ?s rdfs:isDefinedBy ?o } 
WHERE { ?s rdfs:isDefinedBy ?o } 

はTopBraid作曲のために働くために保証され、プロテジェのために働くことができます。

+0

私はこのパターンが間違っている理由を理解できません。述語が 'rdfs:isDefinedBy'であるすべてのトリプルを削除するように要求するのは、SPARQLがどのように動作するかだけです。パターンが間違っている場合、なぜそれが 'SELECT'で動作するのでしょうか?実際、これは私が削除しようとしているものを見ている方法です。 (私は 'SELECT'はトリプルパターンでは動作しませんが、' DELETE'と 'WHERE'はそうであると理解しています)あなたが精巧にできたら本当に感謝します。 (あなたの提案で、TBCで動作しますが、Protégéでは動作しませんが、UPDATEが動作するとは思えません) –

+0

SPARQLのパターンマッチング方法は、 'WHERE'節が'INSERT'、' DELETE'、 'CONSTRUCT'などで使用可能な可変バインディングです。あなたのケースで' p'のように変数がバインドされていない場合、DELETEはトリプルを作成できません。それらのすべては '{?s nil?o}'であり、これは有効なトリプルではありません。 – scotthenninger

関連する問題