Групповые символы для простых и составных полей

В 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 автоматически поставит в соответст­вие каждому простому слоту групповой символ для простого поля, а состав­ному слоту — символ для составного. Таким образом, правило преобразует­ся в следующее:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: