

Архитектуры и модели программ и знаний
Лекция 26
Фреймы и фреймовые системы
Сафонов Владимир Олегович
Профессор кафедры информатики Заведующий лабораторией Java-технологии
(http://polyhimnie.math.spbu.ru/jtl)
Санкт-Петербургский государственный университет
Email: vosafonov@gmail.com
WWW: http://www.vladimirsafonov.org

Фреймы (frames)
Основоположник концепции – M.Minsky
(США), 1970-е гг.
Идея фрейма: представить знания о
стереотипных ситуациях, сценах, решениях, сценариях, объектахОсновная операция – сопоставление
текущего анализируемого объекта с одним из фреймов некоторой системы фреймовФрейм – не только структура из имени и
слотов (slots), но и стереотип (шаблон) для сравнения и классификации
(C) Сафонов В.О. 2012

Фрейм -- определение
Фрейм – формальное выражение вида:
<F <S1 V1> . . . <Sn Vn> R1 R2>
где F – имя фрейм а, Si - имена слотов, Vi
– значения слотов, R1 – реакция, исполняемая при успешном сопоставлении с фреймом, R2 – реакция, исполняемая при неудачном сопоставлении с фреймомК сожалению, многие более поздние
фреймовые системы (например, KEE) рассматривают фреймы лишь как способ структурирования, а не как средство сравнения с образцомФреймы-классы и фреймы-экземпляры (последние могут(C) СафоновиметьВ.О. 2012свои

Слоты (slots) и фасеты (facets) фрейма
Слот – структурная единица фрейма, его элементСлот имеет имя и значениеБолее детальная точка зрения на фрейм: слот
состоит из фасетов – имени, типа и др.Основные фасеты слота:
- имя (NAME) - тип (TYPE)
- ограничение на значение (RESTRICTION) P(V) |
|
- текущее значение (VALUE) |
|
- значение по умолчанию (DEFAULT_VALUE) |
|
- отношение класс-подкласс (IS_A) |
IS_A: |
ParentClassFrame |
|
определяет иерархию фреймов |
SAME, |
- тип наследования (INHERITANCE) : |
UNIQUE, RANGE, OVVERRIDE
- демоны: IF_NEEDED, IF_ADDED, IF_UPDATED, IF_REMOVED
(C) Сафонов В.О. 2012

Наследование во фреймовых системах
Фреймы-классы (class frames) и фреймы-
экземпляры (instance frames)Фрейм-класс имеет собственные слоты
(own slots) и слоты экземпляров (member
slots)
Фрейм-экземпляр наследует от класса все
его member slots (прямо или косвенно), а также может иметь свои собственные слоты
(own slots)
Соотношение экземпляр-класс задается
тем же слотом IS_A: INSTANCE FRAME EX; … IS_A: CL
(C) Сафонов В.О. 2012

Фреймы. Операции над фреймами
Выборка значения слота:
<get FrameName SlotName>Изменение значения слота
<set F S newValue>Создание или удаление слотаСоздание нового фреймаСравнение с фреймом (с системой
фреймов)
Использование IS_A: Если слот S не найден
во фрейме F, то выполняется поиск данного слота во фрейме-предке (согласно иерархии
IS_A)
(C) Сафонов В.О. 2012

Фреймовые языки
FRL, KRL (1970-е гг.), основаны на скобочном синтаксисе LISP’а
KEE (Knowledge Engineering Environment, 1980-е гг.) – фреймы-классы, фреймы-экземпляры, фреймы-наборы правил …Турбо-Эксперт (В.О.Сафонов, СПбГУ, 1991) – расширение Турбо-Паскаля гибридными знаниями, в т.ч. Фреймами
Knowledge.NET (В.О.Сафонов, А.В.Новиков, СПбГУ) – расширение C# гибридными знаниями, в т.ч. – фреймами, наборами правил и онтологиями
(C) Сафонов В.О. 2012

Фреймы: пример на языке Турбо-
Эксперт
frame Person: class; is_a: Mammal, System;
Type SexType = (Male, Female); member_slot
FirstName, SurName: string; sex: SexType;
age: facets
type: integer; default_value: 18; inheritance_type: Range; value: unknown;
is_needed: procedure begin if sex = Female then error; end;
end facets; knows: list of Person; … end frame
(C) Сафонов В.О. 2012

Язык Турбо-Эксперт
(1991)
Литература: Сафонов В.О. и др. Язык обработки знаний Турбо-Эксперт. – Кибернетика и системный анализ, 1991, №
6.
Язык, реализующий идею интеграции методов инженерии программ и знанийРасширение Турбо-Паскаля средствами представления знаний
Фрейм в данном примере содержит фрагменты традиционного кода на Паскале, что обеспечивает удобное сочетание методов разработки программ и баз знаний в одном языкеВозможно определение фреймов-наборов правил в том же стиле
Язык Турбо-Эксперт явился прообразом более позднего языка Knowledge.NET (см. лекцию 31)
(C) Сафонов В.О. 2012

Вопросы и домашнее задание к лекции 26
Изучите книгу: М.Минский. Фреймы для
представления знанийСравните концепции фрейма и объекта (в ООП)
Проанализируйте преимущества и недостатки,
области и границы применимости каждого из способов представления знаний (продукции, фреймы)
Изучите язык Турбо-Эксперт. Какие, по-
Вашему, дополнительные возможности для разработчиков программ он предоставляет, по сравнению с “чистыми” языками инженерии программ (например, C++) и инженерии знаний (например, Prolog)
(C) Сафонов В.О. 2012