[RIF][RAF] Rules meta-model and a few proposed discriminators for RAF

All,

Gary's remarks last Tuesday (about heads as applied to production rules) 
made we think that it might be the right time to come back with a 
proposal to discuss and agree on the bases for a general rule meta-model.

Based on common sense, Gerd's and REWERSE work on the subject, the PRR 
proposal, etc, a strawman general meta-model could be that a rule is 
associated to an antecedent expression, a consequent expression and, 
possibly, a set of logical variables definitions, where:
- a logical variables is an named entity that is associated with a range 
specification (not sure about the term: I mean the set of values that it 
can take);
- the antecedent expression is a boolean expression;
- the semantics defines the relation between the antecedent and the 
consequent.

Rules belong to rulesets.

Logical variables can be scoped to a ruleset, a rule (the variable is 
used in the antecedent and consequent expression), the antecedent and/or 
the consequent of a rule. At first sight, logical variables that are 
scoped to rulesets or rules seems to be always quantified universally. 
The consequent is evaluated for the tuples of values of rule-scoped 
variables for which the antecedent is satisfied (and I wont say more 
about semantics :-).

I do not think that we can say much more at this stage.

Now, the model can be specialised: in the case of production rules, the 
antecedent is called the condition or left-hand side and the consequent 
is the action right hand side; and logical variables are usually scoped 
to the rule or occasionally, to the antecedent. In the case of logic 
programmes, the anetcedents are called bodies, and consequents: heads, 
and logical variables are scoped to the ruleset (programme). Components 
can be added to speciale the model: e.g. a production rule with a 
trigger expression is an ECA. Etc...

A reason why it seemed interesting to discuss this at this point is 
that, thinking about this model made me think of a number of potentially 
interesting discriminators for the RIFRAF (some may already exist, other 
may have been proposed by Paula etc: I do not have the references at 
hand. It may be interesting to relate them to the meta-model anyway):
- scope of the logical variables: what is the allowable scope for 
logical variables (ruleset and/or rule and/or antecedent and/or consequent)?
- quantification associated to scope: what quantification is allowed 
associated with each allowable scope (universal and/or existential)?
- specification of range: is the range of variable specified explicitely 
or implicitely (the case of implicitely I have in mind is logic 
programmes)? If explicit: type or query/filter expression?
- sublanguages: are the (variable range specification), antecedent and 
consequent in the same language. That is: are allowable consequent 
expression a subset of allowable antecedent expression, a superset, a 
disjoint set, ...? (My guess is that might be a good discriminator for 
deductive rue: if the expression language for conseuqnts if a subset of 
the expression language for antecedents)
- side effects: are side-effectfull functions allowed in (variable range 
specifications), antecedents, conseuqents (my guess is that no rule 
language allows side-effects in the variable definitions nor antecedents)?
- datasources: What are the allowable data sources for variable range 
specification queries? For antecendent satisfactio, chacking (boolean 
queries)? Are they explicitely (how? URI?) or implicitely (what: local 
data/fact base. Workin gmemory?...) specified? Is only one datasource 
allowed or multiple ones?

And probably many more (I am pretty sure I had more in mind. But I have 
on vacations for 3 days now, and my brain already started to melt)...

Cheers,

Christian

Received on Monday, 31 July 2006 21:50:47 UTC