簡體   English   中英

DbPedia的Sparql基於名稱而不是主題

[英]Sparql of DbPedia based upon name not subject

我正在嘗試查詢dbpedia以獲取某些人的數據,而我沒有要查詢的人的名字和他們的出生/死亡日期。

我正在嘗試按照這些思路進行查詢。 我想要每個姓普雷斯利的人的名字,出生日期,死亡日期和縮略圖。 然后,我打算做的就是遍歷返回的結果,找到與Elvis Presley 1935-1977最匹配的數據。

PREFIX dbo: <http://dbpedia.org/ontology/>

SELECT ?Name ?thumbnail ?birthDate ?deathDate WHERE {
  {
dbo:name ?Name ;
dbo:birthDate ?birthDate ;
dbo:birthDate ?deathDate ;
dbo:thumbnail ?thumbnail ;
FILTER contains(?Name@en, "Presley") 
}

構造我的sparql查詢的最佳方法是什么?

更新:

我把這個查詢放在一起似乎在某種程度上可以工作,但是我並不完全理解它,我也無法弄清楚其中包含的內容,但是它至少可以運行並返回結果。

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dbo: <http://dbpedia.org/ontology/>

SELECT ?subject ?thumbnail ?birthdate ?deathdate WHERE {
  {
     ?subject rdfs:label "Elvis Presley"@en ;
                                     dbo:thumbnail ?thumbnail ;
                                      dbo:birthDate ?birthdate ;
                                      dbo:deathDate ?deathdate ;
       a owl:Thing .       

  }
  UNION
  {
    ?altName rdfs:label "Elvis Presley"@en ;
                                      dbo:thumbnail ?thumbnail ;
                                      dbo:birthDate ?birthdate ;
                                      dbo:deathDate ?deathdate ;
             dbo:wikiPageRedirects ?s .
  }
}

有些實體可能沒有所有這些信息,所以最好使用optional 您可以使用foaf: surname直接檢查姓氏。

select * where {
  ?s foaf:surname "Presley"@en
  optional { ?s dbo:name ?name }
  optional { ?s dbo:birthDate ?birth }
  optional { ?s dbo:deathDate ?death }
  optional { ?s dbo:thumbnail ?thumb }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM