Иллюстрированный самоучитель по введению в экспертные системы

Онтологический анализ и представление знаний

Утверждение, смысл которого, например, состоит в следующем:

;Т А… означает, что А правдолюбец;
;F А… означает, что А лжец.;
;Утверждение может иметь под собой;
;основание (reason) – обычно это тэг;
;высказывания (объекта statement) или тэг;
;другого утверждения (объекта claim).;
;Утверждение также характеризуется признаком scope,;
;который может принимать значение "истина" или "ложь",
(deftemplate claim
(multifield content (type SYMBOL))
(multifield reason (type INTEGER) (default 0))
(field scope (type SYMBOL)))

Например, раскрыв содержимое приведенного выше высказывания в предположении, что А говорит правду, получим следующее утверждение (объект claim):

(claim (content F A) (reason 1) (scope truth)).

Таким образом, объект claim наследует содержимое от объекта statement. Последний становится обоснованием (reason) данного утверждения. Поле scope объекта claim принимает значение предположения о правдивости или лживости этого высказывания.

Еще нам потребуется представление в программе того мира (world), в котором мы в настоящее время находимся. Объекты world порождаются в момент, когда мы формируем определенные предположения. Нужно иметь возможность различать разные множества предположений – и идентифицировать их в программе в тот момент, когда процесс размышлений приводит нас к противоречию.

Например, противоречие между высказываниями Т(А) и F(A) отсутствует, если они истинны в разных мирах, т.е. при разных предположениях. Если у вас есть на сей счет сомнения, вернитесь вновь к примерам в самом начале раздела А.4.

Миры будем представлять в программе следующим образом:

;;Объект world представляет контекст,
;;сформированный определенными предположениями
;;о правдивости или лживости персонажей.
;;Объект имеет уникальный идентификатор в поле tag,
;;а смысл допущения – истинность или лживость –
;;фиксируется в поле scope,
(deftemplate world
(field tag (type INTEGER) (default 1))
(field scope (type SYMBOL) (default truth)))

Обратите внимание на то, что при указанных в шаблоне значениях по умолчанию мы можем начинать каждый процесс вычислений с объекта world, имеющего в поле значение 1, причем этот "мир" можно заселить высказываниями персонажей, которых мы предположительно считаем правдолюбцами. Таким образом можно инициализировать базу фактов the-facts для задачи Р0 следующим образом:

;; Утверждение, что А лжец.
(deffacts the-facts
(world)
(statement (speaker A) (claim FA)))

Если этот оператор deffacts будет включен в тот же файл, что и объявления шаблонов (а также правила, о которых речь пойдет ниже), то после загрузки этого файла в среду CLIPS нам понадобится для запуска программы дать только команду reset.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.