要删除的sparql查询

要删除的sparql查询,sparql,Sparql,我正在用java编写sparql查询,以删除具有特定id的rdf数据 Delete ?ID ?name Where { ?ID rdf:type ex:example ex:name ?name FILTER(?ID ="something") } 但它什么也没用。有人知道我犯了什么错吗 该查询可能会失败,可能有效的SPARQL查询是 DELETE WHERE { ?id rdf:type ex:example; ex:name ?nam

我正在用java编写sparql查询,以删除具有特定id的rdf数据

Delete ?ID ?name Where { 
     ?ID rdf:type ex:example ex:name ?name 
     FILTER(?ID ="something") 
}

但它什么也没用。有人知道我犯了什么错吗

该查询可能会失败,可能有效的SPARQL查询是

DELETE WHERE { 
     ?id rdf:type ex:example;
         ex:name ?name .
     FILTER(?id = <http://foo.com/some/example/uri>) 
}
删除其中{
?id rdf:类型ex:示例;
名字?名字。
过滤器(?id=)
}
var
?id
不能是字符串,因为它被定位为主题,并且在RDF中,所有主题都是虹膜,而不是文本


如果您发布一些示例数据,我们可能会提供更好的帮助。

RDF表示法意味着我们只能通过删除(子)图来进行删除。任何删除SELECT查询中等效字段的尝试都将导致错误。此外,还有多种形式的DELETE查询,如中所示。问题中的查询的另一个问题是,当使用WHERE子句定义要删除的三元组时,所使用的DELETE格式是一个快捷方式,但过滤器会弄乱快捷方式。使用完全删除语法应该可以很好地工作:

PREFIX ex: <http://example.org#>
DELETE {
   ?id a ex:Example ;
       ex:name ?name .
}
WHERE { 
  ?id a ex:Example ;
      ex:name ?name .
  FILTER(str(?id) != "something") 
}
前缀ex:
删除{
?id a ex:示例;
名字?名字。
}
何处{
?id a ex:示例;
名字?名字。
过滤器(str(?id)!=“某物”)
}

我认为问题在于sparql更新,因为我在第6行第1列遇到了“删除”错误。我期待的是“前缀”。。。“选择”。。。“构造”。。。“描述”。。。“问”。。。您知道我是否可以做些什么来运行删除查询吗?您使用的是哪个三元组存储?错误消息与SPARQL查询和SPARQL更新之间的差异有关。它们在Jena中使用不同的类来表示(我猜这就是您正在使用的),它们通常作为不同的端点URL:s公开。这些在设计上是不兼容的,因此出现了错误。据我所知,这个查询是无效的。过滤器阻止删除快捷方式工作。也许这是特定于实现的,但这至少是我从specs()中收集到的。