Re: Q: how to encode annotation "roles"

And to reply to the multiple body problem:

On Wed, May 30, 2012 at 8:51 PM, Bob Morris <morris.bob@gmail.com> wrote:
> Jacco-
>
> My understanding of your #4 approach---which I would argue for among
> your suggestions--seems to run afoul of the  restriction of at most
> one Body in the current proposal. I argued against that restriction in
> the pre-public discussions as being needlessly closing the world.  The
> counter argument was that allowing multiple Bodies can lead to
> ambiguity in case there are also multiple Targets.  That is true, but
> it is a generic problem about associations of one part of a graph with
> another.

Yes, from an annotation-as-graph perspective, the restriction on 0-1
bodies is difficult to explain, however this is too broad for our
purposes.   Defining what an annotation is is already very tricky, if
there were multiple bodies it would be even more complicated if not
impossible.

Thus the restriction comes from the current definition of an
annotation -- a description of the relationship between a body
resource which is somehow about one or more other target resources.

We then introduce two special cases for ease of implementation:

* The no-body case, where there's a body implicit in the motivation.
Eg a simple bookmark doesn't need an explicit body with no content.
* the oax:hasSemanticTag case, which is a shortcut to allow tags to be
included along with a regular body.


> My position is that such ambiguity has several ways to
> resolve, and which choice can best be left to communities of practice
> or within an application.

For a regular application specific data model I would completely
agree, however we need to be careful to keep in mind that this data
model is expressly for the purpose of interoperability.  If
communities decide that they need to have multiple bodies and they
have a way to disambiguate the relationships between bodies and
targets, great! But until such time as there's a generic solution that
will cover the 90% rather than the 10%, we'd prefer to leave them out
of the interoperability specification.

The ambiguity, to be clear, is the coherence of the relationships
between the bodies and the targets.  A comment body and a tag body
have different relationships to a single target, for example and hence
the need to introduce the special case hasSemanticTag relationship.
So already we have a situation with two body-like things, with
different relationships to a single target.  This would become
unmanageable with multiple targets and multiple bodies of many
different types.

> A use case I offered is an Annotation that needs to have Bodies
> expressed in several natural languages (or for that matter, in several
> different domain terminologies), even for a single Target.

This can be covered in two different ways:

1.  A structured body, where the resource in the Body role has links
to the resources in different languages.  We use this approach in
Shared Canvas, which is based on Open Annotation:
    http://www.shared-canvas.org/datamodel/spec/#Choice

2.  As the different languages are all versions of the same thing,
just pick one of the resources as the default, and link the others to
it with an appropriate predicate (dcterms:hasFormat?)

Hope that helps explain the current thinking :)

Rob

Received on Thursday, 31 May 2012 21:48:58 UTC