Программирование Викиданных/Области России
Эта страница посвящена исследованию свойств множества объектов Викиданных, представляющих собой регионы России. С помощью SPARQL-запросов были получены данные о количестве всех субъектов Российской Федерации, а именно: области России, республики, города федерального значения, края, автономные области, автономные округа, бывшие административно-территориальные единицы). Построен граф субъектов России, граничащих с зарубежными странами (граф соседей), а также нарисована карта, на которой отмечена численность населения отдельных регионов. Была выполнена оценка степени заполненности свойства Викиданных "shares border with" (граничит с) у каждого субъекта РФ. Читатель познакомится с компьютерной обработкой Викиданных и визуализацией информации о регионах России.
Экземпляры объекта «Области России»
[править]- Объекты: области России (Q835714)
- Свойство: экземпляры (P31)
Построим список всех областей России.
# 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 год.
Оставляем пока открытым вопрос, почему за четыре года в России стало на две области меньше.
👍 Наиболее полными и проработанными областями России на Викиданных являются: Московская область, Тюменская область, Курская область
👎 Почти пустыми и малоинформативными областями России оказались: Читинская область,Костромская область, Оренбургская область.
Субъекты Российской Федерации
[править]Построим список всех субъектов Российской Федерации - республики, края, области, города федерального значения, автономные области и автономные округа.
Используются:
- объект области России(Q835714)
- объект республики России(Q41162)
- объект города федерального значения России(Q183342)
- объект края России(Q831740)
- объект автономные области России(Q309166)
- объект автономные округа России(Q184122)
- объект бывшая административно-территориальная единица(Q19953632)
- свойство экземпляры (P31)
# 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".
Используются:
- объект области России(Q835714)
- объект республики России(Q41162)
- объект города федерального значения России(Q183342)
- объект края России(Q831740)
- объект автономные области России(Q309166)
- объект автономные округа России(Q184122)
- объект бывшая административно-территориальная единица(Q19953632)
- свойство граничит (P47)
- свойство экземпляры (P31)
# 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" (граничит с):
Используются:
- объект области России(Q835714)
- объект республики России(Q41162)
- объект города федерального значения России(Q183342)
- объект края России(Q831740)
- объект автономные области России(Q309166)
- объект автономные округа России(Q184122)
- объект бывшая административно-территориальная единица(Q19953632)
- свойство граничит (P47)
- свойство экземпляры (P31)
# 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 обозначаются фиолетовым цветом
Используются:
- объект области России(Q835714)
- объект республики России(Q41162)
- объект города федерального значения России(Q183342)
- объект края России(Q831740)
- объект автономные области России(Q309166)
- объект автономные округа России(Q184122)
- объект бывшая административно-территориальная единица(Q19953632)
- свойство координаты (P625)
- свойство численность населения (P1082)
- свойство экземпляры (P31)
#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 год.
Результат работы скрипта представлен на рисунке ниже.
Защита страниц
[править]На страницы Викиданных устанавливается защита для предотвращения повторяющегося вандализма или спама. Существует несколько видов защиты:
- Частичная защита или полузащита (обозначается серым замком) разрешает редактировать страницу только автоподтверждённым/подтверждённым участникам.
- Полная защита (обозначается оранжевым или красным замком) ограничивает круг редакторов администраторами.
- Защита от переименования (обозначается зелёным замком) не ограничивает возможность редактировать страницу, однако переименовать её могут только администраторы. Большинство популярных страниц защищено от переименования. Защита от переименования не может быть применена к страницам элементов или свойств.
- Защита от создания (как полная, так и частичная защита обозначается синим замком) может применяться к удалённым или несуществующим страницам. Однако, как и защита от переименования, она не может применяться к удалённым элементам или свойствам.
- При полной защите от создания страницу не может создать никто, кроме администраторов.
- При частичной защите от создания страницу могут создать также автоподтверждённые и подтверждённые участники.
В крайне редких случаях Фонд Викимедиа может защитить страницу в качестве официального действия (office action, обозначается чёрным замком). Официальные действия совершаются только в результате формальной вневикипедийной жалобы, всегда публично объявляются и выполняются только сотрудниками Фонда Викимедиа или членами Совета попечителей.
Будущая работа
[править]- Выстроить все субъекты Российской Федерации в порядке убывания количества территорий, с которыми они граничат. Для наглядности можно построить диаграмму. На основании полученных данных написать свое предположение о том, почему одни субъекты имеют больше соседей, а другие — меньше.
- Найти субъекты Российской Федерации, которые граничат с зарубежными странами. Отметить эти субъекты на карте.
- Сгруппировать все субъекты Российской Федерации по часовым поясам, в которых они находятся. Определить общую численность населения для каждой из групп, на основании чего построить пузырьковую диаграмму.
- Подсчитать количество субъектов РФ в федеральных округах. Вывести результат, например, в bubble chart.
- Составить гистограмму численности населения субъектов РФ.
- Составить граф водных объектов (моря, озера или реки) для субъектов РФ.
Упражнения
[править]
SPARQL-запросы с ответами:
- границы и дата возникновения по субъектам,
- субъекты, которые входят в состав РФ.
- флаги субъектов.
Примечания
[править]Ссылки
[править]- Конституция Российской Федерации, Глава 3, статья 65. Legal literature (2014). Проверено 9 мая 2017.
- Поиск соседних регионов России и их классификация по численности населения с помощью языка запросов SPARQL (2017). Проверено 9 мая 2017.
- Zinchenko T. Subjects of Russia (англ.). ProWD (2021). Проверено 28 сентября 2021.