- From: Michael Kifer <kifer@cs.sunysb.edu>
- Date: Thu, 16 Aug 2007 09:13:11 -0400
- To: "Paul Vincent" <pvincent@tibco.com>
- Cc: "Gary Hallmark" <gary.hallmark@oracle.com>, "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. This may not be how you intend to use a PR system, but imagine that somebody gives me a package, which includes a PR system. I might want to run queries in order to determine the exact schema in order to use your package. Even CORBA provides such facilities (not subclassOf, I think, but the ability to find out the names of the attributes; determining the class hierarchy is just a tiny next step). --michael > [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 13:13:40 UTC