Я пытаюсь создать запрос Wikidata, чтобы найти все свойства определенного типа, которые используются для данного элемента Wikidata. В частности, мне нужен список ссылок на идентификаторы полномочий от различных организаций для человека.
Я начал с поиска всех свойств, которые являются своего рода авторитетной записью, вместе с их ярлыками, шаблонами ссылок и т. Д. Это прекрасно работает:
SELECT ?auth ?authLabel ?desc ?linkPattern ?countryLabel ?remoteID WHERE {
?auth wdt:P31 wd:Q19595382; # Properties of type "person authority"
schema:description ?desc; # Plain-english description
wdt:P1630 ?linkPattern . # Link pattern
OPTIONAL { ?auth wdt:P17 ?country. } # Country of origin, if you have it
FILTER((LANG(?desc)) = "en")
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
Это дает мне список всех авторитетных лиц в Викиданных с их вспомогательной информацией, которая является хорошей отправной точкой. Тем не менее, я хочу, чтобы этот список, но только показ записей для конкретного человека
Я подумал, что это сработает, поскольку запросы Wikidata SPARQL должны обрабатывать переменные как предикаты:
SELECT ?auth ?authLabel ?desc ?linkPattern ?countryLabel ?remoteID WHERE {
?auth wdt:P31 wd:Q19595382;
schema:description ?desc;
wdt:P1630 ?linkPattern .
wd:Q5145349 ?auth ?remoteID . # <-- Authority record property must appear in person Q5145349 (Colin McCahon)
OPTIONAL { ?auth wdt:P17 ?country. }
FILTER((LANG(?desc)) = "en")
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
но это возвращает ноль результатов. Нет ошибок, просто пусто.
Единственная подсказка, которую я получил, заключается в том, что список идентификаторов свойств, даже если они являются свойствами, возвращается с префиксом "wd:", а не с префиксом "wdt:" / пространством имен обычно используется предикатами, поэтому, возможно, его нужно каким-то образом преобразовать в другое пространство типов / имен. Но я не уверен, имеет ли это значение.
Может быть, есть способ сделать это с помощью фильтров или другой хитрости после запроса, но то, что я написал во втором примере (сохранение моего элемента person как части графика), представляется предпочтительным. И я определенно хотел бы сохранить это в одном запросе.
Любая помощь будет приветствоваться. Я много искал, не найдя примера, который решает проблему превращения субъекта в предикат в том же запросе. Спасибо!