sparql - 使用聚合子查询的错误查询评估

标签 sparql graphdb

请引用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

最佳答案

这是预期的行为。根据https://www.w3.org/TR/sparql11-query/#aggregateAlgebra如果有 GROUP BY:

Group(exprlist, Ω) = { ... | μ in Ω }

我们没有匹配项,那么 Ω 为空,所以:

Group(exprlist, {}) = {}

效果是子查询返回单个解决方案,其中 ?myVar 未绑定(bind)且与下一个语句模式的连接匹配 ?myVar 的所有内容。最后,您将获得整个查询的大量解决方案。

甚至还有一个涵盖确切场景的 W3C SPARQL 一致性测试用例:

还有一个旧讨论 http://answers.semanticweb.com/questions/17410/semantics-of-sparql-aggregates .

关于sparql - 使用聚合子查询的错误查询评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50698892/

相关文章:

sparql - 通过 sparql-update 查询将 TTL 上传到 GraphDB 在变音符号上失败

graphdb - 使用预加载或loadrdf工具将数据加载到graphdb时如何指定 'named graph'?

graphdb - 创建Ontop虚拟仓库时添加jdbc驱动问题

rdf - 4store 是否支持 SPARQL 1.1?

java - 使用 SPARQL 查询将数据类型 dataTime 插入本体中

git - 如何在三重存储之上设置版本控制

jena - 使用 Jena 写入 Ontotext GraphDB

javascript - 如何为 JS 格式化我的 SPARQL?

rdf - 可以执行这些类型的 SPARQL 查询吗?

java - 从 ResultSet 创建一个 Object[](对于 JOptionPane 对话框)