Программирование Викиданных/Области России
Эта страница посвящена исследованию свойств множества объектов Викиданных, представляющих собой регионы России. С помощью 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.