如何使用 ARC2 获取“过滤器不存在”查询?
How to get `filter not exists` query working with ARC2?
我有一个基于 ARC2 的 RDF 存储设置并填充了一些数据。以下查询 returns 预期结果(所有类型为 vcard:Individual
或 foaf:Person
的 URI)当我 运行 它 没有 时FILTER NOT EXISTS
部分:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX app: <http://example.com#>
SELECT ?person
WHERE {
?person rdf:type ?type .
FILTER (?type = vcard:Individual || ?type = foaf:Person)
FILTER NOT EXISTS {
?person app:id ?id
}
}
当我尝试通过 运行 完整查询来排除那些具有 app:id
属性 的内容时,它失败并显示以下消息:
Incomplete FILTER in ARC2_SPARQLPlusParser
Incomplete or invalid Group Graph pattern. Could not handle " FILTER NOT EXISTS { " in ARC2_SPARQLPlusParser
测试 query validator on sparql.org 中的查询时,没有任何问题。我的查询有什么问题我遗漏了还是这是 ARC2 的缺点?
你能想出一个替代查询,我可以尝试使用 ARC2 来获得所需的结果吗?
ARC2 不 支持 SPARQL 1.1,因此,您必须使用常见的 OPTIONAL-FILTER(!BOUND()) 模式:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX app: <http://example.com#>
SELECT ?person
WHERE {
?person rdf:type ?type .
FILTER (?type = vcard:Individual || ?type = foaf:Person)
OPTIONAL {
?person app:id ?id
}
FILTER ( !BOUND(?id) )
}
我有一个基于 ARC2 的 RDF 存储设置并填充了一些数据。以下查询 returns 预期结果(所有类型为 vcard:Individual
或 foaf:Person
的 URI)当我 运行 它 没有 时FILTER NOT EXISTS
部分:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX app: <http://example.com#>
SELECT ?person
WHERE {
?person rdf:type ?type .
FILTER (?type = vcard:Individual || ?type = foaf:Person)
FILTER NOT EXISTS {
?person app:id ?id
}
}
当我尝试通过 运行 完整查询来排除那些具有 app:id
属性 的内容时,它失败并显示以下消息:
Incomplete FILTER in ARC2_SPARQLPlusParser
Incomplete or invalid Group Graph pattern. Could not handle " FILTER NOT EXISTS { " in ARC2_SPARQLPlusParser
测试 query validator on sparql.org 中的查询时,没有任何问题。我的查询有什么问题我遗漏了还是这是 ARC2 的缺点?
你能想出一个替代查询,我可以尝试使用 ARC2 来获得所需的结果吗?
ARC2 不 支持 SPARQL 1.1,因此,您必须使用常见的 OPTIONAL-FILTER(!BOUND()) 模式:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX app: <http://example.com#>
SELECT ?person
WHERE {
?person rdf:type ?type .
FILTER (?type = vcard:Individual || ?type = foaf:Person)
OPTIONAL {
?person app:id ?id
}
FILTER ( !BOUND(?id) )
}