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

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

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

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

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

#List of spacecraft in English
#List of pictures in English and Russian
SELECT  ?spacecraft 
WHERE
{
  ?spacecraft wdt:P31 wd:Q40218.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}

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

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

#List of space station in English 
SELECT ?space_station ?spacecraft ?label_en ?label_ru
WHERE
{
  ?space_station wdt:P31 wd:Q25956.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}

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

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

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

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

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

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

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

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

#List of spacecraft in English 
SELECT  ?spacecraft  
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 "en". }
}

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

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

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

#List of spacecraft in English 
SELECT  ?spacecraft  
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 "en". }
}

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

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

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

#List of spacecraft in English 
SELECT  ?spacecraft  
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 "en". }
}

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


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

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

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

#List of spacecraft in English 
SELECT  ?spacecraft  
WHERE
{
  {?spacecraft wdt:P31 wd:Q40218.} UNION
  {?spacecraft wdt:P31 wd:Q18039177.} UNION
  {?spacecraft wdt:P31 wd:Q402330.}
  {?spacecraft wdt:P17 wd:Q15180. } UNION
  {?spacecraft wdt:P17 wd:Q159. }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "ru". }
}

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

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

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


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

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

 
SELECT (str(?decade) AS ?decade) (COUNT(?inception) AS ?quantity) # number of "inceptions" ...
WHERE {
   {?item wdt:P31 wd:Q40218.} UNION #spacecraft
  {?item wdt:P31 wd:Q18039177.} UNION #fiction spacecraft
  {?item wdt:P31 wd:Q402330.} #robotic spacecraft
  {?item wdt:P17 wd:Q15180. } UNION
  {?item wdt:P17 wd:Q159. }
  ?item wdt:P619 ?inception.
  BIND( YEAR(?inception) as ?year ) 
  BIND( FLOOR(?year/10)*10 as ?decade ) # ... per each 10 years
} 
GROUP BY ?decade 
ORDER BY ?decade

SPARQL-запрос.

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

График запуска космических кораблей в СССР и России

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

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

SELECT (str(?decade) AS ?decade) (COUNT(?inception) AS ?quantity) # number of "inceptions" ...
WHERE {
   {?item wdt:P31 wd:Q40218.} UNION #spacecraft
   {?item wdt:P31 wd:Q18039177.} UNION #fiction spacecraft
   {?item wdt:P31 wd:Q402330.} #robotic spacecraft
   ?item wdt:P619 ?inception.
   BIND( YEAR(?inception) as ?year ) 
   BIND( FLOOR(?year/10)*10 as ?decade ) # ... per each 10 years
} 
GROUP BY ?decade 
ORDER BY ?decade

SPARQL-запрос.

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

График запуска космических кораблей в мире

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

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

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

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

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 вопроса.

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

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

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