Вывод на фреймах
Имя фрейма — уникальный идентификатор. Для каждого фрейма определяется слот IsA — родитель данного фрейма — и слот дочерних фреймов, задаваемый списком имен (указателей). В список слотов включается ряд слотов, необходимых для организации интерфейса с пользователем, для организации внутрисистемных процессов и т. п. В их число входят, например, слоты для определения имени пользователя, даты… Читать ещё >
Вывод на фреймах (реферат, курсовая, диплом, контрольная)
Для организации процесса вывода используются механизмы наследования информации и присоединенных процедур. Наиболее системная структура фрейма, удобная для описания, приведена на рис. 4.33.
Рис. 433. Структура данных слота.
Здесь:
- 1) имя фрейма — уникальный идентификатор. Для каждого фрейма определяется слот IsA — родитель данного фрейма — и слот дочерних фреймов, задаваемый списком имен (указателей). В список слотов включается ряд слотов, необходимых для организации интерфейса с пользователем, для организации внутрисистемных процессов и т. п. В их число входят, например, слоты для определения имени пользователя, даты определения, даты изменения текста, комментария и т. п.;
- 2) имя слота также служит его идентификатором, т. е. уникальным именем во фрейме, к которому он принадлежит. Могут вводиться специальные идентификаторы, отождествляемые с отношениями Is A, Part-of, причина — следствие и др. Кстати, в качестве слота может выступать слот «Условие», а его значением может быть продукционное правило. Таким образом, реализуется возможность использования продукций для организации вывода. Вводятся также слоты типа: «Дата модификации фрейма», «Комментарий», «Отношение» и др. Такие слоты называются системными и используются для редактирования БЗ и управления выводом;
- 3) указатели наследования необходимы только для фреймовых систем иерархического типа. Типичными указателями могут служить: «уникальный» (unique: U), «такой же» {same: S), «установить» (range: R), «игнорировать» {override/. О) и т. п. Метка U показывает, что каждый фрейм может иметь слоты с различными значениями; S — все слоты должны иметь одинаковое значение; R — значения слотов фрейма нижнего уровня должны находиться в пределах, указанных значениями слотов фреймов верхнего уровня; О — при отсутствии указания значение слотов фрейма верхнего уровня становится значением слота фрейма нижнего уровня;
- 4) указатель атрибутов слота показывает тип данных — число, указатель другого фрейма, т. е. является именем (FRAME (указатель на другой фрейм), INTEGER (целый), REAL (действительный), BOOL (логический), TEXT (текстовый), LIST (список), TABLE (таблица), EXPRESSION (выражение) и др.);
- 5) значение слота, очевидно, должно совпадать с указанным типом данных этого слота, а также должно выполняться условие наследования;
- 6) демон — присоединенная процедура. Примеры таких ПП: If-needed, If-added, If-removed и т. д. Эти процедуры запускаются автоматически при выполнении некоторого условия.
ПП-слуга — обычно программы процедурного типа, называемые служебными (в языке LISP), методами (в языке Smalltalk). Процедура запускается по сообщению из другого фрейма.
Как таковой формальный механизм вывода отсутствует и реализуется с помощью механизма наследования и присоединенных процедур. Это позволяет объединять возможности сетевого и иерархического представления знаний.
Из данного примера видно, насколько разнообразными могут быть конкретные реализации СИИ фреймового типа, а также их достоинства.
Приведем пример записи иерархии фреймов по отношению IsA с указанием фрейма более высокого уровня, из которого наследуются свойства (рис. 4.34).
Значение слота ЛЕТАЕТ по умолчанию означает, что если нет специальной оговорки, все подмножества ПТИЦ и отдельные ПТИЦЫ летают.
Остальные свойства {ИМЕЕТ КРЫЛЬЯ), {ИМЕЕТ ПЕРЬЯ) наследуются всеми элементами, связанными отношением IsA.
Функция значений «по умолчанию» очень популярна в представлении фреймов, поскольку позволяет однозначно определять значения слотов на иерархии.
Рис. 4.34. Фрейм ПТИЦА.
Например, если задать вопрос к базе фреймов: умеет ли Джо охотиться, система обращается к фрейму СОКОЛ и выясняет, что сокол умеет охотиться. Иными словами, это свойство наследуется из фрейма более высокого уровня. Если мы хотим получить ответ на вопрос: летает ли ПИККОЛО, то системе приходится разрешать коллизию, возникающую при анализе фреймов ПТИЦА {ПИНГВИН есть ПТИЦА) и ПИНГВИН. Свойство ЛЕТАТЬ не определено во фрейме ПИККОЛО, поэтому система обращается к фрейму ПИНГВИН но указателю IsA. И здесь есть прямое указание, что пингвин не летает. Это свойство наследуется во фрейме ПИККОЛО. И хотя указатель нас отправляет к фрейму ПТИЦА, где по умолчанию стоит значение ДА, предпочтение отдается значению в слоте ПИНГВИН, откуда была последняя ссылка.
Очень часто языки фреймового тина называют объектно-ориентированными. Таким языком является Smalltalk. Другими примерами языков программирования фреймового типа являются языки FML (Frame Manipulation Language), FRL {Frame Representation Language), KRL {Knowledge Representation Language), являющиеся надстройками над LISP-системами. Очень часто такие языки также называют объектно-ориентированными, но, для предотвращения путаницы с языком Smalltalk, обычно сохраняют название «язык фреймового типа».