我正在用Java编写sparql查询,以删除具有特定ID的rdf数据。我正在尝试
Delete ?ID ?name Where {
?ID rdf:type ex:example ex:name ?name
FILTER(?ID ="something")
}
Run Code Online (Sandbox Code Playgroud)
但它什么也没做。有谁知道我的错误吗?
该查询可能失败,更有效的SPARQL查询可能是...
DELETE WHERE {
?id rdf:type ex:example;
ex:name ?name .
FILTER(?id = <http://foo.com/some/example/uri>)
}
Run Code Online (Sandbox Code Playgroud)
var ?id
不能是字符串,因为它定位为主题,并且在RDF中,所有主题都是IRI,而不是文字。
如果您发布一些示例数据,我们也许可以提供更好的帮助。
RDF 表示意味着我们只能通过删除(子)图来进行删除。任何删除 SELECT 查询中的等效字段的尝试都会导致错误。此外,DELETE 查询有多种形式,如SPARQL 1.1 更新规范中所示。问题中查询的另一个问题是,使用的 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")
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8882 次 |
最近记录: |