SELECT 中的非组键变量
Non-group key variable in SELECT
我在 virtuoso 网络界面上成功执行了以下查询(例如:http://live.dbpedia.org/sparql)
SELECT ?o (COUNT(?member) as ?memberCount) WHERE {
?member <http://purl.org/dc/terms/subject> ?o.
FILTER isIRI(?o) {
SELECT ?o WHERE {
<http://dbpedia.org/resource/Heroic_Purgatory>
<http://purl.org/dc/terms/subject>
?o.
}
}
}
ORDER BY ?memberCount
LIMIT 1
当我通过 Apache Jena 执行此查询时,出现异常:
Non-group key variable in SELECT: ?o
我不明白为什么...有什么建议吗?
在 ORDER BY
之前添加 GROUP BY ?o
,解决了我的问题。
那仍然是非法的(并且是当前的 Apache Jena)。
SELECT
只能有 GROUP BY
个变量和聚合。
当没有GROUP BY
而是一个聚合时,COUNT
这里,那么它是一个隐含的GROUP BY
对整个结果(没有GROUP BY
键)所以没有直接提到的变量,只有聚合是可能的。
我在 virtuoso 网络界面上成功执行了以下查询(例如:http://live.dbpedia.org/sparql)
SELECT ?o (COUNT(?member) as ?memberCount) WHERE {
?member <http://purl.org/dc/terms/subject> ?o.
FILTER isIRI(?o) {
SELECT ?o WHERE {
<http://dbpedia.org/resource/Heroic_Purgatory>
<http://purl.org/dc/terms/subject>
?o.
}
}
}
ORDER BY ?memberCount
LIMIT 1
当我通过 Apache Jena 执行此查询时,出现异常:
Non-group key variable in SELECT: ?o
我不明白为什么...有什么建议吗?
在 ORDER BY
之前添加 GROUP BY ?o
,解决了我的问题。
那仍然是非法的(并且是当前的 Apache Jena)。
SELECT
只能有 GROUP BY
个变量和聚合。
当没有GROUP BY
而是一个聚合时,COUNT
这里,那么它是一个隐含的GROUP BY
对整个结果(没有GROUP BY
键)所以没有直接提到的变量,只有聚合是可能的。