1

Fuseki サーバーの Web インターフェイスで簡単な挿入クエリを実行しようとしています。エンドポイントを/update(デフォルトではなく/sparql) に設定しました。https://www.w3.org/Submission/SPARQL-Update/から次のクエリがあります。

PREFIX dc: <http://purl.org/dc/elements/1.1/>
INSERT { <http://example/egbook3> dc:title  "This is an example title" }

このクエリは次のように変換されます: http://localhost:3033/dataset.html#query=PREFIX+dc%3A+%3Chttp%3A%2F%2Fpurl.org%2Fdc%2Felements%2F1.1%2F%3E%0AINSERT+%7B+%3Chttp%3A%2F%2Fexample%2Fegbook3%3E+dc%3Atitle++%22This+is+an+example+title%22+%7D%0A または ボタンcurl http://localhost:3033/infUpdate/update -X POST --data 'update=PREFIX+dc%3A+%3Chttp%3A%2F%2Fpurl.org%2Fdc%2Felements%2F1.1%2F%3E%0AINSERT+%7B+%3Chttp%3A%2F%2Fexample%2Fegbook3%3E+dc%3Atitle++%22This+is+an+example+title%22+%7D%0A' -H 'Accept: text/plain,*/*;q=0.9'を使用して表示されます。Share your query

クエリは次のエラーを返します。

Error 400: Encountered "<EOF>" at line 2, column 73.
Was expecting one of:
    "where" ...
    "using" ...



Fuseki - version 2.4.0 (Build date: 2016-05-10T11:59:39+0000)

このエラーは、Web インターフェイスと の両方で発生しますcurl。ここで何が問題になる可能性がありますか?SELECTクエリは問題なく動作します。Web インターフェイスのアップロード フォームを使用してファイルからトリプルをロードすることもできます。追加の質問: 通常の投稿リクエストでは が使用query=され、curlバージョンでは が使用されますがupdate=、なぜこれが異なるのですか?

4

1 に答える 1

6

あなたが参照しているドキュメントは、実際の 2013 SPARQL 1.1 勧告ではなく、2008 SPARQL Updateの提出です。推奨は実際の標準であり、提出はそうではありません。

更新 (挿入または削除) はクエリ (select、ask、construct) ではなく、2 種類のクエリの構文は必ずしも同じではありません。選択クエリでは WHERE がオプションであることに注意してください (正しく) が、挿入ではオプションであるという意味ではありません。インサートには 2 つの形式があります。次の構文を持つ INSERT DATA があります。

INSERT DATA  QuadData  

そして、次の構文を持つ DELETE/INSERT があります。

( WITH IRIref )?
( ( DeleteClause InsertClause? ) | InsertClause )
( USING ( NAMED )? IRIref )*
WHERE GroupGraphPattern

DeleteClause ::= DELETE  QuadPattern 
InsertClause ::= INSERT  QuadPattern 

したがって、INSERT { … } を使用している場合、それは DELETE/INSERT フォームの InsertClause であり、その後に WHERE … を続ける必要があります。静的データを使用しているため、おそらく INSERT DATA フォームを使用する必要があります。

PREFIX dc: <http://purl.org/dc/elements/1.1/>
INSERT DATA { <http://example/egbook3> dc:title  "This is an example title" }
于 2016-09-21T16:55:39.803 に答える