ді буває переважно мати частину інформації бази даних у вигляді тверджень статичної БД; ці дані заносяться в динамічну БД відразу після активізації програми. Для цієї мети використовуються предикати asserta і assertz. Загалом, предикати статичної БД мають інше ім'я та ту ж саму форму представлення даних, що і предикати динамічної. Наприклад, (symbol, symbol, symbol) (code, name, dep)
student ( 99-231 , Іванов С.С . , АТП ). ( 99-232 , Петров А.Г. , Технологічний ).
student ( 99-233 , Степанов И.А . , АТП ).
student ( 99-234 , Іванов А.В . , ПМА ).
student ( 99-235 , Демидов С.А . , АТП ).
Всі відміну предиката dstudent в порівнянні з student полягає лише в однієї зайвої букві терма. Додавання латинської літери d - звичайний спосіб розрізняти предикати динамічної та статичної баз даних. p align="justify"> А правилом для занесення в динамічну БД інформації з тверджень предиката student служить
assert_database: - student (Code, Name, Dep), (dstudent (Code, Name, Dep)), fail._database: -!.
. Предикат retract видаляє твердження з динамічної БД (ще раз нагадаємо, що динамічна БД містить факти, але не правила) Його синтаксис такий:
retract (<факт>).
Наприклад правило
del: - retract (exam (99-231, inf, 5)).
видаляє з БД факт exam (99-231, inf, 5), а правило
del_all:-retract (_, _, _), fail.
видаляє з неї всі факти.
. Предикат findall дозволяє зібрати всі наявні в базі дані в список, який може бути корисний при подальшій роботі. Синтаксис:
То, findall можна використовувати для отримання списку імен всіх студентів, які утримуються в БД. Після того, як успішним буде предикат
findall (Name, dstudent (_, Name, _), Student_list)
мінлива Student_list буде містити список імен всіх студентів, що містяться у фактах з термом dstudent.
Предикати для роботи з БД в цілому
Для запису динамічної БД у файл на диск і для завантаження вмісту файлу в динамічну БД застосовуються стандартні предикати save і consult.
Предикат save зберігає знаходиться в оперативній пам'яті базу даних у текстовому файлі. Синтаксис цього предиката
save (имя_файла [, імя_БД]),
де имя_файла тобто довільне припустиме в MS DOS або PC DOS ім'я файлу.
Приклад: для того, щоб зберегти вміст БД tabel у файлі з ім'ям exam_03.dba, потрібно предикат
save ("exam_03.dba", tabel).
В результаті всі твердження що знаходиться в оперативній пам'яті динамічної БД tabel будуть записані у файл exam_03.dba. Cодержімое БД із стандартним ім'ям dbasedom зберегти у файлі c: dir1 f1.db можна за допомогою предиката
save ("c: dir1 f1.db").
Зауважимо, що якщо файл з такою назвою вже існував на диску, то цей старий файл затертий. Тому слід використовувати предикат save з відомою часткою обережності. p align="justify"> Довільний текстовий файл, що містить факти, що збігаються з синтаксису з предикатами описаної у програмі БД, може бути лічений в пам'ять (завантажений) за допомогою предиката consult, синтаксис якого такий:
consult (<ім'я файлу> [, <імя_БД>]).
Для завантаження файлу exam_02.dba у БД tabel потрібно вираз
consult ("exam_02.dba", tabel).
А для того, щоб завантажити вміст файлу d: dir2 f2.dbf у БД зі стандартним іменем dbasedom необхідно використовувати предикат
consult ("d: dir2 f2.dbf").
Предикат...