Я некоторое время играл с API Wikidata. Я знаю, как получить предмет (сущности) по имени и по их номеру Q. но я не могу понять, как правильно их использовать. То, что я ищу является P214 (VIAF идентификаторы для авторов)Получить идентификатор VIAF из файла Wikidata.
К примеру, я уже использую этот запрос, чтобы получить автор его полное имя
https://www.wikidata.org/w/api.php?action=wbsearchentities&search=Douglas%20Adams&language=en
возвращает массив имен страниц и связанных с страницами, на которых есть имя «Дуглас Адамс». но никаких свойств.
то я могу использовать список Q ид для запроса свойств, например, так
https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q42&language=en
собственности VIAF и его значение для Q42 есть. но это такой громоздкий подход, потому что я получаю список результатов из первого запроса, затем я должен перебирать их и запрашивать каждый для свойств для того, что я ищу.
tl; dr: есть ли более простой способ получить список свойств объекта по названию объекта?
Это делает его немного проще, но если вы знаете, какое свойство вы хотите, используйте wbgetclaims вместо wbgetentities. Например. https://www.wikidata.org/w/api.php?action=wbgetclaims&format=json&entity=Q42&property=P214 – Ainali
Я уже пробовал это, вам нужно будет убедиться, что ваш Q содержит P214, чтобы ваш запрос работал. Поскольку мне нужно получить 'Q', а затем' viafId' по поиску по имени, мне нужно сначала проверить Q (или список Q, если результат такой добрый), даже перед тем как продолжить P214. – svarog
Вы не можете получить идентификатор VIAF из элемента, у которого нет P214. Таким образом, запрос будет работать для всех элементов, которые вы заинтересованы в получении результатов, он не нуждается в проверке перед запросом на значение. Пример: Q1 не имеет P214, поэтому нет идентификатора VIAF для получения. Запрос https://www.wikidata.org/w/api.php?action=wbgetclaims&format=json&entity=Q1&property=P214 скажет вам об этом. – Ainali