【问题标题】:How to extract data from DBpedia using SPARQL如何使用 SPARQL 从 DBpedia 中提取数据
【发布时间】:2018-11-20 00:34:39
【问题描述】:

我正在尝试使用 SPARQL 的 SERVICE 函数从 dbpedia 中提取一些数据。

事实上,我想提取所有纽约剧院的名称、纬度和地段。要检查一个实例是否是一个剧院,我可以使用http://dbpedia.org/class/yago/Theater104417809​。一个剧院的例子可以是http://dbpedia.org/resource/Grand_Theatre_(New_York_City)。

如何使用service 函数在 SPARQL 中获取我需要的内容?

** 编辑 **

我正在尝试的查询是以下查询,但没有返回任何值。

PREFIX dbpedia: <http://dbpedia.org/ontology/>
PREFIX dbp: <http://dbpedia.org/property/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX geos: <http://www.opengis.net/ont/geosparql#>
PREFIX geof: <http://www.opengis.net/def/function/geosparql/>
PREFIX : <http://www.semanticweb.org/frubi/ontologies/2017/10/puntsWIFI#>

SELECT *
WHERE {
  SERVICE <http://dbpedia.org/sparql/> {
    SELECT ?teatreName ?lat ?long
    WHERE {
      ?teatre rdf:type dbpedia:Theatre .
      ?teatre foaf:name ?teatreName .
      ?teatre geo:lat ?lat .
      ?teatre geo:long ?long .
      ?teatre dbp:city ?ciutat .
      ?ciutat rdfs:label "New York City"@en
    }
  } 
}

【问题讨论】:

  • 您尝试了哪个 SPARQL 查询?你读过SPARQL Federated Query W3C doc吗?我的意思是,一切都在那里解释...
  • @AKSW,抱歉没有添加我正在执行的查询,现在添加了。
  • 好的,谢谢。但我有点困惑。你有没有直接在 DBpedia 中尝试过查询???我是说。它什么也不返回,因此,这里的问题与联合查询无关......

标签: sparql rdf stardog federated-queries


【解决方案1】:

这不是联合查询的问题,而是您的 DBpedia 查询。 dbp:city 不是对象属性,而只是rdf:Property 类型,因此它是无类型的。在您的情况下,它映射到文字,这意味着您必须直接使用文字。这里奇怪的是,由于某些原因,您必须明确使用数据类型 http://www.w3.org/1999/02/22-rdf-syntax-ns#langString 而不是 "New York City"@en - 这对任何用户来说显然都不直观。不确定这是否是由于 DBpedia 提取或 Virtuoso 的预期行为而发生的。

PREFIX dbpedia: <http://dbpedia.org/ontology/>
PREFIX dbp: <http://dbpedia.org/property/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX geos: <http://www.opengis.net/ont/geosparql#>
PREFIX geof: <http://www.opengis.net/def/function/geosparql/>
PREFIX : <http://www.semanticweb.org/frubi/ontologies/2017/10/puntsWIFI#>

SELECT *
WHERE {
  SERVICE <http://dbpedia.org/sparql/> {
    SELECT ?teatreName ?lat ?long
    WHERE {
      ?teatre rdf:type dbpedia:Theatre .
      ?teatre foaf:name ?teatreName .
      ?teatre geo:lat ?lat .
      ?teatre geo:long ?long .
      ?teatre dbp:city "New York City"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#langString>
    }
  } 
}

【讨论】:

  • 这就是我要找的,我找不到要使用的数据类型。那行得通,但是我想知道您是如何着手获得此解决方案的。谢谢
  • 我只是简单地将"New York City"@en替换为一个变量来查看dbp:city相关对象的绑定类型。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-10
  • 1970-01-01
  • 2016-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-27
相关资源
最近更新 更多