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

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

From: Michael Kifer <kifer@cs.sunysb.edu>
Date: Fri, 07 Dec 2007 00:54:00 -0500
To: axel@polleres.net
Cc: "Public-Rif-Wg (E-mail)" <public-rif-wg@w3.org>
Message-ID: <3638.1197006840@cs.sunysb.edu>

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, 


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.)

RDF's subclassOf does not cut it because

1. It imposes additional axioms, which are not commonly accepted.
2. It is also not even defined for classes specified using function terms
   (like list(?Foo)).

Both arguments are also applicable to the RDF membership relationship.

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


> 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/
Received on Friday, 7 December 2007 05:54:28 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:47:48 UTC