-
Notifications
You must be signed in to change notification settings - Fork 39
Project overview
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:
- Managing annotations: finding, obtaining, storing, publishing.
- (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.
- 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.
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.