Issues with classification a#b, a##b

[On the telecon I started to raise the issue of why having separate type 
and subclass modelling in RIF is problematic, especially for RDF/RDFS, 
the discussion timed out and I took the action to clarify the issue in 
email.]

The core issue is that in RDF, RDFS and OWL/full the properties that 
express model level relations (rdf:type, rdfs:subClassOf etc) are not 
distinct from those that express instance level relations. There is no 
metamodel/model/instance layering.

Take a concrete example:

    :Dave rdf:type :Person .
    :Dave foaf:name  "Dave" .
    :Person rdfs:subClassOf :Animal .

In Jos's translation this would correspond to RIF Frames:

    :Dave [rdf:type -> :Person, foaf:name -> "Dave"] /\
                          :Person[rdfs:subClassOf :Animal]

(I've omitted all the ".."^^rif:iri and stuck to curie format for IRIs 
for clarity so this is not legal RIF syntax.)

I presume from the discussion that if we accept the Classification 
machinery then the translation would have to be modified to generate:

    :Dave # :Person [foaf:name -> "Dave"] /\ :Person ## :Animal

Now consider a RIF condition which asks for all the property values of a 
specific object:

    :Dave[?p -> ?v]

With raw RDF this should match the example data with the binding sets:

    { {p=foaf:name, v="Dave"} {p=rdf:type, v=:Person} }

if I have enabled RDFS semantics then there should be a third binding:

   { {p=foaf:name, v="Dave"} {p=rdf:type, v=:Person}
                 {p=rdf:type, v=:Animal} }

Whereas under the proposed semantics all I would get is:

   { {p=foaf:name, v="Dave"} }

Of course we could define # and ## to just be aliases for the frame 
slots corresponding to rdf:type and rdfs:subClassOf. However, that 
wouldn't be very helpful for people like Gary who want to use # and ## 
to represent a Java or XML Schema data models.

We could define the aliases as part of the RDF translation so that all 
RDF datasets expressed in RIF would explicitly also include the 
correspondence rules:

   ?p[rdf:type -> ?t] :- ?p # ?t .
   ?p[rdfs:subClassOf -> ?t] :- ?p ## ?t .

   ?p # ?t :- ?p[rdf:type -> ?t] .
   ?p ## ?t :- ?p[rdfs:subClassOf -> ?t] .

But that strikes me as horrible.

Dave
-- 
Hewlett-Packard Limited
Registered Office: Cain Road, Bracknell, Berks RG12 1HN
Registered No: 690597 England

Received on Tuesday, 24 July 2007 17:28:02 UTC