Программирование Викиданных/Города

Материал из Викиверситета
Перейти к навигации Перейти к поиску

Эта статья посвящена исследованию двух объектов Викиданных — «Город» и «Большой город». С помощью SPARQL-запросов к Викиданным получены данные о количестве экземпляров объектов «Город» и «Большой город», решены следующие задачи:

  • Подсчёт числа городов, не имеющих побратимов.
  • Построение списка городов, упорядоченного по числу побратимов.
  • Нахождение числа городов с определённым числом побратимов.

Решение последней задачи дополнено диаграммой.

Экземпляры[править]

«Город»[править]

  • Элемент Викиданных: Q515
SELECT ?city ?cityLabel WHERE {
  ?city wdt:P31 wd:Q515.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}

SPARQL-запрос на query.wikidata.org (20800 экземпляров на 03.05.2017)

Наиболее полно описанными городами на Викиданных являются: Сан-Франциско, Берлин, Петрозаводск, …

Почти пустыми и малоинформативными городами оказались: Мадинат Зайед, Музаффарпур, Уиллоу-Ривер , …

«Большой город»[править]

  • Элемент Викиданных: Q1549591
SELECT ?city ?cityLabel WHERE {
  ?city wdt:P31 wd:Q1549591.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}

SPARQL-запрос на query.wikidata.org (198 экземпляров на 03.05.2017)

Наиболее полно описанными большими городами на Викиданных являются: Берн, Берлин, Женева, …

Почти пустыми и малоинформативными большими городами оказались: Баланга (Нигерия), Унгаран, Каес, …

«Город» и «Большой город»[править]

SELECT ?city ?cityLabel WHERE {
  { ?city wdt:P31 wd:Q515 } UNION
  { ?city wdt:P31 wd:Q1549591 }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}

SPARQL-запрос на query.wikidata.org (20998 экземпляров на 03.05.2017)

Задачи[править]

Сколько городов без городов-побратимов?[править]

Используются:

SELECT (COUNT(?city) as ?count) WHERE {                             # Counting items ... 
  ?city wdt:P31 wd:Q515.                                            # ... which are cities ...
  FILTER NOT EXISTS { ?city wdt:P190 [] }                           # ... with unfilled property "sister city"
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}

SPARQL-запрос на query.wikidata.org (17823 города на 03.05.2017)

Упорядоченный список городов по числу побратимов[править]

Все[править]

Используются:

SELECT ?cityLabel (COUNT(?item) AS ?count) WHERE {                   # Counting sister cities  ...
  ?city wdt:P31 wd:Q515.                                             # ... of cities ...
  ?city wdt:P190 ?item.                                              # ... with filled property "sister city"
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
GROUP BY ?city ?cityLabel                                            # Grouping by city
ORDER BY DESC(?count)                                                # Sorting by number of sister cities (descending)

SPARQL-запрос на query.wikidata.org

Россия[править]

Используются:

SELECT ?cityLabel (COUNT(?item) AS ?count) WHERE {                   # Counting sister cities  ...
  ?city wdt:P31 wd:Q515.                                             # ... of cities ...
  ?city wdt:P17 wd:Q159.                                             # ... belonging to Russia ...
  ?city wdt:P190 ?item.                                              # ... with filled property "sister city"
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
GROUP BY ?city ?cityLabel                                            # Grouping by city
ORDER BY DESC(?count)                                                # Sorting by number of sister cities (descending)

SPARQL-запрос на query.wikidata.org

Число городов с определённым числом побратимов[править]

Все[править]

Используются:

#defaultView:LineChart                                                   # Do line chart as result representation
SELECT ?haveNSisterCities (COUNT(?haveNSisterCities) AS ?qty) WHERE {    # Count No. of cities having sister cities 
                                                                         # and number of sister cities themselves
  {
     SELECT (COUNT(?item) AS ?haveNSisterCities) WHERE {                 # Count sister cities ...
       ?city wdt:P31 wd:Q515.                                            # ... of cities ...
       ?city wdt:P190 ?item.                                             # ... that do have them
        SERVICE wikibase:label { bd:serviceParam wikibase:language "en".} 
      }
      GROUP BY ?city                                                     # Group list by city
      ORDER BY DESC(?haveNSisterCities)                                  # Order by sister city qty (descending)
  }
}
GROUP BY ?haveNSisterCities                                              # Group by sister city qty
ORDER BY DESC(?haveNSisterCities)                                        # Order by sister city qty (descending)

SPARQL-запрос на query.wikidata.org

Россия[править]

Используются:

#defaultView:LineChart                                                   # Do line chart as result representation
SELECT ?haveNSisterCities (COUNT(?haveNSisterCities) AS ?qty) WHERE {    # Count No. of cities having sister cities 
                                                                         # and number of sister cities themselves
  {
     SELECT (COUNT(?item) AS ?haveNSisterCities) WHERE {                 # Count sister cities ...
       ?city wdt:P31 wd:Q515.                                            # ... of cities ...
       ?city wdt:P17 wd:Q159.                                            # ... belonging to Russia ...
       ?city wdt:P190 ?item.                                             # ... that do have them
        SERVICE wikibase:label { bd:serviceParam wikibase:language "en".} 
      }
      GROUP BY ?city                                                     # Group list by city
      ORDER BY DESC(?haveNSisterCities)                                  # Order by sister city qty (descending)
  }
}
GROUP BY ?haveNSisterCities                                              # Group by sister city qty
ORDER BY DESC(?haveNSisterCities)                                        # Order by sister city qty (descending)

SPARQL-запрос на query.wikidata.org

Зависимость числа городов (N) от числа имеющихся у этих городов побратимов (S)


На диаграмме выше видно, что большинство городов (78% или 162 города) имеют от одного до пяти побратимов.

Полнота Викиданных[править]

Городом принято называть крупный населённый пункт, жители которого, как правило, не заняты сельским хозяйством. Трудность в том, что разные страны используют разные критерии при наделении поселений статусом города. Основной — показатель численности населения. А некоторые страны и вовсе не применяют понятие города. Так, во Франции используется только одна географическая единица подобного рода — коммуна, вне зависимости от количества людей и рода деятельности. Поэтому чётко определить, какой населенный пункт включать в число всех городов в мире, а какой нет, может быть затруднительно.

По данным всероссийской переписи населения, проведённой в 2010 году, число городов составляло 1100[1].

Число городов России, имеющих статью в русской Википедии — 1113, в английской — 1110

Число элементов Викиданных, являющихся российскими городами — 1122[2]. Таким образом, Викиданные полностью покрывают, как минимум, российские города.

Другая проблема, возникающая при анализе городов с использованием Викиданных — связана со свойством "instance of". Для одного города "instance of" может быть city, big city, или даже оба сразу. Некоторые города (таковым был, например, Петрозаводск), имея больше 100000 жителей, помечены как "city", что также мешает анализу. Решение этой проблемы — использовать конструкцию вида

?X wdt:P31/wdt:P279* ?Y

В этом случае для переменной ?X учитываются все подклассы элемента ?Y любой вложенности.

Будущая работа[править]

  1. Построить граф братских городов России.
  2. Получить список городов России, находящихся за полярным кругом.
  3. На какой реке в России стоит наибольшее число городов?

Упражнения[править]

1

Какие города были названы в честь географических объектов?

Тольятти
Тула
Черняховск
Курильск
Вологда
Обнинск

2

Какие из этих флагов принадлежат таким российским городам, как Нижневартовск, Петропавловск-Камчатский, Нефтекамск и Карабулак?

Flag of Neftekamsk.svg
Flag of Karabulak (Ingushetia).png
Flag of Anenii Noi.svg
Flag of Nizhnevartovsk (Khanty-Mansia).svg
Flag of Pastavy.svg
Flag of Petropavlovsk-Kamchatsky (Kamchatka krai).png

3

Какие из этих городов были основаны более 400 лет назад?

Москва
Саров
Казань
Астрахань
Самара
Воронеж

Проверка:

  1. города, названные в честь географических объектов
  2. флаги городов
  3. города, основанные более 400 лет назад

Примечания[править]

Ссылки[править]