Функции для работы с неупорядоченными фактами

Для работы с неупорядоченными фактами в CLIPS предусмотрен целый ряд специальных функций. К ним относятся: fact-relation, fact-slot-names и fact-slot-value. Рассмотрим эти функции по порядку.

Функция fact-relation позволяет получить связь (relation) существующего факта с шаблоном. Связь факта с шаблоном, определенным с помощью конструктора deftemplate или неявно созданным шаблоном, определяется по первому полю факта. Это поле всегда является простым полем и используется CLIPS в качестве имени шаблона, с которым связан факт. Таким об­разом, функция fact-relation просто возвращает первое поле факта, или значение false, если указанный факт не найден.

Определение 5.11. Синтаксис команды fact-relation

(fact-relation <определение-факта>)

В качестве определения факта, как и в описанных выше функциях, нужно использовать или переменную указатель, содержащую адрес факта, или ин­декс факта.

Пример 5.18. Использование функции fact-relation

(clear)

(assert (car Ford))

(fact-relation 0)

(retract 0)

(fact-relation 0)

В первом случае функция fact-relation вернет значение car, а во втором —FALSE.

Для получения имен всех слотов заданного факта в CLIPS предназначена функция fact-slot-names.

Определение 5.12. Синтаксис команды fact-slot-names

(fact- slot-names <определение-факта>)

Данная функция возвращает список имен слотов в составном поле. Для упорядоченных фактов функция возвращает значение implied (подразуме­ваемый), т. к., если вы помните, CLIPS представляет упорядоченные факты как неявно заданные неупорядоченные с одним составным слотом. В случае если заданный факт не найден, функция возвращает значение false.

Пример 5.19. Использование функции fact-slot-names

(clear)

(deftemplate car

(slot name)

(slot producer)

(slot type)

(slot max-speed))

(assert (car

(name scorpio)

(producer ford)

(type sedan)

(max-speed 180)))

(fact-slot-names 0)

Если приведенный пример был набран без ошибок, то функция fact-slot-names вернет значение (name producer type max-speed).

Последней из рассмотренных в данной главе функций для работы с неупо­рядоченными фактами будет функция fact-slot-value.


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



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