Фреймовая модель основана на концепции Марвина Мински (Marvin Minsky) – профессора Массачусетского технологического института, основателя лаборатории искусственного интеллекта, автора ряда фундаментальных работ. Фреймовая модель представляет собой систематизированную психологическую модель памяти человека и его сознания.
Фрейм (англ. frame – рамка, каркас) – структура данных для представления некоторого концептуального объекта. Информация, относящаяся к фрейму, содержится в составляющих его слотах.
Слот (англ. slot – щель, прорезь) может быть терминальным (листом иерархии) или представлять собой фрейм нижнего уровня.
Каждый фрейм, как показано на рисунке ниже, состоит из произвольного числа слотов, причем несколько из них обычно определяются самой системой для выполнения специфических функций, а остальные определяются пользователем.
Пояснение:
- имя фрейма (имя фрейма) – это идентификатор, присваиваемый фрейму. Фрейм должен иметь имя, единственное в данной фреймовой модели (уникальное имя);
- имя слота (имя слота) – это идентификатор, присваиваемый слоту. Слот должен иметь уникальное имя во фрейме, к которому он принадлежит. Обычно имя слота не несет никакой смысловой нагрузки и является лишь идентификатором данного слота, но в некоторых случаях оно может иметь специфический смысл;
- указатель наследования – только для фреймовых моделей иерархического типа; они показывают, какую информацию об атрибутах слотов во фрейме верхнего уровня наследуют слоты с такими же именами во фрейме нижнего уровня;
- указатель атрибутов – указатель типа данных слота. К таким типам относятся: (указатель), (целое), (вещественное), (булево), (присоединенная процедура), (текст), (список), (таблица), (выражение) и другие;
- значение слота – значение, соответствующее типу данных слота и удовлетворяющее условиям наследования;
- демон – процедура, автоматически запускаемая при выполнении некоторого условия. Демоны запускаются при обращении к конкретному слоту фреймовой модели. Например, демон запускается, если в момент обращения к слоту его значение не было установлено, запускается при подстановке в слот значения, запускается при стирании значения слота.
Пример фреймовой модели иерархического типа представлен на рисунке ниже:
Фреймы образуют иерархию. Иерархия во фреймовых моделях порождает единую многоуровневую структуру, описывающую либо объект, если слоты описывают только свойства объекта, либо ситуацию или процесс, если отдельные слоты являются именами процедур, присоединенных к фрейму и вызываемых при его актуализации.
Формально фрейм – это тип данных вида:
- – имя объекта;
- – множество слотов, содержащих факты, определяющие декларативную семантику фрейма;
- – множество слотов, обеспечивающих связи с другими фреймами (каузальные, семантические и т. д.);
- – множество слотов, обеспечивающих преобразования, определяющие процедурную семантику фрейма.
Фреймы подразделяются на:
- фрейм-экземпляр – конкретная реализация фрейма, описывающая текущее состояние в предметной области;
- фрейм-образец – шаблон для описания объектов или допустимых ситуаций предметной области;
- фрейм-класс – фрейм верхнего уровня для представления совокупности фреймов образцов.
Состав фреймов и слотов в каждой конкретной фреймовой модели может быть разный, однако в рамках одной системы целесообразно единое представление для устранения лишнего усложнения.
Разнотипные объекты или объекты, соответствующие концепции «множественности миров», заключающейся, к примеру, в том, что лошадь – животное бескрылое для одного (реального) мира и одновременно крылатое (Пегас в мифическом мире) для другого, могут описываться отличающимися друг от друга фреймами.
В целом фреймовая модель допускает представление всех свойств декларативных и процедурных знаний. Глубина вложенности слотов во фрейме (число уровней) зависит от предметной области и языка, реализующего модель.