Служба запросов Wikidata: указание двух значений столбца на основе агрегации - PullRequest
0 голосов
/ 30 января 2020

Это будет немного сложно объяснить, поэтому сначала позвольте мне сказать, что я пытаюсь сделать. По сути, мне нужны три столбца: год, страна и самый высокий номинальный ВВП среди всех стран в этом году.

Например: | 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)

Редактировать: Если вы не знакомы с утверждениями и классификаторами Викиданных, эта страница должна помочь .

...