W3C home > Mailing lists > Public > public-rif-wg@w3.org > December 2007

Re: Reminder: pending discussion "membership" (pending discussion on ACTION-350)

From: Jos de Bruijn <debruijn@inf.unibz.it>
Date: Mon, 10 Dec 2007 14:24:10 +0100
Message-ID: <475D3DFA.1000101@inf.unibz.it>
To: Michael Kifer <kifer@cs.sunysb.edu>
CC: axel@polleres.net, "Public-Rif-Wg (E-mail)" <public-rif-wg@w3.org>
> CSMA had an action to bug me about the ## feature :-)
> I thought that others might also be interested, so I am including my
> arguments below.
> 
> First, one needs to be able to specify that one class is a subclass of
> another class **as part of the KB**. For instance, 
> 
> student##person.
> father(person)##person.
> 
> In KB apps this is used for reasoning, not just as part of a data
> model. How would one specify this info otherwise?
> 
> Here is a more sophisticated example: parametrised lists.
> 
> list(?Subclass) ## list(?Super) :- ?Subclass ## ?Super.
> 
> (List of FOOs is a subclass of lists of BARs if FOO is a subclass of
> BAR. We could have list(father(person)), for example.)

I have yet to see a real use case for the inclusion of either membership
or classification in RIF.  One can always create toy examples, but I
wonder who is actually going to use the features.
Are there any use cases for the use of these features for the
integration of several notions of membership or subclassing?

In the use cases I've seen so far, everyone encodes its membership or
subclass relation in his preferred way, but I haven't seen use cases in
which different notions of membership or subclass are integrated using
the proposed subclass or membership constructs in RIF.

> 
> RDF's subclassOf does not cut it because
> 
> 1. It imposes additional axioms, which are not commonly accepted.

  Do you have references to back up this statement?

> 2. It is also not even defined for classes specified using function terms
>    (like list(?Foo)).

What you mean with that?  In an RDF-RIF combination, one can specify the
example you mentioned in the following way:

student[rdfs:subClassOf -> person].
father(person)[rdfs:subClassOf -> person].

list(?Subclass)[rdfs:subClassOf -> list(?Super)] :-
?Subclass[rdfs:subClassOf -> ?Super].

> 
> Both arguments are also applicable to the RDF membership relationship.

The RDF membership relationship by itself does not impose additional
axioms; it is simply a binary relation.

Furthermore, it is certainly defined for classes (and individuals)
specified using functional terms.

> I am convinced that throwing out these primitives serves no purpose and
> will just gratuitously cripple the BLD.

I am convinced that including these primitives serves no purpose and
will gratuitously blow up / complicate the BLD.


best, Jos

> 
> 
> 	--michael  
> 
> 
> 
>> Dear all,
>>
>> I was asked by Chris to remind again to forward again a reminder on the 
>> pending discussion about the special notation '#' for class membership 
>> and in RIF since this should be discussed in the upcoming Teleconf.
>>
>> In the last f2f I was asked to send a use case for this, where I sent 
>> the - obvious - RDF use case, see
>> http://lists.w3.org/Archives/Public/public-rif-wg/2007Sep/0184.html
>>
>> For your convenience I copy this here again:
>>
>> --------------------------------------------------------------------
>>
>> http://www.w3.org/2005/rules/wg/track/actions/350
>>
>> The class membership notation '#' is intended to reflect the common
>> feature of many rule and object oriented languages for being able to
>> express memebership of a class (or type?)
>>
>> A possible use for this is for RDF's rdf:type construct...
>>
>> To reflect this in the current RDF/RDFS embeddings, one could add to
>>
>> 1) Add to RDF embedding:
>>
>>     Forall ?c,?o ?o#?c :- ?o[rdf:type -> ?c]
>>
>>
>> ------- ACTION done, what follows is additional discussion ;-) --------
>>
>> This alone, obviously doesn't make too much sense, but in connection
>> with the additional subclass notation '##' one could safe two rules
>> in the RDFS embedding:
>>
>> 2) Add to RDFs embedding:
>>
>>    Forall ?c1,?c2 ?c1##?c2 :- ?c1[rdfs:subclassOf-> ?c2]
>>
>> and remove:
>>    Forall ?x,?y,?z ?z[rdf:type -> ?y] :- And (?x[rdfs:subClassOf -> ?y]
>> ?z[rdf:type -> ?x]),
>>    Forall ?x,?y,?z ?x[rdfs:subClassOf -> ?z] :- And (?x[rdfs:subClassOf
>> -> ?y] ?y[rdfs:subClassOf -> ?z]),
>>
>>
>> In total, the use of the special notation adds two rules and saves us
>> two rules in the RDF/RDFS embedding.
>>
>> Pretty much equals out ;-)
>>
>> That's why I am absolutely neutral on whether we chould keep that
>> feature or no.
>>
>> Axel
>>
>> p.s.: Note that I have to send regrets for the next Telecon, since I 
>> will be travelling most likely (could be I get connection from train or 
>> airport, but no guarantees.)
>>
>> -- 
>> Dr. Axel Polleres
>> email: axel@polleres.net  url: http://www.polleres.net/
> 

-- 
Jos de Bruijn            debruijn@inf.unibz.it
+390471016224         http://www.debruijn.net/
----------------------------------------------
If you live to be one hundred, you've got it
made. Very few people die past that age.
  - George Burns


Received on Monday, 10 December 2007 13:24:25 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 2 June 2009 18:33:44 GMT