Status: [2001-09-19] this document is obsolete. The Annotea Protocols document supercedes this one.
See also: requirements for storing annotations.
@@ how much of the XLink 'external linkbase' "protocol" can be reused for this purpose. Ans: not much, apparently. There doesn't seem to be a real "protocol" yet. We can transform the properties we have into full XLink properties but the result is larger due to everything being an XLink external locator.
@@ how much can we/do we care to leverage WEBDav for storing/ retrieving annotations.
To create a new annotation, the client posts a chunk of RDF to a selected annotation service:
POST /Annotation HTTP/1.1 Content-Length: Content-Type: application/rdf <r:RDF xmlns:r="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:a="http://www.w3.org/1999/xx/annotation-ns#" xmlns:d="http://purl.org/dc/elements/1.0/"> <r:Description> <r:type resource="http://www.w3.org/1999/xx/annotation-ns#Annotation"/> <r:type resource="http://www.w3.org/1999/xx/annotation-ns#Comment"/> <a:annotates r:resource="http://some.org/some/page.html"/> <a:context>#fragid</a:context> <d:creator>Ralph Swick</d:creator> <a:created>1999-10-14T12:10Z</a:created> <d:date>1999-10-14T12:10Z</d:date> <a:body> <r:Description/> </a:body> </r:Description> </r:RDF>
HTTP/1.1 201 Created Location: http://www.w3.org/Annotation/3ACF6D754 <r:RDF xmlns:r="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:a="http://www.w3.org/1999/xx/annotation-ns#" xmlns:d="http://purl.org/dc/elements/1.0/"> <r:Description about="http://www.w3.org/Annotation/3ACF6D754"> <r:type resource="http://www.w3.org/1999/xx/annotation-ns#Annotation"/> <r:type resource="http://www.w3.org/1999/xx/annotation-ns#Comment"/> <a:annotates r:resource="http://some.org/some/page.html"/> <a:context>#fragid</a:context> <d:creator>Ralph Swick</d:creator> <a:created>1999-10-14T12:10Z</a:created> <d:date>1999-10-14T12:10Z</d:date> <a:body resource="http://www.w3.org/Annotation/3ACF6D754text"/> </r:Description> </r:RDF>
@@ Is it necessary to return all the properties? Since the client knows what it has sent, it could be sufficient to reply with:
HTTP/1.1 201 Created Location: http://www.w3.org/Annotation/3ACF6D754 <r:RDF xmlns:r="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:a="http://www.w3.org/1999/xx/annotation-ns#"/> <r:Description about="http://www.w3.org/Annotation/3ACF6D754"> <a:body resource="http://www.w3.org/Annotation/3ACF6D754text"/> </r:Description> </r:RDF>
The value of the a:body property was posted as an anonymous resource. The annotation service generated a URI for this resource, so it is no longer anonymous. The URI is returned in the response so that the client can then PUT the annotation text:
PUT /Annotation/3ACF6D754text HTTP/1.1 Content-Length: Content-Type: text/html <html> <body> <p>This is an <em>important</em> concept.</p> </body> </html>
If the client does not wish to have a separate resource for the (text) body it can be stored as a literal in the first request:
POST /Annotation HTTP/1.1 Content-Length: Content-Type: application/rdf <r:RDF xmlns:r="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:a="http://www.w3.org/1999/xx/annotation-ns#" xmlns:d="http://purl.org/dc/elements/1.0/"> <r:Description> <r:type resource="http://www.w3.org/1999/xx/annotation-ns#Annotation"/> <r:type resource="http://www.w3.org/1999/xx/annotation-ns#Comment"/> <a:annotates r:resource="http://some.org/some/page.html"/> <a:context>#fragid</a:context> <d:creator>Ralph Swick</d:creator> <a:created>1999-10-14T12:10Z</a:created> <d:date>1999-10-14T12:10Z</d:date> <a:body>This is an important concept.</a:body> </r:Description> </r:RDF>
Note, however, that this method gives no way to attach a media type to the body of the annotation (Dan asserts that the media type of an RDF Literal is necessarily text/xml).
Here is one way to express a POST that creates two resources.
POST /Annotation HTTP/1.1 Content-Length: Content-Type: application/rdf <r:RDF xmlns:r="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:a="http://www.w3.org/1999/xx/annotation-ns#" xmlns:d="http://purl.org/dc/elements/1.0/"> <r:Description> <r:type resource="http://www.w3.org/1999/xx/annotation-ns#Annotation"/> <r:type resource="http://www.w3.org/1999/xx/annotation-ns#Comment"/> <a:annotates r:resource="http://some.org/some/page.html"/> <a:context>#fragid</a:context> <d:creator>Ralph Swick</d:creator> <a:created>1999-10-14T12:10Z</a:created> <d:date>1999-10-14T12:10Z</d:date> <a:body> <r:Description> <http:ContentType>text/html</http:ContentType> <http:ContentLength>2000</http:ContentLength> <http:Body r:parseType="Literal"> <html xmlns="http://www.w3.org/2000/xhtml"> <head> <title>an annotation</title> </head> <body> this is my annotation <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> </RDF> </body> </html> </http:Body> </r:Description/> </a:body> </r:Description> </r:RDF>
Results from Jose's Jan 2000 visit to be integrated later done 2000-04-13 Rev 1.17