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)

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