RE: [model] Clarifying annotation architecture

Hi, Rob-


This is a challenging one, because it may set a precedent that gets misunderstood and then used to justify incorrect usage. (We could always go back to not allowing motivation or role bodies and avoid the problem altogether.)


But (for the reasons I've embedded in your earlier reply to Ivan) philosophically I disagree that Bodies created for annotation shouldn't be reused because they've been assigned a role. As with reuse of any resource, the implementer reusing must take into account all properties of the resource before reusing. 


In RDF terms this comes down to whether we want to limit the Domain of our new oa:role predicate to oa:SpecificResource.  If we do than we prohibit applying a role to anything not an oa:SpecificResource.  But I think it would be a mistake to be this restrictive.


From: Randall Leeds [] 
Sent: Tuesday, August 04, 2015 12:59 PM
To: Robert Sanderson <>; Ivan Herman <>
Cc: Frederick Hirsch <>; Tim Cole <>; W3C Public Annotation List <>
Subject: Re: [model] Clarifying annotation architecture


If a system consumes an annotation with blank nodes and subsequently assigns then URIs, I don't see a problem.

A different system that does the same will assign its own URIs, and so there is no conflict, there are now two different resources that duplicate the content, each can be the subject of statements independently.

A system that wishes to annotate these resources would use the typical SpecificResource construction to avoid making open world statements about the originals.

So, I see no problem at all with using blank nodes for the bodies as in Tim's example. In practice, I imagine that annotations with blank nodes might acquire URIs as they are shared and reproduced, but so what?

The worst case scenario is that two independent consumers assign different URIs, then subsequent statements about these have their relationship obscured.

That's maybe really not so bad.

Yet the construction is much simpler and elegant for the producer.

Anyway, isn't part of the purpose of an annotation data model to capture references not a priori uniquely identified by the publisher? If we really want to make a statement about a blank node, maybe the right move is to select it out of some more canonical reference? GraphPathSelector anyone? ;)


On Tue, Aug 4, 2015, 10:44 Robert Sanderson < <> > wrote:


Hi Ivan, 

I am not sure why a URI must be assigned to a blank node body. However, it indeed it must, then (just as in any other RDF environment) I believe it is a requirement that URI-s assigned to a body must be unique. 


It doesn't have to be, but some systems will just do it for you.  The best practices of linked data are to avoid blank nodes, after all. 

Yeah, well, I do not think we should be religious about it. In my view, using blank nodes for the situations we are discussing here is perfectly fine.


Indeed, but we shouldn't prevent other people from being religious about it :)


The use case I gave earlier was if you want to annotate the body and particularly if you're using a selector, it needs a URI to be the target of the second annotation.  You can't target the annotation and mean the body, as it would be ambiguous in the case we're discussing of multiple bodies.

I am lost. I think Tim's example was for the resources used as an encapsulation for the body and a motivation. That one does not really need its own URI. That is where blank nodes are perfectly fine.


The 2 Bodies in my example (#4) were each treated as a blank node. This was necessary in order have a subject for the role predicates.


They're fine until someone wants to reuse it when it does get its own URI.  Blank nodes are still resources.


I do not understand what you mean here. My only comment was to say is that if the system chooses to provide a URI to blank nodes (ie, it skolemizes the blank nodes), we can safely assume and even require that the resulting URI-s will be different for different blank nodes. 


They'll be different URIs, sure, but that doesn't mean that they're reusable.  If the motivation is associated with the body directly, then it cannot be reused in another annotation. You couldn't target the body to comment about a spelling mistake. There would be different models for blank node resources and resources where those blank nodes have been assigned a URI.  That then means understanding why there are two models... and we're back to the same situation... except it's more likely that people will do it incorrectly by inferring from the blank node case that the same will work with URIs.


The critical question is, if these bodies are reused is it correct to say that they have a fixed role, i.e., "oa:commenting" and "oa:editing" respectively. I see nothing wrong with creating new literal resources with such attributes. Because these resources were created to fulfill these roles I would argue that the roles are intrinsic to the literal resources as I intended when I created them. Which does not stop someone else from using them as Targets in other annotations, e.g. to  annotate an error in the Literal or to propose a revision in the value of a Body. 


It does (should) stop someone else from trying to reuse these literals as Bodies of another annotation – but this (in my opinion) would be bad practice anyway.


When making an annotation, you should not assign a role directly to an existing resource that you are reusing as a body, but in this case the person creating the annotation is also creating the literal resource to use as a Body and should be allowed to create that literal resource with a fixed role, in my opinion.


-Tim Cole






Rob Sanderson

Information Standards Advocate

Digital Library Systems and Services

Stanford, CA 94305

Received on Tuesday, 4 August 2015 18:14:36 UTC