7.1.2. Декларативное представление данных и знаний
Декларативная часть PILOT-программы состоит из элементов, специфицирующих типы данных, прототипы функций и/или процедур, переменные, а также необходимые базы знаний.
Спецификация типов — мощное средство конструирования новых типов данных, которые поддерживаются системой автоматически на основании базовых типов. В ЯПЗ PILOT/2 фиксированы следующие базовые типы: int, float, char, string, имя -фрейма, prototype, frame, func, рте. Без учета спецификации ограничения это дает почти те же возможности, что и спецификация typedef в языках С и C++. Однако в ЯПЗ PILOT/2 существуют и множественные типы, симметричные по отношению к базовым, а также усечение вновь вводимых типов с помощью ограничений. Последние задают в базисе И-ИЛИ-НЕ ограничения, которым должны удовлетворять значения соответствующего типа. Так, например, спецификация
Child is_a Age restr_by (>0 && <12);
вводит подтип типа Age, значения которого должны быть положительными целыми в интервале [0, 12].
Спецификации
Persons is_a {frame};
Friends is_a Persons restr_by (>={Петр, Иван} );
определяют, что элементами типа Friends являются элементы типа Persons, включающие в себя, по крайней мере, два указанных явно элемента.
Обработка сложно структурированных данных во внешней памяти является отличительным свойством всех ЯПЗ. Но помимо этого нужны и «обычные» переменные. Вот почему в ЯПЗ PILOT/2 введены регистры и стеки. Семантика регистров такая же, как у простых переменных традиционных языков программирования. Иначе обстоит дело со стеками. Для явной спецификации поведения стеков в ЯПЗ PILOT/2 введены префиксы и постфиксы, которые являются одноместными операторами, аналогичными по синтаксису унарным операторам (++) и (--) современных языков программирования. Семантика их зафиксирована в табл. 7.1. Одна и та же переменная, в зависимости от наличия или отсутствия префикса (постфикса), трактуется либо как регистр, либо как стек. Для выделения имен переменных в текстах PILOT-программ им предшествует символ «$».
Таблица 7.1.
Семантика переменных в языке PILOT/2
Стековые переменные | ||||
GET-переменные | PUT-переменные | |||
Слева Справа | Взять с сохранением < > | Взять без сохранения << >> | Добавить новое значение >> << | Заменить верхушку на новое значение > < |
Ядром декларативного представления данных и знаний в ЯПЗ PILOT/2 является спецификация баз — временных и постоянных. Все базы в ЯПЗ PILOT/2 фреймовые и поддерживаются на этапе выполнения продукционных программ специализированным пакетом FRAME/2 [Sherstnew et al, 1994].
Спецификация временной базы предполагает, что определенные здесь фреймы имеют «время жизни», совпадающее с периодом выполнения PILOT-програм-мы, а ее имя — встроено в систему и не может быть изменено. Типичный пример определения временной базы — следующий:
base = { спецификация-фрейма, ..., спецификация-фрейма };
Иначе обстоит дело с постоянными базами. Их «время жизни» никак не связано с конкретной PILOT-программой, а имена выбирает сам пользователь. Такие базы могут создаваться и/или использоваться в данной PILOT-программе. Примерами определения постоянных баз могут быть следующие спецификации:
base system = { фрейм-1..... фрейм-N };
extern base person = { фрейм-1, фрейм-2, фрейм-3 };
base new;
base ( a1, a2, ... aN ) = { фрейм-1, фрейм-2..... фрейм-L };
И в случае временных, и в случае постоянных баз основным элементом определения является спецификация фрейма:
спецификация-фрейма ::= || спецификация-прототипа ||
|[спецификация-экземпляра ||
спецификация-прототипа ::= [ имя-фреймаis_a prototype
{{; спецификация-демона }} {{; декларация-слота }}]
спецификация-экземпляра ::= [
|| имя-фрейма || is_a имя-фрейма
|| ( имя-фрейма {{ , имя-фрейма }} ) ||
{{;спецификация-демона}} {{;спецификация-слота }}]
спецификация-слота : : =
|| || имя-слота || = значение | |
|| || ( имя-слота {{, имя-слота }} ) || | |
|| without имя-слота {{, имя-слота }} ||
|| декларация-слота ||
декларация-слота ::= || имя-слота || тип
|| ( имя-слота {{ , имя-слота }} ) ||
{{ ; дополнительная-спецификация }}
дополнительная-спецификация ::= || спецификация-демона ||
|| спецификация-умолчания ||
| | спецификация-ограничения ||
спецификация-демона ::= | | if_added || имя-демона ( )
|| if_deleted ||
|| if_changed ||
спецификация-умолчания ::= by_default значение
спецификация-ограничения ::= restr_by спецификатор
Из этих определений следует, что ЯПЗ PILOT/2 является сильно типизированным языком и, следовательно, обеспечивает строгую проверку правильности использования типов на этапе трансляции. Такой подход повышает надежность проектирования продукционных программ и увеличивает их эффективность.
Теперь рассмотрим примеры спецификации фреймов. Первый из них — спецификация прототипа вида:
[Person is_a prototype;
Name string, if_changed ask_why () ;
Age int, restr_by >= 0 ;
Sex , string, restr_by (==«male» || ==«female»),
by_default «male» ;
Children {frame}];
Из этого описания следует, что у фрейма Person, заданного как корневой прототип, имеются четыре слота с именами Name, Age, Sex и Children. Каждый слот может иметь значение определенного типа. Значениями слотов Name и Sex могут быть строки, слота Age — число, а слота Children — множество ссылок на другие фреймы. Кроме обязательной спецификации типа слот может иметь дополнительную спецификацию. Так, чтобы показать, что значение слота Age должно быть не меньше 0, а слот Sex может принимать только два значения, «male» или «female», использована дополнительная спецификация restr_by. Конструкция, следующая за этим ключевым словом, называется спецификатором и представляет собой логическое выражение особого вида. Другая дополнительная спецификация, by_default, определяет значение слота по умолчанию. Например, если в экземпляре фрейма Person не будет указано конкретное значение слота Sex, оно будет равно «male».
Кроме этих дополнительных спецификаций имеются в ЯПЗ PILOT/2 и спецификации демонов. Они определяют присоединенные процедуры, которые «запускаются» при добавлении (if_added), удалении (if_deleted) или изменении значений (if_changed).
Любой фрейм может стать прототипом для других фреймов:
[ John is_a Person; if_deleted bury();
Name = «Johnson» ;
Age = 32 ;
Children = {Ann, Tom} ];
[ Mary is_a Person;
without Age ;
Name = «Smirnova» ;
Sex = «female» ;
Children = empty];
Приведенные выше фреймы John и Mary — экземпляры фрейма Person. Их слоты получают конкретные значения. Фрейм-экземпляр можетле иметь некоторых слотов своего прототипа (имена таких слотов перечисляются после ключевого слова without) и может иметь дополнительные слоты, специфицируемые так же, как и в прототипе.
- Т. А. Гаврилова в. Ф. Хорошевский
- Санкт-Петербург
- Предисловие
- Об авторах
- 1.1.2. Зарождение нейрокибернетики
- 1.1.3. От кибернетики «черного ящика» к ии
- 1.1.4. История искусственного интеллекта в России
- 1.2. Основные направления исследований в области искусственного интеллекта
- 1.2.1. Представление знаний и разработка систем, основанных на знаниях (knowledge-based
- 1.2.2. Программное обеспечение систем
- 1.2.3. Разработка естественно-языковых интерфейсов и машинный перевод (natural
- 1.2.4. Интеллектуальные роботы (robotics)
- 1.2.5. Обучение и самообучение (machine
- 1.2.6. Распознавание образов (pattern
- 1.2.7. Новые архитектуры компьютеров (new
- 1.2.8. Игры и машинное творчество
- 1.2.9. Другие направления
- 1.3. Представление знаний и вывод на знаниях
- 1.3.1. Данные и знания
- 1.3.2. Модели представления знаний
- Структура фрейма
- 1.3.3. Вывод на знаниях
- 1.4. Нечеткие знания
- 1.4.1. Основы теории нечетких множеств
- 1.4.2. Операции с нечеткими знаниями
- 1.5. Прикладные интеллектуальные системы
- 2.2. Классификация систем, основанных на знаниях
- 2.2.1. Классификация по решаемой задаче
- 2.2.2. Классификация по связи с реальным временем
- 2.2.3. Классификация по типу эвм
- 2.2.4. Классификация по степени интеграции с другими программами
- 2.3. Коллектив разработчиков
- 2.4. Технология проектирования и разработки
- 2.4.1. Проблемы разработки промышленных эс
- 2.4.2. Выбор подходящей проблемы
- 2.4.3. Технология быстрого прототипирования
- 2.4.4. Развитие прототипа до промышленной эс
- 2.4.5. Оценка системы
- 2.4.6. Стыковка системы
- 2.4.7. Поддержка системы
- Теоретические аспекты инженерии знаний
- 3.1. Поле знаний
- 3.1.1. О языке описания поля знаний
- 3.1.2. Семиотическая модель поля знаний
- 3.1.3. «Пирамида» знаний
- 3.2. Стратегии получения знаний
- 3.3. Теоретические аспекты извлечения знаний
- 3.3.1. Психологический аспект
- 3.3.2. Лингвистический аспект
- 3.3.3. Гносеологический аспект извлечения знаний
- 3.4. Теоретические аспекты структурирования знаний
- 3.4.1. Историческая справка
- 3.4.2. Иерархический подход
- 3.4.3. Традиционные методологии структурирования
- 3.4.4. Объектно-структурный подход (осп)
- Технологии инженерии знаний
- 4.1. Классификация методов практического извлечения знаний
- 4.2. Коммуникативные методы
- 4.2.1. Пассивные методы
- Сравнительные характеристики пассивных методов извлечения знаний
- 4.2.2. Активные индивидуальные методы
- Сравнительные характеристики активных индивидуальных методов извлечения
- 4.2.3. Активные групповые методы
- 4.3. Текстологические методы
- 4.4. Простейшие методы структурирования
- 4.4.1. Алгоритм для «чайников»
- 4.4.2. Специальные методы структурирования
- 4.5. Состояние и перспективы автоматизированного приобретения знаний
- 4.5.1. Эволюция систем приобретения знаний
- 4.5.2. Современное состояние автоматизированных систем приобретения знаний
- 4.6.2. Имитация консультаций
- 4.6.3. Интегрированные среды приобретения знаний
- 4.6.4. Приобретение знаний из текстов
- 4.6.5. Инструментарий прямого приобретения
- Формы сообщений
- 5.1.1. Семантические пространства и психологическое шкалирование
- 5.1.2. Методы многомерного шкалирования
- 5.1.3. Использование метафор для выявления «скрытых» структур знаний
- 5.2. Метод репертуарных решеток
- 5.2.1. Основные понятия
- 5.2.2. Методы выявления конструктов
- 5.2.3. Анализ репертуарных решеток
- 5.2.4. Автоматизированные методы
- 5.3. Управление знаниями
- 5.3.1. Что такое «управление знаниями»
- 5.3.2. Управление знаниям и корпоративная память
- 5.3.3. Системы omis
- 5.3.4. Особенности разработки omis
- 5.4. Визуальное проектирование баз знаний как инструмент познания
- 5.4.1. От понятийных карт к семантическим сетям
- 5.4.2. База знаний как познавательный инструмент
- 5.5. Проектирование гипермедиа бд и адаптивных обучающих систем
- 5.5.1. Гипертекстовые системы
- 5.5.2. От мультимедиа к гипермедиа
- 5.5.3. На пути к адаптивным обучающим системам
- 6.1.3. Инструментальные средства поддержки разработки систем по
- 6.2. Методологии создания и модели жизненного цикла интеллектуальных систем
- 6.3. Языки программирования для ии и языки представления знаний
- 6.4. Инструментальные пакеты для ии
- 6.5. WorkBench-системы
- Пример разработки системы, основанной на знаниях
- 7.1. Продукционно-фреймовый япз pilot/2
- 7.1.1. Структура пилот-программ и управление выводом
- 7.1.2. Декларативное представление данных и знаний
- 7.1.3. Процедурные средства языка
- 7.2. Психодиагностика — пример предметной области для построения экспертных систем
- 7.2.1. Особенности предметной области
- 7.2.2. Батарея психодиагностических эс «Ориентир»
- 7.3. Разработка и реализация психодиагностической эс «Cattell»
- 7.3.1. Архитектура системы и ее база знаний
- 7.3.2. Общение с пользователем и опрос испытуемых
- 7.3.3. Вывод портретов и генерация их текстовых представлений
- 7.3.4. Помощь и объяснения в эс «Cattell»
- 8.1.2. Html — язык гипертекстовой разметки Интернет-документов
- 8.1.3. Возможности представления знаний на базе языка html
- 8.2. Онтологии и онтологические системы
- 8.2.1. Основные определения
- 8.2.2. Модели онтологии и онтологической системы
- 8.2.3. Методологии создания и «жизненный цикл» онтологии
- Фрагмент описания аксиомы
- 8.2.4. Примеры онтологии
- 8.3. Системы и средства представления онтологических знаний
- 8.8.1. Основные подходы
- 8.3.2. Инициатива (ка)2 и инструментарий Ontobroker
- 8.3.3. Проект shoe — спецификация онтологии и инструментарий
- 8.3.4. Другие подходы и тенденции
- 9.1.2. Основные понятия
- 9.2.2. Инструментарий AgentBuilder
- 9.2.3. Система Bee-gent
- 9.3. Информационный поиск в среде Интернет
- 9.3.1. Машины поиска
- 9.3.2. Неспециализированные и специализированные поисковые агенты
- 9.3.3. Системы интеллектуальных поисковых агентов
- Заключение
- Литература
- Содержание
- Базы знаний интеллектуальных систем
- 196105, Санкт-Петербург, ул. Благодатная, 67.
- 197110, Санкт-Петербург, Чкаловский пр., 15.