2017-02-11 3 views
1

내가 SPARQL과 위키 데이터에 새로운 오전과 휴고 상 수상자에 대해 다음 검색하는 것을 시도하고있다 :Wikidata에서 Hugo 수상자를 검색하는 방법은 무엇입니까?

  • 작업 제목
  • 저자
  • 년 원

내가 찾는거야 이것은 놀랍게도 어렵다.

필자는 링크 형식이 "원"인 최고의 소설에서 상을 연결하는 모든 튜플에 대해 질문하기 시작했습니다.

SELECT DISTINCT ?winner WHERE { 
    # P166: Award Recieved By 
    # Q103360: Hugo Award for Best Novel 
    ?winner ps:P1346 wd:Q255032. 

    SERVICE wikibase:label { bd:serviceParam wikibase:language "en" } 
} 

이 작동하지만, 내가 승자에서 제목 링크를 추가 할 때, 데이터가 없습니다 :

SELECT DISTINCT ?winner WHERE { 
    ?winner ps:P1346 wd:Q255032. 

    OPTIONAL { 
    # P1476: Title 
    ?winner wdt:P1476 ?title. 
    } 
    SERVICE wikibase:label { bd:serviceParam wikibase:language "en" } 
} 

내가 잘못하고있는 중이 야 무슨 일이? 나는 약간의 이해와 함께 다른 네임 스페이스를 시도했지만 아무 소용이 없다. 어떻게 그 https://www.wikidata.org/wiki/Q255032#P1346

을 생성됩니다

휴고 수상자에 대한 페이지

, 수상자의 한 부분이있다? 술어를 들어

SELECT DISTINCT ?winner ?winnerLabel ?for WHERE { 
    # P166: winner 
    # Q103360: Hugo Award for Best Novel 
    wd:Q255032 wdt:P1346 ?winner. 

    SERVICE wikibase:label { bd:serviceParam wikibase:language "en" } 
} 
+0

첫 번째 쿼리가 ** ** 아무것도 반환하지 않습니다! 적어도 지금 당장은 https://query.wikidata.org에서 시도해 보았습니다. 그렇다면 왜 'wdt : P166'을 술어로 사용하지 않습니까? – AKSW

+0

그리고 두 번째 쿼리는 'wdt : P166' 술어를 사용할 때도 작동합니다. 그러나 필드를 다시 가져 오려면 SELECT 부분에 추가해야합니다 (예 : SELECT DISTINCT? winner? winnerLabel? titleLabel) – AKSW

답변

2

가 대신

ps:this example 제발 봐 wdt:를 사용해야합니다 :

SELECT DISTINCT ?item ?itemLabel ?AuthorLabel ?year WHERE { 
    ?item wdt:P166 wd:Q255032. 
    ?item wdt:P50 ?Author . 
    ?item wdt:P577 ?year . 
    SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }  
} 

PS를 나는 (내 생각) 그 속성을 쿼리하기 위해 노력하고 사람에 대한 링크를 돌아왔다. 우승 날짜가 아닌 출판물을 사용했습니다.

UPDATE : this answer 참조하십시오

수상의 시간 속성의 포인트는 수신 된 위키 데이터 이 규정을 호출하는 것입니다.

그리고 this is query :

SELECT ?item ?itemLabel ?authorLabel ?publicationDate ?dateOfAwardReceived WHERE { 
    ?item wdt:P50 ?author . 
    ?item wdt:P577 ?publicationDate . 
    ?item p:P166 ?awardReceivedStatement . 
    ?awardReceivedStatement ps:P166 wd:Q255032 . 
    ?awardReceivedStatement pq:P585 ?dateOfAwardReceived . 
    SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }  
} 
+0

정말 수상한 해가 필요합니다. 그렇게 쉽게 가능합니까? – Will

+1

@Will, 좀 더 복잡해 보겠습니다. – Alexan

+0

(https://github.com/dhappy/awards/blob/master/test.rb)에서 작업중인 프로그램은 다음과 같은 심볼릭 링크가있는 트리를 만듭니다. form/award/Hugo/# {year} →/book/by/# {author}/# {title}. 현재 수년에 걸쳐 13 개의 충돌이 발생합니다. – Will