2016-08-11 6 views
0

나는 위키 타타를 처음 접했습니다. 나는 위키 다타가 많은 구체화를 사용한다고 생각했습니다.프로그래밍 방식으로 Wikidata 엔터티에서 사용 가능한 모든 정보를 얻는 방법?

Obama에 대한 모든 정보를 얻고 자한다고 가정 해 봅시다. DBpedia에서이 작업을 수행하려는 경우 간단한 쿼리 만 사용합니다. select * where {<http://dbpedia.org/resource/Barack_Obama> ?p ?o .} 이렇게하면 Obama가 대상이되는 모든 속성과 값이 반환됩니다. 본질적으로이 결과는이 페이지와 같습니다 : http://dbpedia.org/page/Barack_Obama 쿼리 결과는 필요한 형식입니다.

나는 Wikidata와 같은 일을하는 방법을 궁금해. 이것은 오바마의 위키 다타 페이지입니다 : https://www.wikidata.org/wiki/Q76. 이 페이지의 모든 내용을 원한다고 가정 해 봅시다. 그러나이 페이지의 거의 모든 진술은 계급과 한정어 등이 있다는 점에서 다시금 증명됩니다. 예를 들어, "educated at"부분에는 학교가있을뿐만 아니라 "시작 시간"과 "종료 시간" 오바마가 더 이상이 학교에 없기 때문에 모든 학교는 평범한 학교로 등급이 매겨집니다.

난 그냥 (https://query.wikidata.org 사용) truthy 문을 얻어서 모든 학교를 얻을 수 :

SELECT ?school ?schoolLabel WHERE { 
wd:Q76 wdt:P69 ?school . 
    SERVICE wikibase:label { 
    bd:serviceParam wikibase:language "en" . 
    } 
} 

위 쿼리합니다 간단한 반환 모든 학교. 내가 시작 시간과 학교의 종료 시간을 얻고 싶은 경우에

, 나는이 수행해야합니다

SELECT ?school ?schoolLabel ?start ?end WHERE { 
wd:Q76 p:P69 ?school_statement . 
?school_statement ps:P69 ?school . 
?school_statement pq:P580 ?start . 
?school_statement pq:P582 ?end . 
    SERVICE wikibase:label { 
    bd:serviceParam wikibase:language "en" . 
    } 
} 

을하지만 일이 실제 페이지를 보지 않고있다, 내가 어떻게 알고 것 ? school_statement에는 pq : P580 및 pq : P582, 즉 "시작 시간"과 "종료 시간"이 있습니까? 그리고 모든 정보 (구체화 포함)를 https://www.wikidata.org/wiki/Q76에서 얻으려면 어떻게해야할까요? 대신 SPARQL 엔드 포인트의 ||predicate||object||objectLabel||qualifier1||qualifier1Value||qualifier2||qualifier2Value||...

답변

2

당신은 아마 Wikidata data API (더 구체적으로 wbgetentities 모듈) 가야 :

궁극적으로,이 같은 테이블을 기대 귀하의 경우에는

을 : https://www.wikidata.org/w/api.php?action=wbgetentities&format=json&ids=Q76

찾고있는 모든 한정자 데이터를 찾아야합니다. 예 : entities.Q76.claims.P69.1

{ mainsnak: 
    { snaktype: 'value', 
    property: 'P69', 
    datavalue: 
     { value: { 'entity-type': 'item', 'numeric-id': 3273124, id: 'Q3273124' }, 
     type: 'wikibase-entityid' }, 
    datatype: 'wikibase-item' }, 
    type: 'statement', 
    qualifiers: 
    { P580: 
     [ { snaktype: 'value', 
      property: 'P580', 
      hash: 'a1db249baf916bb22da7fa5666d426954435256c', 
      datavalue: 
      { value: 
       { time: '+1971-01-01T00:00:00Z', 
       timezone: 0, 
       before: 0, 
       after: 0, 
       precision: 9, 
       calendarmodel: 'http://www.wikidata.org/entity/Q1985727' }, 
      type: 'time' }, 
      datatype: 'time' } ], 
    P582: 
     [ { snaktype: 'value', 
      property: 'P582', 
      hash: 'a065bff95f5cb3026ebad306b3df7587c8daa2e9', 
      datavalue: 
      { value: 
       { time: '+1979-01-01T00:00:00Z', 
       timezone: 0, 
       before: 0, 
       after: 0, 
       precision: 9, 
       calendarmodel: 'http://www.wikidata.org/entity/Q1985727' }, 
      type: 'time' }, 
      datatype: 'time' } ] }, 
    'qualifiers-order': [ 'P580', 'P582' ], 
    id: 'q76$464382F6-E090-409E-B7B9-CB913F1C2166', 
    rank: 'normal' } 

다음은 흥미로운 예가 될 수 있습니다. extract readable results from those results