我正在使用 GraphDB Free,并且正在尝试使用 sparql 将一些三元组插入到商店中。查询看起来像一个简单的 INSERT:
//Some Prefixes
INSERT DATA { subject predicate object }
Run Code Online (Sandbox Code Playgroud)
我使用 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" ...
Run Code Online (Sandbox Code Playgroud)
在 SPARQL 表单中的 Workbench 中提交相同的 INSERT DATA { ... } 时按预期工作,因此 INSERT 没问题。
在文档GraphDB Sparql Comliance中提到支持 SPARQL 1.1 更新(包括插入数据)。Sparql 端点是否不支持提到的 Spaqrl 1.1 UPDATE 规范?仍在浏览文档,不确定我错过了什么......
GraphDB 使用RDF4J REST API - 这是 SPARQL 1.1 协议和 SPARQL 图形存储协议的扩展。SPARQL 更新操作的端点与查询的端点不同。您需要将更新发送至:
http://<host>/repositories/<repId>/statements
Run Code Online (Sandbox Code Playgroud)
而不仅仅是:
http://<host>/repositories/<repId>
Run Code Online (Sandbox Code Playgroud)
另外:使用?query=参数发送查询。但是,更新使用该?update=参数。
REST API 文档中有一个示例 SPARQL 更新请求。