ロードされたすべてのグラフを Apache Marmotta インスタンスにクリアしようとしています。そのためにいくつかの SPARQL クエリを試しましたが、インポートした RDF/XML グラフを削除できません。そのための適切な構文は何ですか?
1 に答える
このクエリを試してください:
DELETE WHERE { ?x ?y ?z }
Marmotta の組み込みのものを含め、データベース内のすべてのトリプルが削除されるため、注意してください。
実験のために私がしたことのいくつか:
Marmottaのソース コードをダウンロードし、 Silver Searcher
DELETE
ツールを使用して次のコマンドでクエリを検索しました。ag '"DELETE '
これはあまり役に立ちませんでした。
Marmotta のインストール ディレクトリに移動し、デバッグ ログを確認しました。
tail -f marmotta-home/log/marmotta-main.log
これは、パーサーがクエリを処理できないことを示しています
DELETE DATA { ?s ?p ?o }
。「更新実行中のエラー」の背後にある例外は次のとおりです。org.openrdf.sail.SailException: org.openrdf.rio.RDFParseException: Expected an RDF value here, found '?' [line 8] [followed by a long stacktrace]
これは、パーサーが の後のクエリで変数を許可しないことを示しています
DELETE DATA
。関連する StackOverflow answerに基づいて、//
CLEAR
/を試しましたが、うまくいきませんでした。CLEAR GRAPH
DROP
DROP GRAPH
DELETE
、*
、の多くの組み合わせを試しまし?s ?p ?p
たが、誤ってDELETE WHEREコンストラクトで動作させることができました。W3Cのドキュメントによると:DELETE WHERE 操作は、削除されるグラフ内のトリプルを定義するために WHERE 句に一致するバインディングが使用される DELETE/INSERT 操作のショートカット形式です。