Программирование Викиданных/Музыкальные композиции

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

Экземпляры объекта «Музыкальные композиции» править

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

#List of all musical compositions
SELECT ?composition ?compositionLabel 
WHERE {
  ?composition wdt:P31 wd:Q105543609.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,en". }
}

SPARQL-запрос, 5494 записи в 2017 году.

👍 Наиболее полными и проработанными музыкальными композициями на Викиданных являются: Волшебная флейта, К Элизе, Реквием, Маленькая ночная серенада.

👎 Почти пустыми и малоинформативными музыкальными композициями были: Полёт шмеля, Ромео и Джульетта, Симфонический эпизод «Завод», Binks’ Waltz, The Rose-bud March, Leola.

 
Фрагмент иерархии музыкальных классов в Викиданных, 2023 год

В 2022 году тот же скрипт нашёл 106757 музыкальные композиции вместо 5,5 тысяч в 2017 году. Уменьшение числа композиций связано с тем, что эти объекты Викиданных являются теперь не экземплярами объекта «музыкальные произведения», а его экземплярами различных подклассов «музыкального произведения». При поиске подклассов объекта «музыкальные произведения» можно найти такие жанры: драматико-музыкальное произведение (Q58483083), гимн (Q484692), баллада (Q182659).

Найдём количество музыкальных композиций в каждом жанре с помощью следующего запроса.

# Count of pieces of music in each subclass
SELECT ?type (COUNT(?subMusicInstance) AS ?count) ?subMusicLabel WHERE {
  ?type wdt:P279* wd:Q105543609.      # subclass of musical composition
  ?subMusicInstance wdt:P31 ?type  # instance  of that class of which this subject is a particular example and member
  SERVICE wikibase:label { bd:serviceParam wikibase:language "ru, en". }
}
GROUP BY ?type ?subMusicLabel
ORDER BY DESC (?count)

SPARQL-запрос, 161 подкласса музыкальных композиций на 2022 год.

Теперь подсчитаем общее суммарное число музыкальных произведений с учётом музыкальных композиций в подклассах. Для этого добавим в наш скрипт команду SUM() и удалим лишние строки. Получим такой код:

# The total number of musical works for all subclasses 
SELECT (SUM(?count) AS ?sum) WHERE{
  SELECT (COUNT(?music) AS ?count) WHERE {
    ?type wdt:P279* wd:Q105543609.  # subclass of musical composition
    ?music wdt:P31 ?type  # instance  of that class of which this subject is a particular example and member
  }
}

SPARQL-запрос.

Можно записать этот код еще короче. Переменная ?type нам не нужна, поэтому можно обойтись без неё, а 4 и 5 строки поменяем местами.

# The total number of musical works for all subclasses 
SELECT (SUM(?count) AS ?sum) WHERE{
  SELECT (COUNT(?music) AS ?count) WHERE {
    ?music wdt:P31   # instance of
          [ wdt:P279* wd:Q105543609 ]. # subclass of musical composition
  }
}

SPARQL-запрос, на 2022 год запрос выдает 145046 музыкальных произведений. По сравнению с 2017 годом "5494 записи", число записей увеличилось в несколько раз. Это связано с тем, что за 5 лет было добавлено множество новых музыкальных произведений, а также старых, которые не учли ранее.

Количество музыкальных произведений по годам править

 
Гистограмма количества музыкальных композиций за каждые 10 лет с XIX века до настоящего времени

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

# The number of musical compositions for every 10 years
#defaultView:BarChart
SELECT (STR(?date) AS ?date_str) (COUNT(?composition) AS ?count) WHERE {
  ?composition wdt:P31 wd:Q105543609;     # instance of compostion
    wdt:P86 ?composer;                    # composition has a composer
    wdt:P577 ?publication.                # composition has a publication date
  BIND(YEAR(?publication) AS ?year)
  BIND((FLOOR(?year / 10 )) * 10  AS ?date)
  FILTER(?publication > "1850-01-01T00:00:00Z"^^xsd:dateTime)
  FILTER(?publication < "2030-01-01T00:00:00Z"^^xsd:dateTime) 
  FILTER (!wikibase:isSomeValue(?publication)) # field "date" must be filled
}
GROUP BY ?date
ORDER BY (?date)

SPARQL-запрос.

Из графика можно увидеть, что до 1890 года количество написанных музыкальных произведений невелико. После 1890 года начинается резкий подъем и продолжается до нашего времени. Такое увеличение музыкальных произведений можно объяснить тем, что со временем появляются новые жанры и новые устройства для записи. На гистограмме видим два пика: 1960-е — 1980-е ("первая волна"), 2000-е и 2010-е ("вторая волна").

Количество музыкальных произведений по жанрам править

Найдем, в каких жанрах были написаны музыкальные произведения в пиках графика и изобразим жанры на круговой диаграмме. "Первая волна"

 
Круговая диаграмма музыкальных жанров за 1960-1980 годы во всем мире
# Count of pieces of music in each subclass
SELECT ?type (COUNT(?typeInstance) AS ?count) ?typeLabel WHERE {
  ?type (wdt:P279*) wd:Q207628.
  ?typeInstance wdt:P31 ?type.
  ?typeInstance wdt:P577 ?publication.
  ?typeInstance wdt:P86 ?composer.
  FILTER(?publication > "1960-01-01T00:00:00Z"^^xsd:dateTime)        
  FILTER(?publication < "1990-01-01T00:00:00Z"^^xsd:dateTime)
  SERVICE wikibase:label { bd:serviceParam wikibase:language "ru, en". }
}
GROUP BY ?type ?typeLabel
ORDER BY DESC (?count)

SPARQL-запрос.

"Вторая волна"

 
Круговая диаграмма музыкальных жанров за 2000-2010 годы во всем мире
# Count of pieces of music in each subclass
SELECT ?type (COUNT(?typeInstance) AS ?count) ?typeLabel WHERE {
  ?type (wdt:P279*) wd:Q207628.
  ?typeInstance wdt:P31 ?type.
  ?typeInstance wdt:P577 ?publication.
  ?typeInstance wdt:P86 ?composer.
  FILTER(?publication > "2000-01-01T00:00:00Z"^^xsd:dateTime)        
  FILTER(?publication < "2020-01-01T00:00:00Z"^^xsd:dateTime)
  SERVICE wikibase:label { bd:serviceParam wikibase:language "ru, en". }
}
GROUP BY ?type ?typeLabel
ORDER BY DESC (?count)

SPARQL-запрос.

Можем сделать вывод, что жанры музыкальных произведений первого пика, не отличаются от жанров второго. На второй диаграмме, видим сильное преобладание одного жанра "песня". В жанре "духовная песня" количество музыкальных произведений уменьшилось. А такие музыкальные жанры как: "переведенная песня" и "лирико-музыкальное произведение" пропали.

Число композиций по десятилетиям в России править

Добавим в скрипт страну происхождения "Россия" и "СССР". Ограничение по годам уберем. Получим скрипт, подсчитывающий сколько музыкальных произведений было написано в каждом десятилетии с XIX века до настоящего времени в России и СССР.

 
Гистограмма количества музыкальных композиций в России и СССР за каждые 10 лет с XIX века до настоящего времени
# The number of musical compositions in Russia for every 10 years
#defaultView:BarChart
SELECT (STR(?date) AS ?date_str) (COUNT(?composition) AS ?count) WHERE {
      {?composition wdt:P17 wd:Q15180}               # country = USSR
  UNION {?composition wdt:P17 wd:Q159}               # country = Russia
  UNION {?composition wdt:P495 wd:Q159}    # country of origin = Russia
  UNION {?composition wdt:P495 wd:Q15180}.  # country of origin =  USSR
  ?composition wdt:P31 wd:Q105543609;     # instance of compostion
    wdt:P86 ?composer;                    # composition has a composer
    wdt:P577 ?publication.                # composition has a publication date
  BIND(YEAR(?publication) AS ?year)
  BIND((FLOOR(?year / 10 )) * 10  AS ?date)
  FILTER (!wikibase:isSomeValue(?publication)) # field "date" must be filled
}
GROUP BY ?date
ORDER BY (?date)

SPARQL-запрос.

Количество музыкальных произведений в России и СССР очень мало. Проанализировав несколько песен, написанных в России, таких как: Песня без слов (Кино) (Q101001315), Музыка нас связала (Q105724079), Розовое вино (Q57744615), не попавших в данный скрипт, стало понятно, что у этих произведений отсутствует Cтрана происхождения (P495).

Поиск музыкальных лакун в общественном достоянии править

Задача состоит в том, чтобы найти такие музыкальные произведения, авторы которых умерли более 70 лет назад, и аудиозапись которых отсутствует на Викискладе. Упорядочить такие произведения от самых старых к новым. Существует практическая выгода и польза от такого скрипта, поскольку видно, какие произведения можно и нужно оцифровывать (с пластинок, кассет) и загружать на Викисклад.

#Search music gaps in public domain
SELECT ?composition ?compositionLabel ?publication
WHERE {
  ?composition wdt:P31 wd:Q105543609.             # instance of compostion
  ?composition wdt:P86 ?composer.              # composition has a composer
  ?composition wdt:P577 ?publication.          # composition has a publication date
  ?composer wdt:P570 ?death.                   # composer has a date of death
  MINUS {?composition wdt:P51 []}.             # compositions without audio 
  FILTER(?death < "1947-01-01T00:00:00Z"^^xsd:dateTime)        # composers that passed away more than 70 years ago
  FILTER(?publication < "1947-01-01T00:00:00Z"^^xsd:dateTime)  # compositions that were published more thatn 70 years ago
  SERVICE wikibase:label { bd:serviceParam wikibase:language "ru,en". }
}
ORDER BY ASC(?publication)

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

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

Проанализируем полноту Викиданных.

По данным "Музыкального словаря Гроува" [1] за всю историю человечества существовало 20374 композиторов.

По данным категории "Композиторы по алфавиту" Русской Википедии существует 6130 композиторов.

По данным категории "List of composers by name" Английской Википедии существует 4685 композиторов.

Количество музыкальных композиций с заполненным свойством "композитор (P86)" равно 3862, что показывает нам SPARQL-запрос, и это с учётом того, что один композитор мог написать несколько музыкальных произведений. Например, Вольфганг Амадей Моцарт написал 95 произведений, что существенно снижает количество уникальных композиторов. Полученное число 3862 меньше, чем количество композиторов из русской и английской Википедии, и существенно меньше, чем количество композиторов из "Музыкального словаря Гроува", что говорит нам о неполноте Викиданных.

SPARQL-запрос по композициям с заполненным свойством "композитор (P86)" и свойством "страна происхождения (P495)", имеющим значения "Российская империя (Q34266)", "СССР (Q15180)" или "Россия (Q159)", выдал всего лишь 8 произведений, что говорит о невозможности анализа русских музыкальных произведений в связи с недостатком данных.

Построим пузырьковую диаграмму композиторов музыкальных композиций.

#composers of musical compositions
#defaultView:BubbleChart
SELECT ?composer ?form (COUNT(*) AS ?count) 
WHERE {
  ?composition wdt:P31 wd:Q105543609. # instance of composition
  ?composition wdt:P86 ?composer.  # composition has a composer
  OPTIONAL {
  ?composer rdfs:label ?form.  
  FILTER((LANG(?form)) = "ru,en")
  }
}
GROUP BY ?composer ?form
ORDER BY DESC(?count) ?form

SPARQL-запрос, 773 записи.

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


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


Размер круга означает количество написанных музыкальных композиций. Диаграмма показывает, что у одних композиторов значительно больше композиций чем у других. В 2017 году в первую пятерку входят Нильс Гаде(173 композиции), Иоганн Себастьян Бах (155 композиций), Кристиан Август Синдинг (125 композиций), Юхан Хальворсен (121 композиция), Алан Хованесс (108 композиций).

Диаграмма за 2022 год позывает как изменилось количество написанных композиций у различный композиторов. По сравнению с 2017 годом в первую пятерку входят Маклауд Кевин (1237 композиций), Гендель Георг Фридрих (1236 композиция), Рахул Дев Бурман (744 композиций), Вольфганг Амадей Моцарт (699 композиций), Жан-Батист Люлли (686 композиций). Исходя из данных диаграмм, можно сделать вывод, что появились новые композиторы, которые имеют значительно больше публикаций. Так же можно наблюдать имена старых композиторов, тоже с существенным приростом опубликованных композиций, что говорит о дополнении Викиданных ранее не учтенными произведениями.

Заполнение Викиданных править

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

Построим список всех музыкальных композиций с заполненным свойством "композитор (P86)".

#Lists of compositions that has a composer in Russian 
SELECT ?composition ?compositionLabel ?composer ?composerLabel 
WHERE {
  ?composition wdt:P31 wd:Q207628. # instance of composition
  ?composition wdt:P86 ?composer.  # composition has a composer
  SERVICE wikibase:label { bd:serviceParam wikibase:language "ru". }
}
}

SPARQL-запрос, 3864 записи на 30 октября 2017 года, 10:51.

SPARQL-запрос, 3965 записей на 30 октября 2017 года, 12:47.

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

  1. Найти список музыкальных композиций, созданных во время эпохи классицизма (XVII—XVIII века).
    Свойство: "дата создания (P571)".
  2. Найти композитора, который написал больше симфоний чем остальные.
    Свойства: "экземпляр (P31)", "композитор (P86)".
  3. Построить гистограмму, на которой отображается количество музыкальных композиций группы The Beatles по году публикации.
    Свойства: "исполнитель (P175)", "дата публикации (P577)".

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

1 Кто из композиторов написал больше музыкальных композиций?

Вольфганг Амадей Моцарт
Игорь Фёдорович Стравинский
Иоганн Себастьян Бах
Нильс Гаде

2 Какие из данных композиций были созданы в Российской империи?

Волшебная флейта
Жар-птица
Полёт шмеля
Реквием
Ромео и Джульетта

3 Персонаж какой оперы Рихарда Вагнера изображен на данной картинке?
 

4 Какое из произведений состоит из большего количества частей, чем другие?

Зачарованный замок
Трубадур
Художник Матис
Турандот

5 В каком веке вышли в мир следующие композиции?

20 век 21 век
Король Рогер
Сон
Надежда
Камерная симфония №2

6 Некоторые композиции состоят из нескольких частей. Расставьте музыкальные композиции по количеству частей, их состовляющих. Список произведений: "Хорошо тем­пе­ри­ро­ван­ный клавир", "Волшебная флейта", "Турандот", "Трубадур".

1 место,2 место,3 место,4 место
 
 
 
 


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

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

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

Музыкальный словарь Гроува. — Издательство Оксфордского университета, 2001.