sparql - 从哪里获取所有欧洲城市、村庄的数据?

标签 sparql semantic-web geography

我正在寻找有关所有欧洲城市、村庄和城镇的数据。具体来说,我对姓名、邮政编码、电话区号、纬度、经度、人口及其所属国家感兴趣。

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 的所有属性都是空白的,尽管这些属性存在。那么查询出了什么问题呢?

最佳答案

要查找合适的数据集,您可以查看数据集目录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 表达式用于过滤掉每个具有语言标记的特定于语言的标签,即,纯文字将与该查询一起显示。

关于sparql - 从哪里获取所有欧洲城市、村庄的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9594362/

相关文章:

sparql - 使用 SPARQL 从 DBpedia 获取有关足球运动员的数据

rdf - 为 2 个相关表创建 RDF 并对其运行 SPARQL 查询

c# - 对地理形状进行分组

database - 地理,几何数据和空间数据之间的区别?

linux - 生成映射的 D2RQ 参数

semantic-web - <wbr> 元素是语义 HTML 吗?在微数据环境中呢?

java - 如何确定对象属性断言的主语和客体?

rdf - 在 RDF 中引用 URN 的预期方式是什么?

python - 地理名称数据库(城市、兴趣点)

sparql - 在 sparql 中绑定(bind) ASK 查询的结果