- From: Dave Reynolds <der@hplb.hpl.hp.com>
- Date: Tue, 24 Jul 2007 18:27:41 +0100
- To: RIF <public-rif-wg@w3.org>
[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