Групповые символы для простых и составных полей
В CLIPS имеется два различных групповых символа, которые используются для сопоставления полей в образцах. CLIPS интерпретирует эти групповые символы как место для подстановки некоторых частей данных, удовлетворяющих образцам. Групповой символ для простого поля записывается с помощью знака ?, который соответствует одному любому значению, сохраненному в заданном поле. Групповой символ составного поля записывается с помощью знака $? и соответствует, возможно, пустой последовательности полей, сохраненной в составном поле. Групповые символы для простых и составных полей могут комбинироваться в любой последовательности. Нельзя использовать групповой символ составного поля для простых полей. По умолчанию не заданный в образце простой слот шаблона или объекта сопоставляется с неявно заданным групповым символом для простого поля. Аналогично не заданный в образце составной слот сопоставляется с неявно заданным групповым символом для составного поля.
Условный элемент, представляющий собой образец для неупорядоченного факта, в котором присутствуют только символьные ограничения и групповые символы, будет иметь следующий вид:
Определение 6.6. Синтаксис ограничений для неупорядоченного факта
(<ограничение-1> ... <ограничение-n>)
<ограничение> ::= <символьное-ограничение >│?│$?
Соответственно для шаблона образец примет вид:
Определение 6.7. Синтаксис ограничений для шаблона
(<имя-шаблона > (<имя-слота-1> <ограничение-1>)
…
(<имя-слота-n> <ограничение-n>))
В качестве примера можно привести следующее правило:
Пример 6.8. Правило Find-data
(defrule Find-data
(data ? blue red $?) =>)
В нашем списке фактов присутствуют два факта, подходящие заданному шаблону и способные активировать данное правило:
Пример 6.9. Факты, активирующие правило Find-data
(data 1 blue red)
(data 1 blue red 6.9))
Рассмотрим еще одно правило:
Пример 6.10. Правило match-all-persons
(defrule match-all-persons
(person)
=>)
Поскольку person является шаблоном, а в образце данного правила не определен ни один слот шаблона, CLIPS автоматически поставит в соответствие каждому простому слоту групповой символ для простого поля, а составному слоту — символ для составного. Таким образом, правило преобразуется в следующее: