【发布时间】:2014-03-18 11:36:47
【问题描述】:
通过DBpedia SPARQL endpoint 运行此查询会得到很多结果(填充了institution 列):
select ?person ?field ?institution where
{
?person a dbpedia-owl:Agent .
OPTIONAL { ?person dbpprop:workInstitution ?institution . }
OPTIONAL { ?person dbpprop:workInstitutions ?institution .}
?person dbpprop:field ?field .
}
但是,添加行 FILTER(BOUND(?institution)) 会返回一个空结果集:
select ?person ?field ?institution where
{
?person a dbpedia-owl:Agent .
OPTIONAL { ?person dbpprop:workInstitution ?institution . }
OPTIONAL { ?person dbpprop:workInstitutions ?institution .}
?person dbpprop:field ?field .
FILTER(BOUND(?institution))
}
这是为什么?我希望第一个查询的所有结果都显示为 institution 结果,但没有任何结果。
【问题讨论】:
-
我看到你已经接受了一个答案,但我希望你能看看我提供的第二个答案。我认为“变量绑定和未绑定”的想法是不正确的,规范说你应该得到结果。即,我认为这是一个 DBpedia/Virtuoso 错误。此外,使用
union或属性路径,您可以使用比已接受答案中给出的更简单的查询可靠地获得所需的结果。 -
“绑定和未绑定”是为了说明行为可能是如何发生的。我绝不是说这是规范的标准行为。我也怀疑一个错误,但没有时间深入挖掘。
标签: rdf sparql dbpedia virtuoso