Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Should partOf of a AnnotationPage be an array or object? #2322

Open
glenrobson opened this issue Nov 19, 2024 · 1 comment
Open

Should partOf of a AnnotationPage be an array or object? #2322

glenrobson opened this issue Nov 19, 2024 · 1 comment

Comments

@glenrobson
Copy link
Member

Original raised by @jptmoore on slack: https://iiif.slack.com/archives/C18FHBKAQ/p1731497378271299?thread_ts=1731491354.710519&cid=C18FHBKAQ

One of the recipes going to the TRC tomorrow is on Annotation Collections. In this receipe the partOf of an annotation page looks as follows:

"partOf": [
            {
              "id": "https://preview.iiif.io/cookbook/309-annotation-collections/recipe/0309-annotation-collection/anno_coll.json",
              "type": "AnnotationCollection",
              "label": {
                "en": [
                  "Newspaper layout markup"
                ]
              },
              "total": 8,
              "first": "https://preview.iiif.io/cookbook/309-annotation-collections/recipe/0309-annotation-collection/anno_p1.json",
              "last": "https://preview.iiif.io/cookbook/309-annotation-collections/recipe/0309-annotation-collection/anno_p2.json"
            }
          ],

and follows the IIIF guidance on partOf (https://iiif.io/api/presentation/3.0/#partof):

"The value must be an array of JSON objects. "

but the Web Annotation Model says (https://www.w3.org/TR/annotation-model/#model-35):

"The relationship between the Page and the Annotation Collection that it is part of.
Each Page SHOULD have a exactly 1 partOf relationship, with the value being either the IRI of the Collection or an object with some or all of the Collections properties, including at least its id."

As this is an AnnotationPage linking to a AnnotationCollection, which standard should we follow?

@azaroth42
Copy link
Member

The challenge:

  • ActivityStreams defines partOf as functional, meaning per AS: "Properties marked as being "Functional" can have only one value."
  • Web Annotation follows that model for pages/collections.
  • DC makes no cardinality assertions about isPartOf
  • IIIF Prezi3 says it must always be an array

We use partOf in places that probably should always be singular, especially annotation-page within annotation-collection -- it makes no sense for the page to be part of multiple collections as they're a side effect of partitioning a single conceptual list. But also in places where multiple is essential, such as the same manifest being partOf multiple collections.

There's no good option, but it seems to come down to:

  • Ignore the AS/Anno cardinality and always use an array for consistency (bad for interop outside of IIIF)
  • Acknowledge the inconsistency with partOf (bad for developers)
  • Introduce a different property for multiPartOf vs singlePartOf (also bad for developers, probably worse than the inconsistency)

Following the priority of constituencies from the W3C we would prioritize the users of the API, being IIIF developers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants