Скачиваний:
201
Добавлен:
17.06.2016
Размер:
2.69 Mб
Скачать

Удаление нескольких фактов сразу

Предикат retractall удаляет из вашей базы данных все факты, совпада-

ющие с образцом <факт>. Этот предикат всегда завершается успешно. Из

retractall выходные значения получить нельзя. Это означает, что как и в

случае not для неограничеваемых переменных (т.е. переменных, значения ко-

торым еще не присвоены) нужно использовать символ подчеркивания.

retractall имеет следующий формат:

retractall(<факт>[, databaseName])

Также как в случае предикатов assert и retract для проверки типа

можно использовать второй аргумент. И, как в случае предиката retract,

если при вызове retractall используется символ подчеркивания, то из ука-

занной секции database можно удалить все факты.

Следующая цель удаляет все факты о мужчинах из базы данных с фактами

person:

retractall(person(, , male, )).

Следующая цель удаляет все факты из базы mydatabase.

retractall(, mydatabase).

Считывание новых фактов из файла во время выполнения программы

Предикат consult считывает из файла (fileName) факты, описанные в

секции database, и вставляет их в вашу программу в конец соответствующей

базы данных (аналогично тому, как предикат assertz включает факты.) Пре-

дикат consult имеет один или два аргумента:

consult(fileName) /* (i) */

consult(fileName, databaseName) /* (i,i) */

Однако, в отличии от assertz, если вы вызовите consult только с од-

ним аргументом (без имени базы данных), то будут считаны только факты,

которые были описаны в секции без имени (по умолчанию dbasedom).

Если вы вызовите consult с двумя аргументами (имя файла и имя базы

данных), то будут только проверены факты из указанной базы данных. Если

файл содержит что-нибудь кроме фактов указанной базы, то предикат

consult, когда он дойдет до этого, возвратит ошибку.

Обратите внимание, что предикат consult считывает по одному факту.

Если файл содержит десять фактов, а в седьмом факте имеется какая-нибудь

синтаксическая ошибка, consult занесет шесть первых фактов в базу данных

после чего выдаст сообщение об ошибке.

Отметим, что предикат consult может считывать файлы только в том

формате, который создает save (для включения фактов с максимально возмож-

ной скоростью). Файлы не должны содержать:

- прописных символов;

- пробелов за исключением тех, которые содержатся внутри

строк в двойных кавычках;

- комментариев;

- пустых строк;

- символов без двойных кавычек.

При создании или изменении файла с фактами в редакторе нужно соблю-

дать аккуратность.

Сохранение базы данных с фактами во время работы программы

-----------------------------------

Предикат save сохраняет факты из указанной базы данных в файле. Этот

предикат имеет один или два аргумента:

save(fileName) /* (i) */ save(fileName, databaseName) /* (i,i) */

При вызове предиката save только с одним аргументом (без имени базы

данных), в файле fileName будут сохранены факты из базы данных dbasedom,

используемой по умолчанию.

При вызове предиката save с двумя аргументами (имя файла и имя базы

данных), в указанном файле будут сохранены факты из database секции

databaseName.

Соседние файлы в папке Документация