2017-05-20 23 views
-3

나는 DBPEDIA와 WIKIDATA 사이의 액터 목록과 일치하는 파이썬 코드를 작성하고 있습니다. 먼저 생년월일, SPARQL을 사용하는 Dbpedia의 출생지 및 Dbpedia에서 검색 한 배우 목록을 사용하여 배우 목록을 가져옵니다.받은 상장과 같은 추가 정보를 검색하려고합니다. . 내 파이썬 코드가 오류를 던지고있다.SPARQL이 작동하지 않는 파이썬 코드

답변

0

쿼리의 dbpedia 부분이 wikidata에서 시간 초과되는 것을 직감했습니다. 페더레이션 바인딩을 건너 뛰고 한도를 추가하면 쿼리가 완료되지만 몇 초가 걸립니다. 상에 대해서 트리플 코멘트를 해제하면 타임 아웃됩니다.

SPARQL에 문제가 있으므로 지금은 파이썬 처리를 무시할 것입니다.

# 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 키워드를 사용하고 둘 이상의 끝점에 충돌하는) 연합 쿼리는 특히 까다로운 작업 일 수 있습니다. 페더레이션을 처음 사용하는 경우 관련없는 쿼리가 있습니다.

'darwilliamstour'라는 이름으로 트윗을 작성하는 엔티티가 있습니다. 엔티티의 이름은 무엇입니까?

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

귀하의 의견에 감사드립니다. 나는 변경했고 이제는 내 SPARQL 쿼리가 잘 작동하고있다. – karthick

+0

내 기쁨. 질문에 답을 표시하는 것을 고려하십시오. –