ゴマトリプルストアからデータをフェッチするためのSELECTステートメントを使用したPythonSPARQLWrapperの使用法を説明する多くの例をウェブ上で確認しましたが、ゴマでそれを使用してINSERT / DELETE/UPDATEステートメントを実行する方法がわかりません。この点についてご案内いただけますでしょうか。
ありがとう
ゴマトリプルストアからデータをフェッチするためのSELECTステートメントを使用したPythonSPARQLWrapperの使用法を説明する多くの例をウェブ上で確認しましたが、ゴマでそれを使用してINSERT / DELETE/UPDATEステートメントを実行する方法がわかりません。この点についてご案内いただけますでしょうか。
ありがとう
SPARQL クエリは GET リクエストとして送信されますが、UPDATE (INSERT、DELETE など) ではクエリを POST リクエストとして送信する必要があります。sparql.query() の前に次の行を追加するだけです
sparql.method = 'POST'
また、更新用のURLはクエリとは異なります。更新はワークベンチに基づいており、ごまの URL ではありません。たとえば、クエリ URL が次の場合:
http://localhost:8080/openrdf-sesame/repositories/test/
また
http://localhost:8080/openrdf-workbench/repositories/test/query
更新 URL は次のようになります。
http://localhost:8080/openrdf-workbench/repositories/test/update
したがって、UPDATE/INSERT リクエストは次のようになります。
queryString = "INSERT DATA { GRAPH <http://example.com/> { "b" a "c". } }"
sparql = SPARQLWrapper("http://localhost:8080/openrdf-workbench/repositories/test/update")
sparql.setQuery(queryString)
sparql.method = 'POST'
sparql.query()
これはドキュメントから特に明確ではありませんが、クエリを実行するのと同じ方法で update ステートメントを実行できると思います。
queryString = "DELETE WHERE { ?s ?p ?o. }"
sparql = SPARQLWrapper("http://localhost:8080/openrdf-sesame/repositories/test/statements")
sparql.setQuery(queryString)
ret = sparql.query()
Sesame の場合、更新エンドポイントの URL ( repositories/<repId>/statements
) がクエリ エンドポイントの URL ( ) と同じではないことに注意してrepositories/<repId>
ください。詳細については、Sesame プロトコルのドキュメントを参照してください。