- From: Christian de Sainte Marie <csma@ilog.fr>
- Date: Mon, 31 Jul 2006 23:51:02 +0200
- To: RIF WG <public-rif-wg@w3.org>
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