如何使用 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: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 月的日平均最高值 (°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 .}
}
不过,我会注意到,大多数城市都没有此信息。我不得不放弃以这种方式获取数据。
我正在尝试获取一个数据集,为我提供 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: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 月的日平均最高值 (°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 .}
}
不过,我会注意到,大多数城市都没有此信息。我不得不放弃以这种方式获取数据。