Программирование Викиданных/Национальный парк
Данная статья посвящена исследованию объекта Викиданных "Национальный парк". С помощью SPARQL-запросов, вычисляемых на объектах типа "национальный парк" в Викиданных, решены такие задачи: выведен список всех ныне существующих национальных парков, список национальных парков, упорядоченных по дате создания, диаграмма парков, упорядоченных по количеству за разные годы и по странам мира, а так же карта всех национальных парков, построенная на основе географических координат. Кроме того, сделаны выводы по поводу полноты Викиданных по данной теме.
Экземпляры объекта "Национальный парк"
правитьНациональный парк - территория, где в целях охраны окружающей среды ограничена деятельность человека. В дальнейшем, возможно, будет использовано сокращение слова "национальный парк" до "парк" с целью лучшего понимания текста.
Построим список всех национальных парков.
- Свойство: экземпляр (P31)
- Объект: национальный парк (Q46169)
#List of instances of "national park"
SELECT ?park ?parkLabel
WHERE
{
?park wdt:P31 wd:Q46169. # instance of national park
SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,en" }
}
SPARQL-запрос 1665 записей (2017) и 2251 записей (2022)
Среди отечественных парков в Викиданных больше всего свойств по данным ProWD у Национального заповедника «Лосиный остров» (14 свойств). Лидером по паркам всего мира является Fort Stevens (31 свойство).
👍Наиболее полными и проработанными национальными парками на Викиданных являются: Тейде, Тингветлир, Национальный парк имени Александра Гумбольдта
👎Почти пустыми и малоинформативными национальными парками оказались: Припышминские Боры, Смольный (национальный парк), Хвалынский национальный парк
Диаграмма парков, упорядоченных по количеству за разные годы и по странам мира
правитьВыведем диаграмму парков, упорядоченных по количеству созданных парков за разные годы и по странам мира (начиная с 1900г. и по сей день). Включим в данный скрипт, в том числе, в каких странах эти парки были созданы.
#defaultView:BarChart
#underscore is for using a variable more than 1 time
SELECT DISTINCT (SAMPLE(?year) AS ?year) (COUNT(?year) AS ?count) (SAMPLE(?parkLabel) AS ?parkLabel) WHERE {
?object (wdt:P31) wd:Q46169. #instance of national park
BIND(str(YEAR(?inception)) AS ?year) #definition of year
?object wdt:P571 ?inception. #definition of inception
?object wdt:P17 ?country. #parks belong to country
?country rdfs:label ?parkLabel.
FILTER((LANG(?parkLabel)) = "ru") #filter in parkLabel = ru
}
GROUP BY ?inception ?country #group by inception + country
ORDER BY ?year ?inception #order by year + inception
SPARQL-запрос 612 записей (2017) и 1042 записей (2022).
Данный скрипт выводит количество созданных парков в определенные года, а так же страны, в которых они были созданы (рис. 1). Например, столбик голубого цвета за 2006 год означает, что было создано 25 национальных парков в Австралии.
Отсортируем данный список таким образом, чтобы года отображались последовательно (рис. 2).
Недостаток полученного скрипта в том, что, возможно, не все национальные парки мира выведутся. Это связано с тем, что у национальных парков мира существует подкласс национальных парков по странам (например, национальные парки Норвегии). Дополним предыдущую диаграмму, включив в нее эти подклассы.
#defaultView:BarChart
SELECT DISTINCT (SAMPLE(?year) AS ?year) (COUNT(?year) AS ?count) (SAMPLE(?parkLabel) AS ?parkLabel) WHERE {
?object (wdt:P31/wdt:P279*) wd:Q46169. #instance of national park of .. (Russia as example)
BIND(str(YEAR(?inception)) AS ?year) #definition of year
?object wdt:P571 ?inception. #definition of _inception
?object wdt:P17 ?country. #definition of _country
?country rdfs:label ?parkLabel.
FILTER((LANG(?parkLabel)) = "ru") #filter in parkLabel = ru
}
GROUP BY ?inception ?country #group by inception + country
ORDER BY ?year ?inception #order by year + inception
SPARQL-запрос 980 записей (2017) и 1519 записей (2022).
Можно заметить по (рис. 3), что количество национальных парков выросло.
Чтобы получить список стран (в виде гистограммы) с числом парков, которые были в них созданы когда-либо, нужно запустить следующий скрипт (первые 13 стран по количеству парков).
Площади парков
правитьПродолжаем анализ парков России и всего мира. Но теперь будем считать не количество, а качество. Мерой качества выступит площадь парка. Сначала подсчитаем, у скольких парков в мире не заполнено свойство "площадь", в абсолютных числах и в процентах.
#List of national parks with unfilled property 'area'
SELECT ?park ?parkLabel
WHERE
{
?park wdt:P31 wd:Q46169. #instance of national park
FILTER NOT EXISTS { ?park wdt:P2046 [] } #if property area is unfilled
SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,en"}
}
В результате выполнения данного скрипта мы получили 586 парков. Согласно предыдущим данным, всего в мире 2251 парков. Получается, свойство "площадь" не заполнено у 26,03% парков.
Теперь проанализируем аналогично национальные парки России. Будем считать, у скольких парков в России не заполнено свойство "площадь".
#List of national parks in Russia with unfilled property 'area'
SELECT ?park ?parkLabel
WHERE
{
?park wdt:P31 wd:Q1969226. #instance of national park in Russia
FILTER NOT EXISTS { ?park wdt:P2046 [] } #if property area is unfilled
SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,en"}
}
В результате выполнения данного скрипта мы получили 7 парков. Всего в России 65 парков. Получается, свойство "площадь" не заполнено у 10,77% парков России, что гораздо меньше в сравнении по паркам всего мира.
Хотелось бы проверить, сколько парков в мире было закрыто по Викиданным:
#List of national parks with property 'closure date'
SELECT ?park ?parkLabel ?date
WHERE
{
?park wdt:P31 wd:Q46169. #instance of national park
?park wdt:P576 ?date #display date
SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,en"}
}
Поскольку парки обычно не закрывают (в результате выполнения скрипта выяснили, что число мало - 7 результатов), то будем считать, что раз парк открыли, то площадь добавилась.
Построим диаграмму роста площади парков по странам по годам. На странице некоторых национальных парков в Викиданных указано не одно, а несколько значений площади, например как мы увидели в результатах промежуточного скрипта в парке Ондердален: 135 кв. км, 133.996 кв. км и 13,399.62468 гектаров. Второе и третье значение почти равны, но в разных единицах измерения. Мы видим три числа: 133996246.8, 135000000, 133996000 (числа уже переведены в км). Мы можем себе упростить задачу и взять максимальное значение из всех возможных. То есть оптимистичное предположение, что площади парков или постоянны или увеличиваются. Поэтому мы использовали функцию MAX(): (MAX(?area) AS ?maxArea). Для парка Ондердален максимальной площадью будет 135000000 (или 135 кв. км). В результате получим измененный скрипт:
#defaultView:BarChart
#diagram of the growth of the area of parks by country by year.
SELECT DISTINCT (SAMPLE(?year) AS ?year) (MAX(?area) AS ?maxArea) (SAMPLE(?countryLabel) AS ?countryLabel)
WHERE
{
?park wdt:P31 wd:Q46169. #instance of national park
BIND(str(YEAR(?inception)) AS ?year) #definition of year
?park wdt:P571 ?inception. #definition of inception
?park wdt:P17 ?country. #park belongs to country
# Get the area of the park (Use the psn: prefix to normalize the values to a common unit of area)
?park p:P2046/psn:P2046/wikibase:quantityAmount ?area.
?country rdfs:label ?countryLabel.
FILTER((LANG(?countryLabel)) = "en") #filter in parkLabel = en
FILTER EXISTS { ?park wdt:P2046 [] } #if property area is filled
FILTER(?year != "1") #except the mistakes
}
GROUP BY ?area ?country
ORDER BY DESC(?maxArea)
В строке 11 мы использовали префикс psn ?park p:P2046/psn:P2046/wikibase:quantityAmount ?area. для нормализации значений к общей единице площади. Так же мы отсекаем ошибочные данные по годам: FILTER(?year != "1"). Благодаря функции максимального значения MAX() берется максимальное по площади значение. В группировке на строке 17 объекты ?park, группируются по странам и площадям командой GROUP BY ?area ?country. Для представления результатов в виде столбчатой диаграммы используется стиль отображения BarChart. Горизонтальной оси на графике отвечает переменная ?year.
График площадей национальных парков мира, начиная с 1593-х гг. представлен на столбчатой диаграмме ниже:
На получившейся диаграмме мы видим прямоугольники разных цветов, где каждому цвету соответствуют парки определенной страны, а высота прямоугольника (ось ординат) - площадь парков этой страны, описанных в Викиданных за конкретные года (расположенные по оси абсцисс). Как можно заметить по изображению (рис. 4), с большим отрывом в столбце по площади лидирует Норвегия (к примеру, на рисунке фиолетовым цветом отображаются парки Норвегии, и за 2006 год мы видим прямоугольник необычайно большого размера).
Для изучения этого момента подробнее выведем список национальных парков Норвегии:
#List of Norway National parks (view maximum area)
SELECT DISTINCT (SAMPLE(?park) AS ?park) (SAMPLE(?parkLabel) AS ?parkLabel) (MAX(?area) AS ?maxArea) (SAMPLE(?year) AS ?year)
WHERE
{
?park wdt:P31 wd:Q46169. #instance of national park
?park wdt:P571 ?inception. #definition of inception
BIND(str(YEAR(?inception)) AS ?year) #definition of year
?park wdt:P17 wd:Q20. #view only Norway parks
?park p:P2046/psn:P2046/wikibase:quantityAmount ?area.
?park rdfs:label ?parkLabel.
SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,en"}
FILTER EXISTS { ?park wdt:P2046 [] } #if property area is filled
}
GROUP BY ?park
ORDER BY DESC(?maxArea)
Из графика мы видим, что действительно, большие по площади парки расположены на территории Норвегии (13,36% от площади всех национальных парков мира).
Полнота Викиданных по паркам
правитьСуществует много национальных парков мира. Однако, скорее всего, далеко не у всех заполнено поле 'географические координаты' (англ. 'location'). Построим список национальных парков, у которых заполнены географические координаты.
#defaultView:Map
#Map of national parks that have location filled in
SELECT ?park ?parkLabel ?location
WHERE
{
?park wdt:P31 wd:Q46169. # instance of national park
?park wdt:P625 ?location #display location
SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,en"}
}
SPARQL-запрос 1405 записей (2017) и 2359 записей (2022).
Построим список национальных парков, расположенных в России, у которых заполнены географические координаты.
#Map of national parks in Russia that have location filled in
#defaultView:Map
SELECT ?park ?parkLabel ?location
WHERE
{
?park wdt:P31 wd:Q46169. #instance of national park
?park wdt:P17 wd:Q159. #country = Russia
?park wdt:P625 ?location #display location
SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,en"}
}
SPARQL-запрос 7 записей (2017) и 6 записей (2022).
Национальных парков по России (которые вывелись данным скриптом) оказалось очень мало, всего лишь шесть. На самом деле, эти парки являются 'ошибочными', так как они должны входить в подкласс парков конкретной страны.
Построим список национальных парков России, используя подкласс (national park in Russia).
#List of national parks in Russia
#defaultView:Map
SELECT ?park ?parkLabel ?location
WHERE
{
?park wdt:P31 wd:Q1969226. #instance of national park in Russia
?park wdt:P625 ?location #display location
SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,en"}
}
SPARQL-запрос 44 записи (2017) и 65 записей (2021).
Количество национальных парков России неизменно меняется. В книге "Вокруг Света. Национальные парки России. Поволжье и Северный Кавказ. Путеводитель" [1] говорится о действующих 35 национальных парках России. Согласно другим статьям, данные изменились, например, Джанджугазова Е. А. в своей работе говорит о том, что "В настоящее время в РФ функционирует 47 национальных парков, число которых с каждым годом растет" [2].
Викигид показывает результат в 40 национальных парков в России (данные 2010 года). Сайт dic.academic описывает 41 национальный парк. Такое количество парков может быть связано с тем, что имеющиеся данные обновлялись довольно давно (2015 год).
Обратимся к статье на Русской Википедии. Список национальных парков России включает 64 парка. На просторах английской Википедии можно найти таблицу, содержащую список в 59 национальных парков (National_parks_of_Russia). По нашим сведениям получается так, что все национальные парки представлены в Викиданных.
Парки без указанных географических координат
правитьИнформация на Викиданных говорит о том, что не у всех парков заполнено поле 'географические координаты' (англ.'location'). Напишем скрипт, который выводит список всех национальных парков с незаполненным полем 'location'.
{
?park wdt:P31 wd:Q46169. #instance of national park
FILTER NOT EXISTS { ?park wdt:P625 [] } #if property location is unfilled
SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,en"}
}
#List of national parks with unfilled property 'location'
SELECT ?park ?parkLabel ?location
WHERE
SPARQL-запрос 283 записи (2017) и 82 записей (2022).
Данный скрипт построил список из 82 национальных парков с незаполненным полем 'location'.
Напишем скрипт, который построит список из всех национальных парков, у которых заполнено поле 'location'.
#List of national parks with filled property 'location'
#defaultView:Map
SELECT ?park ?parkLabel ?location
WHERE
{
?park wdt:P31 wd:Q46169. #instance of national park
?park wdt:P625 ?location #display location
SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,en"}
}
SPARQL-запрос 1417 записей (2017) и 2359 записей (2022).
После выполнения листинга на карте отобразилось 2359 национальных парка.
Как можно заметить по изображению (рис. 5), количество выведенных парков стало больше. А страной с наибольшим количеством национальных парков (312) оказалась Австралия.
Парки мира, являющиеся охраняемыми зонами
правитьСогласно информации из Викиданных, у 1937 национальных парков имеется отметка о том, что они охраняются.
#List of national parks with filled property 'location'
#defaultView:Map
SELECT ?park ?parkLabel ?location
WHERE
{
?park wdt:P31 wd:Q46169. #instance of national park
FILTER EXISTS { ?park wdt:P814 [] } #if property "IUCN protected areas category" is filled
?park wdt:P625 ?location #display location
SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,en"}
}
SPARQL-запрос 1937 записей (2022 осень).
Представленный скрипт отображает на карте все национальные парки, у которых заполнено поле "IUCN protected areas category".
Будущая работа
править- Выведите на карте все парки мира, являющиеся охраняемыми зонами (с заполненным полем "IUCN protected areas category")
- Выведите 10 стран, в которых количество национальных парков является наибольшим
- Постройте гистограмму (Bar chart) национальных парков России по годам создания, посчитайте, какой год был "пиковым" (наибольшее количество парков), сравните с парками какой-либо другой страны
- Найти субъект России, в котором находится наибольшее количество национальных парков.
- Найти список самых молодых национальных парков России, к примеру, получивших статус после 2010 года.
- Подсчитать и построить графики площадей национальных парков России, по отношению к национальным паркам всего мира.
Упражнения
править
SPARQL-запросы с ответами:
Примечания
правитьЛитература
править- Джанджугазова Е. А. Развитие экологического туризма на территории национальных парков России // Российские регионы: взгляд в будущее. — 2019. — № 2.
- Кусый И. А. Вокруг Света. Национальные парки России. Поволжье и Северный Кавказ. Путеводитель. — Вокруг Света, 2007. — 216 с. — ISBN 5-98652-110-2
- NSW Government What is National Park?. — 2015.
Ссылки
править- Andrew Krizhanovsky, Nikita Bazhenov Исследование национальных парков России и мира по Викиданным. — 2017.
- Fedorenko E. National Park (англ.). ProWD (2021). Проверено 30 сентября 2021.