4

我试图在丹麦寻找人口超过 10 万的城市。

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

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

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

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

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

4

1 回答 1

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 '.' 本质上是一个自然连接:你有 ?resource 在每一边,所以加入那个值)

于 2013-02-26T15:35:20.067 回答