- From: Paul Vincent <pvincent@tibco.com>
- Date: Tue, 1 May 2007 10:14:58 -0700
- To: "RIF" <public-rif-wg@w3.org>
My apologies for what no doubt some will see as a "stupid question", but if it is so problematic in defining a single sort for a rule interchange format, why can't the sort type simply be a characteristic (e.g. metadata) of the format? Reasons to do this: - removes the selection of one sort for all types of different interchange languages - simplifies the handling of standard use cases where interchange is between common rule language types (and therefore, presumably, sorts) Reasons not to do this: - will not provide a unifying rule interchange *language* (in case this matters) - will likely increase the complexity of test cases where translation using different sorts and between different sorts will need to be considered Paul Vincent TIBCO | ETG/Business Rules > -----Original Message----- > From: public-rif-wg-request@w3.org [mailto:public-rif-wg-request@w3.org] > On Behalf Of Jos de Bruijn > Sent: 01 May 2007 17:31 > To: RIF > Subject: Re: Issue-31: Disjoint sorts - sketch of test case > > > <snip/> > > > ** ONDS to DS > > > > The source rule uses the same identifier for distinct objects so the > > translator needs to introduce new identifiers: > > > > Forall ( p_unary_pred(a) :- And()) > > Forall ( q_unary_pref(b) :- And()) > > Forall ( p_individual = q_individual :- And()) > > > > Query: p_unary_pred(?x) > > > > The translation is straightforward but the form of identifiers in the > > target system may not be intuitive. > > > > A static analyis could omit the identifier renaming for constants > > which are not subject to punning but that leads to a non-monotonic > > translation which is undesirable (at least in the OWL setting). > > > > ** ONDS to OS > > > > Same as for ONDS to DS, the translator has to introduce new > > identifiers. > > No, this would not work. > > Say you have a rule and a fact: > > Forall x,y (x=y). > p(a). > > Under ONDS, this entails p(a), but not q(a). > Under OS, this entails both p(a) and q(a). > > You can rename your symbols as much as you want, but every symbol will > be interpreted as the same symbol. > > Conclusion: translations from DS and ONDS to OS do not work in the > general case. > > > Best, Jos > > > > > ** OS to DS > > > > Hummm ... > > > > If we can assume an equality operator for predicates (=pred=) then I > > guess the translation would be something like: > > > > Forall ( p_unary_pred(a) :- And()) > > Forall ( q_unary_pref(b) :- And()) > > Forall ( p_individual =indivdual= q_individual :- And()) > > Forall ( p_unary_pred =pred= q_unary_pred) > > > > Query: p_unary_pred(?x) > > > > If not then we would have to rewrite all of the rules involving p and q > > to introduce the alias syntactically: > > > > Forall ( p_unary_pred(a) :- And()) > > Forall ( q_unary_pref(a) :- And()) > > Forall ( p_unary_pred(b) :- And()) > > Forall ( q_unary_pref(b) :- And()) > > Forall ( p_individual = q_individual :- And()) > > > > Query: p_unary_pred(?x) > > > > ** OS to ONDS > > > > Would be either: > > > > Forall ( p(a) :- And()) > > Forall ( q(b) :- And()) > > Forall ( p =indivdual= q :- And()) > > Forall ( p =pred= q :- And()) > > > > Query: p(?x) > > > > or > > > > Forall ( p(a) :- And()) > > Forall ( q(a) :- And()) > > Forall ( p(b) :- And()) > > Forall ( q(b) :- And()) > > Forall ( p = q :- And()) > > > > Query: p(?x) > > > > Dave > > > > [1] http://www.w3.org/2005/rules/wg/wiki/Issue-31 > >
Received on Tuesday, 1 May 2007 17:16:22 UTC