【问题标题】:How to get to a particular page in dbpedia using sparql query?如何使用 sparql 查询访问 dbpedia 中的特定页面?
【发布时间】:2013-11-26 07:29:33
【问题描述】:

我有一个人的 URI,例如 http://dbpedia.org/resource/Ashok_Gehlot(通过 HTTP 检索时,重定向到 http://dbpedia.org/page/Ashok_Gehlot)。我想提取有关此资源的信息。我如何编写一个 SPARQL 查询来检索例如 Ashok Gehlot 的生日?在以下查询中(到目前为止我的尝试)我需要用什么替换 ????

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbpedia: <http://dbpedia.org/resource/>PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>PREFIX category: <http://dbpedia.org/resource/Category:>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>PREFIX foaf: <http://xmlns.com/foaf/0.1/>PREFIX dbpprop: <http://dbpedia.org/property/>
PREFIX dbprop: <http://dbpedia.org/property/>PREFIX grs: <http://www.georss.org/georss/>
PREFIX category: <http://dbpedia.org/resource/Category:>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX freebase: <http://rdf.freebase.com/ns/>
PREFIX db: <http://dbpedia.org/>
PREFIX dbp: <http://dbpedia.org/property/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX http: <http://www.w3.org/2006/http#>
SELECT ?x ?y WHERE {
  ?x ?????? http://dbpedia.org/resource/Ashok_Gehlot.
  ?x owl:birthdate ?z.
}

【问题讨论】:

    标签: rdf sparql semantic-web dbpedia


    【解决方案1】:

    您不需要页面的属性,您需要 aresource 的属性。在这种情况下,资源是&lt;http://dbpedia.org/resource/Ashok_Gehlot&gt;。 RDF 是一种基于图的数据表示,而 SPARQL 查询是一种基于图的查询语言。您正在寻找源为 &lt;http://dbpedia.org/resource/Ashok_Gehlot&gt; 的图形的边,其边标签为 owl:birthdate(这没有意义,但这是一个不同的问题),并且您想要检索边的另一端并将其值绑定到变量?z。因此,您的查询将是:

    select ?z where { 
      <http://dbpedia.org/resource/Ashok_Gehlot> owl:birthdate ?z
    }
    

    SPARQL results

    当然,该查询没有结果,因为资源没有属性owl:birthdate。如果您浏览在Ashok Gehlot 看到的数据,您会注意到

    • dbpedia-owl:birthDate 1951-05-03 (xsd:date)
    • dbpprop:birthDate 3 (xsd:integer)
    • dbpprop:dateOfBirth 1951 (xsd:integer)

    dbpedia-owl 数据比 dbpprop 数据干净得多,因此您应该使用它。还要注意前缀dbpedia: 缩写为&lt;http://dbpedia.org/resource/&gt;,您的查询应该是:

    select ?birthDate where { 
      dbpedia:Ashok_Gehlot dbpedia-owl:birthDate ?birthDate
    }
    

    SPARQL results

    --------------
    | birthDate  |
    |============|
    | 1951-05-03 |
    --------------
    

    如果出于某种原因,让查询更符合您最初尝试的形式确实很重要,您可以使用以下方法。模式?x owl:sameAs? dbpedia:Ashok_Gehlot 意味着?x 将被属性owl:sameAs 绑定到距离dbpedia:Ashok_Gehlot 零或一步的事物。对于零步的情况,?x 就是 dbpedia:Ashok_Gehlot,这就是你想要的。对于一种情况,?x 将是任何 owl:sameAs dbpedia:Ashok_Gehlot,这也应该没问题。

    select ?birthDate where { 
      ?x owl:sameAs? dbpedia:Ashok_Gehlot .
      ?x dbpedia-owl:birthDate ?birthDate .
    }
    

    SPARQL results

    【讨论】:

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