2015-04-27 3 views
5

У Wikidata есть элемент, который называется smartphone model.
Я хочу получить все его экземпляры.Получить все элементы Википедии, являющиеся экземпляром данного предмета

ВОПРОС: Как получить идентификаторы экземпляров программным путем, используя живой сервер?

Предпочтительно не включать ложные срабатывания, которые отображаются в WhatLinksHere, но находятся в пространстве имен «Викидата:», а не в основном пространстве имен.

ответ

7

Это еще не возможно. (Вот task, если вы хотите следить за развитием.)

Лучшее, что вы могли бы, чтобы сегодня в Mediawiki API является использование action=query и props=linkshere и фильтр на пространстве имен, как это:

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

Однако , есть внешний инструмент запроса, Wikidata query, что будет делать именно то, что вы просите с этим запросом:

http://wdq.wmflabs.org/api?q=CLAIM[31:19723451]

Просто добавьте Q перед номерами, и у вас есть идентификатор элемента.

7

В вашем вопросе указан «API-интерфейс Mediawiki», но это невозможно.

викиданные имеет службу запросов SPARQL в http://query.wikidata.org

запрос, который вы хотите:

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