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

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

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

ОГЛАВЛЕНИЕ

Перечень условных обозначений

Введение

1. Технико-экономическое обоснование проектируемой интеллектуальной системы

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

1. 2 Категории пользователей системы

1.2.1 Меломан

1.2.2 Начинающий слушатель

1.2.3 Владелец музыкального магазина или интернет-магазина

1.2.4 Исполнитель

1.3 Анализ аналогичных систем

1.3.1 All Music Guide

1.3.2 MusicBrainz!

1.3.3 Музыкальный словарь Гроува

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

2. База знаний проектируемой интеллектуальной системы

2. 1 Задачно-ориентированная спецификация базы знаний проектируемой интеллектуальной системы

2.1. 1 Тестовый сборник вопросов

2.1. 2 Список используемых в базе знаний проектируемой интеллектуальной справочной системы ip-компонентов

2. 2 Онтология базы знаний проектируемой интеллектуальной системы

2. 3 Содержательная декомпозиция базы знаний проектируемой интеллектуальной системы

2. 4 Исходные тексты базы знаний прототипа интеллектуальной системы

2. 5 Верификация и отладка базы знаний прототипа интеллектуальной системы

2. 6 Спецификация разработанной базы знаний интеллектуальной системы и сертификация разработанных ip-компоненто

3. Машина обработки знаний проектируемой интеллектуальной справочной системы

3. 1 Задачно-ориентированная спецификация машины обработки знаний проектируемой интеллектуальной справочной системы

3.1. 1 Тестовый список задач

3.1. 2 Содержательная классификация задач

3.1. 3 Список используемых в операциях ip-компонентов

3.1. 4 Классификация и спецификация операций проектируемой машины обработки знаний

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

3. 2 Алгоритмы и исходные тексты программ, реализующие операции машины обработки знаний прототипа интеллектуальной справочной системы

3. 3 Верификация и отладка программ специфицированных операций

3. 4 Спецификация разработанных операций и библиотеки программ, сертификация разработанных ip-компонентов

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

4. 1 Задачно-ориентированная спецификация пользовательского интерфейса проектируемой интеллектуальной системы

4.1.1 Декомпозиция пользовательского интерфейса

4.1. 2 Список используемых ip-компонентов пользовательского интерфейса

4. 2 Проектирование интерфейсных подсистем

4. 3 Верификация и отладка пользовательского интерфейса

4. 4 Спецификация разработанного пользовательского интерфейса, сертификация разработанных ip-компонентов

5. Интеграция разработанной системы с другими системами

6. Направления дальнейшего развития прототипа интеллектуальной справочной системы и пути промышленного изготовления спроектированной интеллектуальной системы

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

7. 1 Список выявленных ошибок среды проектирования интеллектуальных систем

7. 2 Список предложений по совершенствованию среды проектирования интеллектуальных систем

7. 3 Список предложений по совершенствованию семантических технологий проектирования интеллектуальных систем

7. 4 Создание и использование ip-компонентов

Библиографический указатель

Перечень условных обозначений

МП — музыкальные произведения

БЗ — база знаний

ИСС — интеллектуальная справочная система

МОЗ — машина обработки знаний

ПИ — пользовательский интерфейс

Введение

Независимо от рода деятельности, возраста и пола, любому из нас приходилось сталкиваться с таким понятием как музыка. И если раньше это было мало распространенным, доступным для узкого круга людей, то в наши дни трудно встретить человека, который никогда не слышал «волшебных» звуков музыки. В наши дни можно говорить о целой музыкальной индустрии, людей и средств, в которой задействовано не меньше, чем в автомобилестроении или разработке IT-технологий. Одни зарабатывают на этом деньги: устраивая звукозаписывающие лейблы и студии, предоставляя свои услуги по записи, продюсированию исполнителей; открывают обычные и интернет-магазины, где успешно и не очень занимаются продажей уже готовой продукции (кассеты, компакт-диски, DVD-диски, и даже, для особых «гурманов», виниловые пластинки с композициями различных жанров и направлений). У других музыка — это способ самовыражения: поиск сподвижников, создание группы, а возможно выступление соло, написание текста и сочинение музыки, затем запись на студии, организация концертов. Третьи выступают в роли потребителей: скупают компакт-диски с альбомами любимых групп и исполнителей, посещают концерты, чтобы вживую услышать кумиров. Не стоит забывать и про тех, для кого музыка это просто приятный фон дома, на работе или в авто, который помогает скрасить серые будни мегаполисов.

Хочу обратить внимание на термины: звукозаписывающие лейблы, компакт-диски, виниловые пластинки, группы, направление, жанры и т. д. и т. п. И если с пониманием что это и для чего оно нужно помогут справиться какая-нибудь музыкальная энциклопедия или вездесущий Google. То, что делать и у кого просить помощи, когда любимая композиция после н-ного раза прослушивания перестает нравиться, а домашняя коллекция прослушана и переслушана вдоль и поперек. Да, песен и исполнителей в мире много. Есть маленькое «но» — их слишком много! Так в электронной версии «Музыкального словаря Гроува» содержится 27 000 композиций поп-музыки или более 50 дней непрерывного прослушивания (если допустить, что средняя продолжительность композиции около 3 минут). А ведь жанров и направлений не меньше сотни! Так и целой жизни будет мало, чтобы переслушать все, что сочинил музыкальный гений человека, и выбрать именно то, что подходит по вкусу.

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

— большой объем неструктурированной информации, хранящейся в различных местах;

— трудность формализации, а порой и отсутствие, правил описания и оценки музыкальных произведений;

— формулирование запроса для поиска композиции. Как говорил известный герой не менее известного фильма: «А ну, сочини для меня что-нибудь такое, чтоб душа сначала развернулась, а потом обратно завернулась».

Такие тяжеловесы как Microsoft Corp. и Yahoo Inc. тратят миллиарды долларов, пытаясь отобрать у Google хотя бы небольшой сегмент рынка интернет-поиска. Но параллельно этому, растущие нишевые поисковые системы переосмысляют способ поиска информации, разрабатывая инструменты, которые тщательно ищут истинный смысл слов на веб-страницах вместо того, чтобы просто предоставить список сайтов с совпадающими ключевыми словами, эти претенденты надеются создать сервисы, которые помогут пользователям быстрее находить то, что те ищут. Потребители хотят находить информацию быстрее, и они ищут инструменты, которые помогли бы им сделать это. Такие поисковые системы используют семантическую науку, изучающую смысл слов, чтобы производить более релевантный поиск. Дело в том, что уровень контекста позволяет семантическим поисковым системам представлять информацию в соответствии с тем, как обычно думают люди. Семантический поиск представляет интерес, как для частных предпринимателей, так и для крупных компаний. Ключ к успеху семантического поиска в том, чтобы выдать результаты в контексте. Это сложно, так как объём информации всё возрастает. Причина, по которой люди хотят разрабатывать семантические поисковые системы, в том, что это лучший способ нахождения информации. Учитывая, что объём контента растёт всё быстрее, поисковые системы должны быть более эффективны и работать по образцу того, как думают люди. Подобные инструменты поиска показывают связи между различными документами и сайтами, основываясь не на ссылках, а на информации, содержащейся на страницах с помощью технологии под названием «графики семантических кластеров». Она отображает результаты в виде, который напоминает паучью паутину.

Одним из примеров интеллектуальных «помощников» является Семантическая Справочная Система (SRS), на базе которой была построена справочная система по музыкальным произведениям. SRS состоит из трех компонентов:

База знаний (БЗ),

Машина обработки знаний,

Пользовательский интерфейс.

Уточним задачи компонентов:

База знаний необходима для хранения знаний о предметной области в системе.

Машина обработки знаний необходима для осуществления поиска, навигации и обработки знаний.

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

Наполнение базы знаний новыми знаниями значительно улучшит прикладную интеллектуальную систему. Пользователь сможет получить более подробную и более полную информацию о данной предметной области.

Разработка машины обработки знаний переведет прикладную систему на качественно новый уровень — уровень интеллектуального решателя задач предметной области.

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

Целью работы является разработка проекта интеллектуальной справочной системы.

Задачи курсового проекта:

· технико-экономическое обоснование проектируемой интеллектуальной справочной системы;

· разработка базы знаний проектируемой интеллектуальной справочной системы;

· разработка машины обработки знаний проектируемой интеллектуальной справочной системы;

· разработка пользовательского интерфейса интеллектуальной справочной системы;

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

1. Технико-экономическое обоснование проектируемой интеллектуальной системы

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

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

Перечислим наиболее распространенные вопросы, интересующие людей в отношении музыкальных произведений:

Общие вопросы:

Какие музыкальные жанры существуют?

На каких носителях можно приобрести муз. произведения?

Какие типы музыкальных коллективов бывают?

и т.д.

Вопросы для конкретного произведения:

Кто автор текста, музыки?

Кто исполнитель?

В какой альбом входит?

В каком году издано?

и т.д.

Для нескольких произведений, альбомов, исполнителей:

Что общего между этими альбомами?

и т.д.

Поиск музыкальных произведений:

Поиск по описанию текста, музыки.

Поиск по году издания, жанру, рейтингу в чартах.

Поиск по исполнителю, альбому.

Поиск автора и названия по фрагменту композиции.

Разрабатываемая интеллектуальная система ответит на подобные вопросы пользователя. Дополненная база знаний позволит осуществить расширенный и углубленный поиск. Удобный интерфейс позволит интуитивно и просто найти все интересующие пользователя сведения. Именно поэтому разработка справочника является актуальной и востребованной.

1.2 Категории пользователей системы

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

· меломан

· начинающий слушатель

· владелец музыкального магазина или интернет-магазина

· исполнитель

Далее приведены портреты пользователей системы.

1.2.1 Меломан

Портрет:

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

Функциональные возможности:

· добавление и удаление видеоклипов

· добавление и удаление аудиоматериала

· редактирование имеющихся знаний

· просмотр знаний содержащихся в БЗ

· поиск композиций по ключевым словам, по четким критериям

Цели:

· пополнение своих знаний

· поиск музыкальных произведений

· заимствование своего опыта для менее «продвинутых» пользователей

1.2.2 Начинающий слушатель

Портрет:

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

Функциональные возможности:

· просмотр знаний содержащихся в БЗ

· просмотр видеоклипов

· прослушивание музыкальных композиций

· поиск исполнителя по фрагменту музыкального произведения

· поиск композиций по ключевым словам в описании

· поиск композиций по эмоциональной окраске музыки и текста

· поиск композиций по жанрам

· поиск композиций с помощью временной ленты

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

Цели:

· получение базовых знаний в предметной области

· помощь в ориентировании по музыкальным произведениям

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

1.2.3 Владелец музыкального магазина или интернет-магазина

Портрет:

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

Функциональные возможности:

· просмотр информации об исполнителях, альбомах и композициях

· добавление информации о новых исполнителях, альбомах, композициях

· поиск музыкальных произведений

Цели:

· пополнение базы знаний новой информацией об исполнителях, альбомах и композициях

· предоставлении информации конечному потребителю

1.2.4 Исполнитель

Портрет:

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

Функциональные возможности:

· поиск музыкальных произведений

· сравнение музыкальных произведений

Цели:

· ориентирование в современной музыкальной индустрии

1.3 Анализ аналогичных систем

1.3.1 All Music Guide

Крупная онлайновая музыкальная база данных, принадлежащая организации All Media Guide. Данный продукт является энциклопедией с удобным графическим интерфейсом и поиском по ключевым словам, названиям произведений, альбомов, исполнителей, содержит хорошо проработанную БД с большим количеством информации. Язык интерфейса английский.

1.3.2 MusicBrainz!

Проект создания открытой музыкальной энциклопедии. MusicBrainz хранит сведения о музыке, которая когда-либо была записана, а не саму музыку. Все основные данные, хранимые в MusicBrainz (зафиксированные данные об исполнителях, альбомах, треках и т. п.) считаются общественным достоянием, а дополнительные сведения, такие, как данные о модерациях, распространяются под лицензией Creative Commons non-commercial share-and-share-alike. Язык интерфейса английский.

1.3.3 Музыкальный словарь Гроува

Британское справочное издание, посвящённое академической музыке. Под редакцией Лоры Мейси работает постоянно обновляемая и пополняемая сетевая версия словаря. Годовая подписка на пользование ею составляет 300 долларов. Права на издание и онлайн-версию с 2004 г. принадлежат издательству Оксфордского университета, вследствие чего сайт из Grove Music Online был переименован в Oxford Music Online. Включает в себя более 50 000 статей и 28 000 биографий, внесенных более чем 6000 ученых со всего мира. Язык интерфейса английский.

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

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

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

2. База знаний проектируемой интеллектуальной системы

2.1 Задачно-ориентированная спецификация базы знаний проектируемой интеллектуальной системы

2.1.1 Тестовый сборник вопросов

Описание тестовых вопросов:

Все известные исполнители.

Фотография конкретного исполнителя.

Альбомы выбранного исполнителя.

Изображение обложки альбома.

Сравнение двух альбомов по их характеристикам.

Композиции входящие в выбранный альбом.

Прослушивание композиции.

Просмотр видеоклипа на выбранную композицю.

Поиск альбома по его характеристикам.

Поиск композиции по ее характеристикам.

Описание музыкального жанра.

Виды носителей.

Авторы текста и композиторы.

Перечень демонстрационных вопросов:

Получение всех исполнителей БЗ.

Описание основных характеристик исполнителя.

Просмотр фотографии исполнителя.

Альбомы выбранного исполнителя.

Просмотр обложки альбома.

Описание основных характеристик альбома.

Композиции входящие в данный альбом.

Описание основных характеристик композиции.

Поиск композиций по рейтингу.

2.1.2 Список используемых в базе знаний проектируемой интеллектуальной справочной системы ip-компонентов

В данной интеллектуальной справочной системе использованы исходные разделы база знаний help-системы:

ИсхБз. SC-ядро

ИсхБз. SCg-язык

ИсхБз. SС-язык множеств

ИсхБз. SС-язык отношений

ИсхБз. SС-язык числовых систем

ИсхБз. Логический SС-язык

ИсхБз. Гипермедийный SС-язык

ИсхБз. Дидактический SС-язык

ИсхБз. SС-язык описания ошибок

ИсхБз. Пользовательский интерфейс SRS

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

2.2 Онтология базы знаний проектируемой интеллектуальной системы

Бинарные отношения:

«альбом*» — бинарное отношение между исполнителем и его альбомами.

«композиция*» — бинарное отношение между альбомом и композициями в него входящими.

«описание*» — бинарное отношение между объектом и параметрами, его характеризующими.

«страна*» — бинарное отношение между исполнителем и страной исполнителя.

«год*» — бинарное отношение между исполнителем и годом его основания.

«вид*» — бинарное отношение между исполнителем и его видом (группа, соло и т. д.).

«обложка*» — бинарное отношение между альбомом и его обложкой.

«год выпуска*» — бинарное отношение между альбомом и годом его выпуска.

«носитель*» — бинарное отношение между альбомом и носителем, на котором он был издан.

«тип записи*» — бинарное отношение между альбомом и типом его записи.

«объем*» — бинарное отношение между альбомом и его объемом.

«награды*» — бинарное отношение между альбомом и его наградами.

«музыка*» — бинарное отношение между композицией и его музыкой.

«текст*» — бинарное отношение между композицией и его текстом.

«время*» — бинарное отношение между композицией и его продолжительностью.

«место в чарте*» — бинарное отношение между композицией и местом в чарте.

«лейбл*» — бинарное отношение между композицией и лейблом звукозаписи.

«композитор*» — бинарное отношение между музыкой композиции и его композитором.

«автор*» — бинарное отношение между текстом композиции и его автором.

«тема*» — бинарное отношение между текстом композиции и его темой.

Всего: 20 бинарных отношений.

«Исполнители» — группа всех исполнителей.

«Альбомы» — группа всех альбомов.

«Композиции» — группа всех композиций.

«Носители» — группа всех носителей.

«Композиторы»" - группа всех композиторов музыки.

«Авторы» — группа всех авторов текста.

Всего: 6 узлов групп.

2.3 Содержательная декомпозиция базы знаний проектируемой интеллектуальной системы

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

Так при описании исполнителя представлены следующие характеристики: страна*, год основания*, вид*. Пример описания одного из исполнителей представлен на рисунке 2.3.1.

Рисунок 2.3.1. — Описание исполнителя

При описании альбома в качестве его характеристик представлены: обложка альбома*, год выпуска*, носитель*, тип записи*, объем*, награды*. Пример описания альбома представлен на рисунке 2.3.2.

Рисунок 2.3.2. — Описание альбома

Пример описания МП представлен на рисунке 2.3.3.

Рисунок 2.3.3. — Описание МП

Пример описания структуры отношений представлен на рисунке 2.3.4.

Рисунок 2.3.4. — Описание структуры отношений

2.4 Исходные тексты базы знаний прототипа интеллектуальной системы

Исходные тексты базы знаний прототипа интеллектуальной системы хранятся в следующих файлах:

8diagrams_album. gwf

bringdaruckus_track. gwf

clapyohands_track. gwf

enterthewutang_album. gwf

familytree_track. gwf

iicons_album. gwf

intro. gwf

naughtybynature_artist. gwf

naughtybynature_struct. gwf

oldergods_track. gwf

povetry`sparadise_album. gwf

protectyaneck_track. gwf

shameonanigga_track. gwf

whatyouwannado_track. gwf

wutangclan_artist. gwf

wutangclan_struct. gwf

wutangforever_album. gwf

elmanana_track. gwf

feelgoodinc_track. gwf

ogreenworld_track. gwf

kidswithguns_track. gwf

lastlivingsouls_track. gwf

intro_track. gwf

demondays_album. gwf

gorillaz_struct. gwf

rockthehouse_track. gwf

doublebass_track. gwf

soundcheck_track. gwf

punk_track. gwf

manresearch_track. gwf

clinteastwood_track. gwf

newgenius_track. gwf

tomorrowcomestoday_track. gwf

54_track. gwf

re-hash_track. gwf

gorillaz_album. gwf

gorillaz_artist. gwf

Пример содержания этих файлов можно увидеть на рисунках 2.3. 1, 2.3. 2, 2.3. 3, 2.3.4.

2.5 Верификация и отладка базы знаний прототипа интеллектуальной системы

Верификация базы знаний в текущей версии интеллектуальной справочной системы по МП не производилась, так как в предыдущей версии системы база знаний была грамотно организована. База была дополнена новыми исполнителями, альбомами и композициями. Дополнение и проверка производилась с помощью SRS Studio.

2.6 Спецификация разработанной базы знаний интеллектуальной системы и сертификация разработанных ip-компонентов

В базе знаний на данный момент содержится 3 исполнителя, 7 альбомов и более 20 композиций.

В качестве ip-компонентов могут быть использованы:

Определения понятий (МП, альбом, исполнитель, жанр и т. д.).

Музыкальные композиции.

Видеоклипы к музыкальным произведениям.

3. Машина обработки знаний проектируемой интеллектуальной справочной системы

3.1 Задачно-ориентированная спецификация машины обработки знаний проектируемой интеллектуальной справочной системы

3.1.1 Тестовый список задач

Под предметными задачами будем понимать все задачи, специфичные для данной предметной области:

· поиск исполнителей по описанию

· поиск информации об исполнителях

· поиск альбомов по описанию

· поиск информации об альбомах

· поиск МП по описанию

· сравнение альбомов

3.1.2 Содержательная классификация задач

Множество предметных задач с точки зрения методов их решения можно разбить на два класса:

· информационно-поисковые задачи, ответы на которые присутствуют в базе знаний решателя предметных задач и, следовательно, их надо только найти;

· задачи, ответы на которые требуется построить.

Среди информационно-поисковых задач можно выделить задачи, в которых цель поиска может быть точно описана «шаблоном» поиска, т. е. результатом решения задачи будут все фрагменты семантической сети базы знаний, удовлетворяющие этому шаблону. Примерами таких задач является

· поиск информации о МП;

· поиск информации об альбоме;

· поиск информации об исполнителе.

Другим классом информационно-поисковых задач являются задачи, результат решения которых не описывается шаблоном, а осуществляется с помощью scp-программы. Примерами таких задач являются:

· сравнение альбомов;

· поиск альбомов по нескольким характеристикам;

· поиск МП по нескольким характеристикам.

3.1.3 Список используемых в операциях ip-компонентов

В данной интеллектуально справочной системе были использованы следующие операции, являющиеся Ip-компонентами, и предоставленные вместе со средой разработки интеллектуальных справочных систем:

all_input

all_output_all_types

analogy

example

graph

lib

logic_queries

logical_hierarhy

paramsProcessing

printSetArcs

printSetElems

main_close

main_open

open

pack_menu

peresechenie

reduce_menu

remove_menu_item

searchEnvironmentSmart

searchPatternEx

synonym_by_node

synonym_by_node_ui

synonym_by_term_ui

tests

ui_io_build_srs

ui_io_copy_scg

ui_io_erase_scg_countur

ui_io_erase_scg_el

ui_io_exec_command

ui_io_gen_srswindow

ui_io_increase

ui_io_load_folder

ui_io_load_scg

ui_io_modify_scg_el_content

ui_io_modify_scg_el_name

ui_io_modify_scg_el_type

ui_io_paste_scg

ui_io_reduction

ui_io_save_scg

ui_io_select_all

ui_registration_type_wnd

ui_show_content

ui_show_content_swf

ui_unregistration_type_wnd

update_menu

ways

whatisknown

3.1.4 Классификация и спецификация операций проектируемой машины обработки знаний

1. Классификация операции all_performers. m4scp.

Название операции: all_performer.

Предметная ориентация: МП.

Входные параметры: нет.

Выходные параметры: все известные исполнители.

Способ вызова: автоматически, при создании окна пользовательского интерфейса.

Спецификация операции all_performers. m4scp.

Идентификатор операции: descr_all_performer.

Полное имя: operation all_performers. m4scp.

Комментарий: операция поиска в БЗ всех известных исполнителей.

Автор: Лукша Н. В.

2. Классификация операции all_albums_this_performer. m4scp.

Название операции: all_albums_this_performer.

Предметная ориентация: МП.

Входные параметры: узел с именем исполнителя.

Выходные параметры: все альбомы данного исполнителя.

Способ вызова: при выборе исполнителя из ListBox.

Спецификация операции all_albums_this_performer. m4scp.

Идентификатор операции: descr_all_albums_this_performer.

Полное имя: operationall_albums_this_performer. m4scp.

Комментарий: операция поиска в БЗ всех альбомов данного исполнителя.

Автор: Лукша Н. В.

3. Классификация операции all_tracks_this_album. m4scp.

Название операции: all_tracks_this_album.

Предметная ориентация: МП.

Входные параметры: узел с именем альбома.

Выходные параметры: все МП данного альбома.

Способ вызова: при выборе альбома из ListBox.

Спецификация операции all_tracks_this_album. m4scp.

Идентификатор операции: descr_all_tracks_this_album.

Полное имя: operationall_tracks_this_album. m4scp.

Комментарий: операция поиска в БЗ всех МП из данного альбома.

Автор: Лукша Н. В.

4. Классификация операции country_of_performer. m4scp.

Название операции: country_of_performer.

Предметная ориентация: МП.

Входные параметры: узел с именем исполнителя.

Выходные параметры: страна данного исполнителя.

Способ вызова: при выборе исполнителя из ListBox.

Спецификация операции country_of_performer. m4scp.

Идентификатор операции: descr_country_of_performer.

Полное имя: operationcountry_of_performer. m4scp.

Комментарий: операция поиска в БЗ страны данного исполнителя.

Автор: Лукша Н. В.

5. Классификация операции kind_of_performer. m4scp.

Название операции: kind_of_performer.

Предметная ориентация: МП.

Входные параметры: узел с именем исполнителя.

Выходные параметры: вид данного исполнителя.

Способ вызова: при выборе исполнителя из ListBox.

Спецификация операции kind_of_performer. m4scp.

Идентификатор операции: descr_kind_of_performer.

Полное имя: operationkind_of_performer. m4scp.

Комментарий: операция поиска в БЗ вида данного исполнителя.

Автор: Лукша Н. В.

6. Классификация операции year_of_foundation. m4scp.

Название операции: year_of_foundation.

Предметная ориентация: МП.

Входные параметры: узел с именем исполнителя.

Выходные параметры: год основания данного исполнителя.

Способ вызова: при выборе исполнителя из ListBox.

Спецификация операции year_of_foundation. m4scp.

Идентификатор операции: descr_year_of_foundation.

Полное имя: operationyear_of_foundation. m4scp.

Комментарий: операция поиска в БЗ года основания данного исполнителя.

Автор: Лукша Н. В.

7. Классификация операции type_rec. m4scp.

Название операции: type_rec.

Предметная ориентация: МП.

Входные параметры: узел с именем альбома.

Выходные параметры: тип записи данного альбома.

Способ вызова: при выборе исполнителя из ListBox.

Спецификация операции type_rec. m4scp.

Идентификатор операции: descr_type_rec.

Полное имя: operationtype_rec. m4scp.

Комментарий: операция поиска в БЗ типа записи данного альбома.

Автор: Лукша Н. В.

8. Классификация операции vol. m4scp.

Название операции: vol.

Предметная ориентация: МП.

Входные параметры: узел с именем альбома.

Выходные параметры: тип записи данного альбома.

Способ вызова: при выборе исполнителя из ListBox.

Спецификация операции vol. m4scp.

Идентификатор операции: descr_vol.

Полное имя: operationvol. m4scp.

Комментарий: операция поиска в БЗ типа записи данного альбома.

Автор: Лукша Н. В.

9. Классификация операции style_of_track. m4scp.

Название операции: style_of_track.

Предметная ориентация: МП.

Входные параметры: узел с именем альбома.

Выходные параметры: тип записи данного альбома.

Способ вызова: при выборе исполнителя из ListBox.

Спецификация операции style_of_track. m4scp.

Идентификатор операции: descr_style_of_track.

Полное имя: operationstyle_of_track. m4scp.

Комментарий: стиль МП.

Автор: Лукша Н. В.

10. Классификация операции rewards. m4scp.

Название операции: rewards.

Предметная ориентация: МП.

Входные параметры: узел с именем альбома.

Выходные параметры: тип записи данного альбома.

Способ вызова: при выборе исполнителя из ListBox.

Спецификация операции rewards. m4scp.

Идентификатор операции: descr_rewards.

Полное имя: operationrewards. m4scp.

Комментарий: награды данного альбома.

Автор: Лукша Н. В.

11. Классификация операции type_rec. m4scp.

Название операции: type_rec.

Предметная ориентация: МП.

Входные параметры: узел с именем альбома.

Выходные параметры: тип записи данного альбома.

Способ вызова: при выборе исполнителя из ListBox.

Спецификация операции type_rec. m4scp.

Идентификатор операции: descr_type_rec.

Полное имя: operationtype_rec. m4scp.

Комментарий: операция поиска в БЗ типа записи данного альбома.

Автор: Лукша Н. В.

12. Классификация операции rating. m4scp.

Название операции: rating.

Предметная ориентация: МП.

Входные параметры: узел с именем альбома.

Выходные параметры: тип записи данного альбома.

Способ вызова: при выборе исполнителя из ListBox.

Спецификация операции rating. m4scp.

Идентификатор операции: descr_rating.

Полное имя: operationrating. m4scp.

Комментарий: рейтинг данной композиции.

Автор: Лукша Н. В.

13. Классификация операции label_rec. m4scp.

Название операции: label_rec.

Предметная ориентация: МП.

Входные параметры: узел с именем альбома.

Выходные параметры: тип записи данного альбома.

Способ вызова: при выборе исполнителя из ListBox.

Спецификация операции label_rec. m4scp.

Идентификатор операции: descr_label_rec.

Полное имя: operationlabel_rec. m4scp.

Комментарий: поиск лейбла звукозаписи.

Автор: Лукша Н. В.

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

В написанных scp-операциях подпрограммы не использовались.

3.2 Алгоритмы и исходные тексты программ, реализующие операции машины обработки знаний прототипа интеллектуальной справочной системы

· поиск альбома по описанию (файл search_by_param. m4scp)

· входные параметры: узлы, характеризующие искомый альбом;

· выходные параметры: все альбомы подходящие под данное описание.

Алгоритм:

Делаем копию входных параметров.

Проверяем первый параметр.

Находим все альбомы, которые удовлетворяют п. 2 и объединяем их в множество 1.

Проверяем второй параметр (если такового нет, переходим п. 10).

Находим все альбомы, которые удовлетворяют п. 4 и объединяем их в множество 2.

Проверяем третий параметр (если такового нет, переходим в п. 9).

Находим все альбомы, которые удовлетворяют п. 6 и объединяем их в множество 3.

Находим пересечение множеств 1 и 3 и записываем в множество 1.

Находим пересечение множеств 1 и 2 и записываем в множество 1.

Выводим множество 1 на новый лист.

Пример диалога:

Рисунок 3.2.1 — вопрос «Поиск альбома по описанию»

Рисунок 3.2.2 — ответ на вопрос «Поиск альбома по описанию»

Исходный текст операции:

//#Операция поиска альбома по его описанию

#include «scp_keynodes. scsy»

#include «. /seb/planimetry. scsy»

procedure (search_by_param,

[[

sheet_type = «/proc/agents/shell/keynode/SCgSheet»;

sheet_title = /"Операция прошла успешно"/;

atr1 = «/proc/keynode/1_»;

atr2 = «/proc/keynode/2_»;

ui_information;

layout;

«MB_TITLE_QUERY_RESULT» = /"Результат запроса"/;

«MB_TEXT_METKA» = /"Метка"/;

«MB_TEXT_ERROR1» = /"Не равны"/;

«MB_TEXT_ERROR2» = /"А сломалося!"/;

«Альбомы»;

«описание*»;

«тип записи*»

]],

[{

sheet,

shift,

node,

node1,

node_temp,

node_temp1,

arc,

arc1,

arc2,

attr_arc,

selected_els,

selected_els_copy,

result_set,

result_set1,

result_set2,

temp_node_with_param,

test_node,

node_param,

result,

set_albums_copy,

node_album,

set_album_param,

temp_node,

temp_set1,

temp_set2,

temp_set3,

temp_set5,

temp_set0,

resultSet1,

resultSet2,

resultSet3,

resultSet4,

node_out_resSet2,

node_out_resSet3,

node_out_resSet4,

output_set

}],

{[

1_: in_: selected_els,

2_: in_: sheet,

3_: in_: shift

]}

)

genEl ([

1_: assign_: node_: output_set

])

genEl ([

1_: assign_: node_: result_set

])

genEl ([

1_: assign_: node_: result_set1

])

genEl ([

1_: assign_: node_: result_set2

])

//#Копия selected_els_copy входных данных

searchSetStr3([

1_: fixed_: selected_els,

2_: assign_: const_: pos_: arc_: arc,

3_: assign_: node_: const_: node,

set3_: assign_: selected_els_copy

])

//#Выделяем один из элементов temp_node_with_param множества selected_els_copy

searchElStr3([

1_: fixed_: selected_els_copy,

2_: assign_: arc_: pos_: const_: arc,

3_: assign_: node_: temp_node_with_param

])

//#Удаляем дугу arc проведенную из selected_els_copy к temp_node

eraseEl ([

1_: fixed_: arc

])

//#Делаем копию set_albums_copy всех альбомов

searchSetStr3([

1_: fixed_: «Альбомы»,

2_: assign_: const_: pos_: arc_: arc,

3_: assign_: node_: const_: node,

set3_: assign_: set_albums_copy

])

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

//#Берем один альбом node_album из множества альбомов set_albums_copy

label (other_album)

searchElStr3([

1_: fixed_: set_albums_copy,

2_: assign_: arc_: pos_: const_: arc,

3_: assign_: node_: const_: node_album

], not_other_album)

//#Удаляем дугу arc проведенную из set_albums_copy к node_album

eraseEl ([

1_: fixed_: arc

])

//#Найдем множество set_album_param всех описаний альбома node_album

//#---------------1_проходим первую пару_------------------

searchSetStr5([

1_: assign_: const_: node_: node,

2_: assign_: pos_: arc_: const_: arc,

3_: fixed_: node_album,

4_: assign_: pos_: arc_: const_: arc1,

5_: fixed_: atr1,

set1_: assign_: resultSet1

])

searchSetStr3([

1_: fixed_: «описание*»,

2_: assign_: pos_: arc_: const_: arc,

3_: assign_: node,

set3_: assign_: resultSet2

])

selectYStr3([

1_: fixed_: resultSet1,

2_: assign_: const_: pos_: arc,

3_: assign_: node_: node,

set3_: fixed_: resultSet2

])

searchElStr3([

1_: fixed_: resultSet2,

2_: assign_: const_: pos_: arc,

3_: assign_: node_: node_out_resSet2

])

searchSetStr5([

1_: fixed_: node_out_resSet2,

2_: assign_: pos_: arc_: const_: arc,

3_: assign_: const_: node_: node,

4_: assign_: pos_: arc_: const_: arc1,

5_: fixed_: atr2,

set3_: assign_: resultSet3

])

//#---------------2_проходим тройку_------------------

searchElStr3([

1_: fixed_: resultSet3,

2_: assign_: const_: pos_: arc,

3_: assign_: node_: node_out_resSet3

])

searchSetStr3([

1_: fixed_: node_out_resSet3,

2_: assign_: pos_: arc_: const_: arc,

3_: assign_: node,

set3_: assign_: resultSet4

])

//#Альбомы описываются по трем критериям, проверяем каждый из

//#---------------1_Проверка по типу записи_--------------

label (other_handler)

searchElStr3([

1_: fixed_: resultSet4,

2_: assign_: const_: pos_: arc,

3_: assign_: node_: node_out_resSet4

], other_album)

//#Удаляем дугу arc проведенную из resultSet4 к node_out_resSet4

eraseEl ([

1_: fixed_: arc

])

//#--------Ищем альбом по его введенному описанию---------

searchSetStr5([

1_: assign_: const_: node_: node,

2_: assign_: pos_: arc_: const_: arc,

3_: fixed_: node_out_resSet4,

4_: assign_: pos_: arc_: const_: arc1,

5_: fixed_: atr1,

set1_: assign_: resultSet1

])

searchSetStr5([

1_: assign_: const_: node_: node,

2_: assign_: pos_: arc_: const_: arc,

3_: fixed_: temp_node_with_param,

4_: assign_: pos_: arc_: const_: arc1,

5_: fixed_: atr2,

set1_: assign_: resultSet2

])

selectYStr3([

1_: fixed_: resultSet1,

2_: assign_: const_: pos_: arc,

3_: assign_: node_: node,

set3_: fixed_: resultSet2

], other_handler)

genElStr3([

1_: fixed_: result_set,

2_: assign_: const_: pos_: arc,

3_: fixed_: node_album

], other_album,)

label (not_other_album)

////////////////////////////////////////////////////////////////////////

////

//#Выделяем один из элементов temp_node_with_param множества selected_els_copy

searchElStr3([

1_: fixed_: selected_els_copy,

2_: assign_: arc_: pos_: const_: arc,

3_: assign_: node_: temp_node_with_param

], output)

//#Удаляем дугу arc проведенную из selected_els_copy к temp_node

eraseEl ([

1_: fixed_: arc

])

//#Делаем копию set_albums_copy всех альбомов

searchSetStr3([

1_: fixed_: «Альбомы»,

2_: assign_: const_: pos_: arc_: arc,

3_: assign_: node_: const_: node,

set3_: assign_: set_albums_copy

])

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

//#Берем один альбом node_album из множества альбомов set_albums_copy

label (other_album1)

searchElStr3([

1_: fixed_: set_albums_copy,

2_: assign_: arc_: pos_: const_: arc,

3_: assign_: node_: const_: node_album

], not_other_album1)

//#Удаляем дугу arc проведенную из set_albums_copy к node_album

eraseEl ([

1_: fixed_: arc

])

//#Найдем множество set_album_param всех описаний альбома node_album

//#---------------1_проходим первую пару_------------------

searchSetStr5([

1_: assign_: const_: node_: node,

2_: assign_: pos_: arc_: const_: arc,

3_: fixed_: node_album,

4_: assign_: pos_: arc_: const_: arc1,

5_: fixed_: atr1,

set1_: assign_: resultSet1

])

searchSetStr3([

1_: fixed_: «описание*»,

2_: assign_: pos_: arc_: const_: arc,

3_: assign_: node,

set3_: assign_: resultSet2

])

selectYStr3([

1_: fixed_: resultSet1,

2_: assign_: const_: pos_: arc,

3_: assign_: node_: node,

set3_: fixed_: resultSet2

])

searchElStr3([

1_: fixed_: resultSet2,

2_: assign_: const_: pos_: arc,

3_: assign_: node_: node_out_resSet2

])

searchSetStr5([

1_: fixed_: node_out_resSet2,

2_: assign_: pos_: arc_: const_: arc,

3_: assign_: const_: node_: node,

4_: assign_: pos_: arc_: const_: arc1,

5_: fixed_: atr2,

set3_: assign_: resultSet3

])

//#---------------2_проходим тройку_------------------

searchElStr3([

1_: fixed_: resultSet3,

2_: assign_: const_: pos_: arc,

3_: assign_: node_: node_out_resSet3

])

searchSetStr3([

1_: fixed_: node_out_resSet3,

2_: assign_: pos_: arc_: const_: arc,

3_: assign_: node,

set3_: assign_: resultSet4

])

//#Альбомы описываются по трем критериям, проверяем каждый из

//#---------------1_Проверка по типу записи_--------------

label (other_handler1)

searchElStr3([

1_: fixed_: resultSet4,

2_: assign_: const_: pos_: arc,

3_: assign_: node_: node_out_resSet4

], other_album1)

//#Удаляем дугу arc проведенную из resultSet4 к node_out_resSet4

eraseEl ([

1_: fixed_: arc

])

//#--------Ищем альбом по его введенному описанию---------

searchSetStr5([

1_: assign_: const_: node_: node,

2_: assign_: pos_: arc_: const_: arc,

3_: fixed_: node_out_resSet4,

4_: assign_: pos_: arc_: const_: arc1,

5_: fixed_: atr1,

set1_: assign_: resultSet1

])

searchSetStr5([

1_: assign_: const_: node_: node,

2_: assign_: pos_: arc_: const_: arc,

3_: fixed_: temp_node_with_param,

4_: assign_: pos_: arc_: const_: arc1,

5_: fixed_: atr2,

set1_: assign_: resultSet2

])

selectYStr3([

1_: fixed_: resultSet1,

2_: assign_: const_: pos_: arc,

3_: assign_: node_: node,

set3_: fixed_: resultSet2

], other_handler1)

genElStr3([

1_: fixed_: result_set1,

2_: assign_: const_: pos_: arc,

3_: fixed_: node_album

], other_album1,)

////////////////////////////////////////////////////////////////////////

label (not_other_album1)

////////////////////////////////////////////////////////////////////////

//

//#Выделяем один из элементов temp_node_with_param множества selected_els_copy

searchElStr3([

1_: fixed_: selected_els_copy,

2_: assign_: arc_: pos_: const_: arc,

3_: assign_: node_: temp_node_with_param

], output)

//#Удаляем дугу arc проведенную из selected_els_copy к temp_node

eraseEl ([

1_: fixed_: arc

])

//#Делаем копию set_albums_copy всех альбомов

searchSetStr3([

1_: fixed_: «Альбомы»,

2_: assign_: const_: pos_: arc_: arc,

3_: assign_: node_: const_: node,

set3_: assign_: set_albums_copy

])

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

//#Берем один альбом node_album из множества альбомов set_albums_copy

label (other_album2)

searchElStr3([

1_: fixed_: set_albums_copy,

2_: assign_: arc_: pos_: const_: arc,

3_: assign_: node_: const_: node_album

], not_other_album2)

//#Удаляем дугу arc проведенную из set_albums_copy к node_album

eraseEl ([

1_: fixed_: arc

])

//#Найдем множество set_album_param всех описаний альбома node_album

//#---------------1_проходим первую пару_------------------

searchSetStr5([

1_: assign_: const_: node_: node,

2_: assign_: pos_: arc_: const_: arc,

3_: fixed_: node_album,

4_: assign_: pos_: arc_: const_: arc1,

5_: fixed_: atr1,

set1_: assign_: resultSet1

])

searchSetStr3([

1_: fixed_: «описание*»,

2_: assign_: pos_: arc_: const_: arc,

3_: assign_: node,

set3_: assign_: resultSet2

])

selectYStr3([

1_: fixed_: resultSet1,

2_: assign_: const_: pos_: arc,

3_: assign_: node_: node,

set3_: fixed_: resultSet2

])

searchElStr3([

1_: fixed_: resultSet2,

2_: assign_: const_: pos_: arc,

3_: assign_: node_: node_out_resSet2

])

searchSetStr5([

1_: fixed_: node_out_resSet2,

2_: assign_: pos_: arc_: const_: arc,

3_: assign_: const_: node_: node,

4_: assign_: pos_: arc_: const_: arc1,

5_: fixed_: atr2,

set3_: assign_: resultSet3

])

//#---------------2_проходим тройку_------------------

searchElStr3([

1_: fixed_: resultSet3,

2_: assign_: const_: pos_: arc,

3_: assign_: node_: node_out_resSet3

])

searchSetStr3([

1_: fixed_: node_out_resSet3,

2_: assign_: pos_: arc_: const_: arc,

3_: assign_: node,

set3_: assign_: resultSet4

])

//#Альбомы описываются по трем критериям, проверяем каждый из

//#---------------1_Проверка по типу записи_--------------

label (other_handler2)

searchElStr3([

1_: fixed_: resultSet4,

2_: assign_: const_: pos_: arc,

3_: assign_: node_: node_out_resSet4

], other_album2)

//#Удаляем дугу arc проведенную из resultSet4 к node_out_resSet4

eraseEl ([

1_: fixed_: arc

])

//#--------Ищем альбом по его введенному описанию---------

searchSetStr5([

1_: assign_: const_: node_: node,

2_: assign_: pos_: arc_: const_: arc,

3_: fixed_: node_out_resSet4,

4_: assign_: pos_: arc_: const_: arc1,

5_: fixed_: atr1,

set1_: assign_: resultSet1

])

searchSetStr5([

1_: assign_: const_: node_: node,

2_: assign_: pos_: arc_: const_: arc,

3_: fixed_: temp_node_with_param,

4_: assign_: pos_: arc_: const_: arc1,

5_: fixed_: atr2,

set1_: assign_: resultSet2

])

selectYStr3([

1_: fixed_: resultSet1,

2_: assign_: const_: pos_: arc,

3_: assign_: node_: node,

set3_: fixed_: resultSet2

], other_handler2)

genElStr3([

1_: fixed_: result_set2,

2_: assign_: const_: pos_: arc,

3_: fixed_: node_album

], other_album2,)

////////////////////////////////////////////////////////////////////////

label (not_other_album2)

//////////////////////////

label (output)

////////////////////////////////////////////////////////////////////////

searchSetStr3([

1_: fixed_: result_set,

2_: assign_: const_: pos_: arc_: arc,

3_: assign_: node_: const_: node,

set3_: fixed_: output_set

])

//#Проверим является ли множество result_set1 пустым

searchElStr3([

1_: fixed_: result_set1,

2_: assign_: const_: pos_: arc,

3_: assign_: node_: node

], out)

selectYStr3([

1_: fixed_: result_set1,

2_: assign_: const_: pos_: arc,

3_: assign_: node_: node,

set3_: fixed_: output_set

])

//#Проверим является ли множество result_set2 пустым

searchElStr3([

1_: fixed_: result_set2,

2_: assign_: const_: pos_: arc,

3_: assign_: node_: node

], out)

selectYStr3([

1_: fixed_: result_set2,

2_: assign_: const_: pos_: arc,

3_: assign_: node_: node,

set3_: fixed_: output_set

])

////////////////////////////////////////////////////////////////////////

label (out)

ui_sheet_create ([

1_: assign_: sheet,

2_: fixed_: sheet_type,

3_: fixed_: sheet_title,

4_: fixed_: layout

])

ui_output ([1_: fixed_: sheet, 2_: fixed_: output_set])

return ()

end

поиск альбома по типу записи (файл search_by_type. m4scp)

входные параметры: узел, содержащий тип записи;

выходные параметры: все альбомы с данным типом записи.

Пример диалога:

Рисунок 3.2.3 — вопрос «Поиск альбома по типу записи»

Рисунок 3.2.4 — ответ на вопрос «Поиск альбома по типу записи»

Алгоритм:

Делаем копию входных параметров.

Находим все узлы альбомов, подходящие под введенное описание и записываем их в множество 1.

Выводим на новый лист множество 1.

Исходный текст операции:

//#Операция поиска альбома по его описанию

#include «scp_keynodes. scsy»

#include «. /seb/planimetry. scsy»

procedure (search_by_type,

[[

sheet_type = «/proc/agents/shell/keynode/SCgSheet»;

sheet_title = /"Операция прошла успешно"/;

atr1 = «/proc/keynode/1_»;

atr2 = «/proc/keynode/2_»;

ui_information;

layout;

«MB_TITLE_QUERY_RESULT» = /"Результат запроса"/;

«MB_TEXT_METKA» = /"Метка"/;

«MB_TEXT_ERROR1» = /"Не равны"/;

«MB_TEXT_ERROR2» = /"А сломалося!"/;

«Альбомы»;

«описание*»;

«тип записи*»

]],

[{

sheet,

shift,

node,

node1,

node_temp,

node_temp1,

arc,

arc1,

arc2,

attr_arc,

selected_els,

selected_els_copy,

result_set,

temp_node_with_param,

test_node,

node_param,

result,

set_albums_copy,

node_album,

set_album_param,

temp_node,

temp_set1,

temp_set2,

temp_set3,

temp_set5,

temp_set0,

resultSet1,

resultSet2,

resultSet3,

resultSet4,

node_out_resSet2,

node_out_resSet3,

node_out_resSet4

}],

{[

1_: in_: selected_els,

2_: in_: sheet,

3_: in_: shift

]}

)

genEl ([

1_: assign_: node_: result_set

])

//#Копия selected_els_copy входных данных

searchSetStr3([

1_: fixed_: selected_els,

2_: assign_: const_: pos_: arc_: arc,

3_: assign_: node_: const_: node,

set3_: assign_: selected_els_copy

])

//#Выделяем один из элементов temp_node_with_param множества selected_els_copy

searchElStr3([

1_: fixed_: selected_els_copy,

2_: assign_: arc_: pos_: const_: arc,

3_: assign_: node_: temp_node_with_param

])

//#Удаляем дугу arc проведенную из selected_els_copy к temp_node

eraseEl ([

1_: fixed_: arc

])

//#Делаем копию set_albums_copy всех альбомов

searchSetStr3([

1_: fixed_: «Альбомы»,

2_: assign_: const_: pos_: arc_: arc,

3_: assign_: node_: const_: node,

set3_: assign_: set_albums_copy

])

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

//#Берем один альбом node_album из множества альбомов set_albums_copy

label (other_album)

searchElStr3([

1_: fixed_: set_albums_copy,

2_: assign_: arc_: pos_: const_: arc,

3_: assign_: node_: const_: node_album

], not_other_album)

//#Удаляем дугу arc проведенную из set_albums_copy к node_album

eraseEl ([

1_: fixed_: arc

])

//#Найдем множество set_album_param всех описаний альбома node_album

//#---------------1_проходим первую пару_------------------

searchSetStr5([

1_: assign_: const_: node_: node,

2_: assign_: pos_: arc_: const_: arc,

3_: fixed_: node_album,

4_: assign_: pos_: arc_: const_: arc1,

5_: fixed_: atr1,

set1_: assign_: resultSet1

])

searchSetStr3([

1_: fixed_: «описание*»,

2_: assign_: pos_: arc_: const_: arc,

3_: assign_: node,

set3_: assign_: resultSet2

])

selectYStr3([

1_: fixed_: resultSet1,

2_: assign_: const_: pos_: arc,

3_: assign_: node_: node,

set3_: fixed_: resultSet2

])

searchElStr3([

1_: fixed_: resultSet2,

2_: assign_: const_: pos_: arc,

3_: assign_: node_: node_out_resSet2

])

searchSetStr5([

1_: fixed_: node_out_resSet2,

2_: assign_: pos_: arc_: const_: arc,

3_: assign_: const_: node_: node,

4_: assign_: pos_: arc_: const_: arc1,

5_: fixed_: atr2,

set3_: assign_: resultSet3

])

//#---------------2_проходим тройку_------------------

searchElStr3([

1_: fixed_: resultSet3,

2_: assign_: const_: pos_: arc,

3_: assign_: node_: node_out_resSet3

])

searchSetStr3([

1_: fixed_: node_out_resSet3,

2_: assign_: pos_: arc_: const_: arc,

3_: assign_: node,

set3_: assign_: resultSet4

])

//#Альбомы описываются по трем критериям, проверяем каждый из

//#---------------1_Проверка по типу записи_--------------

label (other_handler)

searchElStr3([

1_: fixed_: resultSet4,

2_: assign_: const_: pos_: arc,

3_: assign_: node_: node_out_resSet4

], other_album)

//#Удаляем дугу arc проведенную из resultSet4 к node_out_resSet4

eraseEl ([

1_: fixed_: arc

])

//#--------

searchSetStr5([

1_: assign_: const_: node_: node,

2_: assign_: pos_: arc_: const_: arc,

3_: fixed_: node_out_resSet4,

4_: assign_: pos_: arc_: const_: arc1,

5_: fixed_: atr1,

set1_: assign_: resultSet1

])

searchSetStr3([

1_: fixed_: «тип записи*»,

2_: assign_: pos_: arc_: const_: arc,

3_: assign_: node,

set3_: assign_: resultSet2

])

selectYStr3([

1_: fixed_: resultSet1,

2_: assign_: const_: pos_: arc,

3_: assign_: node_: node,

set3_: fixed_: resultSet2

], other_handler)

searchElStr3([

1_: fixed_: resultSet2,

2_: assign_: const_: pos_: arc,

3_: assign_: node_: node_out_resSet2

])

searchSetStr5([

1_: fixed_: node_out_resSet2,

2_: assign_: pos_: arc_: const_: arc,

3_: assign_: const_: node_: node,

4_: assign_: pos_: arc_: const_: arc1,

5_: fixed_: atr2,

set3_: assign_: resultSet3

])

//#--------_Выделяем одно из описаний типа записи node_param_----------

searchElStr3([

1_: fixed_: resultSet3,

2_: assign_: const_: pos_: arc,

ПоказатьСвернуть
Заполнить форму текущей работой