从哪里获取有关所有欧洲城市、村庄的数据?
Posted
技术标签:
【中文标题】从哪里获取有关所有欧洲城市、村庄的数据?【英文标题】:where to get data about all european cities, villages from? 【发布时间】:2012-03-07 01:03:49 【问题描述】:我正在寻找有关所有欧洲城市、村庄和城镇的数据。具体来说,我对姓名、邮政编码、电话区号、纬度、经度、人口及其所属国家感兴趣。
1.我可以从哪里提取最全面的数据?
2.如何从 LinkedGeoData 查询数据
首先,我尝试从 LinkedGeoData (http://linkedgeodata.org/sparql) 中提取数据。但是,我无法得到任何合理的结果。执行以下查询时,仅偶尔出现人口,其他字段始终留空。
SELECT * WHERE
?place a <http://linkedgeodata.org/ontology/Place> .
OPTIONAL ?place <http://linkedgeodata.org/property/openGeoDB:name> ?name .
OPTIONAL ?place <http://linkedgeodata.org/ontology/openGeoDB:lat> ?lat .
OPTIONAL ?place <http://linkedgeodata.org/ontology/openGeoDB:lon> ?lon .
OPTIONAL ?place <http://linkedgeodata.org/property/openGeoDB:postal_codes> ?postal .
OPTIONAL ?place <http://linkedgeodata.org/ontology/openGeoDB:telephone_area_code> ?tel .
OPTIONAL ?place <http://linkedgeodata.org/ontology/population> ?population .
OPTIONAL ?place <http://linkedgeodata.org/ontology/openGeoDB:is_in_loc_id> ?inLocId .
?place <http://linkedgeodata.org/property/is_in> ?in.
FILTER ( REGEX(?in, "europe", "i") ) .
我注意到所有包含openGeoDB
的属性都是空白的,尽管这些属性存在。那么查询有什么问题呢?
【问题讨论】:
【参考方案1】:要查找适当的数据集,您可以查看数据集目录(the Data Hub)或数据问答板(Get the Data)。
回复。您的第二个问题,linkedgeodata 上的数据似乎有点稀疏,或者必须利用其他属性和/或类。但是,以下查询似乎至少提供了一些结果,您可以看到欧洲的每个地方都可以通过 lgdb:is_in 属性进行处理
PREFIX lgd:<http://linkedgeodata.org/>
PREFIX lgdo:<http://linkedgeodata.org/ontology/>
PREFIX lgdp:<http://linkedgeodata.org/property/>
PREFIX lgdoogdb: <http://linkedgeodata.org/ontology/openGeoDB>
PREFIX lgdpogdb: <http://linkedgeodata.org/property/openGeoDB>
SELECT *
FROM <http://linkedgeodata.org>
WHERE
?place a lgdo:Place .
OPTIONAL ?place lgdpogdb:name ?name .
OPTIONAL ?place lgdoogdb:lat ?lat .
OPTIONAL ?place lgdoogdb:lon ?lon .
OPTIONAL ?place lgdpogdb:postal_codes ?postal .
OPTIONAL ?place lgdoogdb:telephone_area_code ?tel .
OPTIONAL ?place lgdo:population ?population .
OPTIONAL ?place lgdoogdb:is_in_loc_id ?inLocId .
OPTIONAL ?place lgdp:is_in ?in .
LIMIT 100
例如通过以下查询,您可以稍微探索一下数据集的结构:
PREFIX lgdo:<http://linkedgeodata.org/ontology/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT *
FROM <http://linkedgeodata.org>
WHERE
?place a lgdo:Place .
?place rdfs:label ?label .
LIMIT 100
...最后,以下查询返回欧洲的 100 个地点:
PREFIX lgdo:<http://linkedgeodata.org/ontology/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT *
FROM <http://linkedgeodata.org>
WHERE
?place a lgdo:Place .
?place rdfs:label ?label .
?place <http://linkedgeodata.org/property/is_in%3Acontinent> "Europe" .
FILTER ( lang(?label) = "" )
LIMIT 100
请注意,FILTER 表达式用于过滤掉具有语言标签的每种语言特定标签,即,该查询将显示纯文字。
【讨论】:
以上是关于从哪里获取有关所有欧洲城市、村庄的数据?的主要内容,如果未能解决你的问题,请参考以下文章