Программирование Викиданных/Национальный парк: различия между версиями
Содержимое удалено Содержимое добавлено
Nbazhenov (обсуждение | вклад) →Упражнения: + год в 3 упр. |
Nbazhenov (обсуждение | вклад) →Экземпляры объекта "Национальный парк": Диаграмма, полнота, список |
||
Строка 1:
== Экземпляры объекта "Национальный парк" ==
* Объекты: [[d:Q46169|национальный парк (Q46169)]]▼
* Свойства: [[d:Property:P31|instance of (P31)]]▼
Построим список всех национальных парков.
<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
<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(?
?object (wdt:P31) wd:Q46169. #instance of national park
BIND(str(YEAR(?
?object wdt:P571 ?
?object wdt:P17 ?
?
FILTER((LANG(?
}
GROUP BY ?
ORDER BY ?year ?
</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
Данный скрипт выводит количество созданных парков в определенные года, а так же страны, в которых они были созданы (рис. 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">
#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
Построим список национальных парков, у которых заполнены географические координаты, расположенных в России.
<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
Национальных парков по России (которые вывелись данным скриптом) оказалось очень мало, всего лишь <b>
Построим список национальных парков России, используя подкласс (national park in Russia).
Данные на [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
#defaultView:Map
SELECT ?park ?parkLabel ?location
WHERE
{
?park wdt:P31 wd:
SERVICE wikibase:label { bd:serviceParam wikibase:language "en"}
}
</source>
[https://query.wikidata.org/#%23List%20of%20national%20parks
Полученный список состоит из <b> 44 </b> парков (рис. 4).
Обратимся к статье на Русской Википедии. [[w: Список национальных парков России | Список национальных парков России]] включает 49 парков.
В книге "Вокруг Света. Национальные парки России. Поволжье и Северный Кавказ. Путеводитель" говорится на момент написания (2007 год) о действующих <b> 35 </b> национальных парках России.
▲
▲[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
▲На просторах английской Википедии можно найти результат в <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>
Данный скрипт
Напишем скрипт, который построит список из всех национальных парков, у которых заполнено поле '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
<source lang="SPARQL">
Строка 115 ⟶ 168 :
</source>
После выполнения
Как можно заметить по изображению (рис. 5), количество выведенных парков стало больше, ввиду заполнения поля. А страной с наибольшим количеством национальных парков (312) оказлась Австралия.
== Будущая работа ==
|