【问题标题】:How can I join climate data to cities with dbpedia?如何使用 dbpedia 将气候数据加入城市?
【发布时间】:2016-06-29 21:40:31
【问题描述】:

我正在尝试获取一个数据集,它可以为我提供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。如何分配?

【问题讨论】:

  • 我不认为 DBpedia 中使用了这个属性。试试SELECT * { ?s dbo:climate ?climate .} 你会发现你不会得到任何结果。或者打开任何dbo:Place 的资源页面,这是dbo:climate 的域,并尝试查找与气候相关的任何属性。
  • 我不认为这些表是由 DBpedia 提取框架处理的。我现在正在进行一些研究来提取此类数据,但目前数据主要来自维基百科条目页面右侧的信息框。或者您从哪里获得气候数据?
  • 我做了一个小更新。有人对新问题有意见吗?
  • ?aprHighC 需要在 WHERE 子句中绑定(一些 SPARQL 引擎会忽略这一点,只返回未绑定变量的结果)。
  • @scotthenninger 老实说,我无法弄清楚如何做到这一点而不会出错......

标签: sparql rdf owl dbpedia


【解决方案1】:

对于要在第二个查询中获得结果的查询,一个城市必须具有三个属性: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 查看部分数据,而不会使系统不堪重负。

【讨论】:

  • 第一个查询真的很有帮助!我认为我正在寻找的所有属性都在这里(例如 aprHighC),所以我将尝试以这种方式拉动它们。一旦我有有效的查询,我应该更新我的问题还是发布答案?
【解决方案2】:

以下查询给出了 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 .}
}

不过,我要指出,大多数城市都没有这些信息。我不得不放弃以这种方式获取数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多