Skip to content

Project overview

Gerben edited this page Apr 16, 2020 · 1 revision

This is a preliminary overview of the scope of the project, and is open to change

With Web Annotation systems, we often talk about at least three different aspects:

  1. Managing annotations: finding, obtaining, storing, publishing.
  2. (De)referencing selectors:
  • Describing a specific segment of a document to refer to it unambiguously, thus creating a selector.
  • Anchoring a selector on a given document, to find back the segment it points to.
  1. The human interface design for viewing and creating annotations.

These can be considered as orthogonal problems, asking for orthogonal solutions.

This project initially focusses on the second aspect, referencing & dereferencing, as this is a shared concern for many applications, and important to collaborate on to ensure applications’ interoperability. The other two mentioned aspects are more often dependent on an application’s specific design, the frameworks it uses, etcetera.

Referencing/Dereferencing selectors

This means that we create functions for transforming between selector (JSON) objects and some environment-specific object representing the specific segment of the document. In the case of an HTML DOM (our main focus), a segment would be a Range object.

The rough API may thus look like this:

anchorSelector({ document, selector }) => segment

createSelector({ document, segment }) => selector

As there are different types of selectors (e.g. TextQuoteSelector, CssSelector), there should be functions for each, which can be composed to create a function that can handle various types.

Clone this wiki locally