Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры к экзамену.doc
Скачиваний:
69
Добавлен:
16.03.2015
Размер:
1.59 Mб
Скачать

26 Язык представления знаний frl. Поддержка сети фреймов. Ако-связи. Поиск по образцу. Пример.

FRL-Frame Representation Language

1974 г. – Робертс, Голдштейн.

Язык работы со списками: LISP

Каждый фрейм представляет собой 5-ти уровневую конструкцию.

5 уровней представлений:

( имя фрейма

( имя 1-го слота

( имя 1-го аспекта

( 1-ое данное

( 1-ый комментарий - сообщение)

( 2-ый комментарий - сообщение)

…….

( L комментарий - сообщение))

( 2-ое данное

( 1-ый комментарий - сообщение)

…….

( m комментарий - сообщение))

………..

( j-ое данное))

( имя 2-го аспекта

…………)))

( имя 2-го слота

…………………))))

В этой структуре под аспектом понимаются правила работы с данными. Есть два аспекта (основных)

Value – значения могут быть добавлены, удалены, отредактированы

Default – значения по умолчанию, если слот имеет аспект Default, то означает, что значения в этом аспекте используется по умолчанию.

С каждым слотом связываются от 1 до 3 процедур.

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

If_Needed – если необходимо

If_Deleted – если удалено

Основные функции в языке:

  1. Создание фрейма FASSERT

FASSERT ( Иванов

( Имя ( ¤ VALUE ( Петр )))

( Адрес ( ¤ VALUE ( Общежитие 1 – к.71 )))

( Факультет ( ¤ VALUE ( 6 )))

( Группа ( ¤ VALUE ( 651 )))

( Хобби ( ¤ VALUE ( спорт ))) )

Одновременно создается прототип фрейма и заносится в базу знаний (БЗ).

Аспект характеризует контекст данного.

¤ - отделяет имя аспекта;

VALUE – прямое значение величины;

¤ DEFAULT – значение по умолчанию.

  1. Добавление информации в фрейм FPUT

FPUT ( Иванов Хобби ¤ VALUE Музыка)

Иванов – имя фрейма;

Хобби – имя слота;

¤ VALUE – аспект;

Музыка – значение.

FPUT (Иванов Хобби ¤ Default не_занимается) – устанавливаем значение по умолчанию

  1. Извлечение информации из фрейма FGET

FGET ( Иванов Хобби ¤ VALUE)

  • Спорт

  • Музыка

FGET ( Иванов Хобби ¤ VALUE Резьба_по_дереву)

  • не_занимается (если Default установлено).

  1. Удаление информации

FREEMOVE () – может иметь несколько вариантов

FREEMOVE (F) – удаление фрейма, F – имя фрейма

FREEMOVE (Иванов) – будет удален весь фрейм Иванов

FREEMOVE (Иванов Хобби ¤ Value Музыка)

F S A Z

  1. Вывод на печать

FPRINT (F1, F2, F3) –выводится на печать 3 фрейма

Язык FRL поддерживает сеть фреймов. Сеть поддерживается с помощью ссылок, вводится слот AKO (A Kind Of). Ссылка идет снизу вверх по иерархии.

Вышестоящие слоты могут быть организованы, как:

  • Агрегация (композиция)

Композиция – это агрегация, у которой нижний уровень не имеет значения и не может храниться самостоятельно.

  • Обобщение.

Связи используются типа ассоциации (экземпляр-экземпляр).

Пример:

Для создания этой конструкции в операторе FASSERT изменяется создание фрейма:

FASSERT (ПЕТРОВ

(ИМЯ) (@ VALUE (АЛЕКСЕЙ)))

(АДРЕС (@ VALUE (комната 72 (FINHERIT: CONTINUE))))

(AKO (@ VALUE (ГР 2) (АДР 2)))

  • FGET (ПЕТРОВ АДРЕС @ VALUE )к. 71 моск шоссе 34 самара

Поиск по образцу в языке FRL:

FQUERY(F,S,A,P) – поиск по образцу.

F – имя фрейма

S – имя слота

A – аспект

P – предикат (условие запроса)

Поиск по образцу с использованием предикатов. Использует функцию FQUERY

Три варианта использования FQUERY:

  1. FQUERY(NIL S A P )

Nil-то что мы ищем. В ответ выдается список фреймов, содержащих в аспекте-А, слота – S хотя бы одно данное удовлетворяющее предикату P/

  1. FQUERY(F NIL A P )

Выдает список имен слотов фрейма F, содержащих в аспекте хотя бы одно данное, удовлетворяющее предикату – P.

  1. FQUERY(F S A P )

  • true

  • false

ответ true если в А содержит S, содержит в A хотя бы одно данное удовлетворяющее P

Функции:

AKO?(F) - цепочка фреймов вверх, начиная с F

INSTANCE?(F) – цыпочка фреймов вниз, начиная с F

Ответ булевского типа и функция выдает True, если во фрейме F есть слот S с аспектом А и предикатом P. (количество не важно).

FQUERY(NILL,S,A,P) – выдается список фреймов у которых в слоте S в аспекте А значение удовлетворяет предикату Р.

FMATCH (F1,F2,S1,S2,…Sm)

Функция проверки если данные в указанных слотах F1 и F2 совпадают, то true, иначе false.

TRUE ?(F S)

Проверка слота на пустоту, если true то слот не пустой, иначе false.

Пример: Пусть БД ЭС содержит следующие факты:

  1. модули связи с объектом могут быть выполнены в стандарте IEEE

  2. все АЦП являются модулями связи с объектами и преобразуют напряжение в код

  3. ЦФК 710 – АЦП с диапазоном преобразования -1В … +1В.

Создадим сеть фреймов.

FASSERT ( Модули_связи_с_объектом

( Выполнение ( ¤ VALUE ( Стандарт_IEEE ))))

FASSERT ( АЦП

( Преобразование (¤ VALUE ( Напряжение_в_код )))

( АКО ( ¤ VALUE ( Модули_связи_с_объектом))))

FASSERT ( ЦФК_710

( Диапазон_преобразования ( ¤ VALUE ( -1В … +1В)))

( АКО ( ¤ VALUE (АЦП))))

Запросы:

  1. Диапазон преобразования ЦФК -1В … +1В?

FQUERY ( ЦФК_710 Диапазон_преобразования ¤ VALUE -1В … +1В)

  • T

  1. Что преобразует напряжение в код?

FQUERY ( NIL Преобразование ¤ VALUE Напряжение_в_код)

  • АЦП

  1. Какой из модулей связи с объектами преобразует напряжение в код в диапазоне -1В … +1В?

FQUERY ( NIL AKO ¤ VALUE

(INSTANCE? (Модули_связи_с_объектом))

AND (( :SLOT = ‘Преобразование’ )

AND ( :VALUE = ‘Напряжение_в_код’))

AND (( :SLOT = ‘Диапазон_преобразования’ )

AND ( :VALUE = ‘-1В … +1В))