Я новичок в SPARQL и викиданные, и я пытаюсь получить следующее за Hugo Award Winners:Как получить победителей Хьюго из Викидаты?
- работы Название
- Автор
- Год Won
Я в поиске это удивительно сложно.
Я начал с запроса всех кортежей, связанных с наградой за лучший роман с типом ссылки «выиграл».
SELECT DISTINCT ?winner WHERE {
# P166: Award Recieved By
# Q103360: Hugo Award for Best Novel
?winner ps:P1346 wd:Q255032.
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
Это работает, но когда я добавить ссылку на заголовок от победителя, нет данных:
SELECT DISTINCT ?winner WHERE {
?winner ps:P1346 wd:Q255032.
OPTIONAL {
# P1476: Title
?winner wdt:P1476 ?title.
}
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
Что я делаю неправильно? Я пробовал разные пространства имен, с небольшим пониманием и безрезультатно.
На странице для победителей Гюго, есть раздел победителей: https://www.wikidata.org/wiki/Q255032#P1346
Как это генерируется? Я пытался запросить эту собственность и получили обратные ссылки на людей (я думаю):
SELECT DISTINCT ?winner ?winnerLabel ?for WHERE {
# P166: winner
# Q103360: Hugo Award for Best Novel
wd:Q255032 wdt:P1346 ?winner.
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
Ваш первый запрос делает ** не ** ничего возвращать! По крайней мере, не для меня, когда я попробовал это на https://query.wikidata.org. Так почему вы не используете 'wdt: P166' в качестве предиката? – AKSW
И второй запрос также работает, когда вы используете предикат 'wdt: P166'. Но, чтобы вернуть поля обратно, нужно добавить их в часть SELECT, т. Е. Победитель SELECT DISTINCT? WinnerLabel? TitleLabel' – AKSW