Пример 6.11. Преобразованное правило match-all-persons

(defrule match-all-persons

(person

(name?)

(age?)

(friends $?))

=>)

Это правило будут активировать все факты шаблона person.

Групповые символы для составного поля можно комбинировать с символь­ными ограничениями, что приводит к получению более мощных возможно­стей сопоставления образцов. Образец, который сопоставляется со всеми фактами, имеющими значение yellow в любом поле (включая первый), мо­жет быть записан так:

Пример 6.12. Образец со значением yellow в любом поле

(data $? YELLOW $?)

Вот несколько фактов, соответствующих этому образцу:

Пример 6.13. Факты со значением yellow в любом поле

(data YELLOW blue red green)

(data YELLOW red)

(data red YELLOW)

(data YELLOW)

(data YELLOW data YELLOW)

Последний факт будет соответствовать образцу дважды, т. к. yellow присут­ствует в нем дважды. Использование группового символа для составного поля позволяет создавать гораздо более общие образцы, чем те, которые можно сформировать с помощью групповых символов для простого поля. Однако подобная общность приводит к тому, что процесс сопоставления образцов, использующих групповые символы, иногда занимает гораздо больше времени, чем аналогичный процесс с образцами, использующими только групповые символы для простых полей.

Переменные, связанные с простыми и составными полями

Групповые символы заменяют любые поля образца и могут принимать ка­кие угодно значения этих полей. Значение поля может быть связано с пере­менными для последующего сопоставления, отображения и других дейст­вий. Это выполняется с помощью применения имени переменной следую­щим непосредственно после группового символа.

Таким образом, синтаксис ограничения, применяемого в образце, примет следующий вид:


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



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