我正在寻找有关所有欧洲城市,乡村和城镇的数据。具体来说,我对名称,邮政编码,电话区号,纬度,经度,人口及其所属国家感兴趣。
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
的所有属性都是空白的,尽管属性存在。那么查询有什么问题?
答案 0 :(得分:4)
要查找适当的数据集,您可以查看数据集目录álathe Data Hub或数据Q&amp; AboardsálaGet 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表达式用于过滤掉每个具有语言标记的特定语言标签,即,将使用该查询显示普通文字。