Программирование Викиданных/Национальный парк: различия между версиями

Содержимое удалено Содержимое добавлено
→‎Упражнения: + год в 3 упр.
Строка 1:
== Экземпляры объекта "Национальный парк" ==
* Объекты: [[d:Q46169|национальный парк (Q46169)]]
* Свойства: [[d:Property:P31|instance of (P31)]]
 
Построим список всех национальных парков.
 
* СвойстваСвойство: [[d:Property:P31|instance ofэкземпляр (P31)]]
* ОбъектыОбъект: [[d:Q46169|национальный парк (Q46169)]]
 
<source lang="SPARQL">#added 2017-02
Строка 14 ⟶ 15 :
}</source>
 
[https://query.wikidata.org/#%23added%202017-02%0A%23List%20of%20%60instances%20of%60%20%22national%20park%22%20%0ASELECT%20%3Fpark%20%3FlangLabel%0AWHERE%0A%7B%0A%20%20%20%20%3Flang%20wdt%3AP31%20wd%3AQ46169.%0A%20%20%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22en%22%20%7D%0A%7D SPARQL query-запрос] 1665 Results in 27 msзаписей.
 
<font style="color:green">👍</font>Наиболее полными и проработанными национальными парками на Викиданных являются: [[d:Q38954|Тейде]], [[d:Q107370|Тингветлир]], [[d:Q48153|Национальный парк имени Александра Гумбольдта]] </font>
Строка 20 ⟶ 21 :
<font style="color:red">👎</font>Почти пустыми и малоинформативными национальными парками оказались: [[d:Q4379004|Припышминские Боры]], [[d:Q4425090|Смольный (национальный парк)]], [[d:Q4496816|Хвалынский национальный парк]]</font>
 
=== Диаграмма парков, упорядоченных по количеству за разные годы и по странам мира ===
=== Упорядоченный список парков ===
 
Выведем диаграмму парков, упорядоченных по количеству созданных парков за разные годы и по странам мира (начиная с 1900г. и по сей день). Включим в данный скрипт, в том числе, в каких странах эти парки были созданы.
 
<source lang="SPARQL">#added 2017-03
#defaultView:BarChart
#underscore is for using a variable more than 1 time
SELECT DISTINCT (SAMPLE(?year) AS ?year) (COUNT(?year) AS ?count) (SAMPLE(?_parkLabelparkLabel) AS ?_parkLabelparkLabel) WHERE {
?object (wdt:P31) wd:Q46169. #instance of national park
BIND(str(YEAR(?_inceptioninception)) AS ?year) #definition of year
?object wdt:P571 ?_inceptioninception. #definition of _inceptioninception
?object wdt:P17 ?_countrycountry. #definition of _countrycountry
?_countrycountry rdfs:label ?_parkLabelparkLabel.
FILTER((LANG(?_parkLabelparkLabel)) = "ru") #filter in parkLabel = ru
}
GROUP BY ?_inceptioninception ?_countrycountry #group by inception + country
ORDER BY ?year ?_inceptioninception #order by year + inception
</source>
 
[https://query.wikidata.org/#%23defaultView%3ABarChart%0ASELECT%20DISTINCT%20%20%28SAMPLE%28%3Fyear%29%20AS%20%3Fyear%29%20%28COUNT%28%3Fyear%29%20AS%20%3Fcount%29%20%28SAMPLE%28%3F_parkLabel%29%20AS%20%3F_parkLabel%29%20WHERE%20%7B%0A%20%20%3Fobject%20%28wdt%3AP31%29%20wd%3AQ46169.%20%23instance%20of%20national%20park%0A%20%20BIND%28str%28YEAR%28%3F_inception%29%29%20AS%20%3Fyear%29%20%23definition%20of%20year%0A%20%20%3Fobject%20wdt%3AP571%20%3F_inception.%20%23definition%20of%20_inception%0A%20%20%3Fobject%20wdt%3AP17%20%3F_country.%20%23definition%20of%20_country%0A%20%20%3F_country%20rdfs%3Alabel%20%3F_parkLabel.%0A%20%20FILTER%28%28LANG%28%3F_parkLabel%29%29%20%3D%20%22ru%22%29%20%23filter%20in%20parkLabel%20%3D%20ru%0A%7D%0AGROUP%20BY%20%3F_inception%20%3F_country%20%23group%20by%20inception%20%2B%20country%0AORDER%20BY%20%3Fyear%20%3F_inception%20%23order%20by%20year%20%2B%20inception SPARQL query-запрос] 612 Resultsзаписей.
 
Данный скрипт выводит количество созданных парков в определенные года, а так же страны, в которых они были созданы (рис. 1). Например, столбик голубого цвета за 2006 год означает, что было создано 25 национальных парков в Австралии.
 
Отсортируем данный список таким образом, чтобы года отображались последовательно (рис. 2).
 
Недостаток полученного скрипта в том, что, возможно, не все национальные парки мира выведутся. Это связано с тем, что у национальных парков мира существует подкласс национальных парков по странам (например, национальные парки Норвегии). Дополним предыдущую диаграмму, включив в нее эти подклассы.
 
<source lang="SPARQL">
#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
</source>
 
[https://query.wikidata.org/#%23defaultView%3ABarChart%0ASELECT%20DISTINCT%20%20%28SAMPLE%28%3Fyear%29%20AS%20%3Fyear%29%20%28COUNT%28%3Fyear%29%20AS%20%3Fcount%29%20%28SAMPLE%28%3FparkLabel%29%20AS%20%3FparkLabel%29%20WHERE%20%7B%0A%20%20%3Fobject%20%28wdt%3AP31%2Fwdt%3AP279%2a%29%20wd%3AQ46169.%20%23instance%20of%20national%20park%20of%20..%20%28Russia%20as%20example%29%0A%20%20BIND%28str%28YEAR%28%3Finception%29%29%20AS%20%3Fyear%29%20%23definition%20of%20year%0A%20%20%3Fobject%20wdt%3AP571%20%3Finception.%20%23definition%20of%20_inception%0A%20%20%3Fobject%20wdt%3AP17%20%3Fcountry.%20%23definition%20of%20_country%0A%20%20%3Fcountry%20rdfs%3Alabel%20%3FparkLabel.%0A%20%20FILTER%28%28LANG%28%3FparkLabel%29%29%20%3D%20%22ru%22%29%20%23filter%20in%20parkLabel%20%3D%20ru%0A%7D%0AGROUP%20BY%20%3Finception%20%3Fcountry%20%23group%20by%20inception%20%2B%20country%0AORDER%20BY%20%3Fyear%20%3Finception%20%23order%20by%20year%20%2B%20inception SPARQL-запрос] 980 записей.
 
Можно заметить по (рис. 3), что количество национальных парков выросло.
 
=== Полнота Викиданных по паркам ===
 
Существует много национальных парков мира. Однако, скорее всего, далеко не у всех заполнено поле 'географические координаты' (англ. 'location')
[https://query.wikidata.org/#%23defaultView%3AMap%0ASELECT%20%3Fpark%20%3FparkLabel%20%3Flocation%0AWHERE%0A%7B%0A%20%20%3Fpark%20wdt%3AP31%20wd%3AQ46169.%20%20%0A%20%20%3Fpark%20wdt%3AP625%20%3Flocation%0A%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22en%22%7D%0A%7D SPARQL query] 1405 Results
Построим список национальных парков, у которых заполнены географические координаты.
 
<source lang="SPARQL">
Всего данный скрипт вывел нам 1405 национальных парков в мире, однако, меня больше затронули России, поэтому выведем их.
#List of parks with filled 'location'
#defaultView:Map
SELECT ?park ?parkLabel ?location
WHERE
{
?park wdt:P31 wd:Q46169.
?park wdt:P625 ?location
SERVICE wikibase:label { bd:serviceParam wikibase:language "en"}
}
</source>
 
[https://query.wikidata.org/#%23defaultView%3AMap%0ASELECT%20%3Fpark%20%3FparkLabel%20%3Flocation%0AWHERE%0A%7B%0A%20%20%3Fpark%20wdt%3AP31%20wd%3AQ46169.%20%20%0A%20%20%3Fpark%20wdt%3AP625%20%3Flocation%0A%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22en%22%7D%0A%7D SPARQL query-запрос] 1405 Resultsзаписей.
 
Построим список национальных парков, у которых заполнены географические координаты, расположенных в России.
 
<source lang="SPARQL">
Строка 59 ⟶ 100 :
</source>
 
[https://query.wikidata.org/#%23List%20of%20national%20parks%20in%20Russia%0A%23defaultView%3AMap%0ASELECT%20%3Fpark%20%3FparkLabel%20%3Flocation%0AWHERE%0A%7B%0A%20%20%3Fpark%20wdt%3AP31%20wd%3AQ46169.%20%23instance%20of%20national%20park%0A%20%20%3Fpark%20wdt%3AP17%20wd%3AQ159.%20%23country%20%3D%20Russia%0A%20%20%3Fpark%20wdt%3AP625%20%3Flocation%20%23display%20location%0A%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22en%22%7D%0A%7D SPARQL query-запрос] 67 Resultsзаписей.
 
Национальных парков по России (которые вывелись данным скриптом) оказалось очень мало, всего лишь <b> 6семь </b> штук. Хотя, на самом деле, их 5шесть, потому что 1один парк (Национальный парк Бикин) дублируется ввиду повторного заполнения поля 'location'. вНа одномсамом изделе, эти парки являются 'ошибочными', так как они должны входить в подкласс парков. конкретной страны.
 
Построим список национальных парков России, используя подкласс (national park in Russia).
Посмотрим на данные русской Википедии. [[w: Список национальных парков России | Список национальных парков России]] дал нам результат в <b> 49 </b> парков (скриншот ниже). //Видимо, с самим скриншотом сделали какие-то изменения (нанесли на него координаты), поэтому он отображается не так, как надо (по ссылке на вики все работает)
[[File:Russia political location map.svg|Russia political location map|мини|слева|900px|Карта национальных парков России (49)]]<br clear="all" />
 
Данные на [http://dic.academic.ru/dic.nsf/ruwiki/380720 dic.academic] насчитывают <b> 41 </b> национальный парк. Это может быть связано с тем, что данные обновлялись довольно давно, поэтому новые парки (например, начиная с 2013 года) просто не попали в данный список.
 
[http://wikitravel.org/ru/%D0%9D%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%BF%D0%B0%D1%80%D0%BA%D0%B8_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8 Wikitravel] показывает результат в <b> 40 </b> национальных парков в России.
 
На просторах английской Википедии можно найти результат в <b> 48 </b> национальных парков ([[w:en:National_parks_of_Russia | National_parks_of_Russia]]).
[[File:RussianNationalParksmap.jpg|RussianNationalParksmap|мини|слева|900px|RussianNationalParksmap (48)]]<br clear="all" />
 
<source lang="SPARQL">
#List of national parks with unfilled property 'location'in Russia
#defaultView:Map
SELECT ?park ?parkLabel ?location
WHERE
{
?park wdt:P31 wd:Q46169Q1969226. #instance of national park in Russia
FILTER NOT EXISTS { ?park wdt:P625 [] }?location #if propertydisplay location is unfilled
SERVICE wikibase:label { bd:serviceParam wikibase:language "en"}
}
</source>
 
[https://query.wikidata.org/#%23List%20of%20national%20parks%20with%20unfilled%20property%20%27location0A%2723defaultView%203AMap%0ASELECT%20%3Fpark%20%3FparkLabel%20%3Flocation%0AWHERE%0A%7B%0A%20%20%3Fpark%20wdt%3AP31%20wd%3AQ461693AQ1969226.%20%23instance%20of%20national%20park%0A20in%2020Russia%20FILTER%20NOT%20EXISTS0A%20%7B%20%3Fpark%20wdt%3AP625%20%5B%5D3Flocation%20%7D%20%23if%20property23display%20location%20is%20unfilled%0A%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22en%22%7D%0A%7D SPARQL query-запрос] 28344 Resultsзаписи.
 
Полученный список состоит из <b> 44 </b> парков (рис. 4).
 
Обратимся к статье на Русской Википедии. [[w: Список национальных парков России | Список национальных парков России]] включает 49 парков.
 
В книге "Вокруг Света. Национальные парки России. Поволжье и Северный Кавказ. Путеводитель" говорится на момент написания (2007 год) о действующих <b> 35 </b> национальных парках России.
 
Данные наСайт [http://dic.academic.ru/dic.nsf/ruwiki/380720 dic.academic] насчитываютописывает <b> 41 </b> национальный парк. ЭтоТакое количество парков может быть связано с тем, что имеющиеся данные обновлялись довольно давно, поэтому новые парки (например, начиная с 2013 года) просто не попали в данный список.
 
[http://wikitravel.org/ru/%D0%9D%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%BF%D0%B0%D1%80%D0%BA%D0%B8_%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8 WikitravelВикигид] показывает результат в <b> 40 </b> национальных парков в России.
 
На просторах английской Википедии можно найти результат в <b> 48 </b> национальных парков ([[w:en:National_parks_of_Russia | National_parks_of_Russia]]).
#[[File:RussianNationalParksmap.jpg|RussianNationalParksmap|мини|слева|900px|RussianNationalParksmap (48)]]<br clear="all" />
 
=== Заполнение 100 объектов ===
 
Информация на Викиданных говорит о том, что не у всех парков заполнено поле 'географические координаты' (англ.'location'). Напишем скрипт, который выводит список всех национальных парков с незаполненным полем 'location'.
[https://query.wikidata.org/#%23List%20of%20national%20parks%20with%20unfilled%20property%20%27location%27%20%0ASELECT%20%3Fpark%20%3FparkLabel%20%3Flocation%0AWHERE%0A%7B%0A%20%20%3Fpark%20wdt%3AP31%20wd%3AQ46169.%20%23instance%20of%20national%20park%0A%20%20FILTER%20NOT%20EXISTS%20%7B%20%3Fpark%20wdt%3AP625%20%5B%5D%20%7D%20%23if%20property%20location%20is%20unfilled%0A%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22en%22%7D%0A%7D SPARQL query] 283 Results
 
[https://query.wikidata.org/#%23List%20of%20national%20parks%20with%20unfilled%20property%20%27location%27%20%0ASELECT%20%3Fpark%20%3FparkLabel%20%3Flocation%0AWHERE%0A%7B%0A%20%20%3Fpark%20wdt%3AP31%20wd%3AQ46169.%20%23instance%20of%20national%20park%0A%20%20FILTER%20NOT%20EXISTS%20%7B%20%3Fpark%20wdt%3AP625%20%5B%5D%20%7D%20%23if%20property%20location%20is%20unfilled%0A%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22en%22%7D%0A%7D SPARQL-запрос] 283 записи.
 
<source lang="SPARQL">
Строка 99 ⟶ 150 :
</source>
 
Данный скрипт вывелпостроил список из 283 национальных паркапарков с незаполненным полем 'location'.
 
Напишем скрипт, который построит список из всех национальных парков, у которых заполнено поле 'location'.
 
[https://query.wikidata.org/#%23List%20of%20national%20parks%20%0A%23defaultView%3AMap%0ASELECT%20%3Fpark%20%3FparkLabel%20%3Flocation%0AWHERE%0A%7B%0A%20%20%3Fpark%20wdt%3AP31%20wd%3AQ46169.%20%23instance%20of%20national%20park%0A%20%20%3Fpark%20wdt%3AP625%20%3Flocation%20%23display%20location%0A%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22en%22%7D%0A%7D SPARQL query-запрос] 1417 Resultsзаписей.
 
<source lang="SPARQL">
Строка 115 ⟶ 168 :
</source>
 
После выполнения скрипталистинга на карте отобразилось 1417 национальных парка. Необходимо заполнить поле 'location', чтобы количество выводимых парков оказалось больше.
 
Как можно заметить по изображению (рис. 5), количество выведенных парков стало больше, ввиду заполнения поля. А страной с наибольшим количеством национальных парков (312) оказлась Австралия.
 
== Будущая работа ==