- From: Paul Vincent <pvincent@tibco.com>
- Date: Thu, 16 Aug 2007 04:13:48 -0700
- To: "Gary Hallmark" <gary.hallmark@oracle.com>, "Michael Kifer" <kifer@cs.sunysb.edu>
- Cc: "Chris Welty" <cawelty@gmail.com>, "RIF WG" <public-rif-wg@w3.org>
Gary, Michael: memberOf and instanceOf relationship queries make sense for PR. But subclass relationships (where you are testing the underlying schema of your data model) is more of a metamodel rule: do you have any examples of where this might be used in a *conventional* PR system's rules? I can't think of any good ones, as rules are written against (/with knowledge of) the underlying object model. [Obviously, this comment pertains to current PR systems only. I guess one could argue that the concept of "subclass" is not very good semantically / for the semantic web anyway, as subclass is just one type of relationship and really represents "typeOf" (vs partOf) - but I'll leave that discussion to the relevant experts if needed] Paul Vincent TIBCO | ETG/Business Rules > -----Original Message----- > From: Gary Hallmark [mailto:gary.hallmark@oracle.com] > Sent: 16 August 2007 06:48 > To: Paul Vincent > Cc: Chris Welty; Michael Kifer; RIF WG > Subject: Re: fulfilment of my action of today <-- Rumblings on why we need > classification terms in RIF (and why RDF's vocab should not be used) > > Paul, > > I have seen users try to write rules like this > > IF c is an instance of Car and c.weight > 6000 or t is an instance of > Truck and t.weight > 6000 > THEN assert TooHeavy(c); assert TooHeavy(t); > > Unfortunately the above doesn't work very well because for each rule > firing, c or t may be unbound. > > An obvious "fix" is to split the above into 2 rules. > > In some ways (e.g. easier to maintain), a better fix is to set up the > data model so that Car is a subclass of Vehicle, and Truck is a subclass > of Vehicle. Now the rule becomes > > IF v is an instance of Vehicle and v.weight > 6000 > THEN assert TooHeavy(v); > > Oracle Business Rules uses Java semantics for "is an instance of" and > "is a subclass of". I would like this in RIF. Otherwise, I don't see > how I can translate the above rule very easily and have it fire on a > Truck weighing in excess of 6000. I would need some way to restrict the > very general rif:subClassOf (and presumably rif:instanceOf) to Java > semantics. I hope that's possible... > > Paul Vincent wrote: > > Out of interest (and apologies for the naïve qu's): > > 1. what would be an example rule here? > > eg: C1 is a subclass of C0 > > [and by implication C1 inherits properties, maybe default values for > such properties, from C0, and inherits method definitions, all subject to > any intermediate subclass definition overrides]? > > > > 2. note that for a PR, as discussed in the call yesterday, the most > likely equivalents would be: > > - do a class membership query on some instance in a rule condition [not > really a subclass test as class relationships are metamodel constructs] > > - allocate an instance to some new class [not supported in most PR > engines due to their Java object model base] > > > > The above might explain why for the PR community the question on whether > RIF supports this construct is somewhat irrelevant. I can't think how a PR > translator would handle such a construct without recreating/simulating an > OO model semantics dynamically or getting into code generation... > > > > [My 2cents contribution is that RDF vocab should only be used if RDF is > the only "rule language / data model" requiring this feature OR RDF vocab > is a sufficient abstraction of all "rule language / data model"s requiring > this feature]. > > > > 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 Chris Welty > >> Sent: 15 August 2007 02:26 > >> To: Michael Kifer > >> Cc: RIF WG > >> Subject: Re: fulfilment of my action of today > >> > >> > >> > >> > >> Michael Kifer wrote: > >> > >>> Rumblings on why we need classification terms in RIF > >>> (and why RDF's vocab should not be used) > >>> =================================================== > >>> > >>> Two issues: whether we should define facilities for expressing some > data > >>> model stuff and whether we should use rdfs for this. > >>> > >>> Rationale: > >>> If we do not have such constructs then everybody will be inventing > >>> > >> their > >> > >>> own. People will not be able to specify any part of their data > model > >>> > >> in RIF > >> > >>> which will reduce the usefulness of RIF as an exchange language. > >>> > >>> Why it is not good to use RDF's facilities to define class > hierarchies.: > >>> RDF is a foreign language whose semantics is burdened with non- > >>> > >> standard > >> > >>> things. For instance, subclass is reflexive. > >>> > >>> This is bad because not every language out there uses reflexive > >>> > >> subclasses. > >> > >>> For instance, if we map, say, FLORA-2's subclass relationship to > >>> > >> RDFS's then > >> > >>> in the translation (RIF) the query whether foo is a subclass of foo > >>> > >> will > >> > >>> say "yes" but in FLORA-2 it will say "no". > >>> > >> </chair> > >> No, no - translating flora2:subclass into rdfs:subclass would be > >> incorrect, because they have different semantics. For me, this is the > >> stronger point in favor of rif:subclass - since so few systems use the > >> rdfs semantics for subclass, very few systems when translating into > >> RIF would use it in their translations. > >> > >> Same for below. You shouldn't translate ilog:subclass into > >> rdfs:subclass. So, in fact, as far as we know, only rdfs based > >> systems would ever use rdfs:subclass when translating through rif, and > >> everyone else would have to invent their own. > >> <chair> > >> > >> > >>> Let's look at some other examples, like ILOG. From my limited > >>> > >> experience > >> > >>> with it, I remember that it uses Java as its data model. So, > suppose > >>> there is a class foo in ILOG, which comes from Java. An ILOG set of > >>> rules must not derive "foo sub foo" because this is not true in the > >>> > >> data > >> > >>> model. However, it we translate Java subclass relationship into > >>> rdfs:subclassOf then the resulting RIF translation should generate > >>> > >> "foo > >> > >>> sub foo". (In truth, as I recall, ILOG does not have "sub" in the > >>> > >> heads > >> > >>> of the rules, but it is easy to imagine that next year ILOG is > >>> > >> extended > >> > >>> with something like a query facility. Then their stock will plummet > >>> because their rule sets will not be faithfully exchangeable through > >>> > >> RIF > >> > >>> :-) > >>> > >> > >> -- > >> Dr. Christopher A. Welty IBM Watson Research Center > >> +1.914.784.7055 19 Skyline Dr. > >> cawelty@gmail.com Hawthorne, NY 10532 > >> http://www.research.ibm.com/people/w/welty > >> > > > > > >
Received on Thursday, 16 August 2007 11:14:33 UTC