- From: Peter F. Patel-Schneider <pfps@research.bell-labs.com>
- Date: Mon, 11 Aug 2008 15:03:04 -0400 (EDT)
- To: public-owl-wg@w3.org
Middle-class Annotations This is a proposal to close ISSUE-16 by incorporating syntax for annotations on annotations into OWL 2. It fleshes out version 2a of the proposal that I made in January, which is archived at http://lists.w3.org/Archives/Public/public-owl-wg/2008Jan/0106.html This is *only* a proposal to change the syntax of OWL 2. There is no need for any change to the semantics. This proposal does not cover any pragmatic issues related to processing annotations, as might be desired to find out provenance information on axioms that generate an inference or to generate a complete ontology of the annotation information in an ontology. These pragmatic issues could be handled by a WG note or even left to tool builders. This proposal does not cover the required changes to the structural specification or the XML serialization, but the required changes are straightforward and I believe that they can be left to the discretion of the editors of Syntax and XML Serialization. FUNCTIONAL SYNTAX: Augment the productions for annotations as follows: labelAnnotation := 'Label' '(' { annotations } literal ')' commentAnnotation := 'Comment' '(' { annotations } literal ')' deprecationAnnotation := 'Deprecated' COMMENT: the three productions above are just shorthands and not considered further here explicitAnnotationByLiteral := 'Annotation' '(' { annotations } AnnotationProperty literal ')' annotationByLiteral := explicitAnnotationByLiteral | labelAnnotation | commentAnnotation | deprecationAnnotation annotationByEntity := 'Annotation' '(' { annotations } AnnotationProperty entity ')' annotationByAnonymousIndividual := 'Annotation' '(' { annotations } AnnotationProperty anonymousIndividual ')' annotation := annotationByLiteral | annotationByEntity | annotationByAnonymousIndividual COMMENT: all annotations can have annotations on them RDF SERIALIZATION: Change the foward mapping as follows: 2.2.4 Annotations on annotations: An annotation always generates a single triple (2.1, 2.2.1, and 2.2.3) or a group of similar triples (2.2.2). An annotation on this annotation "reifies" the annotation triple or triples as below and attaches the annotation's annotation to that reification (each of the reifications), so that if the annotation triple is x T(AP) T(ect) then the annotated version of this annotation y rdf:type owl:Annotation y owl:subject x y owl:predicate T(AP) y owl:object T(ect) and annotations of the form y T(AP1) T(ect1) ... y T(APn) T(ectn) are produced instead. Example The following subclass axiom: SubClassOf( Comment( Label("Profound") "Children are people." ) a:Child a:Person ) generates _:x rdf:type owl:Axiom _:x owl:subject a:Child _:x owl:predicate rdfs:subClassOf _:x owl:object a:Person _:y rdf:type owl:Annotation _:y owl:subject _:x _:y owl:predicate rdfs:comment _:y owl:object "Children are people." _:y rdfs:label "Profound" Deeper nesting is handled in the same way. Augment the reverse mapping as follows: Throughout the reverse mapping section, any triple match for s p o that produces an annotation (in Table 9, Table 15, Table 16, Table 17, *and* here) also allows a match of _:x rdf:type owl:Annotation _:x owl:subject s _:x owl:predicate p _:x owl:object o and adds annotations to the annotation for each triple in G with _:x as the subject as follows _:x *:y ct { ... } Annotation(*:y ct) _:x *:y *:z { ... } ExpandAnnotations(_:x *:y *:z) _:x *:y _:z { ... } Annotation( *:y _:z) Any triples used here are removed.
Received on Monday, 11 August 2008 19:03:56 UTC