8

ウィキデータにスマートフォンモデルという項目があります。
私はそれのすべてのインスタンスを取得したい。

質問:ライブ サーバーを使用して、インスタンスの識別子をプログラムで取得する方法を教えてください。

WhatLinksHere に表示されるが、メインの名前空間ではなく「Wikidata:」名前空間にある誤検知を含めないことが望ましいです。

4

3 に答える 3

16

あなたの質問は「Mediawiki API」を指定していますが、これは不可能です。

ウィキデータには、 https: //query.wikidata.org に SPARQL クエリ サービスがあります。

必要なクエリは次のとおりです。

PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>

SELECT DISTINCT ?item
WHERE {
    ?item wdt:P31/wdt:P279* wd:Q19723451
}

これにより、「のインスタンス」( P31 )「スマートフォン モデル」( Q19723451 ) または「のインスタンス」(「サブクラス」( P279 )「スマートフォン モデル」( Q19723451 )) であるアイテムが一覧表示されます。

于 2016-01-31T19:09:41.260 に答える
9

まだできません。(新しい SPARQL インターフェイスがそのようなクエリを解決するため、追加のタスクは却下されました。)

Mediawiki API で現在できる最善の方法は、次のように名前空間を使用action=queryしてフィルター処理することです。props=linkshere

https://www.wikidata.org/w/api.php?action=query&prop=linkshere&format=json&lhprop=title&lhnamespace=0&lhlimit=500&titles=Q19723451

ただし、このクエリで求めていることを正確に実行する外部クエリ ツールWikidata queryがあります。

https://query.wikidata.org/#SELECT%20%3Fitem%20WHERE%20%7B%0A%3Fitem%20wdt%3AP31%20wd%3AQ19723451%20.%0A%20%20%7D

実行後、さまざまなプラットフォームで結果を使用する方法のサンプルを取得できるコード タブがあります。

編集: タスクのステータスを更新し、新しいクエリ ツールに変更しました。

于 2015-04-27T05:30:42.477 に答える