sparql 期望“where”、“using”之一

2023-11-29

我正在尝试在 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 or 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 button.

查询返回以下错误:

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 界面上传表单从文件加载三元组也可以。附加问题:正常的post请求使用query=curl版本用途update=,为什么会有所不同?


您引用的文件是 2008SPARQL 更新提交,不是实际的 2013 年SPARQL 1.1 推荐。推荐是实际标准,提交不是。

更新(插入或删除)不是查询(选择、询问、构造),并且两种查询的语法不一定相同。您注意到(正确地)WHERE 在选择查询中是可选的,但这并不意味着它在插入中是可选的。插入有两种形式。 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" }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sparql 期望“where”、“using”之一 的相关文章

随机推荐