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

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

Статья посвящена исследованию космических кораблей и станций на основе базы знаний международного проекта Викиданные. С помощью SPARQL-скриптов построен список отечественных кораблей и станций, а также временные графики запуска кораблей в нашей стране и в мире, за период 1960-2017гг. Кроме того, выполнена оценка полноты Викиданных, показавшая, что многие объекты имеют неправильное значение свойства "частный случай понятия (P86)".

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

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

# List of spaceсraft (Q40218) and space station (Q25956)
SELECT  ?s ?sLabel ?typeLabel
WHERE
{
  VALUES ?type {wd:Q40218 wd:Q25956}
  ?s wdt:P31 ?type.  # Selecting the type of object
  SERVICE wikibase:label { bd:serviceParam wikibase:language "ru, en, [AUTO_LANGUAGE]"}
}

SPARQL-запрос, 118 результатов в 2021

Хорошие и плохие объекты[править]

Примерами наиболее полно проработанных экземпляров объекта "космические станции" являются:

  1. Международная космическая станция
  2. Мир
  3. Тяньгун-1

Примерами плохо заполненных экземпляров объекта "космические корабли" были:

  1. Дракон
  2. Орион
  3. Восход

Наиболее полным и проработанным архивом на Викиданных является Apollo 8
Почти пустым и малоинформативным архивами были: Europa Astrobiology Lander, Project Orbiter, LRK, EarthForce One, Soyuz GVK, CubeSat for Solar Particles.

Иерархия и вывод космических кораблей[править]

Была поставлена задача: построить иерархию космических кораблей такую, чтобы в итоговый список космических кораблей включались и транспортные космические корабли, и вымышленные звездолёты, и прочий космический транспорт и на основе этой иерархии написать скрипт, который будет выводить список всех космических кораблей. Космические корабли бывают транспортные (предназначены для людей), грузовые, вымышленные и все остальные. Используем эту иерархию для решения задачи с помощью следующего скрипта:

#List of spacecraft 
SELECT  ?spacecraft ?spacecraftLabel   
WHERE
{
  {?spacecraft wdt:P31 wd:Q40218.} UNION #spacecraft
  {?spacecraft wdt:P31 wd:Q18039177.} UNION #fictional spacecraft
  {?spacecraft wdt:P31 wd:Q402330.} #robotic spacecraft
  SERVICE wikibase:label { bd:serviceParam wikibase:language "ru, en, [AUTO_LANGUAGE]"}
}

SPARQL-запрос, 157 кораблей всех видов было найдено в 2017 и 170 в 2021.

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

Найдем корабли, сконструированные В СССР или России.

#List of Russian and USSR spacecraft
SELECT  ?spacecraft  ?spacecraftLabel 
WHERE
{
  {?spacecraft wdt:P31 wd:Q40218.} UNION #spacecraft
  {?spacecraft wdt:P31 wd:Q18039177.} UNION #fictional spacecraft
  {?spacecraft wdt:P31 wd:Q402330.}#robotic spacecraft
  {?spacecraft wdt:P17 wd:Q15180. } UNION #USSR
  {?spacecraft wdt:P17 wd:Q159. } #Russia
  SERVICE wikibase:label { bd:serviceParam wikibase:language "ru, en, [AUTO_LANGUAGE]"}
}

SPARQL-запрос, 103 отечественных корабля найдено в 2017 и 21 в 2021

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

До полноты Викиданным в области космических кораблей и станций крайне далеко. Если по запросу обо всех кораблях вывелось 48 результатов, то по запросу об отечественных кораблях всего 3. Это говорит о том, что данные далеко не полны. В статьях русской Википедии Космическая программа СССР и Космонавтика России можно насчитать как минимум 45 космических кораблей, спроектированных в СССР и России. На сайте "Энциклопедия крылатого космоса"[1] описаны 39 кораблей, разработанных в СССР.
Ниже приводится скрипт построения списка отечественных кораблей:

#List of Russian and USSR spacecraft
SELECT  ?spacecraft  ?spacecraftLabel 
WHERE
{
  {?spacecraft wdt:P31 wd:Q40218.} UNION #spacecraft
  {?spacecraft wdt:P31 wd:Q18039177.} UNION #fictional spacecraft
  {?spacecraft wdt:P31 wd:Q402330.}#robotic spacecraft
  {?spacecraft wdt:P17 wd:Q15180. } UNION #USSR
  {?spacecraft wdt:P17 wd:Q159. } #Russia
  SERVICE wikibase:label { bd:serviceParam wikibase:language "ru, en, [AUTO_LANGUAGE]"}
}

SPARQL-запрос, 3 результата. Скрипт запущен 30.10.2017. 21 результатов 30.09.2021


На самом деле выяснилось, что объекты кораблей есть, но имеют неправильное значение свойства "частный случай понятия (P86)". Например, корабли, обозначенные как "пилотируемый полёт".

Пополнение данных об объектах космических кораблей и станций[править]

Для того чтобы получить больше записей при выполнении скрипта для поиска отечественных космических кораблей и станций, было решено заполнить свойство "частный случай понятия (P86)" у объектов типа "пилотируемый полет (Q752783)". Результаты представлены ниже:

#List of Russian and USSR spacecraft
SELECT  ?spacecraft  ?spacecraftLabel 
WHERE
{
  {?spacecraft wdt:P31 wd:Q40218.} UNION #spacecraft
  {?spacecraft wdt:P31 wd:Q18039177.} UNION #fictional spacecraft
  {?spacecraft wdt:P31 wd:Q402330.}#robotic spacecraft
  {?spacecraft wdt:P17 wd:Q15180. } UNION #USSR
  {?spacecraft wdt:P17 wd:Q159. } #Russia
  SERVICE wikibase:label { bd:serviceParam wikibase:language "ru, en, [AUTO_LANGUAGE]"}
}

SPARQL-запрос, 103 результата. Скрипт запущен 09.11.2017. 21 результат в 2021.

У объектов было указано свойство "пилотируемый полёт". По факту, в каждом полёте участвовал уникальный корабль, так как между полётами проводились модификации старых версий кораблей.

Значение свойства "частный случай понятия (P86)" у кораблей было изменено на правильное. После данной процедуры существенно изменились графики запуска космических аппаратов в нашей стране, а также в мире. Изменившиеся графики представлены ниже.


Временные графики освоения космоса в нашей стране и мире[править]

Скрипт построения графика запуска космических аппаратов в нашей стране, начиная с 1960-х гг.

 
# The number of spacecraft launches in Russia every 5 years
#defaultView:BarChart
SELECT (STR(?lapse) AS ?lapse_str) (COUNT(?item) AS ?quantity)
WHERE {                  # spacecraft belongs to
        {?item wdt:P17 wd:Q15180} # Soviet Union
  UNION {?item wdt:P17 wd:Q159}.  # or Russia
  
  ?item wdt:P619 ?launch. # date of spacecraft launch (P619)
  BIND( YEAR(?launch) AS ?year) 
  BIND(FLOOR(?year/5)*5 AS ?lapse) # count for each 5 years
SERVICE wikibase:label {bd:serviceParam wikibase:language "ru,en"}
} 
GROUP BY ?lapse
ORDER BY ?lapse # Order 1970, 1975, 1980, ...

SPARQL-запрос. Свойство Р619 (дата запуска космического корабля) в рамках данного скрипта заменяет набор свойств Р31 (частный случай понятия). В случае отсутствия STR в 3 строке год рассматривается как число, что приводит столбчатую диаграмму к виду графика, где горизонтальная ось отвечает за год запуска, а результаты обозначаются точками с координатами (год, запуски). UNION позволяет объединить запуски России и СССР. В строке 10 производится подсчёт количества за пятилетку, от года Х до Х+5. В строке 13 результаты группируются по пятилеткам.

График количества запущенных космических аппаратов по десятилетиям, начиная с 1960-х гг. представлен на столбчатой диаграмме ниже:

Визуализация количества запусков космических кораблей а России каждые 5 лет 2021 SPARQL

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

Скрипт построения графика запуска космических аппаратов в мире представлен ниже:

# The number of spacecraft launches in world every 5 years
#defaultView:BarChart
SELECT (STR(?lapse) AS ?lapse_str) (COUNT(?item) AS ?quantity)
WHERE {                  # spacecraft belongs to
  ?item wdt:P619 ?launch. # date of spacecraft launch (P619)
  ?item wdt:P17 ?country. # check country
  BIND(YEAR(?launch) AS ?year) 
  BIND(FLOOR(?year/5)*5 AS ?lapse) # count for each 5 years
SERVICE wikibase:label {bd:serviceParam wikibase:language "ru,en"}
} 
GROUP BY ?lapse
ORDER BY ?lapse # Order 1970, 1975, 1980, ...

SPARQL-запрос.

График количества запущенных космических кораблей по десятилетиям в мире представлен на столбчатой диаграмме ниже:

Визуализация количества запусков космических кораблей во всём мире каждые 5 лет 2021 SPARQL

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

Скрипт построения графика запусков космический кораблей в мире по годам и странам представлен ниже: Скрипт построения графика запуска космических аппаратов в мире представлен ниже:

# The number of spacecraft launches per countryes and years
#defaultView:BarChart
SELECT DISTINCT  (SAMPLE(?year) AS ?year) (COUNT(?year) AS ?count) (SAMPLE(?launchLabel) AS ?launchLabel) WHERE {
  ?object wdt:P619 ?launch. # date of spacecraft launch (P619)
  BIND(str(YEAR(?launch)) AS ?year)
  ?object wdt:P17 ?country. # get country
  ?country rdfs:label ?launchLabel.
  FILTER((LANG(?launchLabel)) = "en") # ru label
}
GROUP BY ?launch ?country #group by launch + country
ORDER BY ?year ?launch #order by year + launch

SPARQL-запрос.

График количества запусков космический кораблей в мире по годам и странам представлен на столбчатой диаграмме ниже:

Визуализация количества запусков космических кораблей по годам и странам 2021 SPARQL

Из графика можно увидеть, что в данный момент в Викиданных превалируют данные о запусках США. Пик запусков был в 2017 году.

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

  • Подсчитать и вывести список кораблей, которые отправились или планируется отправить на Марс.
  • Подсчитать и построить график доли кораблей, предназначенных для отправки на Марс, по отношению к кораблям отправленным на Луну.
  • Найти корабли, которые не смогли выйти на орбиту.

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

1 Выберите, сколько кораблей было запущено в СССР в 60-х, 70-х и 80-х гг XX века.

34 29 11
60-е
70-е
80-е

2 Расставьте количество запусков кораблей по десятилетиям в порядке возрастания

1 2 3 4
70-е
80-е
90-е
00-е

3 Напишите название страны, в которой спроектировали космические корабли, представленные на изображениях:

Soyuz 19 Soyuz-T Soviet lunar lander drawing


SPARQL-запросы с ответами:

Ответ на первые 2 вопроса.

Изображения кораблей.

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

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

Ссылки[править]

  • SavinovED All Spacecraft (англ.). ProWD (2021). Проверено 24 сентября 2021.