Программирование Викиданных/Наполеоновские войны
Исследование участников Наполеоновских войн на основе Викиданных.
Какие войны входят в Наполеоновские
правитьНаполеоновские войны - войны, которые велись против Наполеона различными европейскими государствами в начале 19 века. Попробуем получить список войн, которые Википедия относит к Наполеоновским, чтобы в дальнейшем использовать эту информацию для поиска другой информации о Наполеоновских войнах.
#List of wars that were part of Napoleonic wars
SELECT ?war ?warLabel WHERE {
SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,en". }
{
SELECT DISTINCT ?war WHERE {
?war wdt:P361 wd:Q78994. # part of Napoleonic wars
?war wdt:P31 wd:Q198. # instance of war
}
}
}
SPARQL-запрос, 9 войн, которые являются частью Наполеоновских (2022 год).
Помимо войн, которые мы получили в запросе, также будем использовать войны антинаполеоновских коалиций(кроме войны первой коалиции, поскольку Наполеон не являлся правителем во время этой войны). Войну второй коалиции будем учитывать в списке конфликтов, поскольку Наполеон являлся правителем страны во второй половине войны.
Список участников Наполеоновских войн
правитьПолучим список участников Наполеоновских войн, о которых есть записи в Википедии и у которых в свойстве Викиданных "конфликт" указаны Наполеоновские войны.
#List of participants of Napoleonic Wars
SELECT ?hero ?heroLabel
WHERE
{
?hero wdt:P31 wd:Q5. #hero is human
?hero wdt:P607 wd:Q78994. #participant of Napoleonic Wars
SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,en"}
}
SPARQL-запрос, 1914 человек, которые участвовали в Наполеоновских войнах (2022 год).
Получим список участников Наполеоновских войн, о которых есть записи в Википедии и у которых в свойстве Викиданных "конфликт" указана одна из войн, являющаяся частью Наполеоновских войн.
#List of participants of wars that included in Napoleonic wars
SELECT DISTINCT ?hero ?heroLabel WHERE {
VALUES ?wars { wd:Q78994 wd:Q26749 wd:Q249232 wd:Q605977 wd:Q684324 wd:Q138107
wd:Q39194 wd:Q31301 wd:Q19950012 wd:Q6059656 wd:Q4065191 wd:Q2441248 wd:Q1116646 wd:Q199955 wd:Q152499} # list of wars
?hero wdt:P31 wd:Q5; # participant is human
wdt:P607 ?wars. # participant of one of the wars
SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,en". }
}
SPARQL-запрос, 2685 человек, которые участвовали в Наполеоновских войнах (2022 год).
Воинские подразделения, участвовавшие в Наполеоновских войнах
правитьПолучим список воинских подразделений, которые принимали участие в Наполеоновских войнах. Поскольку в те времена некоторые страны использовали воинские подразделения, сформированные из граждан других стран, выведем, где доступно, страну, из которой были солдаты этого подразделения (свойство P17) и род войск (свойство P241).
#List of units that took part in Napoleonic wars
SELECT DISTINCT ?unit ?unitLabel ?country_of_origin ?country_of_originipLabel ?military_branch ?military_branchLabel WHERE {
VALUES ?wars { wd:Q78994 wd:Q26749 wd:Q249232 wd:Q605977 wd:Q684324 wd:Q138107
wd:Q39194 wd:Q31301 wd:Q19950012 wd:Q6059656 wd:Q4065191 wd:Q2441248 wd:Q1116646 wd:Q199955 wd:Q152499} # list of wars
?unit wdt:P31 wd:Q176799; # military unit
wdt:P607 ?wars. # took part in one of the wars
OPTIONAL {?unit wdt:P241 ?military_branch.} # military branch
OPTIONAL {?unit wdt:P17 ?country_of_origin.} # country of origin
SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,en" }
}
SPARQL-запрос, 41 воинское подразделение, участвовавшее в Наполеоновских войнах (2022 год).
Годы создания подразделений
правитьПолучим годы создания подразделений, которые участвовали в Наполеоновских войнах.
#Bar chart of inception years of units of Napoleonic wars
#defaultView:BarChart
SELECT DISTINCT (STR(?year) as ?year_str) (COUNT(?unit) AS ?quantity) WHERE {
VALUES ?wars { wd:Q78994 wd:Q26749 wd:Q249232 wd:Q605977 wd:Q684324 wd:Q138107
wd:Q39194 wd:Q31301 wd:Q19950012 wd:Q6059656 wd:Q4065191 wd:Q2441248 wd:Q1116646 wd:Q199955 wd:Q152499} # list of wars
?unit wdt:P31 wd:Q176799; # military unit
wdt:P607 ?wars. # took part in one of the wars
?unit wdt:P571 ?inception. # year of inception
BIND(YEAR(?inception) as ?year)
SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,en". }
}
Group by ?year
Из графика видно, что наиболее старое подразделение, о котором есть запись в Википедии, и которое участвовало в Наполеоновских войнах было создано в 1717 году. Больше всего записей о подразделениях, созданных в 1808 году (6 подразделений). Также мы видим, что есть запись о подразделении созданном в 1881 году, этим подразделением является Королевская легкая пехота Йоркшира. Наличие данного подразделения можно объяснить тем, что подразделения-прорадители даннного полка участвовали в Наполеоновских войнах и в связи с этим редакторы статьи указали в списках конфликтов один из конфликтов времен Наполеоновских войн.
Страны по числу участников
правитьПостроим список с соотношением числа участников по странам.
# Buble chart of participants of Napoleonic wars by countries
#defaultView:BubbleChart
SELECT DISTINCT ?country_of_citizenship ?country_of_citizenshipLabel(count(*) as ?countryCount) WHERE {
VALUES ?wars { wd:Q78994 wd:Q26749 wd:Q249232 wd:Q605977 wd:Q684324 wd:Q138107
wd:Q39194 wd:Q31301 wd:Q19950012 wd:Q6059656 wd:Q4065191 wd:Q2441248 wd:Q1116646 wd:Q199955 wd:Q152499} # list of wars
?hero wdt:P31 wd:Q5; #instance of human
wdt:P607 ?wars; #participant of one of the wars
wdt:P27 ?country_of_citizenship.
SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,en" }
}
GROUP BY ?country_of_citizenship ?country_of_citizenshipLabel # Group by country
ORDER BY DESC(?countryCount)
SPARQL-запрос, 85 стран, граждане которых принимали участия в Наполеоновских войнах (2022 год).
На диаграмме выводятся Королевство Великобритания и Соединённое королевство Великобритании и Ирландии. Это связано с тем что в Великобритании, в 1800 году, произошло преобразование, в результате которого произошло слияние английского и ирландского парламентов. Напишем запрос, в котором будем игнорировать участников с устаревшим гражданством.
# Buble chart of participants of Napoleonic wars by countries
#defaultView:BubbleChart
SELECT DISTINCT ?country_of_citizenship ?country_of_citizenshipLabel(count(*) as ?countryCount) WHERE {
VALUES ?wars { wd:Q78994 wd:Q26749 wd:Q249232 wd:Q605977 wd:Q684324 wd:Q138107
wd:Q39194 wd:Q31301 wd:Q19950012 wd:Q6059656 wd:Q4065191 wd:Q2441248 wd:Q1116646 wd:Q199955 wd:Q152499} # list of wars
?hero wdt:P31 wd:Q5; #instance of human
wdt:P607 ?wars; #participant of one of the wars
wdt:P27 ?country_of_citizenship.
FILTER (?country_of_citizenship != wd:Q161885) # ignore participants with old citizenship
SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,en" }
}
GROUP BY ?country_of_citizenship ?country_of_citizenshipLabel # Group by country
ORDER BY DESC(?countryCount)
SPARQL-запрос, 84 страны, граждане которых принимали участия в Наполеоновских войнах (2022 год).
Из результатов запроса можно увидеть, что в Википедии есть информация о 557 участниках из Франции, 395 из Соединённого королевства Великобритании и Ирландии, 273 из Российской империи, 81 из Германии и 72 из Речи Посполитой.
Люди, воевавшие не на стороне своего гражданства
правитьЛюди не всегда воевали за ту страну, гражданство которой они имели. Для отслеживания того, за какую страну воевал человек, в Викиданных используется свойство P945 ("allegiance"). Построим диаграмму, которая показывает сколько человек из других стран воевали за страну.
На основе запроса, 50 стран, в которых воевали граждане из других стран (2022 год).
Люди из других стран, воевавшие за Россию
правитьПолучим портреты людей, которые воевали за Россию и были гражданами других стран
#Image grid of participants of Napoleonic wars with Russian allegiance without Russian citizenship
#defaultView:ImageGrid
SELECT DISTINCT ?hero ?heroLabel ?image WHERE {
VALUES ?wars { wd:Q78994 wd:Q18817 wd:Q26749 wd:Q249232 wd:Q605977 wd:Q684324 wd:Q138107
wd:Q39194 wd:Q31301 wd:Q19950012 wd:Q6059656 wd:Q4065191 wd:Q2441248 wd:Q1116646 wd:Q199955 wd:Q152499} # list of wars
?hero wdt:P31 wd:Q5; # instance of human
wdt:P607 ?wars; # participant of one of the wars
wdt:P945 ?country_of_allegiance; # country of allegiance
wdt:P27 ?country. # country of citizenship
FILTER (?country_of_allegiance = wd:Q34266) # country of allegiance is Russia
FILTER (?country != ?country_of_allegiance) # country of citizenship is not Russia
OPTIONAL {?hero wdt:P18 ?image}
SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,en"}
}
SPARQL-запрос, 58 человек из других стран, воевавших за Россию (2022 год).
Среди людей, которых мы видим в галереи можно увидеть участников Наполеоновских войн, которые воевали на стороне Франции, но после войны перешли на сторону России (например Рожнецкий Александр Александрович). Причиной этого является то, что в Викидате не указывается год, в который человек получил то или иное свойство.
Отображение битв, относящихся к войнам, на картах
правитьСвязь битвы и войны в Викиданных
правитьВ Викиданных сражения имеют свойство "part of", которое используется для указания принадлежности события к другому событию. Воспользуемся данным свойством и получим список сражений Наполеоновских войн
#List of batles of Napoleonic wars
SELECT DISTINCT ?batle ?batleLabel WHERE {
VALUES ?wars { wd:Q78994 wd:Q26749 wd:Q249232 wd:Q605977 wd:Q684324 wd:Q138107
wd:Q39194 wd:Q31301 wd:Q19950012 wd:Q6059656 wd:Q4065191 wd:Q2441248 wd:Q1116646 wd:Q199955 wd:Q152499} # list of wars
?batle wdt:P31 wd:Q178561; # instance of batle
wdt:P361 ?wars. # part of Napoleonic wars
SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,en"}
}
SPARQL-запрос, 285 битв (2022 год).
Отображение битв на карте
править#Map of batles of Napoleonic wars
#defaultView:Map
SELECT DISTINCT ?batle ?batleLabel ?location WHERE {
VALUES ?wars { wd:Q78994 wd:Q26749 wd:Q249232 wd:Q605977 wd:Q684324 wd:Q138107
wd:Q39194 wd:Q31301 wd:Q19950012 wd:Q6059656 wd:Q4065191 wd:Q2441248 wd:Q1116646 wd:Q199955 wd:Q152499 wd:Q179250} # list of wars
?batle wdt:P31 wd:Q178561; # instance of batle
wdt:P361 ?wars. # part of Napoleonic wars
?batle wdt:P625 ?location. # location of batle
SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,en"}
}
Из карты можно увидеть, что в Википедии есть информация о сражениях во всех частях света. Наибольшая плотность сражений на Пиренейском полуострове и в альпийском регионе. Большая плотность сражений на Пиренейском полуострове объясняется тем, что Пиренейские войны продолжались более пяти лет. Большую плотность сражений в альпийском регионе можно объяснить тем, что этот регион находится рядом с французской границей.
Потери сторон
правитьПотери сторон в каждой конкретной битве
правитьВоспользуемся свойсвтом "число погибших" для того, чтобы увидеть, сколько человек погибло в битвах, которые мы получили ранее.
#List of batles of Napoleonic wars with casaulties
SELECT DISTINCT ?batle ?batleLabel ?deaths WHERE {
VALUES ?wars { wd:Q78994 wd:Q26749 wd:Q249232 wd:Q605977 wd:Q684324 wd:Q138107
wd:Q39194 wd:Q31301 wd:Q19950012 wd:Q6059656 wd:Q4065191 wd:Q2441248 wd:Q1116646 wd:Q199955 wd:Q152499} # list of wars
?batle wdt:P31 wd:Q178561; # instance of batle
wdt:P361 ?wars. # part of Napoleonic wars
OPTIONAL {?batle wdt:P1120 ?deaths.} #print number of deaths if specified
SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,en"}
}
SPARQL-запрос, 279 битв (2023 год).
После выполнения запроса, мы видим, что ни одна из битв не имеет свойства число погибших.
Потери сторон по годам
правитьНапишем запрос для получения диаграммы годов смерти всех участников Наполеоновских войн. Поскольку не все участники имеют явно указанное свойство "дата смерти", что приводит к пустому столбцу на диаграмме, отфильтруем данных участников.
#defaultView:BarChart
#Bar chart of number of deaths by year
SELECT (STR(?deathYear) as ?Year) (COUNT(?hero) AS ?quantity)
WHERE
{
VALUES ?wars { wd:Q78994 wd:Q26749 wd:Q249232 wd:Q605977 wd:Q684324 wd:Q138107
wd:Q39194 wd:Q31301 wd:Q19950012 wd:Q6059656 wd:Q4065191 wd:Q2441248 wd:Q1116646 wd:Q199955 wd:Q152499 wd:Q179250} # list of wars
?hero wdt:P31 wd:Q5. #hero is human
?hero wdt:P607 ?wars. #participant of Napoleonic Wars
?hero wdt:P570 ?death. #date of death
BIND(YEAR(?death) as ?deathYear)
Filter(?deathYear != wdt:Q24238356)
SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,en"}
}
Group By ?deathYear
Order By ASC(?deathYear)
SPARQL-запрос, 102 различных года смерти (2023 год).
После выполнения запроса получаем диаграмму, приведенную ниже.
Модернизируем запрос, чтобы получить диаграмму годов смерти участников Наполеоновских войн, которые воевали на стороне Франции.
Проделаем тоже самое и получим диаграмму годов смерти участников Наполеоновских войн, которые воевали за основные страны антинаполеоновских коалиций(Россию, Австрию, Пруссию или Великобританию).
Возрастная пирамида участников Наполеоновских войн
правитьНа основе прошлых запросов получим возрастную пирамиду, позволяющую сравнить возрасты смерти участников Наполеоновских войн.
Из пирамиды на рисунке видно, что большая часть участников войн находится в возрастной группе 71-80 лет. Вероятно, это связанно с тем, что Викиданные содержат информацию только о знаменитых и выдающихся персонах (например, писателях, политиках). Из рисунка видно, что людей, выступивших на стороне коалиции, больше, чем на стороне Франции (Из запросов мы получаем 1461 участников на стороне антинаполеоновских коалиций и 738 участников из Франции). Это может быть связанно с тем, что коалиция (в том виде, в котором ее рассматриваем мы) включала четыре страны.