我不太明白组模式的含义。从我在规范中读到的内容来看,是否将已经在一个组中的图形模式放入一个嵌套组(没有UNION
或类似的东西)应该没有任何区别。还有一个例子说明了这一点。
因此,我不明白我在 DBpedia 上看到的以下行为:
以下查询产生 14 个结果:
PREFIX ygo: <http://dbpedia.org/class/yago/>
SELECT ?p ?bn ?ya
WHERE {
?p rdf:type ygo:AmericanFilmDirectors.
?p dbpprop:birthname ?bn.
?p dbpprop:yearsActive ?ya.
FILTER((?ya > 1980) && (regex(?bn, "e"))).
}
然而,由于某种原因,这个结果只产生了 13 个——与其他结果集相比,缺少Shonda Rhimes :
PREFIX ygo: <http://dbpedia.org/class/yago/>
SELECT ?p ?bn ?ya
WHERE {
{
?p rdf:type ygo:AmericanFilmDirectors.
?p dbpprop:birthname ?bn.
?p dbpprop:yearsActive ?ya.
}
FILTER((?ya > 1980) && (regex(?bn, "e"))).
}
我已经用DBpedia 的 Snorql frontend对此进行了测试。
(奇怪的是,我有时只能使用DBpedia 的 Virtuoso 查询前端来重现这一点……有时,两个查询都只返回 13 个结果。)
为什么是这样?这是我还没有正确理解的 SPARQL 规范的一部分,还是三重存储实现中的一个错误,从查询 1 到查询 2 的更改应该没有任何区别?