0

我正在开发一个使用 Jena 三重存储的服务器。服务器是用 Python 开发的,我使用 SPARQLWrapper 库来处理要执行的不同操作。我在查询存储(SELECT 操作)和创建三元组(INSERT DATA 操作)时没有问题。DELETE 操作有点棘手。我正在尝试执行:

q= 
'PREFIX pref:<url>
 DELETE {?s ?p ?o}
WHERE {
 ?s a  pref:class.
}'

在网址/update上。我收到操作正常的响应(HTTP 代码 200),但三元组仍在我的商店中(通过 SELECT 操作检查)。

wrapper = SPARQLWrapper(<my_url>/update)
wrapper.setMethod('DELETE')
wrapper.query(q)

我尝试了不同的 HTTP 动词(POST、DELETE)来看看这是否会有所作为,但没有任何改变。

此外,我正在使用 --update 选项运行 fuseki-server。

4

1 回答 1

0

您需要定义变量 ?p 和 ?o

例如:

DELETE {?s ?p ?o}
WHERE {
 ?s ?p ?o .
 ?s a  prefix:class
}

也见这里

于 2017-11-08T12:18:20.123 回答