0

ロードされたすべてのグラフを Apache Marmotta インスタンスにクリアしようとしています。そのためにいくつかの SPARQL クエリを試しましたが、インポートした RDF/XML グラフを削除できません。そのための適切な構文は何ですか? ここに画像の説明を入力

4

1 に答える 1

2

このクエリを試してください:

DELETE WHERE { ?x ?y ?z }

Marmotta の組み込みのものを含め、データベース内のすべてのトリプルが削除されるため、注意してください。

実験のために私がしたことのいくつか:

  1. Marmottaのソース コードをダウンロードし、 Silver SearcherDELETEツールを使用して次のコマンドでクエリを検索しました。

    ag '"DELETE '
    

    これはあまり役に立ちませんでした。

  2. 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

  3. 関連する StackOverflow answerに基づいて、// CLEAR/を試しましたが、うまくいきませんでした。CLEAR GRAPHDROPDROP GRAPH

  4. DELETE*、の多くの組み合わせを試しまし?s ?p ?pたが、誤ってDELETE WHEREコンストラクトで動作させることができました。W3Cのドキュメントによると:

    DELETE WHERE 操作は、削除されるグラフ内のトリプルを定義するために WHERE 句に一致するバインディングが使用される DELETE/INSERT 操作のショートカット形式です。

于 2016-11-22T00:28:07.857 に答える