Структура данных фрейма.
Прежде, чем обсуждать вывод во фреймовой системе, рассмотрим подробнее структуру данных фрейма.
Фреймовая система – это иерархическая структура, узлами, которой являются фреймы с определенной структурой данных.
1. Имя фрейма. Это идентификатор, присваиваемый фрейму. Фрейм должен иметь имя, единственное в данной фреймовой системе (уникальное имя). Каждый фрейм состоит из произвольного числа слотов, причем несколько из них обычно определяются самой системой для выполнения специфических функций, а остальные определяются пользоватлем. В их число входят слот, показывающий фрейм – родитель данного фрейма; слот указателей дочерних фреймов, который является списком указателей этих фреймов; слот для ввода имени пользователя, даты определения, даты изменения, такста комментария и другие слоты. Каждый слот, в свою очередь, также представлен определенной структурой данных.
2. Имя слота. Это идентификатор, присваиваемый слоту; слот должен иметь уникальное имя во фрейме, к которому он принадлежит. Обычно имя слота не имеет никакой смысловой нагрузки и является лишь идентификатором данного слота, но в некоторых случаях оно может иметь специфический смысл. К таким именам относятся: отношение; указатель прямого дочернего фрейма; дата определения фрейма; дата модификации фрейма и т.п.
3. Указатели наследования. Эти указатели касаются только фреймовых систем иерархического типа, основанных на отношениях иерархического типа, основанных на отношениях «абстрактное - конкретное». Они показывают, какую информацию об атрибутах слотов во фрейме верхнего уровня наследуют слоты с такими же именами во фрейме нижнего уровня.
4. Указатель типа данных (атрибутов слотов). Указывается, что слот имеет численное значение численное значение, либо служит указателем другого фрейма (т.е. показывает имя фрейма). К типам данных относятся указатель, целый, действительный, булевый, присоединенная процедура, текст, список, таблица, выражение и др.
5. Значение слота. Здесь вводится значение слота. Значение слота должно совпадать с указанным типом данных этого слота, кроме того, должно выполняться условие наследоваия.
6. Процедура – демон. Существуют следующие типы процедур – демонов: если-необходимо, если-изменено, если-добавлено, если-удалено.
Демоном указывается процедура, автоматически запускаемая при выполнении некоторого условия. Т.е. когда изменяет свое значение атрибут в условной части если утверждения о состоянии демона. Процедуры – демоны активизируются при каждой попытке добавления или удаления данных из слота (по умолчанию). Демоны запускаются при обращении к соответствующему слоту. Например, демон если-необходимо запускается, если в момент обращения к слоту его значение не было установлено; если-добавлено запускается при подстановке в слот значения; если-удалено запускается при стирании значения слота. Кроме того, демон является разновидностью присоединенной процедуры.
7. Присоединенная процедура (процедура – слуга). В качестве значения слота можно использовать программу процедурного типа, называемую служебной (в языке LISP) и методом (в языке Smalltalk). В данном случае присоединенная процедура запускается по сообщению, переданному из другого фрейма, или при выполнении условий, определенных пользователем при создании фрейма.
Когда мы говорим, что в моделях представления знаний фреймами объединяются процедурные и декларативные знания, то считаем и присоединенные процедуры процедурными значениями. Кроме того, в языке представления знаний фреймами отсутствует специальный механизм управления выводом, поэтому пользователь должен реализовать данный механизм с помощью присоединенной процедуры.
Дата добавления: 2017-02-20; просмотров: 388;