2017-05-20 9 views
-3

私は、DBPEDIAとWIKIDATAの間のアクターのリストに一致するようにPythonコードを書いています。まず、誕生日、SPARQLを使ったDbpediaの出産場所、Dbpediaから取得した同じ俳優のリストを使って、俳優のリストを取得しています。私は受け取った賞などいくつかの追加情報を取得しようとしています。私のPythonコードがエラーを投げています。SPARQLが動作しないPythonコード

答えて

0

クエリのdbpedia部分がwikidata内でタイムアウトすることがあります。フェデレーションバインディングをスキップして制限を追加すると、クエリは完了しますが、数秒かかります。賞についてトリプルをコメント解除し、タイムアウトします。

SPARQLに問題があるので、私は今はPythonの処理を無視します。

ことの独立は、私は2件の不具合が見つかりました:

# missing prefixes 
PREFIX wdt: <http://www.wikidata.org/prop/direct/> 
PREFIX dbo: <http://dbpedia.org/ontology/> 

PREFIX dbp: <http://dbpedia.org/property/> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX owl: <http://www.w3.org/2002/07/owl#> 
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 

SELECT * 
WHERE { 
SERVICE <http://dbpedia.org/sparql> { 
    ?c rdf:type <http://umbel.org/umbel/rc/Actor> ; 
     rdfs:label ?Actor 
    FILTER (lang(?Actor) = "en") 
    ?c dbo:deathDate ?Death_date ; 
     dbo:birthPlace ?b 
# date filterning not working... add cast 
    FILTER (xsd:date(?Death_date) >= "1990 - 01 - 01"^^xsd:date) 
    ?b rdfs:label ?birth_Place 
    FILTER (lang(?birth_Place) = "en") 
    ?Starring rdf:type  dbo:Film ; 
       dbo:starring ?c . 
    ?c  dbo:deathCause ?d . 
    ?d  dbp:name  ?Cause_Of_Death . 
    ?c  owl:sameAs  ?wikidata_actor 
    FILTER strstarts(str(?wikidata_actor), "http://www.wikidata.org") 
    } 
# ?wikidata_actor wdt:P166 ?award_received. 
} 
LIMIT 9 

すべてのSPARQLエンドポイントは、独自のユニークな個性を持っています。したがって、私の意見では、連合クエリ(serviceキーワードを使用し、2つ以上のエンドポイントにヒットする)は特に難しい場合があります。フェデレーションを初めてお使いの場合は、関連性の低いクエリがあります。

'darwilliamstour'という名前でつぶやくエンティティがあります。そのエンティティの名前は何ですか?

select * 
where 
{ 
?twitterer wdt:P2002 'darwilliamstour' . 
service <http://dbpedia.org/sparql> 
{ 
?twitterer rdfs:label ?name 
} 
} 
+0

ご意見ありがとうございます。私は変更を加えて、今私のSPARQLクエリは正常に動作しています。 – karthick

+0

私の喜び。質問に答えてもらうことを検討してください。 –

関連する問題