Фреймовая модель.
Фрейм можно рассматривать как фрагмент семантической сети, предназначенный для описания некоторого объекта (события, ситуации предметной области), со всей совокупностью присущих ему (ей) свойств. В этом смысле фреймы – подграфы семантических сетей. Они представляют блоки знаний, с каждым из которых можно манипулировать как единым целым, что позволяет лучше структурировать базу знаний.
Фреймы впервые были предложены для представления знаний в 1975 году ученым Минским. Согласно его определению, фреймы – структуры данных, предназначенные для представления стереотипных ситуаций. В простейшем случае под фреймом понимают следующую структуру:
{n, (ns1, vs1,ps1),(ns2, vs2, ps2), … (nsn, vsn, psn)}, где n – имя фрейма, ns1- имя слота, vs1 – значение слота, ps1 – имя присоединенной процедуры.
Фрейм состоит из слотов. Слоты – некоторые незаполненные подструктуры фрейма. После заполнения слотов конкретными данными, фрейм будет представлять ту или иную ситуацию, явление или объект предметной области. Процедура является необязательным элементом слота.
В качестве значений слота могут выступать имена других фреймов, что обеспечивает построение сети фреймов. Во фреймовых системах часть фреймов представляет индивидные объекты предметной области. Такие фреймы называют экземплярами фреймов или фреймами-примерами. Другие фреймы, представляющие обобщенные объекты, называют классами или фреймами-прототипами.
Фрейм может содержать специальный слот, с помощью которого задается отношение данного фрейма с другими фреймами сети. Наиболее часто в сети фреймов используют теоретико-множественные отношения, которые позволяют строить иерархические структуры.
Специальный слот, называемый is_a-слотом, фиксирует отношение «экземпляр класса».
Слот ako указывает, что данный фрейм является прямым подклассом вышестоящего по иерархии фрейма. Вышестоящий фрейм называют родительским фреймом или суперклассом.
Важной характеристикой фрейма является возможность включения в слоты присоединенных процедур. Выделяют два типа процедур таких: процедуры-демоны и процедуры-слуги.
Процедуры-демоны активизируются автоматически при каждой попытки добавления или удаления данных из слота. Чаще всего используются три типа процедур-демонов:
- если добавлено,
- если удалено,
- если нужно.
Процедура «если добавлено» выполняется, когда новые данные помещаются в слот. Процедура «если удалено» выполняется, когда данные удаляются из слота. Процедура «если нужно» автоматически запускается, когда запрашивается информация из слота, а с ним не связаны никакие значения.
С помощью указанных процедур обычно выполняются все операции, обеспечивающие поддержание базы знаний в актуальном состоянии.
Процедуры-слуги активизируются только по запросу при обращении к слоту.
Фреймовые системы представляют собой иерархически организованные структуры, реализующие принцип наследования информации. Наследование значений происходит в направлении «суперкласс – подкласс», «класс - экземпляр класса».
В ряде фреймовых систем в состав слотов включают различные указатели наследования. Указатель фиксирует ту информацию, которая передается от слотов фрейма верхнего уровня к соответствующим слотам нижнего уровня.
Во фреймовых системах отсутствует специальный механизм управления выводом, поэтому вывод реализуется с помощью процедур, встроенных во фреймы. Во фреймовых системах используются три способа управления выводом:
- с помощью механизма наследования,
- с помощью процедур-демонов,
- с помощью присоединенных процедур.
Механизм наследования является основным встроенным средством вывода, обеспечивает экономию памяти и автоматическое определение значений для слотов фреймов нижних уровней.
Фреймовые системы также оснащаются набором специальных процедур, к которым относят процедуры конструирования класса, конструирование экземпляра класса, записи значения в слот, чтение слота.
Процедуры конструирования класса формируют фрейм-прототип с необходимым набором слотов и соответствующими ссылками на суперклассы. Фрейм может быть связан с несколькими суперклассами.
Процедура конструирования экземпляра класса позволяет формировать фреймы-примеры.
Процедура «если нужно» вызывается, когда поступает запрос, требующий установить значение соответствующего слота.
Данные процедуры устанавливают зависимость значений одного слота от значений другого и играют роль хранителя отношений ограничения во фреймовых системах.
Третья возможность вывода во фреймовых системах основана на применении присоединенных (служебных) процедур. Имя присоединенной процедуры выступает в качестве значения слота. Присоединенная процедура запускается по сообщению, переданному из другого фрейма.
Для этого может использоваться специальная функция MSG, которая имеет параметры: имя фрейма, имя слота, параметры.
Использование процедурных знаний во фреймовых системах повышает их гибкость, но усложняет управление. Свое дальнейшее развитие фреймовые системы получили в системах объектно-ориентированного программирования.