2017-09-23 16 views
2

제 질문은 모든 속성을 추출 할 수있는 방법이며, 선호되는 SPARQL에서 wikidata의 웹 페이지에도 렌더링되는 각각의 라벨이 어떻게 생겼는지입니다.wikidata는 아이템의 라벨과 값으로 모든 속성을 얻습니다.

예를 들어 위키 데이터에 Google 항목을 가져옵니다. 부동산 P414 (증권 거래소) 또는 P159에는 P969 (거리 주소에 위치)와 같은 하위 속성이 있습니다. 그들은 사실상 일단 당신이 querywbgetentities 자격으로 나타납니다. wbgetentities의 문제점은 레이블이없는 것입니다.

SELECT ?prop_id ?prop_label ?prop_val_label WHERE { 
    VALUES (?company) { 
    (wd:Q95) 
    } 
    ?company ?prop_id ?company_item. 
    ?wd wikibase:directClaim ?prop_id. 
    ?wd rdfs:label ?prop_label. 
    OPTIONAL { 
    ?company_item rdfs:label ?prop_val. 
    FILTER((LANG(?prop_val)) = "en") 
    } 
    BIND(COALESCE(?prop_val, ?companyItem) AS ?prop_val_label) 
    FILTER((LANG(?prop_label)) = "en") 
} 

그러나 그들이 직접 주장에 따라하지 않기 때문에 그 "하위 속성"누락 : 내가 원하는 다음 SPARQL 쿼리와 출력 (예를 들어, wdt:P17 => country => United States of America)을 얻는다. 단일 명령문 한정자를 추출하려면 다음을 수행 할 수 있습니다.

SELECT ?company ?hq ?country WHERE { 
    wd:Q95 p:P159 ?company. 
    OPTIONAL { 
    ?company ps:P159 ?hq. 
    ?company pq:P17 ?country. 
    } 
} 

하지만 질문을 모두 하나의 쿼리에 결합하는 방법이 있습니까? 위키 데이터의 데이터 모델에

답변

3

유용한 링크 :

조회에 이런 종류의해야합니다

SELECT ?wdLabel ?ps_Label ?wdpqLabel ?pq_Label { 
    VALUES (?company) {(wd:Q95)} 

    ?company ?p ?statement . 
    ?statement ?ps ?ps_ . 

    ?wd wikibase:claim ?p. 
    ?wd wikibase:statementProperty ?ps. 

    OPTIONAL { 
    ?statement ?pq ?pq_ . 
    ?wdpq wikibase:qualifier ?pq . 
    } 

    SERVICE wikibase:label { bd:serviceParam wikibase:language "en" } 
} ORDER BY ?wd ?statement ?ps_ 

Try it!

한정자와 그 값만 결과에 포함됩니다. 출처 참조 나 값 주석 (예 : 시간 정밀도)이 포함되어 있지 않습니다. 추가해야 할 경우 의견을 적어주십시오.