Skip to content

Requirements for core Annotation properties #2426

@azaroth42

Description

@azaroth42

In 4.0, we are importing the annotation properties to IIIF as the 3d work requires a lot of extensions and processing rules.

This means that we need to define the requirements for relationships like body, target, motivation, source, and so on. Some are easy, but these four are very inconsistent in the way they're used in Annotation documents.

The consistent route for their values would be:

body and target MUST be an array of JSON objects. Each item MUST have the type property.
source MUST be a JSON object with id and type.
motivation MUST be an array of strings.

Following the "if it can ever have multiple values then it is always an array" rule, and similarly that if it can ever be a JSON object then it should always be a JSON object rather than a shortcut to the object's id as a string.

However this will break almost all 3.0 Manifests, especially for target.

There are several routes forward:

  1. We can remain completely lax with the definitions and allow whatever comes (string, object, array of strings and/or objects)
  2. We can make the consistent way SHOULD with a note that a future version will make it MUST
  3. We can make it MUST with a note to client implementers to please be lenient in accepting other values
  4. We can just make a clean break and say MUST

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions