Моя конкретная проблема в том, что у меня есть место под названием Beacon Theater. Я хочу найти лучшее соответствие для этого в Викиданных.
A Поиск в Викиданных даст мне три результата:
В прямом эфире в Beacon Theater (Q6656601)
Beacon Theater (Q264186): концертный зал
Beacon Theaters (Q19110809)
Первый - фильм, второй - правильный результат, а третий - решение Верховного суда.
Используя этот вызов API, я можно найти идентификаторы для всех трех:
https://www.wikidata.org/w/api.php?action=query&format=json&list=search&srsearch=Beacon Theater
Следующим шагом будет получение подробной информации по каждому из них. Я использую noreferred"> этот вызов для получения информации обо всех трех объектах
"https://www.wikidata.org/w/api.php?action=wbgetentities&props=descriptions|labels|claims&ids=Q6656601|Q264186|Q19110809&languages=en&format=json"
На этом этапе я хочу перебрать их и найти то, что является зданием. Возможно, позже я захочу добавить способ найти тот, который находится в Нью-Йорке.
Моя проблема в том, что правильный ответ - это не здание (Q41176). Значение P31 - Q3469910, это заведение исполнительского искусства, поэтому я не могу сортировать об этом (представьте, что в будущем я буду использовать этот код для поиска музея. Музей - это тоже здание, но не место проведения исполнительских искусств. Поиск Beacon Theater - лишь пример.
Итак, вопрос: как мне найти правильную запись, которую для целей этого вопроса я определяю как:
- Быть зданием (или, возможно, происходить из здания)
- Необязательный ответ: находиться в Нью-Йорке (в случае нескольких совпадений это еще больше ограничит результаты)
Я думаю, что для этого мне нужно выполнить запрос SPARQL в качестве второго запроса, но из примеров я не мог понять, как это сделать, и будет ли это правильный / самый простой способ. Может быть, даже запрос SPARQL, который выполнит все вышеперечисленное за один запрос?