Как искать объекты по экземпляру в API Викиданных

Я безуспешно пытался получить этот запрос:

https://www.wikidata.org/w/api.php?action=wbsearchentities&search=arturo&format=json&language=en&uselang=en&type=item

но только с элементами экземпляра "человек из", то есть из P31 : Q5

Любая помощь будет оценена, потому что я не могу найти способ настроить эти реквизиты. Этот тип запроса взрывается в SPARQL, но если у кого-то есть относительный ответ, чтобы получить тот же результат (поиск всех людей с его именем, начинающимся с ....), он также будет оценен.


person Leandro Bardelli    schedule 10.03.2018    source источник
comment
opendata.stackexchange.com/a/12497/16193   -  person Stanislav Kralin    schedule 10.03.2018
comment
@StanislavKralin привет! спасибо за ваши ответы и комментарии. Будьте осторожны, это не тот же вопрос, я пытаюсь избежать sparql здесь.   -  person Leandro Bardelli    schedule 10.03.2018
comment
Что-то вроде action=wbsearchentities&search=arturo&format=json&claim=p31:q5   -  person Leandro Bardelli    schedule 10.03.2018


Ответы (1)


Я действительно не уверен, что это возможно с Mediawiki API. Это было невозможно несколько лет назад. и я не думаю, что эта функция была реализована с тех пор.

Но у Open Refine есть служба сверки с Викиданными на основе API, который может фильтровать по типу ( "экземпляр") или свойства. Его разработчик еще не рекламировал его явно как автономный API, но это находится в проекте. Вот пример использования: найдите в Викиданных людей, которых называют «артуро» экземплярами человека (Q5) и чья профессия (P106) — актер (Q33999).

https://tools.wmflabs.org/openrefine-wikidata/en/api?query={
                      "query":"arturo",
                      "limit":6,
                      "type" : "Q5",
                      "properties" : [
                         { "pid" : "P106" , "v" : "Q33999"}
                         ]
                         }

Результат.

Основная проблема с этим запросом заключается в том, что он возвращает только Arturos, которые явно являются экземпляром Q5. Это касается этого, но не тех, кто, например, только пример «кинорежиссера» (и не имеет значения, что кинорежиссер сам является подклассом «человека»). Sparql может обрабатывать транзитивность классов, используя пути к свойствам (например: wdt:P279*/wdt:P31*), но этот API (пока) не реализовал их.

person Ettore Rizza    schedule 15.03.2018
comment
Спасибо за ответ, но openrefine не сильно помог. (Ваш ответ все равно помогает, спасибо!) Я уже пробовал. В нем не хватает многих фильтров, а данные не согласуются, потому что у Викиданных много проблем с его двигателем elasticsearch. На самом деле, как вы упомянули, на данный момент нет ответа на этот вопрос, но спасибо за ваши усилия. - person Leandro Bardelli; 15.03.2018