我正在使用 GraphDB Free,并尝试使用 sparql 将一些三元组插入到存储中。
该查询看起来像一个简单的 INSERT:
//Some Prefixes
INSERT DATA { subject predicate object }
我使用 Postman 将请求正文中的查询 POST 到 SPARQL 端点
和 dotNetRdf 将查询提交到代码中的 SPARQL 端点。
我通过上述两种方式收到以下错误:
MALFORMED QUERY: Encountered " "insert" "INSERT "" at line 5, column 1.
Was expecting one of:
"base" ...
"prefix" ...
"select" ...
"construct" ...
"describe" ...
"ask" ...
虽然在 SPARQL 表单的工作台中提交相同的 INSERT DATA { ... } 可以按预期工作,所以 INSERT 没问题。
在文档中GraphDB Sparql 合规性 http://graphdb.ontotext.com/documentation/standard/sparql-compliance.html#sparql-1-1-update提到支持SPARQL 1.1更新(包括INSERT DATA)。 Sparql 端点是否不支持提到的 Spaqrl 1.1 UPDATE 规范?仍在查看文档,不确定我错过了什么......
GraphDB 使用RDF4J REST API http://docs.rdf4j.org/rest-api/- 这是 SPARQL 1.1 协议和 SPARQL 图形存储协议的扩展。 SPARQL 更新操作的端点与查询的端点不同。您需要将更新发送至:
http://<host>/repositories/<repId>/statements
而不仅仅是:
http://<host>/repositories/<repId>
另外:查询是使用?query=
范围。但是,更新使用?update=
范围。
有一个SPARQL 更新请求示例 http://docs.rdf4j.org/rest-api/#_perform_update_described_in_a_sparql_1_1_update_string在 REST API 文档中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)