如何使用sparql查询到达dbpedia中的特定页面?

时间:2013-11-26 07:29:34

标签: rdf sparql semantic-web dbpedia

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

????

1 个答案:

答案 0 :(得分:11)

你不想要一个页面的属性,你想要资源的属性。在这种情况下,资源为<http://dbpedia.org/resource/Ashok_Gehlot>。 RDF是基于图的数据表示,SPARQL查询是基于图的查询语言。您正在寻找图形的边缘,其源为<http://dbpedia.org/resource/Ashok_Gehlot>,其边缘标签为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:缩写为<http://dbpedia.org/resource/>,您的查询应为:

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

SPARQL results

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

如果出于某种原因,让查询更符合原始尝试的形式,那么您可以使用以下内容。模式?x owl:sameAs? dbpedia:Ashok_Gehlot表示?x将绑定到属性dbpedia:Ashok_Gehlot距离owl:sameAs零或一步的事物。对于零步案例,?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