如何使用 dbpedia 将气候数据加入城市?

How can I join climate data to cities with dbpedia?

我正在尝试获取一个数据集,为我提供 a city's climate table 中的所有可用数据,但我遇到了一些问题。

我能够让它发挥作用并且自我感觉良好。当我在 dbpedia's virtuoso client 上插入它时,这给了我 dbpedia 拥有的所有城市,以及他们所有的国家。

PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
SELECT DISTINCT ?city_name ?country
WHERE { ?city rdf:type dbpedia-owl:City ; 
          rdfs:label ?city_name; 
          dbpedia-owl:country ?country 
   FILTER (langMatches(lang(?city_name), "EN")) .
}

更新:我找到的属性似乎可以满足我的需求(例如 dbpedia。org/property/aprHighC),但我无法将它们添加到我的输出中。

PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
SELECT DISTINCT ?city_name ?country ?aprHighC
WHERE { ?city rdf:type dbpedia-owl:City .
    ?city rdfs:label ?city_name .
    ?city dbpedia-owl:country ?country 
FILTER (langMatches(lang(?city_name), "EN")) .
}

报错:Variable 'aprHighC' is used in the query result set but not assigned。如何分配?

要在第二个查询中获得结果,城市必须具有三个属性:rdfs:labeldbpedia-owl:countrydbpedia-owl:climate。您的查询几乎证明了 DBPedia 数据具有带有标签和国家/地区属性的城市,但没有气候。尝试以下操作以查看为 dbpedia-owl:City 的成员找到了哪些属性:

SELECT DISTINCT ?p
WHERE {
   ?city rdf:type dbpedia-owl:City ;
      ?p ?o .
}

请注意,并非 dbpedia-owl:City 的所有成员都具有这些属性,但它为您提供了使用的属性范围。

换个角度看,你可以问什么实体使用 dbpedia-owl:climate 属性:

SELECT ?s
WHERE {
   ?s dbpedia-owl:climate ?climate 
}

我没有找到任何前缀,所以可能是前缀与您使用的前缀不同?我建议仔细检查 属性 名称。

无论如何,最好使用 SPARQL 查找数据存储中的实际内容。并使用LIMIT查看部分数据而不会使系统不堪重负。

以下查询给出了 1 月的日平均最高值 (°C)。添加其他气候项目就像复制开头的行一样简单 "OPTIONAL" 并将项目和变量名称从 janHighC 更改为您想要获得的任何内容。

PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
SELECT * {
{ ?city rdf:type dbo:City .
 ?city rdf:type schema:City .
 ?city rdfs:label ?name
}
OPTIONAL {?city dbp:janHighC ?janHighC .}
}

不过,我会注意到,大多数城市都没有此信息。我不得不放弃以这种方式获取数据。