2017-09-23 12 views
2

私の質問は、どのようにすべてのプロパティを抽出することができますか、また、好ましくはSPARQL上のwikidataからWebページにレンダリングされるそれぞれのラベルがあります。wikidataラベルとアイテムの値を持つすべてのプロパティを取得

例えば、Googleをwikidataに入力します。プロパティP414(証券取引所)またはP159には、P969のようなサブプロパティ(住所にあります)があります。彼らは実際にあなたが一度表示されますquerywbgetentities qualifieresとして。 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!

修飾子とその値のみが結果に含まれます。出所参照や値注釈(時間精度など)は含まれません。追加が必要な場合は、コメントを記入してください。

関連する問題