Этот запрос находит лауреатов Нобелевской премии по химии.
SELECT DISTINCT ?item ?itemLabel ?when (YEAR(?when) as ?date)
WHERE {
?item p:P166 ?awardStat .
?awardStat ps:P166 wd:Q44585 .
?awardStat pq:P585 ?when .
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" . }
}
См. Здесь
Теперь хотел бы найти лауреатов химии в периодвремя (диапазон дат).
Одним из подходов может быть поиск каждого целевого года (каждый момент времени P585
), а затем объединение результатов.
Нолучшим подходом может быть фильтрация набора результатов сверху.Например, фильтр, где самым ранним ?date
является «2014», а самым последним ?date
является «2017»
Однако этот фильтр завершается ошибкой:
SELECT DISTINCT ?item ?itemLabel ?when (YEAR(?when) as ?date)
WHERE {
?item p:P166 ?awardStat .
?awardStat ps:P166 wd:Q44585 .
?awardStat pq:P585 ?when .
FILTER(?date <= "2017"^^pq:P585 && ?date > "2014"^^pq:P585)
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" . }
}
Моя мысль заключалась в том, чтобы указатьстрока «2014» как qualifier
для момента времени , но это не сработало.
Как изменить запрос SPARQL Wikidata для поиска / фильтрации результатов между двумямоменты времени?