请参阅Factforge Endpoint以执行此查询。子查询不会返回任何结果。 ?myVar
将被投射到包含查询,然后使用三重模式?myVar ?p ?o.
加入。但由于内部选择没有结果,因此连接不会产生任何结果。但是,执行查询时不是这种情况。这不是一个错误吗?
SELECT
?myVar ?p ?o
WHERE
{
{
SELECT ?myVar
WHERE {
?myVar <http://www.example.com/arbitraryNonExistent> ?xx.
}
GROUP BY ?myVar
}
?myVar ?p ?o.
}
LIMIT 10
答案 0 :(得分:4)
这是预期的行为。根据{{3}},如果有GROUP BY:
Group(exprlist, Ω) = { ... | μ in Ω }
我们没有匹配,然后Ω为空,所以:
Group(exprlist, {}) = {}
效果是子查询返回一个解决方案,其中?myVar未绑定,而下一个语句模式的连接匹配?myVar的所有内容。最后,您将获得整个查询的大量解决方案。
甚至还有一个涵盖确切场景的W3C SPARQL一致性测试用例:
还有https://www.w3.org/2009/sparql/docs/tests/data-sparql11/aggregates/agg-empty-group.srx的旧讨论。