Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лек.9 Языки предст. знаний.doc
Скачиваний:
85
Добавлен:
19.05.2015
Размер:
94.21 Кб
Скачать

VI. Процедуры, утверждения, предикаты.

Вся Пролог- программа целиком называется базой данных. Это название говорит о том, что каждый объект Пролог - программы представляет собой объект данных. Факты, правила, заголовки правил, цели- все они, на уровне синтаксиса, являются просто структурами. Мы имеем некоторую словарную зону, позволяющую нам распознавать контекст, в котором используются эти структуры: факт есть структура для утверждения; цель есть структура для вопроса.

Каждый факт и каждое правило в программе называется утверждением. Правило- это утверждение, имеющее заголовок и тело. Факт – это утверждение, имеющее заголовок и пустое тело.

В нашей программе заголовком каждого утверждения является структура одного и того же типа: с функтором военнослужащий и размерностью 2. Совокупность утверждений, заголовки которых имеют одинаковый функтор и одну и ту же размерность, называетсяпроцедурой.Наша программа содержит одну процедуру, состоящую из девяти утверждений. Множество утверждений процедуры определяет некоторое отношение. Отношение, определяемое процедурой, называетсяпредикатом. Число аргументов предиката – это размерность заголовков соответствующих ему утверждений. По аналогии со структурой, размерностью предиката называется число его аргументов. Таким образом, наша программа является предикатомвоенный размерностью 2. Сокращенно запись фразы: “предикат играет размерностью 2” будет выглядеть следующим образомиграет/2. Пролог не строг по поводу разбивки программы на фрагменты при ее записи. Единственное требование – необходимость знаков <пробел> и <новая строка> после точки в конце каждого утверждения. Язык допускает свободное использование комментариев в Пролог – программе. Любой текст между символом /*, находящимся слева от него, и символом */, находящимся справа от него, трактуется как комментарий. Например:

/*

Это комментарий.

Он занимает несколько строк.

*/

Любой текст на какой-либо строке после символа % воспринимается тоже как комментарий. Концом такого комментария является символ перевод строки. Например:

% Процедура для предиката играет/2

играет (музыкант (‘Герман’), инструмент (‘гобой’))

Фрейм-ориентированный язык FRL.

Основная единица знаний в таких языках – фрейм, представляющий собой информационную модель ( или описание ) некоторой стереотипной ситуации. Фрейм в FRL– совокупность поименованных, ассоциативных списков, содержащих до пяти уровней структур. Подструктурами фреймов могут быть слоты, аспекты, данные комментарии и сообщения. Основной структурной единицей являются слоты, отражающие связь между понятиями предметной области. Слот характеризуется своим именем и значением. Имена слотов назначаются проектировщиком базы знаний. ОднакоFRLимеет также и зарезервированные имена слотов: АКО,INSTANSE,CLASSIFICATION. В качестве значения слотов могут выступать числа, символы, имена процедур. Фреймы вFRLстроятся с помощью процедурыFASSERT. В FRL имеется семь зарезервированных аспектов: VALUE, DELAULT, IF-NEEDET, IF-ADDED, IF-REMOVED, IF-INSTANTIAL, REQUIRE. Данные из аспектаVALUEинтерпретируются как значение слота, а из аспектаDELAULT– как значение по умолчанию. Остальные пять аспектов связывают с фреймом процедуральные знания. Процедуры из аспектаIF-ADDEDактивизируется в том случае, если в слот добавлены новые данные; процедуры из аспектаIF-REMOVED

- если из слота удаляется какое либо данное. Процедуры из аспекта IF-NEEDETзапускаются при создании экземпляра фрейма. АспектREQUIREсодержит процедуры, которые ограничивают значение слота.

Важным свойством языка является наличие в нем встроенного механизма «наследования свойств». Суть этого механизма заключается в том, что все понятия предметной области БЗ организовываются в виде иерархической классификационной системы, где каждое понятие связывается с помощью специальных отложений с более конкретными. Для реализации этих отложений существуют слоты ФКО и INSTANSE. Слот АКО связывает понятие с более общим (родовым). СлотINSTANSE. Связывает понятие с более конкретным (видом). Свойства, присущие всему классу, описывают только во фрейме класса, а остальные фреймы этого класса могут наследовать это свойство в случае надобности.

Процедуры обработки FRLподразделяются на независимые и присоединенные. Независимо от типа эти процедуры пишутся обычно на языке реализации самогоFRL. На сегодняшний день большинствоFRL-систем написаны наLISP.