Я пытаюсь загрузить список африканских стран из Викиданных вместе с их валютой.Это мой текущий запрос:
SELECT DISTINCT ?item $itemLabel ?currency ?currencyLabel ?currencyEndDate
WHERE {
?item wdt:P31 wd:Q3624078. # select only sovereign states
?item wdt:P706/wdt:P361*|wdt:P361*|wdt:P30 wd:Q15. # select items which are geographically in Africa
?item p:P31 ?statement.
?statement ps:P31 wd:Q3624078.
FILTER NOT EXISTS { ?statement pq:P582 ?end. } # filter out items which are not sovereign states anymore
FILTER NOT EXISTS { ?item wdt:P31 wd:Q3024240. } # filter out historical countries
OPTIONAL {
?item p:P38 ?currencyStatement.
?currencyStatement ps:P38 ?currency.
OPTIONAL {
?currencyStatement pq:P582 ?currencyEndDate.
}
#FILTER (?currencyEndDate = "")
}
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
ORDER BY ASC($itemLabel)
Вы можете попробовать его здесь .
Как видите, в некоторых странах есть несколько валют, но в основном этоиз-за прошлой валюты, которая в конечном итоге была заменена.Прошлые валюты имеют спецификатор даты окончания (P: 582), который загружается в переменную ?currencyEndDate
.
Теперь я хотел бы использовать ?currencyEndDate
в предложении FILTER
в строке 17.Но как только я активирую эту строку, валюты исчезнут из всех результатов.
Если я переместу строку FILTER
на две строки ниже (за пределы OPTIONAL
), то я не получу никаких результатов ввсе.
Буду благодарен за объяснение
- , как это сделать
- и почему мои запросы не работают должным образом.