Конструкторы

В CLIPS определены следующие конструкторы: defmodule, defrule, deffacts, deftemplate, defglobal, deffunction, defclass, definstances, defmessage-handler, defgeneric и defmethod. Вызовы всех конструкторов заключаются в круглые скобки. Конструкторы отличаются от встроенных функций по выполняемым ими действиям. Как правило, функции не меняют состояние базы знаний среды CLIPS (за некоторым исключением, например, функ­ций, очищающих среду или загружающих на выполнение некоторый файл). Конструкторы, наоборот, предназначены для добавления в базу знаний но­вых элементов. Кроме того, в отличие от функций, конструкторы не воз­вращают никаких значений.

Как и в любом языке программирования, в CLIPS хорошим тоном считает­ся использование комментариев. Все конструкторы (за исключением defglobal) позволяют вставлять комментарии непосредственно в код опре­деления нового элемента базы знаний. Комментарии также могут быть помещены в любое место программы с помощью символа;. Все символы, следующие за; до конца строки, игнорируются CLIPS. Комментарии, соз­данные с помощью символа;, не сохраняются в среде CLIPS, поэтому их использование разумно только в текстовых файлах. В книге вы встретите множество примеров использования комментариев.

Абстракции данных

Для представления данных CLIPS использует три основных абстракции дан­ных: факты, объекты и глобальные переменные. В данном разделе подробно описана каждая из этих форм представления информации.

Факты

Факты — одна из основных форм представления информации в CLIPS. Факты являются фундаментальным понятием теории экспертных систем и предназначены для использования в правилах системы. Каждый факт пред­ставляет фрагмент данных, помещенных в текущий список фактов системы (рабочую память).

Факт может быть добавлен в текущий список фактов системы (с помощью команды assert), удален из него (команда retract), изменен (modify) или продублирован (duplicate) пользователем, в процессе интерактивной рабо­ты в системе, либо из программы. Количество фактов, которые может содержать список фактов, а также количество информации, содержащейся в каждом факте, ограничено только свободной памятью вашего компьютера. В случае выполнения пользователем попытки добавить в систему факт, точ­но соответствующий уже существующему, данная операция будет игнориро­вана, хотя подобное поведение системы можно изменить (см. гл. 5).

Некоторые команды, такие как retract, modify или duplicate, требуют в качестве параметра некоторого уже существующего факта. Факт может быть задан с помощью значений типа fact-index или fact-address. После созда­ния (или изменения) факт получает уникальный индекс, называемый индексом факта (fact-index). Индекс фактов начинаются с 0 и увеличивается на 1 при каждом добавлении или изменении факта. При выполнении команды reset или clear текущий индекс фактов обнуляется. Для опреде­ления конкретного факта с помощью типа fact-address необходимо полу­чить соответствующее значение от функции, возвращающей значение дан­ного типа (например, assert, modify или duplicate), или некоторого правила.

Для удобства отображения фактов в CLIPS используется понятие идентифи­катора факта. Идентификатор факта состоит из символа f, следующего за ним знака - и индекса факта. Например, идентификатор f-io ссылается на факт с индексом 10.

Для хранения фактов используется один из двух следующих форматов: упо­рядоченные факты и неупорядоченные факты или шаблоны.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: