dlcs/elucidate-server

Expose previous versions of annotation to clients

Closed this issue · 2 comments

N.B. the W3C Web Annotation Model and the W3C Web Annotation Protocol explicitly do not support versioning, so there is no standard model for how to expose the existence of versions to any consuming client application.

Possible options (for discussion):

  1. Use dcterms:hasVersion (provided via an additional context) and store the URI for the version along with the modified/created date as part of the annotation.

  2. Use an existing model for versioning such as Memento:
    http://mementoweb.org/guide/howto/
    http://mementoweb.org/guide/quick-intro/
    http://mementoweb.org/guide/rfc/

N.B. full Memento support is a major task in itself. MVP memento might be to provide link headers to earlier versions, as per:
http://mementoweb.org/guide/howto/#ResourceVersions

Hi @mattmcgrattan,

I feel more inclined to support Memento for this than implementing something like dcterms:hasVersion, which I think would just contaminate the JSON body of an Annotation.

Implementing this functionality would also involve Elucidate exposing an extra endpoint where a client could retrieve prior versions of an Annotation. I would not expose this under the existing /w3c/.. and /oa/... endpoints, as I am of the opinion that these endpoints strictly implement the W3C and OA specifications respectively and should not contain "additional" functionality above and beyond.

Implemented in 1.4.0.