SPARQL没有正确分组我的结果

SPARQL没有正确分组我的结果,sparql,dbpedia,Sparql,Dbpedia,我通过以下SPARQL查询获得每公里人口密度最小的国家及其总统(领导人): 前缀类型: 前缀道具: 选择?国家/地区名称?人口密度?领导人 在哪里{ ?国家a dbpedia猫头鹰:国家; rdfs:标签?国家/地区名称; 道具:人口密度km?人口密度; 猫头鹰:领袖?领袖。 过滤器(?人口密度

我通过以下SPARQL查询获得每公里人口密度最小的国家及其总统(领导人):

前缀类型:
前缀道具:
选择?国家/地区名称?人口密度?领导人
在哪里{
?国家a dbpedia猫头鹰:国家;
rdfs:标签?国家/地区名称;
道具:人口密度km?人口密度;
猫头鹰:领袖?领袖。
过滤器(?人口密度<10&&langMatches(lang(?国家名称),“en”))。
} 
按人口密度分组
按ASC排序(?人口密度)
限制10
如您所见,我正在按人口密度对结果进行分组,但我得到的结果包括许多重复的人口密度:

有人能告诉我我做错了什么吗? 我认为这与领导人名单有关,每个国家都有不止一位领导人返回。
有没有办法限制每个国家只有一位领导人?

第一件事是,你应该把你使用的所有变量都放在GROUPBY子句中。 Virtuoso目前在对查询的解析方面比较松散,并且允许它不应该做的事情。 第二个是您只需要选择一个领导,如果您不关心哪一个,那么您应该使用示例。如果您想要所有这些,请使用变体

PREFIX type: <http://dbpedia.org/class/yago/>
PREFIX prop: <http://dbpedia.org/property/>

SELECT ?country_name ?populationdensity (sample(?leader) as ?ls)
WHERE {
    ?country a dbpedia-owl:Country ;
             rdfs:label ?country_name ;
             prop:populationDensityKm ?populationdensity ;
        dbpedia-owl:leader ?leader .
    FILTER (?populationdensity < 10 && langMatches(lang(?country_name), "en")) .
} 
GROUP BY ?country_name ?populationdensity
ORDER BY ASC(?populationdensity)
limit 10 


这正是我在返回单一结果方面所寻找的。但是它没有返回正确的结果。例如,格陵兰岛现任领导人是阿莱卡·哈蒙德(总理),而不是米凯拉·恩格尔(国家情报局发言人)。因此,有没有一种方法可以输出正确的领导者姓名,而不是从领导者列表中获取第一个结果?我想这只有在你们的问题不仅仅是寻找领导人,而且特别是寻找一个有领导能力的人的名字时才有可能:总统或总理。我将接受你的回答,但如果你有时间,看看这是否可能。在一个基于单个的查询中,它会这样工作,但我不确定如何将它实现到我自己的查询:SELECT DISTINCT?x3,其中{?x0 rdf:type dbpedia owl:Country。?x0 rdfs:label“agentary”@en.?x0 dbpprop:领导者?x1.?x1 dbpprop:现任者?x2.?x2 rdfs:标签?x3.}
PREFIX type: <http://dbpedia.org/class/yago/>
PREFIX prop: <http://dbpedia.org/property/>

SELECT ?country_name ?populationdensity (sample(?leader) as ?ls)
WHERE {
    ?country a dbpedia-owl:Country ;
             rdfs:label ?country_name ;
             prop:populationDensityKm ?populationdensity ;
        dbpedia-owl:leader ?leader .
    FILTER (?populationdensity < 10 && langMatches(lang(?country_name), "en")) .
} 
GROUP BY ?country_name ?populationdensity
ORDER BY ASC(?populationdensity)
limit 10 
dbpedia-owl:leader ?leader .
dbpprop:leaderTitle/dbpprop:incumbent ?leader .