我想算一些市政当局以及我在括号中的工作。但是,我也希望得到另一个变量,但是当我将它添加到SELECT时,我得到了:
org.openrdf.query.MalformedQueryException:variable' region_name'在投影中不存在于GROUP BY中。
在我的查询中,我有:
"SELECT ?region_name (COUNT(?municipality) AS ?count) " +
我错过了什么?
请注意,我的项目中没有任何类似GROUP的内容,我认为它是在Sesame内部发生的。
我刚刚看到,如果我删除(COUNT ...),我会按预期获得名称。
答案 0 :(得分:7)
在SPARQL中,使用聚合函数的每个查询(例如COUNT
,SUM
,SAMPLE
等)始终使用分组。即使您未在查询中明确指定GROUP BY
子句,它也会使用“默认分组”(即所有解决方案所属的单个组)。
在使用聚合的SPARQL查询中,非聚合变量(例如?region_name
)可能不会在SELECT
子句中进行投影,除非它们已明确添加到分组中。
修复方法是在查询中添加明确的GROUP BY
:
SELECT ?region_name (COUNT(?municipality) AS ?count)
WHERE {
...
}
GROUP BY ?region_name