Last modified: 2001-04-04
Latest version:
http://ilrt.org/discovery/2001/04/annotations/
This document is an ongoing effort to describe different methods of modelling annotations in RDF. Comments and additional models very welcome.
An ongoing document.
Lots of people seem to want to describe annotations in RDF. This document describes some approaches.
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]):
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>
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]).
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].
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>
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" .
} .
[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