Студопедия Главная Случайная страница Задать вопрос

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

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





Для работы с неупорядоченными фактами в 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.

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

 

(fact-slot-value <определение-факта> <имя-слота >)

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

Рис. 5.16. Результат использования функции fact-slot-value

 

Выполните в среде CLIPS следующий пример:

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

 

(clear)

(deftemplate foo

(slot bar)

(multislot yak)

(assert (foo (bar 1) (yak 23)))

(fact-slot-value 0 bar)

(fact-slot-value 0 yak)

(assert (another a b с))

(fact-slot-value 1 implied)

 

Если предыдущий пример был выполнен без ошибок, то полученный ре­зультат должен соответствовать приведенному на рис. 5.16.

 






Дата добавления: 2015-08-30; просмотров: 285. Нарушение авторских прав

Studopedia.info - Студопедия - 2014-2017 год . (0.262 сек.) русская версия | украинская версия