- From: Boris Motik <boris.motik@comlab.ox.ac.uk>
- Date: Wed, 14 Jan 2009 18:52:43 -0000
- To: <public-owl-wg@w3.org>
Hello, Here is a short description of why allowing complex classes in annotations is difficult. AnnotationAssertion in the structural specification currently takes an annotation property and a URI. Now if we wanted to allow for complex classes in annotation assertions, we'd need to change the structural specification such that we have several different versions of annotation assertions. In particular, we'd need AnnonationAssertionByEntityOtherThanClass, AnnotationAnnotationByAnonymousIndividual, and AnnotationAnnotationByClassExpression (I've used these long names not for irony purposes but make 100% clear what we'd need). But we already had a subset of that: at one point, we had annotations with entity values. This was rather unlucky, because it was not possible to roundtrip annotations to and from RDF correctly. Note that this does not depend on simple vs. complex classes in annotations: the problem is actually causes if we allowed entities as annotation values rather than URIs. Consider the following RDF graph: (1) x my:annProp y What is y now? If could be used in an ontology both as a class and as an individual, so we don't know what the actual value of the annotation was. Note that declarations do not help us distinguish the proper role of y: the ontology might actually explicitly declare y to be both a class and an individual. This problem was solved by allowing only URIs in annotations: this now makes parsing (1) unambiguous. Thus, the problem is not so much about allowing for complex classes in annotations; rather, the problem is with distinguishing entities vs. URIs. The addition of complex classes would require us that we make this distinction, which would have bad consequences regarding RDF mapping. In fact, the addition of annotations with complex classes would make this problem even worse. Consider the following RDF graph: (2) x my:annProp _:z It is impossible to know here what the role of _:z is: is it an anonymous individual that should be expanded to a class, or is it really meant to be treated as an anonymous individual? In other words, there is no way for an RDF parser to know whether to translate this triple into AnnotationAnnotationByClassExpression or AnnotationAnnotationByAnonymousIndividual. Regards, Boris
Received on Wednesday, 14 January 2009 18:53:30 UTC