Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Определение 2.2.1. Синтаксис конструктора deftemplate
(deftemplate <имя-шаблона>[<необязательные-комментарии>] [<определение-слота>*]) <определение-слота> ::= <определение-простого-слота>|<определение-составного-слота> <определение-простого-слота>::= (slot <имя-поля> <атрибуты-шаблона>) <определение-составного-слота>::= (multislot <имя-поля> <атрибуты-шаблона>) <атрибуты-шаблона> ::= <атрибут-значение-по-умолчанию>|<атрибут-ограничения> <атрибут-значение-по-умолчанию>::= (default?DERIVE I?NONE |<Выражение>)| (default-dynamic <Выражение>) Имена шаблонов и слотов должны быть значениями типа symbol, кроме того, на имена шаблонов распространяется запрет на использование некоторых слов. Комментарии являются необязательными и, как правило, описывают назначения шаблона. Комментарии необходимо заключать в кавычки. Кроме данного типа комментариев в конструкторе deftempiate также применимы обычные комментарии CLIPS, начинающиеся с символа;. Отличие этих комментариев заключается в том, что комментарии, начинающиеся с символа;, полностью игнорируются системой CLIPS, а комментарии, следующие после имени шаблона и заключенные в кавычки, сохраняются в базе знаний системы. Эти комментарии доступны при просматривании определения шаблона. Определим в среде CLIPS следующий шаблон: Пример 2.2.2. Применение конструктора deftemplate (deftemplate MyObject "Template for storage name and location" ; Slots for storage name and location (slot name);slot for name of object (slot location); slot for location of object Комментарии " Template for storage name and location " сохранены в памяти системы и отображаются вместе с определением шаблона.
Рис. 2.2.2. Использование комментариев в конструкторе deftemplate Помимо ключевого слова slot, определяющего простой слот, допустимо также применение ключевого слова multisiot, для определения составного слота. Простой слот, или слот, предназначен для хранения единицы информации одного из примитивных типов данных CLIPS. Составной слот способен хранить список подобных единиц информации неограниченного объема. Для доступа к конкретным данным, хранящимся в составном слоте, используются специальные групповые символы и функции, примеры и правила использования которых будут приведены ниже. При создании шаблона с помощью конструктора deftemplate каждому полю можно назначать определенные атрибуты, задающие значения по умолчанию или ограничения на значение слота. Рассмотрим эти атрибуты подробней.
<Атрибут-значение-по-умолчанию> определяет значение, которое будет использовано в случае, если при создании факта не задано конкретное значение слота. В CLIPS существует два способа определения значения по умолчанию, поэтому в конструкторе deftemplate предусмотрено два различных атрибута, задающих значения по умолчанию: default и default-dynamic. Атрибут default определяет статическое значение по умолчанию. С его помощью задается выражение, которое вычисляется один раз при конструировании шаблона. Результат вычислений сохраняется вместе с шаблоном. Этот результат присваивается соответствующему слоту в момент объявления нового факта. В случае если в качестве значения по умолчанию используется ключевое слово?derive, то это значение будет извлекаться из ограничений, заданных для данного слота. По умолчанию для всех слотов установлен атрибут default?DERIVE. В случае если в место выражения для значения по умолчанию используется ключевое слово?none, то значение поля обязательно должно быть явно задано в момент выполнения операции добавления факта. Добавление факта без определения значений полей с атрибутом default?none вызовет ошибку. Атрибут default-dynamic предназначен для установки динамического значения по умолчанию. Этот атрибут определяет выражение, которое вычисляется всякий раз при добавлении факта по данному шаблону. Результат вычислений присваивается соответствующему слоту. Простой слот может иметь только одно значение по умолчанию. У составного слота может быть определено любое количество значений по умолчанию (количество значений по умолчанию должно соответствовать количеству данных, сохраняемых в составном слоте). Ниже приведен пример использования атрибута, устанавливающего значение по умолчанию: Пример 2.2.3. Использование атрибутов значения по умолчанию (deftemplate foo (slot w (default?NONE)) (slot x (default?DERIVE)) (slot у (default (gensym*))) (slot z (default-dynamic (gensym*)))) Статическая проверка выполняется во время использования определения шаблона некоторой командой или конструктором. Например, для записи значений в слоты шаблона. Иначе говоря, статическая проверка выполняется до запуска программы. При несоответствии используемых значений с установленными ограничениями пользователю выводится соответствующее предупреждение об ошибке.
Ссылка на индекс факта в командах на изменение значения факта или его дублирование не связывает факт с соответствующим шаблоном явно. Это делает статическую проверку неоднозначной. Поэтому в командах, использующих индекс факта, статическая проверка не выполняется. Помимо статической, CLIPS также поддерживает динамическую проверку ограничений. Если режим динамической проверки ограничений включен, го все новые факты, созданные с использованием некоторого шаблона и имеющие определенные значения, проверяются в момент их добавления в список фактов. Конструктор deffacts Помимо конструктора deftemplates, CLIPS предоставляет конструктор deffacts, также предназначенный для работы с фактами. Данный конструктор позволяет определять список фактов, которые будут автоматически добавляться всякий раз после выполнения команды reset, очищающей текущий список фактов. Факты, добавленные с помощью конструктора deffacts, могут использоваться и удаляться так же, как и любые другие факты, добавленные в базу знаний пользователем или программой, с помощью команды assert.
|
||||||
Последнее изменение этой страницы: 2021-03-10; просмотров: 38; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.16.147.124 (0.005 с.) |