我正在尝试获取一个数据集,该数据集为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
。我该如何分配?
答案 0 :(得分:2)
要在第二个查询中获取结果的查询,城市必须包含三个属性:rdfs:label
,dbpedia-owl:country
和dbpedia-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 .}
}
但是,我会注意到,大多数城市都没有这方面的信息。我不得不放弃以这种方式获取数据。