Warning:
This wiki has been archived and is now read-only.

Annotating Resource-in-Context Proposals

From Open Annotation Community Group
Jump to: navigation, search

Problem: Provide an interpretive context for an annotation. An interpretive context is added when the producer expects the annotation to have useful meaning almost always only when the annotation target is considered in relation to the interpretive context.

Scenario: A blog allows visitors to comment on material posted as part of the blog, including images and videos referenced by the underlying HTML. These comments are annotations of the various resources used to build the visualization of the blog post: the HTML, the referenced images and videos, and any other materials brought in by the browser to create what the reader sees.

Comments made on a page should be shown only on that page, regardless of which resource the comment targets. However, it would be useful to be able to see comments about particular resources such as images or videos regardless of which page they were on when the comment was written.

Both options presented here require about the same number of additional triples to support adding oax:asReferencedBy for a set of annotations associated with the same interpretive context.

This document uses oax:asReferencedBy for now. Other names have been mentioned on the mailing list: oax:hasContext, oax:hasScope. Both of these seem to cause some confusion because the terms "Context" and "Scope" are overloaded and easily seen as meaning things such as embeddings or validity.

Option 1: Add a property to the annotation

This can be done with a property named such as 'oax:asReferencedBy'. This property should be attached to the target or body requiring the interpretive context since each target or body might have a different interpretive context. Adding this to the annotation instead of the target or body implies that all other resources are somehow meaningful only in relation to the interpretive context.

The target of oax:asReferencedBy uses all of the types of an OA(C) target (i.e., oa:SpecificResource for an embedding context that is more than a simple resource - for example, specifying a section of an HTML file).

Pros: Given an annotation with oax:asReferencedBy, we can find the context that informed the annotator when the annotation was made.

Examples:

(1) Annotating the MITH logo on the MITH front page:

 <Anno1> a oa:Annotation ;
   oa:hasBody <Body1> ;
   oa:hasTarget <SpTarget1> .
 
 <SpTarget1> a oa:SpecificResource ;
   oa:hasSource <http://mith.umd.edu/wp-content/themes/mithpressnew_1.5/images/logo_mith_skinny.png> ;
   oax:asReferencedBy <Context1> .
 
 <Context1> a oa:SpecificResource ;
   oa:hasSource <http://mith.umd.edu/> .
 
 <Body1> a oa:Body ;
   cnt:chars “Comment about logo on front page” .

(2) Annotating an image that appears multiple times on a page and we want one of them removed:

 <Anno1> a oa:Annotation ;
   oa:hasBody <Body1> ;
   oa:hasTarget <SpTarget1> .
 
 <SpTarget1> a oa:SpecificResource ;
   oa:hasSource <http://mith.umd.edu/wp-content/uploads/no-image-50x50.jpg> ;
   oax:asReferencedBy <Context1> .
 
 <Context1> a oa:SpecificResource ;
   oa:hasSource <http://mith.umd.edu/people/> ;
   oa:hasSelector <Selector1> .
 
 <Selector1> a oa:FragSelector ;
   rdf:value “post-3852” .
 
 <Body1> a oa:Body ;
   cnt:chars “Change this to a smily face.” .

(3) Annotating part of a timespan within a video shown on a webpage. The video is referenced by an element within an element with the id of "content". Not all of the triples needed for embedded content are shown since they aren't the point of discussion.

 <Anno1> a oa:Annotation ;
   oa:hasBody <Body1> ;
   oa:hasTarget <SpTarget1> .
 
 <Body1> a oa:Body ;
   cnt:chars "Change this to a smily face." .
 
 <SpTarget1> a oa:SpecificResource ;
   oa:hasSource <http://www.example.com/media/video.mpg> ;
   oa:hasSelector <CmpSelector1> ;
   oax:asReferencedBy <Context1> .
 
 <CmpSelector1> a oax:CompositeSelector ;
   oa:hasSelector <SVGSelector1> ;
   oa:hasSelector <FragSelector1> .
 
 <SVGSelector1> a oax:SvgSelector ;
   cnt:chars "<ellipse x='10' y='20' width='30' height='40' />" ;
   cnt:characterEncoding "utf-8" ;
   dc:type "text/svg+xml" .
 
 <FragSelector1> a oa:FragSelector ;
   rdf:value "t=npt:0,5" .
 
 <Context1> a oa:SpecificResource ;
   oa:hasSource <http://www.example.com/about> ;
   oa:hasSelector <FragSelector2> .
 
 <FragSelector2> a oa:FragSelector ;
   rdf:value "content"

Option 2: Create a set of annotations

Pros: Doesn’t add anything to an annotation, so annotation generation doesn’t have to change except at the aggregation level.

Cons: Given an annotation, we cannot determine the context in which the annotator made the annotation.

 <AnnoSet1> a ore:Aggregation ;
   ore:aggregates <Anno1> ;
   oax:asReferencedBy <Context1> .
 
 <Anno1> a oa:Annotation ;
   oa:hasBody <Body1> ;
   oa:hasTarget <SpTarget1> .
 
 <SpTarget1> a oa:SpecificResource ;
   oa:hasSource <http://mith.umd.edu/wp-content/themes/mithpressnew_1.5/images/logo_mith_skinny.png> ;
 
 <Body1> a oa:Body ;
   cnt:chars “Comment about logo on front page” .
 
 <Context1> a oa:SpecificResource ;
   oa:hasSource <http://mith.umd.edu/> .