SPARQL更新无法正常工作

时间:2013-10-19 13:34:52

标签: sparql

我正在尝试对具有给定资源作为主题的属性的值进行简单更新。

这是我的问题:

WITH  <http://127.0.0.1:3000/dendro_graph>  
DELETE {   <http://127.0.0.1:3000/project/datanotes/records/teste/filho%20do%20teste>   <http://purl.org/dc/elements/1.1/creator>  ?o0 .

} 
INSERT 
{ 
  <http://127.0.0.1:3000/project/datanotes/records/teste/filho%20do%20teste>    <http://purl.org/dc/elements/1.1/creator>    "creator1"  .

} 
WHERE {   <http://127.0.0.1:3000/project/datanotes/records/teste/filho%20do%20teste>   <http://purl.org/dc/elements/1.1/creator>  ?o0 .

} 

这样做的结果是删除被执行,但插入不是;我最终销毁了该属性的所有实例,但没有添加任何新值。

如果我删除了WHERE子句,我最终会出现重复的三元组,因为它似乎没有执行DELETE。

我做错了什么?

编辑:

此代码生成重复项:

WITH  <http://127.0.0.1:3000/dendro_graph>  
DELETE 
{ 
<http://127.0.0.1:3000/project/datanotes/records/teste/filho%20do%20teste>   <http://purl.org/dc/elements/1.1/creator>  ?o0 .

} 
INSERT 
{ 
  <http://127.0.0.1:3000/project/datanotes/records/teste/filho%20do%20teste>    <http://purl.org/dc/elements/1.1/creator>    "creator1"  .

} 

2 个答案:

答案 0 :(得分:3)

没有WHERE子句的查询不是合法的SPARQL表达式,应该导致语法错误。如果你正在使用的引擎接受了这个,那么这就是该引擎中的一个错误。

乍一看,同样适用于之前的操作,你说删除但不插入:据我所知,SPARQL表达式是正确的,如果你说插入部分没有执行,那就意味着你发现了执行它的引擎中的一个错误。我建议您直接与开发人员联系。

答案 1 :(得分:0)

这是我过去常常使用的解决方法(最后感谢上帝)。您似乎可以使用分号;在单个操作中指定要在图表上执行的多个操作。

我最后指定了DELETE语句,然后是UPDATE一个

检查此代码示例:SPARQL Update example for updating more than one triple in a single query