2017-09-19 22 views
0

Wikidata Query Service (https://query.wikidata.org)를 사용하여 영화 및 TV 프로그램에 대한 세부 정보를 얻고 있습니다.Wikidata : SPARQL 항목별로 검색하려면 어떻게해야합니까?

저는 영화 (쿼리 아래)의 인스턴스 인 모든 항목의 장르를 쿼리 할 수 ​​있지만 특정 영화 만 찾고 싶습니다.

SELECT ?item ?itemLabel ?genreLabel 
WHERE 
{ 
    ?item wdt:P31 wd:Q11424 . 
    OPTIONAL { 
     ?item wdt:P136 ?genre 
    } 
    SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" } 
} LIMIT 10 

나는 영화에 대한 위키 데이터 항목 번호 (Q ###)의 목록을 가지고 TV에 내가 대한 속성을 얻고 싶은 것을 보여준다. 이 특정 영화 나 TV 프로그램을 조회해야합니다. 예를 들어, Wikidata에서 Star Wars Episode IV : A New Hope가 Q17738이라는 것을 알고 있다면 어떻게 그 특정 속성을 쿼리 할 수 ​​있습니까?

답변

0

예, QID를 사용하여 속성을 가져올 수 있습니다 (answer to my similar question 참조). 당신의 품목 Q17738에 대한

예 :

SELECT DISTINCT ?item ?itemLabel ?itemDescription (SAMPLE(?article) AS ?articleSample) 
WHERE 
    { ?article schema:about  ?item ; 
       schema:inLanguage "en" ; 
       schema:isPartOf <https://en.wikipedia.org/> 
    FILTER (?item = <http://www.wikidata.org/entity/Q17738>)  
    SERVICE wikibase:label 
     { bd:serviceParam 
        wikibase:language "en" 
     } 
    } 
GROUP BY ?item ?itemLabel ?itemDescription 

query in WikiData를 참조하십시오.

도 참조하십시오. answer on Open Data site.

1

SPARQL에서 여러 항목을 지정하는 방법은 두 가지가 있습니다.

FILTER (?item IN (...list...)) : SPARQL definition

SELECT ?item ?itemLabel ?genreLabel 
WHERE 
{ 
    ?item wdt:P31 wd:Q11424 . 

    FILTER (?item IN (wd:Q17738, wd:Q181795)) 

    OPTIONAL { 
     ?item wdt:P136 ?genre 
    } 
    SERVICE wikibase:label { bd:serviceParam wikibase:language 
           "[AUTO_LANGUAGE],en" } 
} LIMIT 10 

VALUES ?item { ...list... } : SPARQL definition

SELECT ?item ?itemLabel ?genreLabel 
WHERE 
{ 
    ?item wdt:P31 wd:Q11424 . 

    VALUES ?item { wd:Q17738 wd:Q181795 } 

    OPTIONAL { 
     ?item wdt:P136 ?genre 
    } 
    SERVICE wikibase:label { bd:serviceParam wikibase:language 
           "[AUTO_LANGUAGE],en" } 
} LIMIT 10 

차는 IN 단순히 함수이다 :이리스트 인수입니까?

VALUES은 데이터를 쿼리에 전달하는 방법입니다.

VALUES (?x ?y) { 
    (:uri1 1) 
    (:uri2 UNDEF) 
} 

구문은 하나 개의 변수에 대한 특별한 경우를 가지고, 그래서 나는 VALUES ?item { (wd:Q17738) (wd:Q181795) }를 작성하지 않은 : 우리는 간단한 양식을 사용하지만 당신은 전체, 테이블 형식의 데이터를 제공 할 수 있습니다.