Это будет немного сложно объяснить, поэтому сначала позвольте мне сказать, что я пытаюсь сделать. По сути, мне нужны три столбца: год, страна и самый высокий номинальный ВВП среди всех стран в этом году.
Например: | 1960 | United States | 3007 |
Вот что у меня есть до сих пор с помощью службы запросов Wikidata. Не стесняйтесь попробовать.
Когда вы выполняете запрос, я его настраиваю таким образом, чтобы вместо одной страны с наивысшим номинальным ВВП того года отображались все страны, которые сгруппированы (при использовании GROUP BY). Колонка «Страны» - это просто временный заполнитель для иллюстрации происходящего; Мне нужна только страна с самым высоким номинальным ВВП за год, а не все страны, протестированные на максимальное значение.
Я даже не знаю, возможно ли это с помощью SPARQL, поэтому я спрашивая. Буду признателен за любую помощь, спасибо!
Я включу здесь запрос для вашего удобства.
SELECT ?pointInTime (GROUP_CONCAT(?countryLab) AS ?countries) (MAX(?amount) AS ?maxAm)
WHERE {
# select all entities that are instances of a country
?country wdt:P31 wd:Q6256.
# Define Wikidata statement for each country
?country p:P2132 ?statement.
# Extract nominal GDP from the country's statement
?statement ps:P2132 ?amount.
# Extract point in time of when nominal GDP was recorded (qualifier)
?statement pq:P585 ?pointInTime.
# Gets english label for country
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en".
?country rdfs:label ?countryLab.
}
}
GROUP BY ?pointInTime
ORDER BY ASC(?pointInTime)
Редактировать: Если вы не знакомы с утверждениями и классификаторами Викиданных, эта страница должна помочь .