- From: Boris Motik <boris.motik@comlab.ox.ac.uk>
- Date: Mon, 17 Nov 2008 19:43:48 -0000
- To: "'W3C OWL Working Group'" <public-owl-wg@w3.org>
Hello, I know it is quite late in the day, but while I was implementing the resolution from the last F2F, I've noticed several opportunities for simplification of the current spec. Please understand that - this would be just a simplification/clean-up of the structural specification and it does not incur any fundamental changes regarding the actual capabilities of annotations, and - it would affect only the structural specification, the RDF Mapping, and the XML Syntax documents. Problem ---------------------- Currently, in the metamodel of OWL 2 we have three classes for various types of annotations: - AnnotationByURI, - AnnotationByLiteral, and - AnnotationByAnonymousIndividual. This is quite unwieldy. Furthermore, the metamodel of OWL 2 currently contains two different axioms for associating annotations with things: - URIAnnotation and - AnonymousIndividualAnnotation. Again, quite unwieldy. Another problem is that, while it would be intuitive to expect the structure of annotations to be similar to assertions, this is not the case. A property assertion consists of two individuals and a property, and it specifies just one fact. In contrast, a single annotation axiom specifies a set of annotations for an individual, and essentially specifies more than one fact. Consider the following examples: (1) PropertyAssertion( P i1 i2 ) (2) URIAnnotation( i1 Annotation( AP1 v1 ) Annotation( AP2 v2) ) In fact latter syntax is quite unwieldy, because it uses the terminal 'Annotation' quite often. Because of this, round-tripping of annotations through RDF is not possible. If you wrote (2) as two separate annotations, serialized the ontology into RDF, and read everything back, your two annotation axioms would be merged into one axiom (2). Proposal Outline ---------------------- The proposal consists of two changes. The first problem could be addressed by introducing a class called, say, AnnotationValue, as a superclass of URI, Literal, and AnonymousIndividual. Then, we could replace three types of annotations with just one type that refers to AnnotationValue. The second problem could be addressed by breaking up axioms of the form (2) into several axioms, each of which provides just one annotation value. Thus, instead of (2), we would write something like this: (3) Annotation( AP1 i1 v1 ) (4) Annotation( AP1 i2 v2 ) This would actually bring the structural specification closer to RDF. Concrete Proposal for the Grammar ---------------------- Here is what the grammar of the FS might look like: AnnotationSubject := URI | AnonymousIndividual AnnotationValue := URI | AnonymousIndividual | Literal Annotation := 'Annotation' '(' axiomAnnotations AnnotationSubject AnnotationValue ')' axiomAnnotations := { StatementAnnotation } StatementAnnotation := 'StatementAnnotation' '(' { StatementAnnotation } AnnotationProperty AnnotationValue ')' AnnotationAxiom := Annotation | SubAnnotationPropertyOf | AnnotationPropertyDomain | AnnotationPropertyRange Here is a summary of the grammar changes: - What is currently the Annotation nonterminal would become StatementAnnotation. - What is currently URIAnnotation and AnonymousIndividualAnnotation would become Annotation. I believe that the result would be a much simpler metamodel and a much nicer syntax. I could enact this change really quickly. Please let me know how you feel about this. Could we perhaps discuss this at the next teleconf? Regards, Boris
Received on Monday, 17 November 2008 19:44:31 UTC