我有一个人的URI,例如http://dbpedia.org/resource/Ashok_Gehlot
(当通过HTTP检索时,重定向到http://dbpedia.org/page/Ashok_Gehlot
)。我想提取有关此资源的信息。我怎么能写一个SPARQL查询来检索,例如,Ashok Gehlot的生日?在以下查询中(我的尝试到目前为止)我需要用{<1>}替换?{/ p>
????
答案 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
}
当然,该查询没有结果,因为该资源没有属性owl:birthdate
。如果您浏览在Ashok Gehlot看到的数据,您会发现 :
dbpedia-owl数据比dbpprop数据更清晰,因此您应该使用它。同时注意前缀dbpedia:
缩写为<http://dbpedia.org/resource/>
,您的查询应为:
select ?birthDate where {
dbpedia:Ashok_Gehlot dbpedia-owl:birthDate ?birthDate
}
--------------
| 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 .
}