IIIF API Presentation

Dernière version de la spécification : http://iiif.io/api/presentation/2.1/

Source des images : IIIF Presentation API ; Copyright © 2012-2016 Editors and contributors. Published by the IIIF consortium under the CC-BY license, see disclaimer.

Objectifs et principes

L'objectif de la spécification IIIF API Presentation est de décrire une API destinée à délivrer de manière standardisée sur le Web les informations de présentation et de structure d'un objet numérique. Elle spécifie un service web qui renvoie au format JSON-LD les données nécessaires à la présentation de cet objet dans une interface web (par exemple un visualiseur d'images, ou tout autre environnement de travail autour des images numériques).

Précédemment appelée "Metadata API", la spécification a été rebaptisée "Presentation API" pour éviter toute confusion avec la notion de métadonnées documentaires. En effet les "métadonnées" décrites dans la spécification ne sont pas orientées vers la recherche ou la découverte de documents au sein d'une collection ou d'un corpus : elles sont à envisager uniquement du point de vue du rendu d'un objet numérique dans une interface et dans l'optique d'améliorer tout ce qui relève de l'expérience utilisateur :

  • afficher des images numériques d'un objet physique donné (livre, manuscrit, photographie, journal, objet muséal…),
  • naviguer au sein des pages ou surfaces de cet objet,
  • afficher du texte ou toute autre ressource associée à l'objet afin d'en permettre la compréhension ou l'analyse : informations descriptives sur l'objet représenté, mentions de droit et d'attribution, libellés pouvant aider la navigation (numéros de folio par ex.), transcription/traduction du texte.

L'API Presentation peut prendre en charge tout type d'objets numériques (fac-similé numérique d'objet physique ou objet composite nativement numérique). Un document annexe à la spécification dresse une liste indicative de cas d'usage qui ont présidé à son élaboration : http://iiif.io/api/presentation/usecases.html

Cette API fonctionne de manière conjointe avec Image API, la première traitant des aspects liés au rendu d'un objet numérique, la seconde portant sur la transmission et l'échange via le Web des images numériques qui le compose (grâce à une syntaxe d'URL normalisée).

L'API Presentation est conçue selon les principes du Linked Data (voir ci-dessous l'encart sur JSON-LD). Elle est intimement liée au modèle de données RDF Shared Canvas. Ce dernier permet de représenter à un niveau plus abstrait l'objet numérique à décrire et définit pour cela un ensemble de classes et de propriétés (ontologie). Il est basé sur le paradigme de l'annotation et constitue une application d'un modèle de données plus générique qu'est Open Annotation. L'API Presentation s'appuie sur les principales composantes de Shared Canvas pour structurer l'information : Manifest, Sequence, Canvas, Annotation. Elle est donc un dérivé de Shared Canvas, une sorte d'extension permettant d'implémenter le modèle dans la pratique et servir ainsi de base commune au développement d'outils.

La couche “API Presentation” ajoute au modèle Shared Canvas les éléments suivants :

  • un format de sérialisation RDF unique : JSON-LD
  • une structure hiérarchique simple de types de ressources (dérivée des classes et propriétés de Shared Canvas)
  • un ensemble de propriétés descriptives, techniques, de relations, et de droits et attribution (obligatoires, recommandées ou optionnelles, en fonction du type de ressource) : ces champs sont basés sur une analyse de cas d'usage et sur les expériences d'implémentation au sein de la communauté IIIF).
  • un ensemble de modèles d'URI recommandés pour les différents types de ressources

A propos de JSON-LD :

Vue d'ensemble de la spécification

Types de ressources primaires

L'API Presentation identifie trois types de ressources dites primaires :

  • Manifest : décrit la structure globale de l'objet numérique et des ressources associées nécessaires à son rendu. Il représente l'objet numérique lui-même et contient toutes les informations utiles à un visualiseur pour l'affichage de ce dernier.
  • Sequence : désigne l'ordre des vues au sein de l'objet (par ex. l'ordre des pages d'un fac-similé numérique de manuscrit). Des séquences multiples sont possibles.
  • Canvas : conteneur abstrait représentant une page ou vue particulière, et possédant un certain nombre de ressources associées à tout ou partie de celui-ci. C'est le cadre de référence utilisé pour représenter la structure d'une page et y rattacher d'autres ressources textuelles ou multimédias.
  • Content : ensemble des ressources informationnelles associées au Canvas (images, textes, sons…)

Schéma : relations et hiérarchie des types de ressources primaires (par IIIF, CC-BY)

Schéma : relations et hiérarchie des types de ressources primaires

Schéma : relations et hiérarchie de tous les types de ressources concernés par l'API Presentation (par IIIF, CC-BY)

Schéma : relations et hiérarchie de tous les types de ressources concernés par l'API Métadonnées

Dans la version 2.0 de la spécification, un type de ressource Collection a été ajouté : il fait office de conteneur au-dessus du Manifest et permet de décrire une hiérarchie d'objets (par ex. la collection à laquelle appartient un objet, celle-ci pouvant être structurée en plusieurs sous-collections).

Propriétés des ressources

La spécification définit un certain nombre de champs, réparties en quatre groupes :

  • propriétés descriptives (Descriptive)
  • propriétés relatives aux droits (Rights)
  • propriétés techniques (Technical)
  • propriétés de mise en relation (Linking)

Requêtes et réponses

L'API Presentation définit aussi des modèles d'URI recommandés pour chaque type de ressources (approche REST).

Tableau : résumé des modèles d'URI

Ressource Modèle d'URI
Collection {scheme}://{host}/{prefix}/collection/{name}
Manifest {scheme}://{host}/{prefix}/{identifier}/manifest
Sequence {scheme}://{host}/{prefix}/{identifier}/sequence/{name}
Canvas {scheme}://{host}/{prefix}/{identifier}/canvas/{name}
Annotation {scheme}://{host}/{prefix}/{identifier}/annotation/{name}
AnnotationList {scheme}://{host}/{prefix}/{identifier}/list/{name}
Range {scheme}://{host}/{prefix}/{identifier}/range/{name}
Layer {scheme}://{host}/{prefix}/{identifier}/layer/{name}
Content {scheme}://{host}/{prefix}/{identifier}/res/{name}.{format}

Fichiers d'exemple (Manifests JSON-LD)

Fichier de contexte JSON-LD : http://iiif.io/api/presentation/2/context.json

Manifests

Voir les manifests créés par Biblissima dans le cadre de différentes démos : https://github.com/biblissima/iiif-manifests-demo

Autres exemples :