Re: abstract syntax and RDFS

From: Jeremy Carroll <jjc@hpl.hp.com>
Subject: abstract syntax and RDFS
Date: Mon, 20 Jan 2003 22:26:22 +0100

> 
> 
> In conducting my still unfinished review of the mapping rules I noticed that 
> no RDFS schema is an OWL DL document.
> 
> This seems like an oversight, and can be addressed by a harmless extension to 
> the mapping rules.
> 
> The problem is that every RDFS schema contains triples like
> 
> <uri1> rdf:type rdf:Property .
> and
> <uri2> rdf:type rdfs:Class .
> 
> These triples are simply illegal in OWL Lite and OWL DL.
> 
> But they could be (non-deterministically) introduced in the mapping rules.

> The latest version of the mapping rules does have some non-determinism already 
> for handling AllDifferent. By extending the notation of the mapping rules to 
> have say ? triple ? to denote an optional triple that can be omitted or 
> included at whim, I propose the following changes to the mapping rules to 
> enhance RDFS compatibility.

> (Notationally it may be simpler just to duplicate the rules; this is what is 
> done with the Ontology construct).
> 
> 
> OLD
> 
> Class(classID partial 
>       annotation1 … annotationn 
>       description1 … descriptionn) 
> 
> =>
> 
> classID rdf:type owl:Class . 
> classID T(annotation1) . … classID T(annotationn) . 
> classID rdfs:subClassOf T(description1) . … 
> classID rdfs:subClassOf T(descriptionn) . 
> 
> PROPOSED
> 
> Class(classID partial 
>       annotation1 … annotationn 
>       description1 … descriptionn) 
> 
> =>
> 
> classID rdf:type owl:Class . 
> ? classID rdf:type rdfs:Class . ?
> classID T(annotation1) . … classID T(annotationn) . 
> classID rdfs:subClassOf T(description1) . … 
> classID rdfs:subClassOf T(descriptionn) . 
> 
> (similarly for the other two Class rules)
> 

Done for all *four* Class rules.

> OLD
> 
> DatatypeProperty(ID 
>       annotation1 … annotationn
>        super(super1)… super(supern) 
>       domain(domain1)…
>        domain(domainn) 
>       range(range1)…
>        range(rangen) 
>       [Functional]) 
> 
> =>
> 
> ID rdf:type owl:DatatypeProperty . 
> ID T(annotation1) . … ID T(annotationn) . 
> ID rdfs:subPropertyOf T(super1) . … 
> ID rdfs:subPropertyOf T(supern) . 
> ID rdfs:domain T(domain1) . … 
> ID rdfs:domain T(domainn) . 
> ID rdfs:range T(range1) . … 
> ID rdfs:range T(rangen) . 
> [ID rdf:type owl:FunctionalProperty . ] 
> 
> PROPOSED
> 
> DatatypeProperty(ID 
>       annotation1 … annotationn
>        super(super1)… super(supern) 
>       domain(domain1)…
>        domain(domainn) 
>       range(range1)…
>        range(rangen) 
>       [Functional]) 
> 
> =>
> 
> ? ID rdf:type rdf:Property . ?
> ID rdf:type owl:DatatypeProperty . 
> ID T(annotation1) . … ID T(annotationn) . 
> ID rdfs:subPropertyOf T(super1) . … 
> ID rdfs:subPropertyOf T(supern) . 
> ID rdfs:domain T(domain1) . … 
> ID rdfs:domain T(domainn) . 
> ID rdfs:range T(range1) . … 
> ID rdfs:range T(rangen) . 
> [ID rdf:type owl:FunctionalProperty . ]

Done.

> OLD
> 
> ObjectProperty(ID 
>       annotation1 … annotationn 
>       super(super1)… super(supern) 
>       domain(domain1)…
>        domain(domainn) 
>       range(range1)…
>        range(rangen) 
>       [inverseOf(inverse)] 
>       [Symmetric] 
>       [Functional | 
>        InverseFunctional | 
>        Transitive]) 
> 
> =>
> 
> ID rdf:type owl:ObjectProperty . 
> ID T(annotation1) . … ID T(annotationn) . 
> ID rdfs:subPropertyOf T(super1) . … 
> ID rdfs:subPropertyOf T(supern) . 
> ID rdfs:domain T(domain1) . … 
> ID rdfs:domain T(domainn) . 
> ID rdfs:range T(range1) . … 
> ID rdfs:range T(rangen) . 
> [ID owl:inverseOf T(inverse) .] 
> [ID rdf:type owl:SymmetricProperty . ] 
> [ID rdf:type owl:FunctionalProperty . ] 
> [ID rdf:type owl:InverseFunctionalProperty . ] 
> [ID rdf:type owl:TransitiveProperty . ] 
> 
> PROPOSED
> 
> ObjectProperty(ID 
>       annotation1 … annotationn 
>       super(super1)… super(supern) 
>       domain(domain1)…
>        domain(domainn) 
>       range(range1)…
>        range(rangen) 
>       [inverseOf(inverse)] 
>       [Symmetric] 
>       [Functional | 
>        InverseFunctional | 
>        Transitive]) 
> 
> =>
> 
> ? ID rdf:type rdf:Property . ?
> ID rdf:type owl:ObjectProperty . 
> ID T(annotation1) . … ID T(annotationn) . 
> ID rdfs:subPropertyOf T(super1) . … 
> ID rdfs:subPropertyOf T(supern) . 
> ID rdfs:domain T(domain1) . … 
> ID rdfs:domain T(domainn) . 
> ID rdfs:range T(range1) . … 
> ID rdfs:range T(rangen) . 
> [ID owl:inverseOf T(inverse) .] 
> [ID rdf:type owl:SymmetricProperty . ] 
> [ID rdf:type owl:FunctionalProperty . ] 
> [ID rdf:type owl:InverseFunctionalProperty . ] 
> [ID rdf:type owl:TransitiveProperty . ] 

Done.

I also had to fix the informative portion as well.

peter

Received on Wednesday, 22 January 2003 20:01:45 UTC