2016-04-09 19 views
0

1800年1月1日より古い誕生日を持つすべてのベルギー人をうまく出力するクエリを作成しました。それはうまくいく。Wikidataクエリ:プロパティが存在するアイテムを見つける

https://wdq.wmflabs.org/api?q=between[569,1800-1-1]%20AND%20claim[27:31] 

しかし、私は、画像があるアイテムのみが必要なので、プロパティP18が存在する場所が必要です。私はどのようにクエリを実行しますか?

答えて

1

プロパティが存在するかどうかを返すだけの場合は、:itemなしでクレームを追加できます(Wikidata Query docs参照)。

between[569, 1800-1-1] AND claim[27:31] AND claim[18]

https://wdq.wmflabs.org/api?q=between[569,1800-1-1]%20AND%20claim[27:31]%20AND%20claim[18]

私はまた、より高速な結果を得るためにWikidata SPARQL queryとしてこれを試してみることをお勧めします:

prefix wdt: <http://www.wikidata.org/prop/direct/> 
prefix wd: <http://www.wikidata.org/entity/> 
SELECT ?item WHERE { 
    ?item wdt:P569 ?time0 . 
    FILTER (?time0 >= "1800-01-01T00:00:00Z"^^xsd:dateTime) 
    ?item wdt:P27 wd:Q31 . 
    ?item wdt:P18 ?dummy0 . 
} 
+1

おかげSlaporte。私は同意する、SPARQLはこれを続行する方が良い方法です。 私はあなたの解決策を試してみましたが、これは今まで私にとってうまくいきます: '接頭辞wds: 接頭辞wdt: SELECT?アイテムの人物はどこですか?{ ?item wdt:P569?time0。 FILTER(?time0> = "1900-01-01T00:00:00Z" ^^ xsd:dateTime) ?item wdt:P27 wd:Q31。 OPTIONAL {?item rdfs:label?personフィルタ(lang(?person)= "en")} ?item wdt:P18?pict。 OPTIONAL {?アイテムスキーマ:description?des filter(lang(?des)= "en")} } –

関連する問題