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

Ram*_*mil 4 rdf semantic-web sparql dbpedia

我有一个人的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.
}
Run Code Online (Sandbox Code Playgroud)

Jos*_*lor 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
}
Run Code Online (Sandbox Code Playgroud)

SPARQL结果

当然,该查询没有结果,因为资源没有属性owl:birthdate.如果您浏览您在看到数据阿什·格洛,你会注意到:

  • 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
}
Run Code Online (Sandbox Code Playgroud)

SPARQL结果

--------------
| birthDate  |
|============|
| 1951-05-03 |
--------------
Run Code Online (Sandbox Code Playgroud)

如果出于某种原因,让查询更符合原始尝试的形式,那么您可以使用以下内容.该模式?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 .
}
Run Code Online (Sandbox Code Playgroud)

SPARQL结果