RDF Annotations

Last modified: 2001-04-04
Latest version: http://ilrt.org/discovery/2001/04/annotations/

Abstract

This document is an ongoing effort to describe different methods of modelling annotations in RDF. Comments and additional models very welcome.

Status of this document

An ongoing document.

Contents

Introduction

Lots of people seem to want to describe annotations in RDF. This document describes some approaches.

Black box content model

contributor
libby.miller@bristol.ac.uk

Used by Annotea [1]; see WWW9 presentation [2].

The idea here is that an annotation object is created with data about who made the annotation, when the annotation was made, and what the annotation is annotating (in Annotea's case, this can be an (html) xml document or part of that document). The content of the annotation is invisible to RDF and represented as an html snippet. An image of the model is below (from [2]):

the model of an annotation in Annotea as described above

RDF Black box content model

contributor
Bijan Parsia

This is similar to the Annotea model but the comment fragment is a literal rather than (x)html. It will probably be used at the RDF interest Group Chump [10] with an RSS 1.0 structure. For example

 
<chump:comment> 
  <rdf:Description rdf:about="http://rdfig.xmlhack.com/2001/03/29/2001-03-29.html#A1">
	<dc:author>edd</dc:author> 
	<dc:date>2001-04-02 18:01</dc:date>
	<chump:content>My pride and joy</chump:content> 
  </rdf:Description>
</chump:comment>

a depiction of the RDF black box model

Annotation as reification

contributor
libby.miller@bristol.ac.uk

This is illustrated in the RDF Model and Syntax Specification [3], [4], and was used in the Rudolf annotation software [5]. The idea is that an annotation is equivalent to a reification of a statement. Because reification enables you to make the stating of an RDF triple a first class resource, then the annotator can say anything about a resource, in RDF, and then attach 'creator' or somesuch predicate to the reified statement node to represent the creator of the annotation. An example image is below (from [4]).

annotation as
reification from the RDF M&S as described above

The problems with this are that (1) statings and statements problem? Under one interpretation of the RDF Model and Syntax, some annotations could inadvertently get smooshed together - see Jonas Liljegren's post to RDF Interest [7]. It is uncertain how much of a problem the latter is. Libby Miller attempted to summarize a lengthy discussion on RDF interest at [8]; and (2) it is unwieldy because it is reified and because to talk about a group of statements you need to put those reifications in a bag - see IMesh database for an example of this [6]. The diagram below comes from a similar structure for annotations used in the Medcertain project [9].

reified statemenets in a bag as used by the medcertain project

'Fake reification'

contributor
libby.miller@bristol.ac.uk

The idea is that as with the Annotea model the annotation is an object pointing to a resource as the subject of the annotation, but, as with the reification model, instead of the annotation being a 'black box', we create a content node, this time just with predicate/object pairs hung off it. So we say that the implicit subject of everything predicate-object pair coming out of the content node is the subject of the annotation. This is a lot easier to work with than the RDF reification annotation model.

This model does disambiguate one annotation and its author, date, etc from another. But the problem with this approach is that you will get triples whose subject is the anonymous content node and whose predicate and object refer to the thing annotated, so it looks as if, for example, the creator of the content node is Edd Dumbill, not the creator of the http://bla resource. You could write code which understands this model, but the model does not accurately describe that bijan says that Edd is the creator of http://bla, because it does not use the RDF reification mechanism. In fact in using this model you have created a different reification mechanism.


<Annotation>
    <annotates rdf:resource="htt://bla" />
      <annotator>
	<Person>
	   <nick>bijan</nick>
	</Person>
      </annotator>
    </annotates>
    <content>
      <Content>
       <dc:creator>Edd Dumbill</dc:creator>
      </Content>
    </content>
</Annotation>

a depiction of 'fake refication'

EARL annotations in N3

contributor
Sean Palmer sean@mysterylights.com

EARL is Evaluation And Repair Language [11] being developed by the W3C WAI ERT Group. EARL will describe machine and human readable results of evaluation of webpages according to WAI and other guidelines for accessibility. The current model does this as an annotation on the web page or page fragment. The example given here uses the N3 [12] notation for RDF. N3 uses the concept of a "context" to represent a group of statements; if a context were interpretted as a bag-like structure, then this model is very similar to the version of Annotation as reification when bags are used to group the statements, as above. The parsimonious N3 syntax makes writing down such annotations much more straightforward, although problems with triple-based querying mechanisms still exist.


@prefix myns: <http://myns.org/#> .  
@prefix rdfs: <http://www.w3.org/2001/01/rdf-schema#> . 
@prefix dc: <http://purl.org/dc/elements/1.1/> . 
 
<mailto:danield@w3.org> earl:when [ dc:date "2001/03/14" ];  
earl:platform [ :os "linux"], [ :browser "netscape 4.75" ];  
earl:asserts 
{  <http://example.org/page#img[3]> a earl:webContent; 
    earl:lastModified [ dc:date "2001/01/01" ]; 
    myns:snapshot <http://store.com/example.org/page#img[3]>; 
  earl:testResult [ earl:validity earl:fails; earl:confidence "high" ]; 
    rdfs:comment """ alt text provided is just filename
  http://w3.org/tr/wcag#cp1.1,
    according to the test suite provided www.cast.org/bobby """; 
    earl:testMode "manual"; 
    earl:expectedResult "presence of alt text describing function"  . 
}; 

earl:asserts 
{  <http://example.org/page#name> a earl:webContent; 
    earl:lastModified [ dc:date "2001/01/01" ]; 
    myns:snapshot <http://store.com/example.org/page#name>; 
  earl:testResult [ earl:validity earl:fails; earl:confidence "medium" ]; 
    rdfs:comment """use a font instead of h3
  http://w3.org/tr/wcag#cp2.1,
    according to the test suite provided www.cast.org/bobby """; 
    earl:testMode "manual"; 
    earl:expectedResult "use proper structure instead of style" . 
} . 

References

[1] Annotea
http://www.w3.org/2001/Annotea

[2] The W3C Collaborative Web Annotation Project ... or how to have fun while building an RDF infrastructure
http://www.w3.org/2000/Talks/www9-annotations/Overview.html

[3] RDF model and Syntax
"http://www.w3.org/TR/REC-rdf-syntax/

[4] RDF Model and Syntax Reification
http://www.w3.org/TR/REC-rdf-syntax/#higherorder

[5] Rudolf
http://www.ilrt.bris.ac.uk/discovery/2000/09/rudolf/

[6] IMesh DB
http://ilrt.org/discovery/2001/02/imeshdb/

[7] http://lists.w3.org/Archives/Public/www-rdf-interest/2000Nov/0264.html

[8] Statings and Statements
http://www.ilrt.bris.ac.uk/discovery/2000/11/statements/

[9] Medcertain annotations draft
http://www.medcertain.org/ilrt/annotation_prop.html

[10] RDF Interest Group Daily Chump
http://rdfig.xmlhack.com

[11] EARL
http://www.w3.org/2001/03/earl

[11] N3 Primer by Tim Berners-Lee
http://www.w3.org/2000/10/swap/Primer


libby.miller@bristol.ac.uk
April 2001