Annotations and the Graph

My attraction to annotation is the promise of containers for referencing
and relating content.

The SpecificResource and its associated Selector classes accomplish the
task of fixing references to content (not just URLs).

Motivations accomplish the relating. The roles proposal expresses a desire
to do so even more granularly.

Motivations (and roles) makes the relation between body and target into an
object related to the annotation (or body). This succeeds in avoiding
publishing statements that explicitly involve the body and target as
subject and object of a statement, but leaves the relation between the body
and target to inference.

Possibly one of the most important semantic statements the annotation could
convey is not even in the graph!

That is all fine and well motivated (ha!), but there already exists the RDF
Schema reification vocabulary for conveying triples that are, for whatever
reason, kept initially out of the graph.

Consider a typical annotation use case, using rdfs:Statement,
oa:SpecificResource and schema:Comment:
http://json-ld.org/playground/#/gist/0185862e6812fd5a908e

Here, the only Web Annotation Data Model classes I've used are
SpecificResource and TextQuoteSelector. I chose "target" and "body" for
mapping context terms to highlight the similarity to our typical examples.

None of this is to argue that the Web Annotations Data Model needs to
constrain its vocabulary more. It's perfectly fine and great to instantiate
new vocabulary terms that are identical or similar to terms in existing
vocabularies like schema.org and fix them within a W3C spec.

For the extremely commonplace usage of annotation as targeted commenting,
putting <article, comment, body> into the graph would seem to be the
simplest thing.

I would like to avoid querying for comments on this article PLUS
annotations with the commenting motivation that have this article as their
target or the source of their specific target. Wow, that second part seems
needlessly complex compared to the first, doesn't it?

To remedy this, we could be more careful in defining our motivation terms
as rdf:Property instances that are meant to relate the bodies and targets
directly. The annotation is either a sub-class of rdfs:Statement or perhaps
it's a resource with a collection of one or more rdfs:Statement.

I could ingest annotations and reify the new triples they describe. I could
keep independent datasets, quads, named graphs, etc according to the the
non-Statement metadata the Annotation bears in order to keep collections
separate and non-conflicting, if I care to. Then I could make
straightforward queries.

Right now we can't do this because "oa:commenting" is not "oa:isCommentOn"
and we don't reify <body, motivation, target> at all. We are really unclear
about what the relationship is between bodies and targets, even in the role
proposal.

We are describing the annotation rather than using the annotation as a
vehicle to describe the world with attribution.

Received on Tuesday, 27 October 2015 20:12:16 UTC