Определение 2.2.2. Синтаксис конструктора deffacts 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Определение 2.2.2. Синтаксис конструктора deffacts



(deffacts <имя-списка-фактов> [<необязательные-комментарии>] [<факт>*])

Добавление конструктора deffacts с именем уже существующего конструк­тора приведет к удалению предыдущего конструктора, даже если новый конструктор содержит ошибки. В среде CLIPS возможно наличие несколь­ких конструкций deffacts одновременно и любое число фактов в них (как упорядоченных, так и неупорядоченных). Факты всех созданных пользова­телем конструкторов deffacts будут добавлены при инициализации системы.

Все замечания по поводу использования комментариев в конструкторе deftemplate применимы и к конструктору deffacts.

В поля факта могут быть включены динамические выражения, значения которых будут вычисляться при добавлении этих фактов в текущую базу знаний CLIPS.

Пример 2.2.4. Использование конструктора deffacts

(deffacts startup "Refrigerator Status"

(refrigerator light on)

(refrigerator door open)

(refrigerator temp (+ 5 10 15))

Третий факт содержит выражение, в данном примере сумму трех констант, но в качестве выражения, инициализирующего значение факта, могут использоваться и более сложные выражения, например, вызовы функций CLIPS или функций, определенных пользователем.]

Рис. 1.2.3. Просмотр процесса добавления файлов

 

Функция assert

Функция assert позволяет добавлять факты в список фактов текущей базы знаний. Каждым вызовом этой функции можно добавить произвольное чис­ло фактов.

Определение 2.2.3. Синтаксис команды assert

(assert             <факт>+)

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

Слотам неупорядоченного факта, значения которых не заданы, будут при­своены значения по умолчанию.

Пример 2.2.5. Использование функции assert

 (clear)

(assert (color red))

(assert (color blue)

(value (+ 3 4)))

(deftemplate status

(slot temp)

(slot pressure

(default low)))

(assert (status (temp high)))

Команда clear очищает текущий список фактов (а также все определенные конструкторы, которые уже были и еще будет рассмотрены ниже). В отличие от reset, команда clear не добавляет в список фактов initial-fact.

Рис. 2.2.4. Добавление фактов

При инициализации факта value использовалось выражение, а слот pressure неупорядоченного факта status получил значение по умолчанию low.

По умолчанию CLIPS не позволяет добавлять в список фактов два одинаковых факта. Например, попытка добавить два факта color red приведет к ошибке и функция assert вернет значение false.

Функция retract

Для удаления фактов из текущего списка фактов в системе CLIPS предусмотрена функция retract. Каждым вызовом этой функции можно удалить произвольное число фактов. Удаление неко­торого факта может стать причиной удаления других фактов, которые логически связаны с удаляемым.



Поделиться:


Последнее изменение этой страницы: 2021-03-10; просмотров: 83; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.166.7 (0.007 с.)