(deftemplate object
(slot name
(type SYMBOL)
(default?DERIVE))
(slot location
(type SYMBOL)
(default?DERIVE)))
Для полноты картины следует также упомянуть о неявно создаваемых шаблонах. При использовании факта или ссылки на упорядоченный факт (например, в правиле) CLIPS неявно создает соответствующий шаблон с одним составным слотом. Имя неявно созданного составного слота не отображается при просмотре фактов. Неявно созданным шаблоном можно манипулировать и сравнивать его с любым тождественным, определенным пользователем шаблоном, несмотря на то, что он не имеет отображаемой формы.
5.2.2. Конструктор deffacts
Помимо конструктора deftemplates, CLIPS предоставляет конструктор deffacts, также предназначенный для работы с фактами. Данный конструктор позволяет определять список фактов, которые будут автоматически добавляться всякий раз после выполнения команды reset, очищающей текущий список фактов. Факты, добавленные с помощью конструктора deffacts, могут использоваться и удаляться так же, как и любые другие факты, добавленные в базу знаний пользователем или программой, с помощью команды assert.
|
|
Определение 5.3. Синтаксис конструктора deffacts
(deffacts <имя-списка-фактов> [<необязательные-комментарии>] [<факт>*])
Добавление конструктора deffacts с именем уже существующего конструктора приведет к удалению предыдущего конструктора, даже если новый конструктор содержит ошибки. В среде CLIPS возможно наличие нескольких конструкций deffacts одновременно и любое число фактов в них (как упорядоченных, так и неупорядоченных). Факты всех созданных пользователем конструкторов deffacts будут добавлены при инициализации системы.
Все замечания по поводу использования комментариев в конструкторе deftemplate применимы и к конструктору deffacts.
В поля факта могут быть включены динамические выражения, значения которых будут вычисляться при добавлении этих фактов в текущую базу знаний CLIPS.