(данное_типа_symЬо1 [поле]*)
Первое поле факта определяет так называемое отношение, или связь факта (relation). Термин "связь" означает, что данный факт принадлежит некоторому определенному конструктором или неявно объявленному шаблону. Подробней речь об этом пойдет ниже. Приведем несколько примеров фактов:
Пример 5.1 Упорядоченные факты
(duck is bird)
(schoolboys is Bob Mike)
(Nuke did report)
(altitude is 1000 feet)
Количество полей в факте не ограничено. Поля в факте могут хранить данные любого примитивного типа CLIPS, за исключением первого поля, которое обязательно должно быть типа symbol. Следующие слова зарезервированы и не могут быть использованы в качестве первого поля: test, and, or, not, declare, logical, object, exist и forall. Эти слова могут использоваться в качестве имен слотов шаблонов, хотя это не рекомендуется.
Так как упорядоченный факт для представления информации использует строго заданные позиции данных, то для доступа к ней пользователь должен знать не только какие данные сохранены в факте, но и какое поле содержит эти данные. Неупорядоченные факты (или шаблоны) предоставляют пользователю возможность задавать абстрактную структуру факта путем назначения имени каждому полю. Для создания шаблонов, которые впоследствии будут применяться для доступа к полям факта по имени, используется конструктор deftemplate. Конструктор deftemplate аналогичен определениям записей или структур в таких языках программирования, как Pascal или С.
|
|
Конструктор deftemplate задает имя шаблона и определяет последовательность из нуля или более полей неупорядоченного факта, называемых также слотами. Слот состоит из имени, заданного значением типа symbol, и следующим за ним, возможно пустого, списка полей. Как и факт, слот с обеих сторон ограничивается круглыми скобками. В отличие от упорядоченных фактов слот неупорядоченного факта может жестко определять тип своих значений. Кроме того, слоту могут быть заданы значения по умолчанию.