Программирование Викиданных/Области России

Эта страница посвящена исследованию свойств множества объектов Викиданных, представляющих собой регионы России. С помощью SPARQL-запросов были получены данные о количестве всех субъектов Российской Федерации, а именно: области России, республики, города федерального значения, края, автономные области, автономные округа, бывшие административно-территориальные единицы). Построен граф субъектов России, граничащих с зарубежными странами (граф соседей), а также нарисована карта, на которой отмечена численность населения отдельных регионов. Была выполнена оценка степени заполненности свойства Викиданных "shares border with" (граничит с) у каждого субъекта РФ. Читатель познакомится с компьютерной обработкой Викиданных и визуализацией информации о регионах России.

Экземпляры объекта «Области России» править

Построим список всех областей России.

# List of `instances of` "oblast of Russia"
SELECT ?region ?regionLabel
WHERE
{
    ?region wdt:P31 wd:Q835714. # instance of "oblast of Russia"
    SERVICE wikibase:label { bd:serviceParam wikibase:language "ru"}
}

SPARQL запрос, 48 записей на 2017 год и 46 записей на 2021 год.

Оставляем пока открытым вопрос, почему за четыре года в России стало на две области меньше.

👍 Наиболее полными и проработанными областями России на Викиданных являются: Московская область, Тюменская область, Курская область

👎 Почти пустыми и малоинформативными областями России оказались: Читинская область,Костромская область, Оренбургская область.

Субъекты Российской Федерации править

Построим список всех субъектов Российской Федерации - республики, края, области, города федерального значения, автономные области и автономные округа.

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

# List of `instances of` "subjects of Russia" 
SELECT ?subject ?subjectLabel ?typeLabel
WHERE
{  
  VALUES ?type {wd:Q835714   # Oblast of Russia
                wd:Q41162    # Republic of Russia
                wd:Q183342   # Federal city of Russia
                wd:Q831740   # Krai of Russia
                wd:Q309166   # Autonomus oblast of Russia
                wd:Q184122}  # Autonomus okrug of Russia
  ?subject wdt:P31 ?type.  # Selecting the type of object
  SERVICE wikibase:label { bd:serviceParam wikibase:language "ru"}
}

SPARQL запрос, 85 записей на 2017 год, 86 записей на 2021 год.

Соседние субъекты править

Построим граф соседних субъектов РФ по свойству "shares border with".

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

# Graph of "subjects of Russia" `shares border with`. 
#defaultView:Graph
SELECT *
WHERE 
{
  # no borders with the objects of Russia
  {
    SELECT ?subject ?subjectLabel ?rgb
    ?subjects ?subjectsLabel 
    WHERE
    {
      SERVICE wikibase:label { bd:serviceParam wikibase:language "ru"}
  
      VALUES ?type {wd:Q835714   # Oblast of Russia
                    wd:Q41162    # Republic of Russia
                    wd:Q183342   # Federal city of Russia
                    wd:Q831740   # Krai of Russia
                    wd:Q309166   # Autonomus oblast of Russia
                    wd:Q184122}  # Autonomus okrug of Russia
      ?subject wdt:P31 ?type.
    }
  }
  UNION
  # Autonomus okrug of Russia
  {
    SELECT ?subject ?subjectLabel ?rgb
    ?subjects ?subjectsLabel 
    WHERE
    {
      SERVICE wikibase:label { bd:serviceParam wikibase:language "ru"}
  
      VALUES ?type {wd:Q835714   # Oblast of Russia
                    wd:Q41162    # Republic of Russia
                    wd:Q183342   # Federal city of Russia
                    wd:Q831740   # Krai of Russia
                    wd:Q309166   # Autonomus oblast of Russia
                    wd:Q184122}  # Autonomus okrug of Russia
      ?subjects wdt:P31 ?type.  # Selecting the type of object  
  
      ?auto_okrug wdt:P31 wd:Q184122; wdt:P47 ?subjects.
  
      BIND(IF(?auto_okrug != '',"9932CC",IF(?rgb != '',?rgb,"FFFFFF")) AS ?rgb).
      BIND(IF(?auto_okrug != '',?auto_okrug,     ?subjects) AS ?subject).
      BIND(IF(?auto_okrug != '',?auto_okrugLabel,?subjectsLable) AS ?subjectLable). 
    }
  }
  UNION
  # Autonomus oblast of Russia
  {
    SELECT ?subject ?subjectLabel ?rgb
    ?subjects ?subjectsLabel 
    WHERE
    {
      SERVICE wikibase:label { bd:serviceParam wikibase:language "ru"}
  
      VALUES ?type {wd:Q835714   # Oblast of Russia
                    wd:Q41162    # Republic of Russia
                    wd:Q183342   # Federal city of Russia
                    wd:Q831740   # Krai of Russia
                    wd:Q309166   # Autonomus oblast of Russia
                    wd:Q184122}  # Autonomus okrug of Russia
      ?subjects wdt:P31 ?type.  # Selecting the type of object  
  
      ?auto_oblast wdt:P31 wd:Q309166; wdt:P47 ?subjects.
  
      BIND(IF(?auto_oblast != '',"ced685",IF(?rgb != '',?rgb,"FFFFFF")) AS ?rgb).
      BIND(IF(?auto_oblast != '',?auto_oblast,     ?subjects) AS ?subject).
      BIND(IF(?auto_oblast != '',?auto_oblastLabel,?subjectsLable) AS ?subjectLable). 
    }
  }
  UNION
  # Krai of Russia
  {
    SELECT ?subject ?subjectLabel ?rgb
    ?subjects ?subjectsLabel 
    WHERE
    {
      SERVICE wikibase:label { bd:serviceParam wikibase:language "ru"}
  
      VALUES ?type {wd:Q835714   # Oblast of Russia
                    wd:Q41162    # Republic of Russia
                    wd:Q183342   # Federal city of Russia
                    wd:Q831740   # Krai of Russia
                    wd:Q309166   # Autonomus oblast of Russia
                    wd:Q184122}  # Autonomus okrug of Russia
      ?subjects wdt:P31 ?type.  # Selecting the type of object  
  
      ?krai wdt:P31 wd:Q831740; wdt:P47 ?subjects.
  
      BIND(IF(?krai != '',"7495db",IF(?rgb != '',?rgb,"FFFFFF")) AS ?rgb).
      BIND(IF(?krai != '',?krai,     ?subjects) AS ?subject).
      BIND(IF(?krai != '',?kraiLabel,?subjectsLable) AS ?subjectLable). 
    }
  }
  UNION
  # Federal city of Russia
  {
    SELECT ?subject ?subjectLabel ?rgb
    ?subjects ?subjectsLabel 
    WHERE
    {
      SERVICE wikibase:label { bd:serviceParam wikibase:language "ru"}
  
      VALUES ?type {wd:Q835714   # Oblast of Russia
                    wd:Q41162    # Republic of Russia
                    wd:Q183342   # Federal city of Russia
                    wd:Q831740   # Krai of Russia
                    wd:Q309166   # Autonomus oblast of Russia
                    wd:Q184122}  # Autonomus okrug of Russia
      ?subjects wdt:P31 ?type.  # Selecting the type of object  
  
      ?fed_city wdt:P31 wd:Q183342; wdt:P47 ?subjects.
  
      BIND(IF(?fed_city != '',"e8a2e8",IF(?rgb != '',?rgb,"FFFFFF")) AS ?rgb).
      BIND(IF(?fed_city != '',?fed_city,     ?subjects) AS ?subject).
      BIND(IF(?fed_city != '',?fed_cityLabel,?subjectsLable) AS ?subjectLable).
    }
  }
  UNION
  # Republic of Russia
  {
    SELECT ?subject ?subjectLabel ?rgb
    ?subjects ?subjectsLabel 
    WHERE
    {
      SERVICE wikibase:label { bd:serviceParam wikibase:language "ru"}
  
      VALUES ?type {wd:Q835714   # Oblast of Russia
                    wd:Q41162    # Republic of Russia
                    wd:Q183342   # Federal city of Russia
                    wd:Q831740   # Krai of Russia
                    wd:Q309166   # Autonomus oblast of Russia
                    wd:Q184122}  # Autonomus okrug of Russia
      ?subjects wdt:P31 ?type.  # Selecting the type of object  
  
      ?republic wdt:P31 wd:Q41162; wdt:P47 ?subjects.
  
      BIND(IF(?republic != '',"7FFF00",IF(?rgb != '',?rgb,"FFFFFF")) AS ?rgb).
      BIND(IF(?republic != '',?republic,     ?subjects) AS ?subject).
      BIND(IF(?republic != '',?republicLabel,?subjectsLable) AS ?subjectLable).
    }
  }
  UNION
  # Oblast of Russia
  {
    SELECT ?subject ?subjectLabel ?rgb
    ?subjects ?subjectsLabel 
    WHERE
    {
      SERVICE wikibase:label { bd:serviceParam wikibase:language "ru"}
  
      VALUES ?type {wd:Q835714   # Oblast of Russia
                    wd:Q41162    # Republic of Russia
                    wd:Q183342   # Federal city of Russia
                    wd:Q831740   # Krai of Russia
                    wd:Q309166   # Autonomus oblast of Russia
                    wd:Q184122}  # Autonomus okrug of Russia
      ?subjects wdt:P31 ?type.  # Selecting the type of object  
  
      ?oblast wdt:P31 wd:Q835714; wdt:P47 ?subjects.
  
      BIND(IF(?oblast != '',"e87b7b",IF(?rgb != '',?rgb,"FFFFFF")) AS ?rgb).
      BIND(IF(?oblast != '',?oblast,     ?subjects) AS ?subject).
      BIND(IF(?oblast != '',?oblastLabel,?subjectsLable) AS ?subjectLable).
    }
  }
}

SPARQL-запрос, 467 записей на 2017 год, SPARQL-запрос 482 записи на 2021 год.

Полученное число формируется путем сложения количества соседних территорий для всех субъектов России. Результат работы скрипта - граф, отображающий соседние субъекты, представлен на рисунке ниже. На нем отчетливо видно изолированную компоненту, которая является Калининградской областью.

 
Граф субъектов России. Карелия
 
Граф субъектов России.Калининград


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

Построим список субъектов РФ с пустым свойством "shares border with" (граничит с):

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

# List of "subjects of Russia" without `shares border with`. 
SELECT ?subject ?subjectLabel ?sharesBorderWith ?sharesBorderWithLabel
WHERE
{
  { ?subject wdt:P31 wd:Q835714 } UNION  # Oblast of Russia
  { ?subject wdt:P31 wd:Q41162 } UNION  # Republic of Russia
  { ?subject wdt:P31 wd:Q183342 } UNION  # Federal city of Russia
  { ?subject wdt:P31 wd:Q831740 } UNION  # Krai of Russia
  { ?subject wdt:P31 wd:Q309166 } UNION # Autonomus oblast of Russia
  { ?subject wdt:P31 wd:Q184122 } # Autonomus okrug of Russia
  
  FILTER NOT EXISTS {?subject wdt:P31 wd:Q19953632} # Former administrative territorial entity
  MINUS { ?subject  wdt:P47 [] } . #Shares border with 
  SERVICE wikibase:label { bd:serviceParam wikibase:language "ru"}
}

SPARQL-запрос, ноль записей на 2017 год, 1 запись на 2021 год.

Таким образом, на Викиданных нет изолированных субъектов РФ, что соответствует действительности.
Информация, необходимая для решения задачи:

  • По данным Конституции Российской Федерации Россия состоит из 85 субъектов — республик, краёв, областей, городов федерального значения, автономной области, автономных округов[1].
  • В этой задаче не учитываются субъекты, которые на текущий момент времени не входят в состав РФ (например: Читинская область (Q182902)), поскольку они не являются экземплярами объектов "oblast of Russia", "republic of Russia", "federal city of Russia", "krai of Russia", "autonomus okrug of Russia", "autonomus oblast of Russia", а относятся к объекту "former administrative territorial entity" (бывшая административно-территориальная единица). Для данной задачи важно то, что общее количество субъектов РФ с учётом бывших административно-территориальных единиц увеличится.(Получаем 94 объекта после выполнения SPARQL-запроса).
  • По данным категории "Субъекты Российской Федерации" Русской Википедии существует 85 субъектов РФ.
  • По данным категории "Federal subjects of Russia" Английской Википедии так же существует 85 субъектов РФ.

В Викиданных больше всего свойств в России и в мире (по данным ProWD) у Ленинградской и Калининградской областей, по 43 свойства. Число свойств для России и мира одинаковое, т.к. и для России и для мира это одни и те же объекты.

Численность населения отдельных субъектов Российской Федерации править

Обозначим на карте субъекты Российской Федерации, разделив их на 6 групп по количеству населения. Субъекты, принадлежащие одной группе, будут отображаться на карте одним цветом, а именно:

  • субъекты с количеством населения менее 500000 обозначаются синим цветом
  • субъекты с количеством населения более 500000, но менее 1000000 обозначаются оранжевым цветом
  • субъекты с количеством населения более 1000000, но менее 3000000 обозначаются зеленым цветом
  • субъекты с количеством населения более 300000, но менее 8000000 обозначаются красным цветом
  • субъекты с количеством населения более 800000, но менее 10000000 найдены не были
  • субъекты с количеством населения более 1000000 обозначаются фиолетовым цветом

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

#Map of `population` "subject of Russia"
#Version 2017
#defaultView:Map
SELECT DISTINCT ?subject ?subjectLabel (SAMPLE(?location) AS ?location) (MAX(?population) AS ?population) (SAMPLE(?layer) AS ?layer)
WHERE
{
  {
    { ?subject wdt:P31 wd:Q835714 } UNION  # Oblast of Russia
  { ?subject wdt:P31 wd:Q41162 } UNION  # Republic of Russia
  { ?subject wdt:P31 wd:Q183342 } UNION  # Federal city of Russia
  { ?subject wdt:P31 wd:Q831740 } UNION  # Krai of Russia
  { ?subject wdt:P31 wd:Q309166 } UNION # Autonomus oblast of Russia
  { ?subject wdt:P31 wd:Q184122 } # Autonomus okrug of Russia
  }   
  ?subject wdt:P625 ?location .
  ?subject wdt:P1082 ?population .
  FILTER NOT EXISTS {?subject wdt:P31 wd:Q19953632}  # former administrative territorial entity
  BIND(
    IF(?population < 500000, "менее 500000",
    IF(?population < 1000000, "500000 - 1000000",
    IF(?population < 3000000, "1000000 - 3000000",
    IF(?population < 8000000, "3000000 - 8000000",
    IF(?population < 10000000, "8000000 - 10000000",
    "более 10000000")))))
    AS ?layer).
  SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,en,[AUTO_LANGUAGE]"}
}
GROUP BY ?subject ?subjectLabel
ORDER BY ?population
# Map of `population` "subject of Russia"
# Version 2021
#defaultView:Map
SELECT DISTINCT ?subject ?subjectLabel ?population ?coord ?layer
{
  {
    { ?subject wdt:P31 wd:Q835714 } UNION  # Oblast of Russia
    { ?subject wdt:P31 wd:Q41162 } UNION  # Republic of Russia
    { ?subject wdt:P31 wd:Q183342 } UNION  # Federal city of Russia
    { ?subject wdt:P31 wd:Q831740 } UNION  # Krai of Russia
    { ?subject wdt:P31 wd:Q309166 } UNION # Autonomus oblast of Russia
    { ?subject wdt:P31 wd:Q184122 } # Autonomus okrug of Russia
  }   
  ?subject wdt:P625 ?coord; wdt:P1082 ?population.
  
  FILTER NOT EXISTS {?subject wdt:P31 wd:Q19953632}  # former administrative territorial entity
  BIND(
    IF(?population < 500000, "< 500000",
    IF(?population < 1000000, "500000 - 1000000",
    IF(?population < 3000000, "1000000 - 3000000",
    IF(?population < 8000000, "3000000 - 8000000",
    IF(?population < 10000000, "8000000 - 10000000",
    "> 10000000")))))
    AS ?layer).
  
  SERVICE wikibase:label { bd:serviceParam wikibase:language "ru"}
}
ORDER BY ?population

SPARQL-запрос версия 2017, 85 записей на 2017 год.

SPARQL-запрос версия 2021, 86 записей на 2021 год.


Результат работы скрипта представлен на рисунке ниже.

 
Карта субъектов Российской Федерации, разделенных на 6 групп по количеству населения и отмеченных разными цветами в зависимости от группы, в которую субъект входит

Защита страниц править

 
Объект «Орловская область» на Викиданных и символ замка справа-вверху, указывающий, что редактирование объекта ограничено, 2021

На страницы Викиданных устанавливается защита для предотвращения повторяющегося вандализма или спама. Существует несколько видов защиты:

  • Частичная защита или полузащита (обозначается серым замком) разрешает редактировать страницу только автоподтверждённым/подтверждённым участникам.
  • Полная защита (обозначается оранжевым или красным замком) ограничивает круг редакторов администраторами.
  • Защита от переименования (обозначается зелёным замком) не ограничивает возможность редактировать страницу, однако переименовать её могут только администраторы. Большинство популярных страниц защищено от переименования. Защита от переименования не может быть применена к страницам элементов или свойств.
  • Защита от создания (как полная, так и частичная защита обозначается синим замком) может применяться к удалённым или несуществующим страницам. Однако, как и защита от переименования, она не может применяться к удалённым элементам или свойствам.
    • При полной защите от создания страницу не может создать никто, кроме администраторов.
    • При частичной защите от создания страницу могут создать также автоподтверждённые и подтверждённые участники.

В крайне редких случаях Фонд Викимедиа может защитить страницу в качестве официального действия (office action, обозначается чёрным замком). Официальные действия совершаются только в результате формальной вневикипедийной жалобы, всегда публично объявляются и выполняются только сотрудниками Фонда Викимедиа или членами Совета попечителей.

Правила защиты страниц

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

  1. Выстроить все субъекты Российской Федерации в порядке убывания количества территорий, с которыми они граничат. Для наглядности можно построить диаграмму. На основании полученных данных написать свое предположение о том, почему одни субъекты имеют больше соседей, а другие — меньше.
  2. Найти субъекты Российской Федерации, которые граничат с зарубежными странами. Отметить эти субъекты на карте.
  3. Сгруппировать все субъекты Российской Федерации по часовым поясам, в которых они находятся. Определить общую численность населения для каждой из групп, на основании чего построить пузырьковую диаграмму.
  4. Подсчитать количество субъектов РФ в федеральных округах. Вывести результат, например, в bubble chart.
  5. Составить гистограмму численности населения субъектов РФ.
  6. Составить граф водных объектов (моря, озера или реки) для субъектов РФ.

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

1 Этот субъект, расположенный на северо-западе России, возник в 1923 году. Он граничит с Ленинградской, Вологодской, Архангельской и Мурманской областью. Также граничит с Финляндией на западе.
Выберите флаг того субъекта, который подходит под прочитанное вами описание.

 
 
 
 

2 Выберите, какие из представленных субъектов на текущий момент входят в состав Российской Федерации, а какие-нет.

Входит Не входит
Республика Адыгея
Камчатский край
Читинская область
Чукотский автономный округ

3 О флаге какого субъекта идет речь:
«Флаг этого субъекта представляет собой прямоугольное полотнище с отношением ширины к длине 2:3, красного цвета с двусторонним изображением в верхнем ближнем к древку углу основного элемента герба этого субъекта — развёрнутого к древку Святого Георгия Победоносца. Габаритная ширина изображения основного элемента герба на флаге этого субъекта составляет 1/5 часть длины полотнища флага».



SPARQL-запросы с ответами:

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

  1. Конституция Российской Федерации, 1993

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