[英]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.