Реферат: Исполняемые утверждения БЗ
Основу исполняемых утверждений БЗ составляют правила и процедуры. Кроме того, есть формулы, функции, действия и т.п. Правила в G2 имеют традиционный вид: условие (антецедент) и заключение (консеквент). Кроме if-правила: условие («if <логическое выражение>») и заключение («then <действия>») используются еще 4 типа правил: initially, unconditionally, when и whenever.
Способы применения каждого правила определяются его синтаксисом:
<правило> ::= {\<префикс for>\
{<правило if> | <правило unconditional1у>
\ <правило when> | <правило whenever>]
\ <правило initially>]
<префикс fоr> ::= for {any | the }<item> ...
<правило if> ::= if <логическое выражение> then<список действий> <правило unconditionally> ::=unconditionally<список действий>
<правило when> ::= when <логическое выражение>
then <список действий>
<правило whenever> ::= whenever <описание события>
|ог<описание события>\
|and when<логическое выражение>\
<правило initially> ::= initially
|if<логическое выражение> then <список действий>
Каждый из типов правил может быть как общим, т.е. относящимся ко всему классу, так и специализированным, относящимся к конкретным экземплярам класса. Возможность представлять знания в виде общих, а не только конкретных правил, обеспечивает следующие преимущества:
— минимизируется избыточность БЗ;
— упрощается наполнение БЗ и ее сопровождение;
— минимизируются ошибки при отладке БЗ;
— способствует повторной используемости знаний (так как общие правила запоминаются в библиотеке G2 и могут использоваться в подобных приложениях).
Несмотря на то, что продукционные правила обеспечивают достаточную гибкость для описания реакций системы на изменения окружающего мира, в некоторых случаях, когда необходимо выполнить жесткую последовательность действий (например, запуск или остановку комплекса оборудования), более предпочтительным является процедурный подход. Язык программирования, используемый в G2 для представления процедурных знаний, является достаточно близким родственником Паскаля. Кроме стандартных управляющих конструкций язык расширен элементами, учитывающими работу процедуры в реальном времени: ожидание наступления событий, разрешение другим задачам прерывать выполнение данной процедуры, директивы, задающие последовательное или параллельное выполнение операторов. Еще одна интересная особенность языка- итераторы, позволяющие организовать цикл над множеством экземпляров класса. Перечисленные свойства языка позволяют системе одновременно выполнять множество различных процедур или множество копий одной и той же процедуры для множества различных объектов.