Как можно заметить, наполнение списка фактов в CLIPS довольно кропотливое и длительное занятие. Если фактов достаточно много, этот процесс может растянуться на несколько часов, или даже дней. Так как список фактов хранится в оперативной памяти компьютера, теоретически, из-за сбоя компьютера или, например, неожиданного отключения питания, список фактов можно безвозвратно потерять. Чтобы этого не произошло, а так же для того чтобы сделать работу по наполнению базы знаний фактами более удобной, CLIPS предоставляет команды сохранения и загрузки списка фактов в файл — save-facts и load-facts соответственно.
Определение 5.14. Синтаксис команды save-facts
(save-facts <имя-файла> [<границы-видимости> <список-шаблонов >])
<границы-видимости>::= visible|local
Команда save-facts сохраняет факты из текущего списка фактов в текстовый файл. На каждый факт отводится одна строчка. Неупорядоченные факты сохраняются вместе с именами слотов. В функции существует возможность ограничить область видимости сохраняемых фактов. Для этого используется аргумент <границы-видимости>. Он может принимать значение local или visible. В случае если этот аргумент принимает значение visible, то сохраняются все факты, присутствующие в данный момент в системе. Если в качестве аргумента используется ключевое слово local, то сохраняются только факты из текущего модуля. О модулях речь пойдет в гл. 12. По умолчанию аргумент <границы-видимости> принимает значение local. После аргумента <границы-видимости> может следовать список определенных в системе шаблонов. В этом случае будут сохранены только те факты, которые связаны с указанными шаблонами.
Пример 5.21. Использование функции save-facts
(clear)
(deftemplate template
(slot a)
(slot b))
(assert (template (a 1) (b 2)))
(assert (simple-factl) (simple-fact2))
(save-facts fl local template simple-factl)
Последовательность действий, приведенная в данном примере, сохраняет в файл f1, находящийся в текущем каталоге, все факты, видимые в текущем модуле и связанные с шаблонами template и simple-factl (как вы помните, после добавления факта simple-factl CLIPS определяет неявно созданный шаблон simple-factl). В результате будет получен текстовый файл со следующим содержанием: