我正在尝试选择所有没有英文标签的资源。问题是如果我通过另一个标签选择器进行过滤,它并不能保证英文标签不存在。FILTER NOT EXISTS
似乎仅适用于特定属性,但不能与语言选择器结合使用。如何选择没有英文标签的资源?
问问题
153 次
1 回答
2
对于这样的数据,其中:b
没有英文标签,
@prefix : <http://example.org/> .
:a :label "foo"@en .
:b :label "bar"@fr .
:c :label "baz"@en, "baz"@fr .
像这样的查询将返回 only :b
,因为它是唯一没有英文标签的资源:
prefix : <http://example.org/>
select * where {
?x :label ?label . # find xs that do have a label
filter not exists { # but for which no label in
?x :label ?enLabel . # English exists
filter(langMatches(lang(?enLabel),"en"))
}
}
使用 Jena 的sparql
命令行工具的结果是:
$ sparql --data data.n3 --query query.rq
-----------------
| x | label |
=================
| :b | "bar"@fr |
-----------------
于 2013-10-22T17:12:55.307 回答