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

【问题讨论】:

    标签: sparql semantic-web geography


    【解决方案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 表达式用于过滤掉具有语言标签的每种语言特定标签,即,该查询将显示纯文字。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多