2017-06-18 9 views
0

wikiPageIDを指定してdbpediaから特定の人に関するデータを照会しようとしています。私はマイケル・ジャクソンについて照会し、このSPARQLクエリを試してみた:wikiPageIDを指定してDbpediaリソースを照会すると一部のIDで機能しない

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX dbo: <http://dbpedia.org/ontology/> 
PREFIX dbp: <http://dbpedia.org/property/> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 

SELECT ?name (SAMPLE (?photoLink) as ?photo) (SAMPLE (?occupation) as occup) 
(SAMPLE (?spouse) as ?spouses) (SAMPLE (?spName) as ?sname) 
(SAMPLE (?spOccupation) as ?spOccu) (SAMPLE (?deathPlace) as ?death) 
(SAMPLE(?birthPlace) as ?birth) (SAMPLE(?deathDate) as ?dDate) 
(SAMPLE(?birthDate) as ?bDate) { 

VALUES ?wikiPageID { 14995351 } 
?res a dbo:Person. 
?res dbp:name ?name. 
?res dbo:wikiPageID ?wikiPageID. 
?res dbp:birthPlace ?birthPlace. 
?res dbp:birthDate ?birthDate. OPTIONAL{?res dbo:occupation ?occupation}. 
OPTIONAL{?res dbo:thumbnail ?photoLink}. 
OPTIONAL{?res dbo:spouse ?spouse. ?spouse dbp:name ?spName. 
?spouse dbo:occupation ?spOccupation}. 
OPTIONAL{?res dbp:deathDate ?deathDate. ?res dbp:deathPlace ?deathPlace}. 
} 

GROUP BY (?name) 

クエリが空の結果を返します。しかし、他の誰かのwikiPageID(Toby Maguire - 163228など)に変更すると動作します。違いの原因は何でしょうか?

+1

DBpediaデータは不完全で異質でノイズが多いです。決してそれを忘れないで。 – AKSW

+0

なぜbirthdateとbirthPlaceに 'dbp'を使うのかも不明です。なぜ名前に 'rdfs:label'を付けないのでしょうか? – AKSW

+0

なぜ、名前ではなくURIでグループ化するのですか?つまり、 '?res'ですか? – AKSW

答えて

2

あなたはDBpediaのhttp://dbpedia.org/page/Michael_Jacksonにマイケル・ジャクソンのページをチェックすると、あなたは簡単にそれがdbp:name性質を持っていないことが判明、またはdbp:birthPlaceことができ、いなくてもdbp:birthDate。これを解決するには、OPTIONALもこれらのプロパティに追加してください。

OPTIONAL{?res dbp:name ?name}. 
OPTIONAL{?res dbp:birthPlace ?birthPlace}. 
OPTIONAL{dbp:birthDate ?birthDate}. 
関連する問題