Dbpedia / sparql:get population&英国所有城市/乡镇/村庄的纬度/经度

时间:2015-10-20 10:06:27

标签: sparql semantic-web dbpedia wikipedia-api

我在http://dbpedia.org/sparql输入以下查询:

PREFIX geo:  <http://www.w3.org/2003/01/geo/wgs84_pos#>
SELECT ?s ?name ?value ?lat ?lng
WHERE { 
    ?s a <http://dbpedia.org/ontology/PopulatedPlace> .
    ?s <http://dbpedia.org/property/name> ?name .
    ?s <http://dbpedia.org/property/populationTotal> ?value .
    FILTER (?lng > -8.64 AND ?lng < 2.1 AND ?lat < 61.1 AND ?lat > 49.35 )
    ?s geo:lat ?lat .
    ?s geo:long ?lng .
}

(边界框适用于英国,另一种选择是添加<http://dbpedia.org/ontology/country> <http://dbpedia.org/resource/United_Kingdom> .,但有些地方可能没有标记为英国作为国家/地区。)

问题是它似乎没有拉回很多地方(大约290)。 交换population populationTotal给出1588个位置,我无法弄清楚(语义上)应该使用哪一个。

这是对基础数据的限制,还是可以通过我制定查询的方式改进?

注意:这个问题现在主要是学术性的,因为我从http://download.geonames.org/export/dump/GB.zip获得了信息,但我更喜欢使用开放数据和语义网,所以发布这个问题,看看是否有什么我失踪,或者发现是否存在从维基百科中删除数据的缺点,以及我是否可以进入。

1 个答案:

答案 0 :(得分:4)

您的查询仅返回具有populationTotal值的位置。例如,如果A镇有&#34; 10,000&#34;对于数据库中的populationTotal,并且Town B为NULL,将仅返回Town A.

如果要返回英国的所有位置,则需要指定population作为可选参数。此查询将显示所有位置以及具有该数据的位置的人口。

PREFIX geo:  <http://www.w3.org/2003/01/geo/wgs84_pos#>
SELECT ?s ?name ?value ?lat ?lng
WHERE { 
    ?s a <http://dbpedia.org/ontology/PopulatedPlace> .
    ?s <http://dbpedia.org/property/name> ?name .
    OPTIONAL { ?s <http://dbpedia.org/property/populationTotal> ?value . }
    FILTER (?lng > -8.64 AND ?lng < 2.1 AND ?lat < 61.1 AND ?lat > 49.35 )
    ?s geo:lat ?lat .
    ?s geo:long ?lng .
}