如何在某个国家/地区找到人口超过X的城市

时间:2013-02-26 14:11:46

标签: sparql dbpedia

我正在努力寻找丹麦拥有超过10万人口的城市。

我可以使用以下代码找到丹麦的所有城市:

SELECT ?s ?o 
WHERE { 
   ?s a <http://dbpedia.org/class/yago/CitiesAndTownsInDenmark>
}

使用此代码,我可以找到人口超过10万的城市:

SELECT ?resource ?value 
WHERE { 
   ?resource <http://dbpedia.org/property/populationTotal> ?value 
   FILTER (?value > 100000)
}
ORDER BY ?resource ?value

我很感激有关如何组合这些查询的帮助。

1 个答案:

答案 0 :(得分:5)

简单:

SELECT ?resource ?value
WHERE { 
   ?resource a <http://dbpedia.org/class/yago/CitiesAndTownsInDenmark> .
   ?resource <http://dbpedia.org/property/populationTotal> ?value .
   FILTER (?value > 100000)
}
ORDER BY ?resource ?value

换句话说:找到“丹麦城市或城镇”类型的所有东西,找到他们的人口。你可以缩写查询,避免重复'资源',使用';'而不是'。':

?resource a <http://dbpedia.org/class/yago/CitiesAndTownsInDenmark> ;
          <http://dbpedia.org/property/populationTotal> ?value .

(如果你已经习惯了SQL'。'本质上是一个自然的连接:你有两边的资源,所以加入那个值)