Программирование Викиданных/Корабли

Материал из Викиверситета
Перейти к навигации Перейти к поиску

Cтатья посвящена исследованию объекта Викиданных “корабли”. Выделены по три примера хорошо и плохо заполненных объектов “корабли”. При помощи SPARQL-запросов, вычисляемых на объектах типа “корабль” Викиданных, решены следующие задачи: выведен список всех кораблей мира, а также найдены корабли, участвовавшие в военных конфликтах и при этом связанные с какой-либо страной. Также приведена оценка полноты Викиданных. В работе представлен график, показывающий зависимость между кораблями, связанными с Россией и военными конфликтами, в которых они участвовали.

Экземпляры объекта "Корабли"[править]

Корабль — это крупное морское судно.

Построим список всех кораблей на английском и русском языках.

#List of ship in Russian
SELECT ?ship ?shipLabel
WHERE
{
  ?ship wdt:P31 wd:Q11446. # instance of ship
  SERVICE wikibase:label { bd:serviceParam wikibase:language "ru". }
}

SPARQL-запрос, 19 820 записей.

#List of ship from Russia, Soviet Union and Russian Empire
SELECT ?ship ?shipLabel
WHERE
{
  ?ship wdt:P31 wd:Q11446. # instance of ship
                                     # ships belongs to:
  { ?ship wdt:P17 wd:Q34266 } UNION  # Russian Empire
  { ?ship wdt:P17 wd:Q15180 } UNION  # Soviet Union
  { ?ship wdt:P17 wd:Q159 }.         # Russia
  SERVICE wikibase:label { bd:serviceParam wikibase:language "ru". }
}

SPARQL-запрос, 107 записей.

Плохие и хорошие примеры[править]

Хорошие примеры объектов кораблей на сайте Викиданных: SMS Moltke, HMS Hermes, HMS Barham.

Плохими примерами объектов кораблей на сайте Викиданных были: Лихой, Николай Вилков, Щ-310.

Полнота Викиданных[править]

Поиск точного количества кораблей в мире — трудная задача. Ведь данные о некоторых из них являются совершенно секретными, какие-то же — это частные судна и информации о них тоже нет. Предположим, что общее число кораблей равно 1 210 895, как указано в базе данных судов[1]. SPARQL-запрос показал только 19 886 записей, что составляет только 1,6% от общего числа кораблей..

Что касается российских кораблей, то актуальный боевой корабельный состав ВМФ России[2] выдает 72 подводные лодки, а также 211 боевых кораблей и катеров. В то время, когда запрос выдало всего 25 записей.

И в первом, и во втором случае разница между фактическим количеством кораблей и результатом запросов огромная, что говорит о неполноте Викиданных.

Заполнение свойств военных кораблей[править]

Требуется найти и заполнить сто объектов кораблей, связанных с Россией и участвовавших в каких-либо военных конфликтах.

#List of ships with countries and war conflicts in Russian
SELECT ?ship ?shipLabel ?countryLabel ?conflict ?conflictLabel
WHERE
{
  ?ship wdt:P31 wd:Q11446;        # instance of ship
        wdt:P17 ?country;         # belongs to country
        wdt:P607 ?conflict.       # engaged in some conflict
  SERVICE wikibase:label { bd:serviceParam wikibase:language "ru". }
}

SPARQL-запрос, 1300 записей на 28 октября 2017 года, 23:12.

SPARQL-запрос, 1400 записей на 29 октября 2017 года, 23:39.

При заполнении свойств военных кораблей, а именно военных конфликтов, в которых они участвовали, указывалось свойство conflict (P607) (война/сражение). В то же время военные конфликты и военные операции, которые являются частью войн, являются разными понятиями. Заполненные данных о кораблях можно условно по делить на два типа:

  1. Объекты, у которых военные операции объединены с военными конфликтами. Например, у эсминца Гремящий девять войн/сражений. Такое большое число связано с тем, что корабль принял участие во многих арктических конвоях, которые являются военными операциями.
  2. Объекты, у которых военные операции отделены от военных конфликтов. Например, у британского крейсера HMS Trinidad участие в военной кампании и арктическом конвое указаны как часть Второй мировой войны с помощью квалификатора including (P1012). Таким образом, в Викиданных у этого крейсера указана одна война/сражение.

Для первого типа заполнения в скриптах с поиском у кораблей свойства conflict (P607) будет отображаться больше войн/сражений, чем при втором. Но в этом случае операция Одесская оборона будет стоять наряду с Великой Отечественной войной, хотя она является частью этой войны. В такой ситуации выводимые данные будут не точными.

Для второго типа заполнения в скриптах можно четко различить войну и военную операцию, также выводимые на графике данные будут точнее.

#List of ship with countries and war conflicts in Russian
SELECT ?ship ?shipLabel ?countryLabel ?conflict ?conflictLabel
WHERE
{
  ?ship wdt:P31 wd:Q11446;        # instance of ship
        wdt:P17 ?country;         # belongs to country
        wdt:P607 ?conflict.       # engaged in some conflict
  
  { ?ship wdt:P17 wd:Q34266 } UNION  # Russian Empire
  { ?ship wdt:P17 wd:Q15180 } UNION  # Soviet Union
  { ?ship wdt:P17 wd:Q159 }.         # Russia
  
  SERVICE wikibase:label { bd:serviceParam wikibase:language "ru". }
}

Выполнить запрос (ru) - было 105 результатов, 07:38, 6 ноября 2017

На рис. 1 приведен график зависимости между кораблями (связанными с Россией) и военными конфликтами, в которых они участвовали.

Можно заметить, что большинство кораблей и военных действий приходятся на времена СССР и России. Следует также заметить, что в данном графике, как и в самих данных, из которых они строились, есть один недочёт. Дело в том, что Россию можно разделить на несколько разных стран (по периодам: в частности на Российскую империю, Российскую Социалистическую Федеративную Советскую Республику, СССР и постсоветский период). И в заполненных, редакторами Викиданных, кораблях не всегда верно указан период, когда существовало судно. Например, на рис. 1 видно (и Викиданные это подтверждают), что броненосец Бородино существовал в России, а не в Российской Империи, что является ошибкой.

Но, несмотря на недочёты, график наглядно показывает, какой корабль участвует в каком конкретном военном сражении. В том числе рисунок отображает эту зависимость в разрезе некоторых периодов правления России. На нём также можно отследить на какое военное событие приходится больше всего военных кораблей и наоборот, найти корабль, участвующий в большем количестве войн.

Рис. 1. Список кораблей, связанных с Россией и участвовавших в военных конфликтах

Будущая работа[править]

  1. Найти "корабль Гиннесса" (на выбор: самый большой, самый длинный, самый вместительный).
  2. Вывести фотографии тех кораблей, про которые снимали кино. Если таких не найдётся, тогда те корабли, о которых писали в книгах.
  3. Вывести корабли-музеи.

Упражнения[править]

1

Исходя из графика зависимости кораблей и военных действий, на какую страну приходится больше всего значений войн, с которыми связаны корабли?

СССР
Россия
Российская империя

2

Исходя из этого же графика, на какую войну приходится больше всего значений кораблей?

Русско-японская война
Вторая мировая война
Крымская война

3

На рисунке представлен самый известный советский эскадренный миноносец проекта 7, удостоенный звания "гвардейский", назовите его.

Secret Grem ship.jpg


Примечания[править]

Литература[править]