Содержание: • Цель работы • Задание • Описание структур данных и основных функций • Протоколы проведенных экспериментов • Исходный код программы Цель работы. Разработка модельной программной системы представления знаний на основе семантической сети (СС). Задания к лабораторной работе • Разработать структуры данных для хранения в памяти компьютера списка записей (таблицы) объектов, типов отношений и связей между объектами (не более 50 экземпляров для каждого типа записей). • Разработать программу, обеспечивающую выполнение следующих функций:
- ввод из текстового файла и сохранение в памяти модели представления знаний СС (см. пример в Приложении 2);
- вывод на экран по запросу списка всех объектов, связей и отношений между объектами;
- ввод с клавиатуры запроса предопределённого формата к базе знаний СС, поиск ответа и вывод его на экран (запрос и ответ должны быть преобразованы в читабельную форму). Описание структур данных и основных функций Программа написана на языке программирования C#. Для неё был создан специальный класс ExpertSystem, который содержит 2 основных метода: парсинга данных (включая наследование связей), который принимает сроку-путь к файлу с описанием СС и метод ответа на вопросы, который принимает строку запроса к СС. Чтобы разрешить пользователю присваивать произвольные номера объектам и типам, программно была реализована система внешних и внутренних ключей, т. е. в файле с описанием СС объект может иметь номер 3333, но в базу он будет записан под номером, соответствующим его положению в порядке объектов, для этого в программе использованы такие встроенные структуры данных как Dictionary и List. Благодаря им мы можем совершать обход по данным не привязывясь жестко к порядку нумирования объектов и связей. Для типов же данная система была реализована для того, чтобы дать возможность пользователю создавать несколько разных связей одинакового типа, например связь «вес» типа «0» и связь сын типа «0». Всего в системе поддерживается 3 типа связей: • 0 – нет наследования свойств. • 1 – первоочередное наследование (например отношение is-a). • 2 – наследование второй очерёдности (например has-part). С одним лишь предположением системы – нумерация связей (не типов) будет происходить в файле с 1, номер связи «0» будет соответствовать отсутствию связи. Таким образом получаем, что из последовательности связей 1->1 наследуется 1, из 2->2 наследуется 2, из 1->2 наследуется 2, из 2->1 наследуется 2, т. е. наследуется максимальный тип связи (кроме 0). Для сохранения был создан список структур, хранящий <код, имя 1 объекта><код, имя связи><код, имя 2 объекта>