Пример 5.3. Применение конструктора deftemplate
(deftemplate MyObject (slot name) (slot location) (slot weight) (multislot contents)) Как и все конструкторы CLIPS, конструктор deftemplate не возвращает никакого значения. При вводе данной команды в CLIPS вы должны увидеть результат, приведенный на рис. 5.1.
Рис. 5.1. Использование конструктораdeftemplate Подобная реакция среды говорит об удачном добавлении определения шаблона в систему. Для просмотра всех определенных в текущей базе знаний шаблонов можно воспользоваться командой get-deftemplate-list, речь о которой пойдет ниже, или специальным инструментом Deftemplate Manager (Менеджер шаблонов), доступным в Windows-версии среды CLIPS. Для запуска менеджера шаблонов воспользуйтесь меню Browse и выберите пункт Deftemplate Manager (рис. 5.2). Менеджер шаблонов позволяет в отдельном окне просматривать список всех шаблонов, доступных в текущей базе знаний, удалять выбранный шаблон и отображать все его свойства (например, такие как имена и типы слотов). Внешний вид менеджера шаблонов представлен на рис. 5.3. После выполненной нами операции в текущей базе знаний находится два шаблона, о чем сообщается в заголовке окна менеджера (Deftemplate Manager — 2 Items). Первый шаблон является предопределенным шаблоном initial-fact. Он не имеет слотов и всегда добавляется при запуске среды. Его нельзя удалить с помощью менеджера, или просмотреть его определение. Назначение и примеры использования факта initial-fact будут рассмотрены ниже. Вторым шаблоном является только что добавленный шаблон MyObject. Менеджер шаблонов позволяет вывести в главное окно среды его определение с помощью кнопки Pprint или удалить его из среды посредством кнопки Remove. На рис. 5.4 приведен результат последовательных операций вывода информации об определении шаблона и удалении его из текущей базы знаний.
Рис. 5.2. Запуск менеджера шаблонов Рис. 5.З. Окно менеджера шаблонов Рис. 5.4. Получение информации и удаление шаблона Флажок Watch позволяет включать/выключать режим отображения сообщений об использовании шаблонов для каждого присутствующего в системе шаблона в главном окне среды CLIPS. Если этот режим включен, пользователь будет получать сообщения при добавлении и удалении неупорядоченных фактов, использующих данный шаблон. В случае, если при добавлении нового шаблона с помощью конструктора deftemplate произошла ошибка, пользователь получит соответствующее предупреждение. Полный список сообщений об ошибках в системе CLIPS приведен в приложениях 2 и 3. Переопределение уже существующего шаблона приводит к исключению предыдущего определения. Шаблон не может быть переопределен до тех пор, пока он используется (например, фактом или правилом). Шаблон может иметь любое количество простых или составных слотов. CLIPS отличает простые и составные слоты в шаблоне. Например, будет ошибкой сохранять значение составного слота в простой слот. Рассмотрим полный синтаксис конструктора deftemplate:
|