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

时间:2016-06-29 21:40:31

标签: sparql rdf owl 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。我该如何分配?

2 个答案:

答案 0 :(得分:2)

要在第二个查询中获取结果的查询,城市必须包含三个属性: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 :(得分:0)

以下查询给出1月平均每日高点(°C)。添加其他气候项目就像复制从“可选”开始的行并将项目和变量名称从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 .}
}
但是,我会注意到,大多数城市都没有这方面的信息。我不得不放弃以这种方式获取数据。