Фреймовая модель.

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

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

{n, (ns1, vs1,ps1),(ns2, vs2, ps2), … (nsn, vsn, psn)}, где n – имя фрейма, ns1- имя слота, vs1 – значение слота, ps1 – имя присоединенной процедуры.

Фрейм состоит из слотов. Слоты – некоторые незаполненные подструктуры фрейма. После заполнения слотов конкретными данными, фрейм будет представлять ту или иную ситуацию, явление или объект предметной области. Процедура является необязательным элементом слота.

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

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

Специальный слот, называемый is_a-слотом, фиксирует отношение «экземпляр класса».

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

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

Процедуры-демоны активизируются автоматически при каждой попытки добавления или удаления данных из слота. Чаще всего используются три типа процедур-демонов:

- если добавлено,

- если удалено,

- если нужно.

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

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

Процедуры-слуги активизируются только по запросу при обращении к слоту.

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

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

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

- с помощью механизма наследования,

- с помощью процедур-демонов,

- с помощью присоединенных процедур.

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

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

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

Процедура конструирования экземпляра класса позволяет формировать фреймы-примеры.

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

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

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

Для этого может использоваться специальная функция MSG, которая имеет параметры: имя фрейма, имя слота, параметры.

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