7

虽然我在网上浏览了很多示例,解释了使用 python SPARQLWrapper 使用 SELECT 语句从芝麻三重存储中获取数据,但不确定我们如何使用它在芝麻中插入/删除/更新语句。你们中的任何人都可以在这方面进行指导。

谢谢

4

2 回答 2

10

SPARQL 查询作为 GET 请求发送,但 UPDATE(如 INSERT、DELETE 等)要求将查询作为 POST 请求发送。只需在 sparql.query() 之前添加以下行

sparql.method = 'POST'

此外,更新的 url 与查询不同。更新基于工作台而不是芝麻网址。例如,如果查询 url 是:

http://localhost:8080/openrdf-sesame/repositories/test/

或者

http://localhost:8080/openrdf-workbench/repositories/test/query

那么更新网址将是:

http://localhost:8080/openrdf-workbench/repositories/test/update

因此,UPDATE/INSERT 请求应如下所示:

queryString = "INSERT DATA { GRAPH <http://example.com/> { "b" a "c". } }" 
sparql = SPARQLWrapper("http://localhost:8080/openrdf-workbench/repositories/test/update")

sparql.setQuery(queryString) 
sparql.method = 'POST'
sparql.query()
于 2013-03-10T12:54:32.650 回答
2

这在文档中并不是特别清楚,但我认为您可以像执行查询一样执行更新语句:

queryString = "DELETE WHERE { ?s ?p ?o. }" 
sparql = SPARQLWrapper("http://localhost:8080/openrdf-sesame/repositories/test/statements")

sparql.setQuery(queryString) 
ret = sparql.query()

对于 Sesame,要记住的一件事是更新端点 ( repositories/<repId>/statements) 的 URL 与查询端点 ( repositories/<repId>) 的 URL 不同。有关详细信息,请参阅Sesame 协议文档

于 2013-01-07T07:03:05.230 回答