Я действительно не уверен, что это возможно с 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