An explanation of the technical difficulties surrounding Alan Rector's comment

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