Internal Rule-tree Syntax

Pro/3 home page  -  documentation overview  -  What is Pro/3?

syntaxes

 

This syntax describes the sentence rule format used internally by the rule editor. Pro/3 does not display this format in any window, and the rule format displayed when using the rule editor is "higher level" than this format (it displays NL names rather than KB names, and there are also other differences. However, the sentence rule XML-format (the format used when saving sentence rules to text files (or loading from textfile), is actually logically the same as the sentence rule rule-tree syntax. See the sentenceRule-element in Pro/3's XML-schema (pro3Knowledge.xsd).

<SentenceRule> cmp("RULETYPE",[<Condition>,<Conclusion>])
RULETYPE is either if =>, GEN=>, STAT=>, IP=>, CORR=>, ACC=>, CR=>, RANK=>, UN=>, MIN=>, MAX=> or DEL=> 
<ACOP> cmp("OPR",[<Expression>])
OPR is an assignment operator or a comparison operator.
<ACOPs> cmp("&",[<ACOP>{,<ACOP>}+])
<ASOP> cmp("OPR",[<Expression>])
OPR is an assignment operator.
<Argument> <EP_Argument>
var("VAR")
VAR is simple variable (an upper-case letter optionally followed by letters, digits or underscores. Simple variable names must be constructed to avoid confusion with <DE_Variables>, also avoid names starting with P3_ .).
<CertaintyRuleCall> atom("CR")
cmp("CR",[<Parameter>{,<Parameter>}*])
CR is the name of a certainty rule prefixed with [C] .
<Conclusion> <SentenceCondition>

<Condition>

cmp("&",[<Condition>{,<Condition>}+])
cmp("v",[<Condition>{,<Condition>}+])
<SentenceCondition>
<VariableCondition>
<SentenceCountCondition> 
cmp("not",[<Condition>])
cmp("true",[<Condition>])
<D_Component> <DE_Component>
<CDE_Component>
<DE_Component> var("<DE_Variable>")
cmp("<DE_Variable>",[<ACOPs>])
cmp("<DE_Variable>",[<ACOP>])
<DE_Variable> A simple data element variable name on the format Aa..a_99dd..d where Aa..a is the argument name with first letter in upper case, 99 is the one- or two-digit argument number while dd..d is the data element name.
<EP_Argument> cmp(EP,[<D_Component>{,<D_Component>}*])
EP is the name of an entity type or predicate type with a one- or two-digit argument number suffix enclosed in square brackets (ee...ee[n] or ee...e[nn]).
<Expression> <SimpleExpression>
cmp("BINOPR",[<Expression>,<Expression])
cmp("UNOPR",[<Expression>])
UNOPR is a unary arithmetic/string operator. BINOPR is a binary arithmetic/string operator.
<FunctionCall> cmp("FUNC",[<Parameter>{,<Parameter>}*])
atom("FUNC")
FUNC is the name of a deterministic function prefixed with [F] .
<List> cmp("[]",[{<SimpleExpression>}{,<SimpleExpression>}*])
cmp("[]",[])
<ListLiteral> cmp("[]",[<SimpleLiteral>{,<SimpleLiteral}*])
cmp("[]"),[])

<Literal>

<SimpleLiteral>
<ListLiteral>
<Parameter> cmp("DE",[<ASOP>])
DE is the name of a data element (formal parameter) and OPR is a domain-qualified assignment operator.
<ProcedureCall> atom("PROC")
cmp("PROC",[<Parameter>{,<Parameter>}*])
PROC is the KB name of a procedure prefixed with [P] .
<SentenceCondition> cmp("ST",[<Argument>{,<Argument>}*])
ST is the name of a sentence type on the format P|A|B (argument sequence: A - P - B) or P|A (argument sequence A - P), where P is the name of a predicate type, while A and B either are names of entity types or simple variables. 
<SentenceCountCondition> cmp("<SimpleVariableDefinition>",[cmp("=",[<SentenceCountRightSide>])])
<SentenceCountRightSide> cmp("p3_iSSS",[<SentenceCondition>")])
<SimpleExpression> <Literal>
<List>
<Variable>
<FunctionCall>
<ProcedureCall>
<CertaintyRuleCall>
nill
<SimpleLiteral> int(INTEGER)
fix(FIXEDPOINT)
fix(INTEGER)
atom("IDENTIFIER")
str("STRING")
IDENTIFIER is a KB name.
<SimpleVariable> var("VAR")
VAR is simple variable (an upper-case letter optionally followed by letters, digits or underscores. Simple variable names must be constructed to avoid confusion with <DE_Variables>, also avoid names starting with P3_ .).
<SimpleVariableDefinition> var("VAR /DOM")
VAR is simple variable (an upper-case letter optionally followed by letters, digits or underscores. Simple variable names must be constructed to avoid confusion with <DE_Variables>, also avoid names starting with P3_ .). DOM is the short name of the variable's domain.
<Variable> <SimpleVariable>
<DE_Variable>
<VariableCondition> cmp("<SimpleVariableDefinition>",[<ACOP>])