diff --git a/docs/api-image/demos-usages.md b/docs/api-image/demos-usages.md index cb2abce..ab2111a 100644 --- a/docs/api-image/demos-usages.md +++ b/docs/api-image/demos-usages.md @@ -24,7 +24,7 @@ Quelques exemples d'utilisation de l'API Image :
![NGA National Neighbours](img/nga_collections.png) -
National Neighbours (NGA, Washington)
+
National Neighbours (NGA, Washington)
diff --git a/docs/api-image/implementation.md b/docs/api-image/implementation.md index 38b64de..407e7eb 100644 --- a/docs/api-image/implementation.md +++ b/docs/api-image/implementation.md @@ -49,11 +49,13 @@ $ opj_compress -i [input_file] -o [output_file] -r 1 -n 7 -c [256,256],[256,256] $ opj_compress -i [input_file] -o [output_file] -r 8 -n 7 -c [256,256],[256,256],[256,256],[256,256],[256,256],[256,256],[256,256],[128,128] -t 512,512 -p RPCL -b 64,64 -SOP -EPH -TP R -PLT ``` +Voir un exemple de script de conversion en masse vers JPEG2000 : [https://github.com/regisrob/convert_jp2/](https://github.com/regisrob/convert_jp2/). + #### Pour TIFF Pyramidal Quelques librairies : -- [Libvips](https://www.libvips.org) (libre) +- [Libvips](https://www.libvips.org) - [libtiff](https://gitlab.com/libtiff/libtiff) - [ImageMagick](https://imagemagick.org) @@ -72,6 +74,8 @@ Voir aussi : - [Bodleian JPEG2000 Profile](https://image-processing.readthedocs.io/en/latest/jp2_profile.html) (Kakadu) - [serverless-iiif - Creating tiled TIFFs](https://github.com/samvera/serverless-iiif#creating-tiled-tiffs) +Pour une étude comparative de différents formats d'image et de libraires d'encodage/décodage, voir l'article : Robson G., Cossu S., Pillay R., Smith, M. D., [_Evaluating HTJ2K as a Drop-In Replacement for JPEG2000 with IIIF_](https://journal.code4lib.org/articles/17596), _Code4Lib_, Issue 57, 2023. + ## Types d'implémentation @@ -86,13 +90,14 @@ Parmi les serveurs d'images IIIF les plus répandus dans la communauté, on peut - [IIPImage](http://iipimage.sourceforge.net) (C++) - [Cantaloupe](https://cantaloupe-project.github.io) (Java) -Une alternative pour bénéficier de l'API Image est de recourir à une plateforme dédiée et proposée à titre gratuit ou payant par une institution ou un prestataire de services. Citons par exemple : +Une alternative pour bénéficier de l'API Image est de recourir à une plateforme tierce et proposée à titre gratuit ou payant par une institution ou un prestataire de services. Citons par exemple : - [Internet Archive](https://archive.org) - [IIIF Hosting](https://www.iiifhosting.com) (Klokan technologies GmbH) - [DLCS](https://dlcs.info) (Digirati) - [Nakala](https://www.nakala.fr) (IR* Huma-Num, CNRS) - [SharedCanvas.be](https://sharedcanvas.be) (UGent) +- [Zenodo](https://zenodo.org) (CERN) - et beaucoup d'autres [solutions d'éditeurs de logiciels](https://iiif.io/get-started/vendors/) ### Statique diff --git a/docs/api-image/index.md b/docs/api-image/index.md index 8e3184a..5f797b4 100644 --- a/docs/api-image/index.md +++ b/docs/api-image/index.md @@ -65,8 +65,8 @@ C'est dans ce contexte, au tournant des années 2010, que IIIF émerge. L'API Image de IIIF apporte : - * une syntaxe d'URL standard pour accéder aux images et les manipuler à distance - * assez d'informations techniques pour qu'un visualiseur puisse afficher ces images dans différents contextes + * une **syntaxe d'URL standard** pour accéder à une image et la manipuler à distance + * des **informations techniques sur l'image** pour qu'un visualiseur puisse l'afficher dans différents contextes * des URL d'images "bidouillables" par un humain * des URL facilitant la mise en cache diff --git a/docs/api-presentation/exemples-demos.md b/docs/api-presentation/exemples-demos.md index 8b11fc7..4eaeba3 100644 --- a/docs/api-presentation/exemples-demos.md +++ b/docs/api-presentation/exemples-demos.md @@ -1,30 +1,38 @@ # Exemples et démos -## Canevas (cas "complexes") -Voyons quelques exemples de Manifestes avancés dans lesquels la notion de Canevas prend tout son sens : +## Construction d'un Manifeste pas à pas + +A titre d'exemple, construisons manuellement un Manifeste IIIF afin d'en comprendre la structure et les différentes composantes. + +Manifeste d'exemple (version finale) : [manifest_demo.json](https://gist.githubusercontent.com/regisrob/92061c1c98f6eba75900bce30de7d24d/raw/5f8be194423dce4d53801f1bd123a40c4eb86329/manifest_demo.json) + + +## Manifestes "complexes" + +Voyons quelques exemples de Manifestes dans lesquels la notion de Canevas prend tout son sens : 1. Canevas vides (pages manquantes) : - - _Biblissima_: Reconstruction virtuelle d'un manuscrit dispersé (« Florus dispersus ») | [Page web](https://demos.biblissima.fr/florus/#florus-dispersus) -- [Manifeste JSON (v2)](https://demos.biblissima.fr/iiif/metadata/florus-dispersus/manifest.json) -- [Ouvrir dans Mirador](https://portail.biblissima.fr/m3/?theme=dark&context=collection&iiif-content=https://demos.biblissima.fr/iiif/metadata/florus-dispersus/manifest.json) + - _Biblissima_: Reconstruction virtuelle d'un manuscrit dispersé (« Florus dispersus ») | [Page web](https://demos.biblissima.fr/florus/#florus-dispersus) -- [Manifeste JSON (v2)](https://demos.biblissima.fr/iiif/metadata/florus-dispersus/manifest.json) -- [Ouvrir dans Mirador](https://portail.biblissima.fr/m3/?theme=dark&iiif-content=https://demos.biblissima.fr/iiif/metadata/florus-dispersus/manifest.json) 2. Un Canevas, plusieurs images (fragment) : - - _Biblissima_ : Reconstruction virtuelle (partielle) d'un manuscrit mutilé (Châteauroux, BM, ms. 5) | [Page web](https://demos.biblissima.fr/chateauroux/) -- [Manifeste JSON (v2)](https://demos.biblissima.fr/iiif/metadata/BVMM/chateauroux/manifest.json) -- [Ouvrir dans Mirador](https://portail.biblissima.fr/m3/?theme=dark&context=collection&iiif-content=https://demos.biblissima.fr/iiif/metadata/BVMM/chateauroux/manifest.json) + - _Biblissima_ : Reconstruction virtuelle (partielle) d'un manuscrit mutilé (Châteauroux, BM, ms. 5) | [Page web](https://demos.biblissima.fr/chateauroux/) -- [Manifeste JSON (v2)](https://iiif.biblissima.fr/chateauroux/B360446201_MS0005/manifest.json) -- [Ouvrir dans Mirador](https://portail.biblissima.fr/m3/?theme=dark&iiif-content=https://iiif.biblissima.fr/chateauroux/B360446201_MS0005/manifest.json) ![Schéma démo Châteauroux](img/api-presentation-canvas-chateauroux.png) 3. Un Canevas, plusieurs images (images multispectrales) + annotations textuelles : - - _Library of Congress_ : Lettre numérisée par imagerie hyperspectrale, avec affichage de la transcription du texte et des différentes couches d'image | [Manifeste JSON (v2)](https://dvp.prtd.app/hamilton/manifest.json) -- [Ouvrir dans Mirador](https://portail.biblissima.fr/m3/?theme=dark&context=collection&iiif-content=https://dvp.prtd.app/hamilton/manifest.json) + - _Library of Congress_ : Lettre numérisée par imagerie hyperspectrale, avec affichage de la transcription du texte et des différentes couches d'image | [Manifeste JSON (v2)](https://dvp.prtd.app/hamilton/manifest.json) -- [Ouvrir dans Mirador](https://portail.biblissima.fr/m3/?theme=dark&iiif-content=https://dvp.prtd.app/hamilton/manifest.json) 4. Un Canevas, plusieurs images (rabat, élément dépliable) : - - _Durham University_ : Page de manuscrit avec rabat | [Page web](https://iiif.durham.ac.uk/index.html?manifest=t1mz029p473h&canvas=t1t05741s32v) -- [Manifeste JSON (v2)](https://iiif.durham.ac.uk/manifests/trifle/32150/t1/mz/02/t1mz029p473h/manifest) -- [Ouvrir dans Mirador](https://portail.biblissima.fr/m3/?theme=dark&context=collection&iiif-content=https://iiif.durham.ac.uk/manifests/trifle/32150/t1/mz/02/t1mz029p473h/manifest) + - _Durham University_ : Page de manuscrit avec rabat | [Page web](https://iiif.durham.ac.uk/index.html?manifest=t1mz029p473h&canvas=t1t05741s32v) -- [Manifeste JSON (v2)](https://iiif.durham.ac.uk/manifests/trifle/32150/t1/mz/02/t1mz029p473h/manifest) -- [Ouvrir dans Mirador](https://portail.biblissima.fr/m3/?theme=dark&iiif-content=https://iiif.durham.ac.uk/manifests/trifle/32150/t1/mz/02/t1mz029p473h/manifest) 5. Un Canevas annoté avec du texte : - - _Bodleian Library, Oxford_ : Manuscrit arabe illustré, portant de nombreuses annotations IIIF de formes diverses (voir fols. 2b and 3a) | [Page web](https://digital.bodleian.ox.ac.uk/objects/748a9d50-5a3a-440e-ab9d-567dd68b6abb/) -- [Manifeste JSON (v2)](https://iiif.bodleian.ox.ac.uk/iiif/manifest/748a9d50-5a3a-440e-ab9d-567dd68b6abb.json) -- [Ouvrir dans Mirador](https://portail.biblissima.fr/m3/?theme=dark&context=collection&iiif-content=https://iiif.bodleian.ox.ac.uk/iiif/manifest/748a9d50-5a3a-440e-ab9d-567dd68b6abb.json) + - _Bodleian Library, Oxford_ : Manuscrit arabe illustré, portant de nombreuses annotations IIIF de formes diverses (voir fols. 2b and 3a) | [Page web](https://digital.bodleian.ox.ac.uk/objects/748a9d50-5a3a-440e-ab9d-567dd68b6abb/) -- [Manifeste JSON (v2)](https://iiif.bodleian.ox.ac.uk/iiif/manifest/748a9d50-5a3a-440e-ab9d-567dd68b6abb.json) -- [Ouvrir dans Mirador](https://portail.biblissima.fr/m3/?theme=dark&iiif-content=https://iiif.bodleian.ox.ac.uk/iiif/manifest/748a9d50-5a3a-440e-ab9d-567dd68b6abb.json) ## Collections @@ -41,18 +49,18 @@ Quelques exemples d'usages variés des Collections IIIF : 3. Une collection ancienne de manuscrits : - - _Biblissima_ : une Collection générée dynamiquement regroupant des Manifestes de plusieurs bibliothèques (bibliothèque médiévale dispersée) | [Page web](https://portail.biblissima.fr/fr/ark:/43093/coldata5151005ea5833e5a05e2639cbb210946cb7e0609) -- [Collection JSON (v2)](https://portail.biblissima.fr/iiif/collection/ark:/43093/coldata5151005ea5833e5a05e2639cbb210946cb7e0609) -- [Ouvrir dans Mirador](https://portail.biblissima.fr/m3/?theme=dark&context=collection&iiif-content=https://portail.biblissima.fr/iiif/collection/ark:/43093/coldata5151005ea5833e5a05e2639cbb210946cb7e0609) + - _Biblissima_ : une Collection générée dynamiquement regroupant des Manifestes de plusieurs bibliothèques (bibliothèque médiévale dispersée) | [Page web](https://portail.biblissima.fr/fr/ark:/43093/coldata5151005ea5833e5a05e2639cbb210946cb7e0609) -- [Collection JSON (v2)](https://portail.biblissima.fr/iiif/collection/ark:/43093/coldata5151005ea5833e5a05e2639cbb210946cb7e0609) -- [Ouvrir dans Mirador](https://portail.biblissima.fr/m3/?theme=dark&iiif-content=https://portail.biblissima.fr/iiif/collection/ark:/43093/coldata5151005ea5833e5a05e2639cbb210946cb7e0609) 4. Un ensemble de témoins manuscrits portant des oeuvres de l'érudit anglais du 13e siècle Robert Grosseteste : - - _Biblissima_ : une Collection générée à partir d'une sélection faite parmi une liste de résultats du moteur IIIF-Collections | [Page web](https://iiif.biblissima.fr/collections/mirador?collection=https://iiif.biblissima.fr/collections/collection/6374e2e7204ef403870f00f2) -- [Collection JSON (v2)](https://iiif.biblissima.fr/collections/collection/6374e2e7204ef403870f00f2) -- [Ouvrir dans Mirador](https://portail.biblissima.fr/m3/?theme=dark&context=collection&iiif-content=https://iiif.biblissima.fr/collections/collection/6374e2e7204ef403870f00f2) + - _Biblissima_ : une Collection générée à partir d'une sélection faite parmi une liste de résultats du moteur IIIF-Collections | [Page web](https://iiif.biblissima.fr/collections/mirador?collection=https://iiif.biblissima.fr/collections/collection/6374e2e7204ef403870f00f2) -- [Collection JSON (v2)](https://iiif.biblissima.fr/collections/collection/6374e2e7204ef403870f00f2) -- [Ouvrir dans Mirador](https://portail.biblissima.fr/m3/?theme=dark&iiif-content=https://iiif.biblissima.fr/collections/collection/6374e2e7204ef403870f00f2) ## Manifestes "remix" -1. Biblissima - Collection d'enluminures portant une représentation de comètes : [Page web](https://portail.biblissima.fr/ark:/43093/descdbf571c2dcac868496312bf36d449401e4ac0af4) -- [Manifeste JSON (v2)](https://portail.biblissima.fr/iiif/manifest/ark:/43093/descdbf571c2dcac868496312bf36d449401e4ac0af4) -- [Ouvrir dans Mirador](https://portail.biblissima.fr/m3/?theme=dark&context=collection&iiif-content=https://portail.biblissima.fr/iiif/manifest/ark:/43093/descdbf571c2dcac868496312bf36d449401e4ac0af4) +1. Biblissima - Collection d'enluminures portant une représentation de comètes : [Page web](https://portail.biblissima.fr/ark:/43093/descdbf571c2dcac868496312bf36d449401e4ac0af4) -- [Manifeste JSON (v2)](https://portail.biblissima.fr/iiif/manifest/ark:/43093/descdbf571c2dcac868496312bf36d449401e4ac0af4) -- [Ouvrir dans Mirador](https://portail.biblissima.fr/m3/?theme=dark&iiif-content=https://portail.biblissima.fr/iiif/manifest/ark:/43093/descdbf571c2dcac868496312bf36d449401e4ac0af4) -2. Biblissima - Collection d'enluminures issue d'une requête combinant les termes « Planète » et « Cosmographie » : [Page web](https://portail.biblissima.fr/fr/iconography) -- [Manifeste JSON (v2)](https://portail.biblissima.fr/iiif/manifest?descriptors=AND|569c70bc8f3f52b8966895b97ace86644dca444a,AND|86e65567ec9ac97ea2404af46cafa34d6f4920e7) -- [Ouvrir dans Mirador](https://portail.biblissima.fr/m3/?theme=dark&context=collection&iiif-content=https://portail.biblissima.fr/iiif/manifest?descriptors=AND|569c70bc8f3f52b8966895b97ace86644dca444a,AND|86e65567ec9ac97ea2404af46cafa34d6f4920e7) +2. Biblissima - Collection d'enluminures issue d'une requête combinant les termes « Planète » et « Cosmographie » : [Page web](https://portail.biblissima.fr/fr/iconography) -- [Manifeste JSON (v2)](https://portail.biblissima.fr/iiif/manifest?descriptors=AND|569c70bc8f3f52b8966895b97ace86644dca444a,AND|86e65567ec9ac97ea2404af46cafa34d6f4920e7) -- [Ouvrir dans Mirador](https://portail.biblissima.fr/m3/?theme=dark&iiif-content=https://portail.biblissima.fr/iiif/manifest?descriptors=AND|569c70bc8f3f52b8966895b97ace86644dca444a,AND|86e65567ec9ac97ea2404af46cafa34d6f4920e7) ## Manifestes audio/vidéo diff --git a/docs/api-presentation/exercices.md b/docs/api-presentation/exercices.md index dbe823c..2c80723 100644 --- a/docs/api-presentation/exercices.md +++ b/docs/api-presentation/exercices.md @@ -1,16 +1,35 @@ -# Exercices pratiques +# Exercices -## 1. Identifier et sélectionner des ressources IIIF +## 1. Test -Vous trouverez ci-dessous une liste non-exhaustive de sites qui proposent des objets numérisés compatibles avec IIIF (bibliothèques, archives, musées, agrégateurs). Les sites affichant clairement leur conformité et donnant accès aux Manifestes ont été privilégiés. +!!! tip "Questions" + + 1. **Ouvrir le Manifeste suivant :** [https://lbiiif.riksarkivet.se/arkis!R0002063/manifest](https://lbiiif.riksarkivet.se/arkis!R0002063/manifest) + 1. Quelle est l'URL du service API Image de l'unique Canevas de ce Manifeste ? + 2. Quelle est la particularité de l'implémentation de ce service API Image ? + + 2. **Ouvrir le Manifeste suivant :** [https://ramp.avalonmediasystem.org/manifests/prod/lunchroom_manners.json](https://ramp.avalonmediasystem.org/manifests/prod/lunchroom_manners.json) + 1. Quelle est l'URL du fichier vidéo référencé dans l'unique Canevas de ce Manifeste ? + 2. Quelle est la particularité du "body" de cette annotation ? + 3. Comment cela se traduit-il dans l'interface du visualiseur [Clover](https://samvera-labs.github.io/clover-iiif/docs/viewer/demo?iiif-content=https://ramp.avalonmediasystem.org/manifests/prod/lunchroom_manners.json) ? Observer la différence avec l'interface de [Ramp](https://ramp.avalonmediasystem.org/?iiif-content=https://ramp.avalonmediasystem.org/manifests/prod/lunchroom_manners.json). + + 3. **Tester le Manifeste suivant** (version 2.1) dans le [validateur officiel](https://presentation-validator.iiif.io) de l'API Présentation : [https://archives.lamayenne.fr/archives-en-ligne/iiif/ark:/37963/r314582ww55k/manifest.json](https://archives.lamayenne.fr/archives-en-ligne/iiif/ark:/37963/r314582ww55k/manifest.json) + 1. [Ouvrir ce Manifest dans Mirador](https://portail.biblissima.fr/m3/?theme=light&iiif-content=https://archives.lamayenne.fr/archives-en-ligne/iiif/ark:/37963/r314582ww55k/f1/manifest.json). Quelle pourrait être la source du problème ? + + 4. **Ouvrir le Manifest suivant :** [https://figgy.princeton.edu/manifests/d58761ca-d7c3-4276-97f3-fe7e437b1af0/v3](https://figgy.princeton.edu/manifests/d58761ca-d7c3-4276-97f3-fe7e437b1af0/v3) + 1. Quels fichiers de métadonnées structurées est-il possible de récupérer via ce Manifeste ? + + +## 2. Identifier et sélectionner des ressources IIIF + +Vous trouverez ci-dessous une liste de sites qui proposent des objets numérisés compatibles avec IIIF (bibliothèques, archives, musées, agrégateurs). Les sites affichant clairement leur conformité et donnant accès aux Manifestes ont été privilégiés. !!! tip "Consignes" 1. Parcourir quelques sites ci-dessous et conserver dans des onglets séparés les différentes pages ouvertes - - Vous pouvez rechercher des objets qui vous intéressent parmi ces sites, ou pour aller plus vite vous pouvez aussi cliquer sur les exemples donnés dans la liste. Pour accroître l'intérêt des ateliers, vous pouvez rechercher des documents qu'il ferait sens de comparer ou de réunir ensemble. - - Essayer de mettre de côté des objets de différentes natures et issus de plusieurs collections. + - Vous pouvez rechercher des objets qui vous intéressent parmi ces sites, ou pour aller plus vite vous pouvez aussi cliquer sur les exemples donnés dans la liste. 2. Copier quelques URL de Manifestes dans le pad partagé ou dans un fichier texte sur votre ordinateur (au moins 3 ou 4 si possible) - - Astuce : l'URL du Manifeste est parfois présente dans la partie métadonnées, parfois située ailleurs dans la page (souvent "cachée" derrière le logo IIIF) + - Astuce : l'URL du Manifeste est parfois présente dans une section "métadonnées", parfois située ailleurs dans la page (souvent "cachée" derrière le logo IIIF) ### Liste d'entrepôts IIIF @@ -18,6 +37,7 @@ Vous trouverez ci-dessous une liste non-exhaustive de sites qui proposent des ob - [Biblissima IIIF-Collections](https://iiif.biblissima.fr/collections/) ([exemple](https://iiif.biblissima.fr/collections/manifest/ff0b1858186147611a78292d57f1f1537c6e6df3)) - [Portail Biblissima](https://portail.biblissima.fr) ([exemple](https://portail.biblissima.fr/fr/ark:/43093/descdbf571c2dcac868496312bf36d449401e4ac0af4)) +- [FranceArchives](https://francearchives.gouv.fr) ([exemple](https://francearchives.gouv.fr/fr/facomponent/25703128b0cc973ba68db6f938388cf104f3bad9)) - [HeidICON](https://heidicon.ub.uni-heidelberg.de/search) ([exemple](https://heidicon.ub.uni-heidelberg.de/detail/762656)) - [Qatar Digital Library](https://www.qdl.qa/en/search/site/?f%255B0%255D=document_source%3Aarchive_source) ([exemple](https://www.qdl.qa/en/archive/81055/vdc_100027090276.0x000004)) @@ -27,10 +47,9 @@ Vous trouverez ci-dessous une liste non-exhaustive de sites qui proposent des ob - [Bayerische StaatsBibliothek, Munich](https://www.digitale-sammlungen.de/en/) ([exemple](https://www.digitale-sammlungen.de/en/view/bsb00003881?page=,1)) - [Bodleian Libraries, Oxford](https://digital.bodleian.ox.ac.uk) ([exemple](https://digital.bodleian.ox.ac.uk/objects/faeff7fb-f8a7-44b5-95ed-cff9a9ffd198)) - [e-codices - Virtual Manuscript Library of Switzerland](https://e-codices.ch) ([exemple](https://e-codices.ch/en/searchresult/list/one/fmb/cb-0007)) -- [Cambridge University Library](https://cudl.lib.cam.ac.uk) ([exemple](https://cudl.lib.cam.ac.uk//iiif/MS-LEWIS-00001)) +- [Cambridge University Library](https://cudl.lib.cam.ac.uk) ([exemple](https://cudl.lib.cam.ac.uk/view/MS-ADD-03965/1)) - [Durham University and Cathedral Library](https://collections.durham.ac.uk) ([exemple](https://iiif.durham.ac.uk/index.html?manifest=t1mk930bx00d)) - [Harvard University](https://library.harvard.edu/digital-collections) ([exemple](https://curiosity.lib.harvard.edu/immigration-to-the-united-states-1789-1930/catalog/39-HUAM11324soc_urn-3:HUAM:OCP14752_dynmc)) -- [Bibliotheca Hertziana, Max-Planck-Institut für Kunstgeschichte, Rom · Fotothek](https://foto.biblhertz.it/exist/foto/search.html) ([exemple](https://foto.biblhertz.it/exist/foto/object.xql?id=08051840,T,001)) #### Musées @@ -55,14 +74,13 @@ Vous trouverez ci-dessous une liste non-exhaustive de sites qui proposent des ob - [Archives fédérales suisses](https://www.chgov.bar.admin.ch) ([exemple](https://www.chgov.bar.admin.ch/protocol?manifest=https://api.chgov.bar.admin.ch/manifests/32322135/32322135.json)) - [Archives départementales des Deux-Sèvres et de la Vienne](https://archives-deux-sevres-vienne.fr) ([exemple](https://archives-deux-sevres-vienne.fr/ark:/28387/vta563c56f414a055ae/daogrp/0/1)) - [Dublin City Library and Archive](https://www.virtualtreasury.ie) ([exemple](https://www.virtualtreasury.ie/item?isadgReferenceCode=DCLA%20Royal%20Charters%2F41)) -- [Persée - Les archives parlementaires](https://archives-parlementaires.persee.fr) ([exemple](https://archives-parlementaires.persee.fr/doc/f4b55579-d0c5-4450-9173-09cff31949a6)) D'autres listes d'entrepôts IIIF : - [https://iiif.io/guides/finding_resources/](https://iiif.io/guides/finding_resources/) - [https://dnoneill.github.io/annotate/getIIIFresources/](https://dnoneill.github.io/annotate/getIIIFresources/) -## 2. Prise en main de Mirador +## 3. Prise en main de Mirador Mirador est un visualiseur d'images configurable, extensible et facile à intégrer, qui permet d'annoter et de comparer des images provenant de différents entrepôts IIIF. Plus d'informations sur [projectmirador.org](https://projectmirador.org/). @@ -73,19 +91,17 @@ Nous allons utiliser **l'instance Mirador du Portail Biblissima** : !!! tip "Consignes" - 1. **Importer au moins 2 ou 3 Manifestes** de votre choix parmi ceux sélectionnés lors de l'exercice précédent. - 2. **Créer un environnement multi-fenêtres** : - - Expérimenter les deux types d'espaces de travail "Elastique" et "Mosaïque" - - Explorer les différents panneaux disponibles (informations, index, droits) et les options de fenêtre (modes d'affichage) + 1. **Importer dans Mirador au moins 2 ou 3 Manifestes** de votre choix parmi ceux sélectionnés lors de l'exercice précédent. + 2. **Créer un environnement multi-fenêtres (mode comparaison)** : + - Expérimenter les deux types d'espaces de travail "Elastique" et "Mosaïque" (icône "roue dentée" dans la barre de menu à gauche) + - Explorer les différents panneaux disponibles (informations, index, droits) et les options disponibles au niveau d'une fenêtre individuelle 3. **Modifier les réglages d'une image** (luminosité, contraste, saturation, rotation etc.) - 4. **Utiliser la fonction de téléchargement** (icône en forme de trois petits points verticaux au niveau d'une fenêtre) : - - télécharger une image entière - - télécharger un détail au sein d'une image (région zoomée) + 4. **Utiliser la fonction de téléchargement** (icône "flèche vers le bas") 5. **Importer d'autres ressources IIIF dans votre espace de travail** : - une image de votre ordinateur (glisser-déposer l'image dans la fenêtre Mirador) - - à partir d'un logo IIIF depuis l'un des sites suivants : Getty, NGA, Princeton Art Museum, Harvard Art Museums, Yale Center for British Art, Biblissima + - à partir de l'un des sites suivants : Getty, National Gallery of Art, Princeton Art Museum, Harvard Art Museums, Yale Center for British Art, Biblissima 6. **Importer/exporter votre session Mirador** : - dans la barre de menu principal (à gauche), cliquer sur l'icône avec les trois petits points horizontaux - cliquer sur _Exporter l'espace de travail_ puis _Copier_ - - recharger la page, ou bien ouvrir un Mirador vide dans un nouvel onglet ou un autre navigateur - - cliquer sur _Importer un espace de travail_, puis coller dans la fenêtre vide, et faire _Importer_ + - recharger la page, ou bien ouvrir un Mirador vide dans un nouvel onglet ou dans un autre navigateur + - cliquer sur _Importer un espace de travail_, puis faire un "coller" (Ctrl+V) dans la fenêtre vide, et cliquer sur _Importer_ diff --git a/docs/api-presentation/implementation.md b/docs/api-presentation/implementation.md index 75f9894..4ba827b 100644 --- a/docs/api-presentation/implementation.md +++ b/docs/api-presentation/implementation.md @@ -8,18 +8,17 @@ Il n'y a pas de recette unique ou de méthode universellement applicable pour cr Dans la plupart des cas, un Manifeste résulte de la combinaison de plusieurs types d'informations (qui peuvent potentiellement provenir de systèmes ou de sources différentes) : -- **des images IIIF accessibles** -- **un ensemble de métadonnées descriptives** de l'objet, dérivé par exemple d'une notice catalographique, d'un instrument de recherche, d'un enregistrement dans une base de données ou un fichier quelconque +- **des images IIIF accessibles via l'API Image** +- **un ensemble de métadonnées descriptives** de l'objet, dérivées par exemple d'une notice catalographique, d'un instrument de recherche, d'un enregistrement dans une base de données ou d'un fichier quelconque - **des informations de séquence et de structure** de l'objet numérique : en premier lieu la liste ordonnée des images qui le constitue, avec leurs identifiants et leurs dimensions en pixels. -Ces métadonnées nécessaires à la génération d'un Manifeste peuvent être structurées dans différents formats source (METS/MODS, XML-TEI, XML-EAD, tableur type CSV, base de données relationnelle etc.). +Ces informations nécessaires à la génération d'un Manifeste peuvent être structurées dans différents formats source (METS/MODS, XML-TEI, XML-EAD, tableur type CSV, base de données relationnelle etc.). Un Manifeste IIIF est le plus souvent généré de façon dynamique par un outil plus large : système de gestion d'actifs numériques (DAM), système de gestion de contenus (CMS), système de gestion de collections etc. Une [liste d'outils et plateformes compatibles](https://iiif.io/get-started/vendors/) est disponible sur le site de IIIF. -Une alternative à ces systèmes (en majorité propriétaires) est de générer soi-même ses Manifests, en fonction des données et des moyens disponibles. Il existe un certain nombre de librairies qui peuvent aider dans ce processus, comme par exemple : +Une alternative à ces systèmes (en majorité propriétaires) est de générer soi-même ses Manifests, en fonction des données et des moyens disponibles. Il existe quelques librairies qui peuvent aider dans ce processus, comme par exemple : - [biiif](https://github.com/edsilv/biiif/), qui permet de générer des Manifests à partir d'une simple arborescence de fichiers et de dossiers organisés selon une certaine convention. -- [demetsiiify](https://github.com/jbaiter/demetsiiify), un web service pour créer des Manifests à partir de fichiers METS/MODS. - et [d'autres librairies](https://github.com/IIIF/awesome-iiif/#presentation-api-libraries), codées dans différentes langages, qui facilitent la génération de Manifestes (mais ce ne sont pas des outils "clés en main"). Quel que soit l'outil ou la librairie utilisée, un Manifeste peut très bien être pré-généré en amont et stocké comme un simple fichier JSON sur un serveur Web classique. Nulle nécessité d'avoir un système complexe de génération à la volée, de stockage en base de données etc. @@ -33,7 +32,7 @@ On peut citer notamment le [IIIF Manifest Editor](https://digital.bodleian.ox.ac ## Lien avec l'API Image -L'API Présentation est le plus souvent utilisée conjointement à l'API Image. +L'API Présentation est le plus souvent utilisée conjointement avec l'API Image. En termes d'implémentation, le fait de coupler les deux API implique d'être capable, lors de la génération des Manifestes, d'établir le lien entre une vue au sein de l'objet (Canevas) et le service API Image de l'image correspondante. @@ -46,7 +45,7 @@ Prenons l'exemple du portail [Paris Musées](https://www.parismuseescollections. - _Carte géologique de la ville de Paris_ | [Page web](https://www.parismuseescollections.paris.fr/fr/musee-carnavalet/oeuvres/carte-geologique-de-la-ville-de-paris-inspection-generale-des-carrieres) -- [Manifeste JSON (v2)](https://apicollections.parismusees.paris.fr/iiif/320296507/manifest) -- [Ouvrir dans Mirador](https://portail.biblissima.fr/m3/?theme=light&iiif-content=https://apicollections.parismusees.paris.fr/iiif/320296507/manifest) - _Le Figaro Illustré. Exposition Universelle de 1900_ | [Page web](https://www.parismuseescollections.paris.fr/fr/petit-palais/oeuvres/le-figaro-illustre-exposition-universelle-de-1900-0) -- [Manifeste JSON (v2)](https://apicollections.parismusees.paris.fr/iiif/160040011/manifest) -- [Ouvrir dans Mirador](https://portail.biblissima.fr/m3/?theme=light&iiif-content=https://apicollections.parismusees.paris.fr/iiif/160040011/manifest) -En ouvrant dans Mirador le 2e exemple, on constate que l'affichage des vignettes est lent et que globalement toutes les images mettent du temps à se charger. Cela est dû au fait que, à défaut de pouvoir interagir avec l'API Image, Mirador est obligé de télécharger à chaque fois l'image pleine taille (qui peut aller jusqu'à plusieurs Mo). +En ouvrant dans Mirador le 2e exemple, on constate que l'affichage des vignettes est lent et que globalement toutes les images mettent du temps à se charger. Cela est dû au fait que, à défaut de pouvoir interagir avec l'API Image, Mirador est obligé de télécharger à chaque fois l'image pleine taille (qui peut aller jusqu'à plusieurs Mo), y compris pour afficher les vignettes dans la vue mosaïque. ## Bonnes pratiques @@ -55,12 +54,15 @@ Pour terminer cette partie, énumérons quelques bonnes pratiques à respecter e 1. fournir si possible l'API Image en complément de l'API Présentation (question de performance et de fonctionnalités étendues). 2. mettre en place des URI stables pour toutes les ressources IIIF, à tous les niveaux (tous les `@id` ou `id`) : `Manifest`, `Canvas`, `Annotation`, `Content` (images etc.) -3. inclure un maximum de métadonnées descriptives dans les propriétés idoines du Manifeste (en particulier dans `metadata`). Ces informations doivent "voyager" avec l'objet et pouvoir être affichées à l'utilisateur quel que soit le contexte dans lequel il le visualise ou l'application dans lequel il l'a importé. -4. toujours pointer vers la page de l'objet sur le site d'origine, pour permettre à l'utilisateur de rebondir vers la page de la notice ou vers le visualiseur (propriétés `related` ou `homepage`) +3. inclure un maximum de métadonnées descriptives dans les propriétés idoines du Manifeste (dans `metadata`, mais pas seulement). Ces informations doivent "voyager" avec l'objet et pouvoir être affichées à l'utilisateur quel que soit le contexte dans lequel il le visualise ou l'application dans lequel il l'a importé. +4. toujours pointer vers la page de l'objet sur le site d'origine, pour permettre à l'utilisateur de rebondir vers la page de la notice ou vers le visualiseur (propriétés v2 `related` ou v3 `homepage`) 5. fournir via la propriété `seeAlso` un lien vers des métadonnées structurées, dans l’idéal conformes à un standard reconnu (Dublin Core, TEI, EAD, MODS etc.). Cela permet à des scripts de moissonnage de suivre ce lien pour indexer des métadonnées riches et sémantisées. Voir [_IIIF Cookbook - Linking to Structured Metadata_](https://iiif.io/api/cookbook/recipe/0053-seeAlso/). -6. à l'inverse, inclure si possible l'URL du Manifeste dans un champ de métadonnées ou une propriété adéquate dans les données structurées mises à disposition. L’idée est de pouvoir isoler facilement cette URL au moment de la collecte des métadonnées, quelle que soit la procédure employée pour cette opération (moissonnage d’un entrepôt OAI-PMH, moissonnage de fichiers XML, requête SPARQL dans un entrepôt RDF etc.) ; -7. rendre visible l'URL du Manifeste sur la page de l'objet dans le site d'origine, si possible accompagnée de l'icône IIIF. Un bouton "Copier" facilite la récupération de cette URL par les utilisateurs. +6. à l'inverse, inclure si possible l'URL du Manifeste dans un champ de métadonnées ou une propriété adéquate dans les données structurées partagées sur le Web. L’idée est de pouvoir isoler facilement cette URL au moment de la collecte des métadonnées, quelle que soit la procédure employée pour cette opération (moissonnage d’un entrepôt OAI-PMH, moissonnage de fichiers XML, requête SPARQL dans un entrepôt RDF etc.) ; +7. rendre visible l'URL du Manifeste sur la page de l'objet dans le site d'origine, si possible accompagnée de l'icône IIIF. Un bouton "Copier l'URL" facilite la récupération de celle-ci par les utilisateurs. 8. vérifier la conformité des Manifestes en utilisant le [validateur officiel](https://presentation-validator.iiif.io/) 9. respecter certains pré-requis techniques dans la configuration du serveur (protocole HTTPS et entêtes HTTP CORS). -Voir aussi les [recommandations pour les bibliothèques numériques IIIF](https://doc.biblissima.fr/vademecum-biblissima/#recommandations-pour-les-bibliotheques-numeriques-iiif) dans la documentation de Biblissima. +Voir aussi : + +- les [recommandations pour les bibliothèques numériques IIIF](https://doc.biblissima.fr/vademecum-biblissima/#recommandations-pour-les-bibliotheques-numeriques-iiif) dans la documentation de Biblissima+. +- le document [Intégrer IIIF dans le projet de refonte du site web de votre service d'archives : éléments pour CCTP et cadre de réponse](https://doi.org/10.5281/zenodo.8380227) (Cécile Sajdak, Biblissima+) diff --git a/docs/api-presentation/index.md b/docs/api-presentation/index.md index 11de8a0..7bdfcc3 100644 --- a/docs/api-presentation/index.md +++ b/docs/api-presentation/index.md @@ -109,84 +109,6 @@ Une Collection IIIF permet par exemple : Nous verrons quelques exemples d'utilisation concrète dans la section suivante. -## Anatomie d'un Manifeste - -Inspectons ensemble la structure et les différentes composantes d'un Manifeste IIIF : - -```json title="(1) Manifest" -{ - "@context": "http://iiif.io/api/presentation/2/context.json", - "@type": "sc:Manifest", - "@id": "https://example.org/object1/manifest.json", - "label": "Object 1", - "metadata": [ ...métadonnées de l'objet... ], - "sequences": [ - { - "@id": "https://example.org/object1/sequence/1", - "canvases": [ ...liste des Canevas (2)... ] - } - ] -} -``` - -```json title="(2) Canevas" -{ - "@type": "sc:Canvas", - "@id": "https://example.org/object1/canvas/1", - "label": "folio 1r", - "width": "1500", - "height": "2000", - "images": [ ...liste des images de ce Canevas (3)... ] -} -``` - -```json title="(3) Contenu : une image associée à un Canevas via une annotation" -{ - "@type": "oa:Annotation", - "@id": "https://example.org/object1/canvas/1/anno/1", - "motivation": "sc:painting", - "on": "https://example.org/object1/canvas/1", - "resource": { - "@id": "https://example.org/iiif/1234/full/1500,/0/default.jpg", - "@type": "dctypes:Image", - "format": "image/jpeg", - "height": 2000, - "width": 1500, - "service": { ...service API Image (4)... } - } -} -``` - -```json title="(4) Service API Image" -{ - "@context": "http://iiif.io/api/image/2/context.json", - "@id": "https://example.org/iiif/1234", // URL de base du service API Image de l'image "1234" - "profile": "http://iiif.io/api/image/2/level2.json" -} -``` - -```json title="(5) Liste d'annotations référencée dans un Canevas via la propriété otherContent" -{ - "@type": "sc:Canvas", - "@id": "https://example.org/object1/canvas/1", - "label": "folio 1r", - "width": "1500", - "height": "2000", - "images": [ ...liste des images de ce Canevas (3)... ], - "otherContent": [ - { - "@id": "https://example.org/object1/annotationlist/list1.json", - "@type": "sc:AnnotationList" - } - ] -} -``` - -Maintenant, entrons davantage dans le détail avec un exemple réel : - -- [https://purl.stanford.edu/hg676jb4964/iiif/manifest](https://purl.stanford.edu/hg676jb4964/iiif/manifest) (API Présentation v2) -- [https://purl.stanford.edu/hg676jb4964/iiif3/manifest](https://purl.stanford.edu/hg676jb4964/iiif3/manifest) (API Présentation v3) - ## Prise en charge de l'audio et vidéo diff --git a/docs/ateliers/atelier-3.md b/docs/ateliers/atelier-3.md new file mode 100644 index 0000000..33e5546 --- /dev/null +++ b/docs/ateliers/atelier-3.md @@ -0,0 +1,78 @@ +# Atelier 3 : créer une exposition virtuelle avec Storiiies + +Storiiies est un outil d'exposition virtuelle permettant de créer des parcours guidés au sein d'une image. Il s'appuie à la fois sur des images et des annotations IIIF pour proposer ces parcours. Il est développé par la société britannique Cogapp. + +Il est constitué de deux applications : + +- le [Storiiies Editor](https://storiiies-editor.cogapp.com) : éditeur pour créer et modifier une exposition virtuelle, utilisable uniquement via le site de Cogapp +- le [Storiiies Viewer](https://www.cogapp.com/r-d/storiiies) : visualiseur d'exposition virtuelle, disponible en open source ([Github](https://github.com/CogappLabs/StoriiiesViewer)) + +Pour cet atelier nous allons utiliser une version du Storiiies Viewer hébergée par Biblissima : [https://demos.biblissima.fr/storiiies-viewer/](https://demos.biblissima.fr/storiiies-viewer/). Cette instance supporte le paramètre `iiif-content` de l'API Content State, ce qui signifie qu'il est possible de charger un Manifeste en passant son adresse dans ce paramètre d'URL. + +``` title="Modèle d'URL pour ouvrir un Manifeste dans le Storiiies Viewer" +https://demos.biblissima.fr/storiiies-viewer/?iiif-content={url_manifeste_story} +``` + + +!!! tip "Consignes" + + Dans cet exercice nous allons tous partir du même Manifest : [https://www.loc.gov/item/2003626426/manifest.json](https://www.loc.gov/item/2003626426/manifest.json) (Library of Congress : [Waldseemüller’s 1507 Map](https://www.loc.gov/item/2003626426/)). + + + 1. **Ouvrir le [Storiiies Editor](https://storiiies-editor.cogapp.com) pour créer votre "story"** + - coller l'URL du Manifeste dans le champ `IIIF manifest or info.json URL` + - renseigner les autres champs proposés + + 2. **Créer un parcours en zoomant sur différents détails dans l'image :** + - zommer sur un détail et créer une annotation en cliquant sur le bouton "Add new +" en haut à gauche. Chaque annotation correspondra à une étape du parcours au sein de l'image + - répéter l'opération de façon à créer 3 ou 4 annotations + + 3. **Prévisualiser votre story et récupérer l'URL du Manifeste correspondant :** + - cliquer sur le bouton "Preview" (ouvre un nouvel onglet) et tester votre story + - reconstruire l'URL du Manifeste de votre story en suivant les indications ci-dessous : + + L'URL de la page du Preview est sous la forme suivante : + + `https://storiiies.cogapp.com/viewer/{id}/{story_name}` + + Pour récupérer l'URL du Manifeste de votre story, il faut d'abord prendre son identifiant (valeur de `{id}`) et construire l'URL suivante : + + ``` + https://manifest.storiiies-editor.cogapp.com/v3/{id} + ``` + + 4. **Ouvrir le Manifeste et repérer dans le JSON les annotations créées dans le Storiiies Editor :** + - repérer la propriété `"annotations"` au niveau de l'unique Canevas présent dans votre Manifest + + 5. **Importer le Manifeste dans le Storiiies Viewer :** + - utiliser pour cela le paramètre `iiif-content` de l'API Content State vu précédemment : + + Modèle : + + ``` + https://demos.biblissima.fr/storiiies-viewer/?iiif-content={url_manifeste_story} + ``` + + 6. **Importer le Manifeste dans l'outil Annona :** + - utiliser pour cela le même paramètre `iiif-content` : + + Modèle : + + ``` + https://demos.biblissima.fr/annona/?iiif-content={url_manifeste_story} + ``` + + +Il existe d'autres outils dans la galaxie IIIF qui permettent de créer des expériences similaires, parmi lesquels : + +- [Exhibit.so](https://www.exhibit.so/#getting-started) est plus perfectionné que Storiiies (prend en charge plusieurs images issues de plusieurs Manifests, propose différents templates), mais le code source est fermé et il n'est possible de récupérer ni le Manifest généré par l'application, ni les annotations créées. + +Exemple : [The Voyage of Life, par Thomas Cole](https://www.exhibit.so/exhibits/t153UkCxJXovu1jeuLV3) + +- [Adno](https://adno.app/fr/) a l'avantage d'être entièrement open source mais, comme Storiiies, il ne prend en charge qu'une seule image par parcours. De plus il ne supporte IIIF qu'en entrée, pas en sortie (l'outil permet néanmoins d'exporter un projet au format Web Annotation, puis de réimporter le projet par la suite). Il est basé sur les librairies Annona, Annotorious et OpenSeaDragon. + +Pour une liste plus complète, voir la section [Exhibition and Guided Viewing Tools](https://github.com/IIIF/awesome-iiif/#exhibition-and-guided-viewing-tools) de awesome-iiif. + + +!!! question "Questions" + diff --git a/docs/autres-api/index.md b/docs/autres-api/index.md index fe56156..bc11e4f 100644 --- a/docs/autres-api/index.md +++ b/docs/autres-api/index.md @@ -1,17 +1,10 @@ # Les API additionnelles de IIIF -## API Authentification +## API Authorization Flow -Cette spécification décrit un ensemble de workflows d’interaction entre un client et des systèmes d’authentification. Son but n'est pas de gérer l'authentification en elle-même mais plutôt de guider l'utilisateur dans l'accès à une ressource en accès restreint, indépendamment du client utilisé. +Cette spécification décrit un ensemble de workflows d’interaction entre un client et des systèmes d’authentification (CAS, OAuth2). Son but n'est pas de gérer l'authentification en elle-même mais plutôt de guider l'utilisateur dans l'accès à une ressource en accès restreint, indépendamment du client utilisé. Ainsi l'API sert de passerelle entre une application cliente et un système de contrôle d'accès quelconque, sans que le client ait besoin de connaître quel est ce système ou comment il fonctionne. -Elle définit 4 scénarios d’interaction : - -- "login" (authentification via un système externe) -- "click through" (accès via un clic utilisateur) -- "kiosk" (obtention d’un cookie) -- "external" (cookie déjà présent) - -Voir le workflow de l'API Auth du point de vue d'un client : [https://iiif.io/api/auth/1.0/#workflow-from-the-browser-client-perspective](https://iiif.io/api/auth/1.0/#workflow-from-the-browser-client-perspective) +Voir le workflow de l'API Auth du point de vue d'un client : [https://iiif.io/api/auth/2.0/#workflow-from-the-browser-client-perspective](https://iiif.io/api/auth/2.0/#workflow-from-the-browser-client-perspective)
![BL Auth](img/api-auth-bl.png) @@ -39,9 +32,9 @@ Cette API spécifie un service web pour rechercher au sein d'une ressource IIIF. - Il ne s'agit pas de rechercher pour trouver la ressource a priori mais bien de rechercher au sein de celle-ci après l'avoir trouvée (équivalent d'un Control+F dans un PDF). La recherche porte donc sur une seule ressource et va cibler les annotations associées à celle-ci (et non les métadonnées descriptives) : OCR, transcription, traduction ou édition du contenu textuel, ou annotations de type commentaire, tags etc. - Ce type de fonctionnalité est particulièrement pertinente pour rechercher dans le texte intégral d'un document multi-pages. C'est le cas d'usage principal pour lequel cette API est implémentée. -La plus-value de cette API est évidemment son caractère interopérable et distribué, comme toutes les API IIIF par essence : le service web peut être exploité par des visualiseurs différents, et il peut très bien être fourni par un tiers (le Manifeste fourni par A peut référencer un service Content Search créé par B et être utilisé dans un visualiseur mis à disposition par C). +La plus-value de cette API est évidemment son caractère interopérable et distribué, comme le sont toutes les API IIIF par essence : le service web peut être exploité par des visualiseurs différents, et il peut très bien être fourni par un tiers (un Manifeste fourni par A peut référencer un service API Content Search créé par B et être utilisé dans un visualiseur mis à disposition par C). -L'API Content Search définit en fait deux services web : +L'API Content Search définit deux services web : - recherche - autocomplétion @@ -59,7 +52,7 @@ Voyons deux cas concrets d'utilisation de l'API Content Search dans deux client
![BSB Search within UV](img/api-search-bsb-uv.png) -
Le même document avec la même fonctionnalité de recherche, cette fois dans Universal Viewer
+
Le même document avec la même fonctionnalité de recherche, cette fois dans Universal Viewer
Dans ces deux exemples on observe que le service API Content Search de la bibliothèque de Munich (BSB) est appelé de la même façon par Mirador et par Universal Viewer et qu'il renvoie une liste d'occurrences structurée sous la forme d'une `AnnotationList` ([https://api.digitale-sammlungen.de/iiif/services/search/v1/bsb10139933?q=meroe](https://api.digitale-sammlungen.de/iiif/services/search/v1/bsb10139933?q=meroe)). @@ -67,14 +60,15 @@ Dans ces deux exemples on observe que le service API Content Search de la biblio Il existe quelques [logiciels côté serveur](https://github.com/IIIF/awesome-iiif/#content-search-api) qui implémentent l'API Content Search, tels que Ocracoke ou Whiiif. Côté client, Mirador et Universal Viewer supportent bien cette fonctionnalité. + ## API Content State L'API Content State décrit un mécanisme pour faire référence à une ou plusieurs ressources IIIF, voire une ou plusieurs parties de ressources, dans un format compact qui peut être utilisé par un client pour initialiser une vue de cette ressource. Concrètement, cela permet d'apporter une solution technique commune à la question de : -- comment pointer sur des ressources IIIF (ou parties de ressources) et comment les partager entre plusieurs applications -- ou comment initialiser une vue d’une ou plusieurs ressources IIIF indépendamment de l’interface et des fonctionnalités proposées par tel ou tel logiciel. +- comment pointer sur des ressources IIIF ou parties de ressources (citabilité) +- comment partager des ressources IIIF entre applications (portabilité, ou comment initialiser une vue d’une ou plusieurs ressources IIIF indépendamment de l’interface et des fonctionnalités proposées par tel ou tel logiciel). Par exemple, citons deux cas d'usage possibles : @@ -83,8 +77,23 @@ Par exemple, citons deux cas d'usage possibles : Ce deuxième cas correspond à ce qui est proposé par l'instance Mirador 2 du Portail Biblissima : exemple d'une session Mirador avec 2 manuscrits côte à côte (mais non conforme à l'API Content State) : [https://portail.biblissima.fr/mirador?key=rO7l5308mdIElAjnpVgR&version=1](https://portail.biblissima.fr/mirador?key=rO7l5308mdIElAjnpVgR&version=1). +La spécification officielle donne aussi à titre d'exemple le cas des signets (bookmarks), des playlists, ou de liens profonds au sein d'un objet numérique. + Un autre moyen d'illustrer l'usage de cette API est de revenir à l'exercice fait avec Mirador tout à l'heure, lorsqu'on a utilisé la fonction d'export/import de l'espace de travail. Les informations incluses dans le morceau de JSON étaient spécifiques à Mirador 3 : elles permettent à une instance A de Mirador d'échanger une session avec une instance B de Mirador, mais pas avec Universal Viewer ou un autre client. L'idée de l'API Content State est de permettre cet échange quel que soit le client en encodant ces informations de façon standardisée. +L'API Content State spécifie principalement deux éléments : + +- une façon d'encoder ces informations sur "l'état du contenu" (c'est-à-dire de quels Manifestes, de quels Canevas, ou de quelle zone ou étendue temporelle d'un Canevas est constitué cet "état"). L'API définit donc d'abord une structure de données en JSON-LD, basée sur le principe de l'annotation (comme presque tout en IIIF) ; +- une série de "protocoles" de transfert de ces données entre applications, qui s'appuient sur des fonctionnalités natives de tous les navigateurs web modernes. + +Les protocoles définis pour transférer cet état sont les suivants : + +- paramètre de requête HTTP GET (`?iiif-content=`) +- paramètre de requête HTTP POST +- copier/coller (via l'événement Paste en Javascript) +- glisser/déposer (via la Web API HTML5 Drag and Drop) +- upload d'un fichier (via l'interface FileReader de l'API File) + Un bon article expliquant le principe de l'API Content State : [What is IIIF Content State?](https://tom-crane.medium.com/what-is-iiif-content-state-dd15a543939f) (Tom Crane). Spécification de l'API Content State : [https://iiif.io/api/content-state](https://iiif.io/api/content-state) @@ -98,13 +107,15 @@ Spécification de l'API Content State : [https://iiif.io/api/content-state](http Voyons par exemple comment initialiser un environnement IIIF avec un ou plusieurs ressources IIIF. Ici il s'agit de Mirador mais le même comportement peut être extrapolé à n'importe quel outil ou logiciel (outil d'exposition virtuelle, plateforme de transcription, CMS...) : -- 1 [Manifeste IIIF](https://portail.biblissima.fr/m3/?theme=light&iiif-content=https://www.loc.gov/item/2021667873/manifest.json) -- 1 [Collection IIIF](https://portail.biblissima.fr/m3/?theme=light&iiif-content=https://portail.biblissima.fr/iiif/collection/ark:/43093/coldata5151005ea5833e5a05e2639cbb210946cb7e0609) -- 3 [Canevas issus de 3 Manifestes différents](https://portail.biblissima.fr/m3/?theme=light&iiif-content=ew0KICAiQGNvbnRleHQiOiAiaHR0cDovL2lpaWYuaW8vYXBpL3ByZXNlbnRhdGlvbi8zL2NvbnRleHQuanNvbiIsDQogICJpZCI6ICJodHRwczovL2V4YW1wbGUub3JnL2ltcG9ydC8yIiwNCiAgInR5cGUiOiAiQW5ub3RhdGlvbiIsDQogICJtb3RpdmF0aW9uIjogImNvbnRlbnRTdGF0ZSIsDQogICJ0YXJnZXQiOiBbDQogICAgICB7DQogICAgICAgICAgImlkIjogImh0dHBzOi8vaWlpZi5oYXJ2YXJkYXJ0bXVzZXVtcy5vcmcvbWFuaWZlc3RzL29iamVjdC8yOTk4NDMvY2FudmFzL2NhbnZhcy00NzE3NDg5MiIsDQogICAgICAgICAgInR5cGUiOiAiQ2FudmFzIiwNCiAgICAgICAgICAicGFydE9mIjogWw0KICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAiaWQiOiAiaHR0cHM6Ly9paWlmLmhhcnZhcmRhcnRtdXNldW1zLm9yZy9tYW5pZmVzdHMvb2JqZWN0LzI5OTg0MyIsDQogICAgICAgICAgICAgICAgICAidHlwZSI6ICJNYW5pZmVzdCINCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgIF0NCiAgICAgIH0sDQogICAgICB7DQogICAgICAgICAgImlkIjogImh0dHBzOi8vbWVkaWEubmdhLmdvdi9wdWJsaWMvbWFuaWZlc3RzL2NhbnZhcy8xMDYzODIuanNvbiIsDQogICAgICAgICAgInR5cGUiOiAiQ2FudmFzIiwNCiAgICAgICAgICAicGFydE9mIjogWw0KICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAiaWQiOiAiaHR0cHM6Ly9tZWRpYS5uZ2EuZ292L3B1YmxpYy9tYW5pZmVzdHMvbmdhX2hpZ2hsaWdodHMuanNvbiIsDQogICAgICAgICAgICAgICAgICAidHlwZSI6ICJNYW5pZmVzdCINCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgIF0NCiAgICAgIH0sDQogICAgICB7DQogICAgICAgICAiaWQiOiAiaHR0cHM6Ly9hcGkuYXJ0aWMuZWR1L2FwaS92MS9hcnR3b3Jrcy84MDYwNy9tYW5pZmVzdC5qc29uIiwNCiAgICAgICAgICJ0eXBlIjogIk1hbmlmZXN0Ig0KICAgICAgfQ0KICBdDQp9) +- [1 Manifeste IIIF](https://portail.biblissima.fr/m3/?theme=light&iiif-content=https://www.loc.gov/item/2021667873/manifest.json) +- [1 Collection IIIF](https://portail.biblissima.fr/m3/?theme=light&iiif-content=https://portail.biblissima.fr/iiif/collection/ark:/43093/coldata5151005ea5833e5a05e2639cbb210946cb7e0609) +- [3 Canevas issus de 3 Manifestes différents](https://portail.biblissima.fr/m3/?theme=light&iiif-content=ew0KICAiQGNvbnRleHQiOiAiaHR0cDovL2lpaWYuaW8vYXBpL3ByZXNlbnRhdGlvbi8zL2NvbnRleHQuanNvbiIsDQogICJpZCI6ICJodHRwczovL2V4YW1wbGUub3JnL2ltcG9ydC8yIiwNCiAgInR5cGUiOiAiQW5ub3RhdGlvbiIsDQogICJtb3RpdmF0aW9uIjogImNvbnRlbnRTdGF0ZSIsDQogICJ0YXJnZXQiOiBbDQogICAgICB7DQogICAgICAgICAgImlkIjogImh0dHBzOi8vaWlpZi5oYXJ2YXJkYXJ0bXVzZXVtcy5vcmcvbWFuaWZlc3RzL29iamVjdC8yOTk4NDMvY2FudmFzL2NhbnZhcy00NzE3NDg5MiIsDQogICAgICAgICAgInR5cGUiOiAiQ2FudmFzIiwNCiAgICAgICAgICAicGFydE9mIjogWw0KICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAiaWQiOiAiaHR0cHM6Ly9paWlmLmhhcnZhcmRhcnRtdXNldW1zLm9yZy9tYW5pZmVzdHMvb2JqZWN0LzI5OTg0MyIsDQogICAgICAgICAgICAgICAgICAidHlwZSI6ICJNYW5pZmVzdCINCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgIF0NCiAgICAgIH0sDQogICAgICB7DQogICAgICAgICAgImlkIjogImh0dHBzOi8vbWVkaWEubmdhLmdvdi9wdWJsaWMvbWFuaWZlc3RzL2NhbnZhcy8xMDYzODIuanNvbiIsDQogICAgICAgICAgInR5cGUiOiAiQ2FudmFzIiwNCiAgICAgICAgICAicGFydE9mIjogWw0KICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAiaWQiOiAiaHR0cHM6Ly9tZWRpYS5uZ2EuZ292L3B1YmxpYy9tYW5pZmVzdHMvbmdhX2hpZ2hsaWdodHMuanNvbiIsDQogICAgICAgICAgICAgICAgICAidHlwZSI6ICJNYW5pZmVzdCINCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgIF0NCiAgICAgIH0sDQogICAgICB7DQogICAgICAgICAiaWQiOiAiaHR0cHM6Ly9hcGkuYXJ0aWMuZWR1L2FwaS92MS9hcnR3b3Jrcy84MDYwNy9tYW5pZmVzdC5qc29uIiwNCiAgICAgICAgICJ0eXBlIjogIk1hbmlmZXN0Ig0KICAgICAgfQ0KICBdDQp9) NB : l'instance Mirador de Biblissima a été modifiée pour supporter le 3e exemple (_"base64url encoding"_). -Testons ensemble la page [Content State POC](https://iiif.gdmrdigital.com/import_to_viewers/index.html) proposée par Glen Robson. +Observons le contenu encodé du 3e exemple ci-dessus en utilisant l'outil [Base64Decode](https://www.base64decode.org). + +Testons ensemble la page [Content State POC](https://iiif.gdmrdigital.com/import_to_viewers/index.html) proposée par Glen Robson qui montre les différentes méthodes de transfert de contenu définies par l'API Content State. ## API Change Discovery @@ -117,7 +128,7 @@ Commençons par enfoncer une porte ouverte : les ressources IIIF, bien que nativ Tout cela est à l'origine d'un des axes de travail de la communauté IIIF ces dernières années, qui a débouché sur la mise au point d'une nouvelle API : l'API Change Discovery. -Cette API spécifie un mécanisme standard de découverte et de moissonnage en masse de ressources IIIF par des processus automatisés. Une des principales mises en application est la construction de moteurs de recherche et portails généralistes ou thématiques, comme cela a été initié par [Cultural Japan](https://cultural.jp/) ou [Biblissima IIIF-Collections](https://iiif.biblissima.fr/collections/). +Cette API spécifie un mécanisme standard de découverte et de moissonnage en masse de ressources IIIF par des machines (scripts, crawlers etc.). Une des principales mises en application est la construction de moteurs de recherche et portails généralistes ou thématiques, comme cela a été initié par [Cultural Japan](https://cultural.jp/) ou [Biblissima IIIF-Collections](https://iiif.biblissima.fr/collections/). Ainsi l'API Change Discovery fournit un mécanisme pour découvrir/rendre découvrables des ressources IIIF : diff --git a/docs/biblissima-baseline-sombre-france2030.png b/docs/biblissima-baseline-sombre-france2030.png new file mode 100644 index 0000000..f033c3d Binary files /dev/null and b/docs/biblissima-baseline-sombre-france2030.png differ diff --git a/docs/credits.md b/docs/credits.md index f9bcf54..074751a 100644 --- a/docs/credits.md +++ b/docs/credits.md @@ -6,6 +6,10 @@ Ce travail a bénéficié d'une aide de l’État gérée par l'Agence Nationale de la Recherche au titre du programme d’Investissements d’avenir portant la référence « ANR-21-ESRE-0005 » ([ÉquipEx Biblissima+](https://projet.biblissima.fr)). +
+ ![](biblissima-baseline-sombre-france2030.png){ width="400" } +
+ Certains contenus de cette formation ont été inspirés du [IIIF Online workshop ](https://training.iiif.io/iiif-online-workshop/) (licence CC-BY-4.0) proposé par le consortium IIIF et assuré par Glen Robson. Cela concerne principalement la partie API Image (exemples et code Javascript du formulaire de manipulation des paramètres). L'essentiel des contenus du site est le fruit d'un travail original. Sauf mention contraire les contenus de ce site sont publiés sous la [Licence Ouverte / Open License 2.0](https://www.etalab.gouv.fr/licence-ouverte-open-licence/). diff --git a/docs/index.md b/docs/index.md index e907800..0e43dac 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,45 +1,42 @@ # Préambule -Ce site a servi de support à la formation à IIIF organisée le mercredi 30 novembre 2022 (9h30-17h30) dans le cadre des [premières journées annuelles du Cluster 1](https://projet.biblissima.fr/fr/actualites/journees-annuelles-2022-cluster-1-acquisition-corpus-sources-interoperables) de l'ÉquipEx Biblissima+. +Ce site a servi de support à la formation à IIIF organisée le mercredi 29 novembre 2023 (10h-17h30) dans le cadre des [deuxièmes journées annuelles du Cluster 1](https://projet.biblissima.fr/fr/actualites/journees-annuelles-2023-cluster-1-acquisition-corpus-sources-interoperables) de l'ÉquipEx Biblissima+. Formateur et auteur du site : **Régis Robineau**. -!!! info "" - - Ce travail a bénéficié d'une aide de l’État gérée par l'Agence Nationale de la Recherche au titre du programme d’Investissements d’avenir portant la référence « ANR-21-ESRE-0005 » ([ÉquipEx Biblissima+](https://projet.biblissima.fr)). ## Objectifs de la formation -Cette formation s'adresse à toute personne intéressée par IIIF, curieuse d'en comprendre les enjeux et le fonctionnement, et désireuse de s'exercer par la pratique aux usages qui peuvent en être faits. Elle n'est pas conçue comme un véritable workshop : nous n'allons pas travailler autour d'un cas pratique (commun ou individuel) servant de fil conducteur à la journée. +**Cette formation s’adresse en premier lieu aux personnes souhaitant implémenter les standards et technologies IIIF et curieuses d’en comprendre le fonctionnement**. -Les objectifs sont les suivants : +La formation n'est pas conçue comme un véritable workshop : nous n'allons pas travailler autour d'un cas pratique (commun ou individuel) servant de fil conducteur à la journée. + +Les objectifs principaux sont de maîtriser les notions essentielles des deux API principales de IIIF (**API Image** et **API Présentation**), de fournir des clés sur les questions d’implémentation technique et de sensibiliser aux bonnes pratiques. Des exercices pratiques seront proposés pour se familiariser avec l’utilisation de certains outils IIIF (visualiseurs, outils d’annotation). -1. Comprendre l'écosystème IIIF dans son ensemble : enjeux, communauté, spécifications, usages, applications et outils -2. Maîtriser les notions essentielles des deux API principales de IIIF : l'API Image et l'API Présentation -3. Fournir quelques clés sur les questions d'implémentation technique et sensibiliser aux bonnes pratiques -4. Se familiariser avec l'utilisation de Mirador -5. Créer et éditer un Manifeste IIIF -6. Annoter un Manifeste et comprendre le fonctionnement des annotations IIIF ## Pré-requis -Le seul pré-requis est de disposer d'un ordinateur portable. +Le seul pré-requis technique est de disposer d'un ordinateur portable. Il est recommandé d'avoir un navigateur Web à jour et d'installer les extensions suivantes : - pour Firefox : [JSONView](https://addons.mozilla.org/fr/firefox/addon/jsonview/) - pour Chrome : [JSON Formatter](https://chrome.google.com/webstore/detail/json-formatter/bcjindcccaagfpapjjmafapmmgkkhgoa) - pour Safari : [JSON Peep](https://apps.apple.com/us/app/json-peep-for-safari/id1458969831?mt=12) +- pour Edge : [JSON Formatter](https://microsoftedge.microsoft.com/addons/detail/json-formatter-for-edge/njpoigijhgbionbfdbaopheedbpdoddi) + +Il est conseillé de commencer la formation dans une nouvelle fenêtre ou dans une session de navigation vierge. -Il est également conseillé de commencer la formation dans une nouvelle fenêtre ou dans une session de navigation vierge. +La lecture préalable de l'article ci-dessous est également conseillée afin de revenir sur la genèse de l'initiative, le principe général de IIIF et la présentation de différents cas d'usages dans le domaine des bibliothèques, archives et musées : -## Déroulé de la journée +PRUNET C., BERTRAND S., CHENARD G., PILLORGET S., ROBINEAU R., "IIIF : découverte et interopérabilité sans frontières des images patrimoniales", _Culture et Recherche_, n°143, 2022, p. 111-117. PDF disponible sur [https://www.culture.gouv.fr/fr/Thematiques/Enseignement-superieur-et-Recherche/La-revue-Culture-et-Recherche/La-recherche-culturelle-a-l-international](https://www.culture.gouv.fr/fr/Thematiques/Enseignement-superieur-et-Recherche/La-revue-Culture-et-Recherche/La-recherche-culturelle-a-l-international). -### Matin + +## Déroulé de la formation 1. Introduction à IIIF (15 min) -2. L'API Image (55 min) +2. L'API Image (1h30) - Présentation détaillée - Exercices @@ -47,26 +44,27 @@ Il est également conseillé de commencer la formation dans une nouvelle fenêtr - Usages et démos - Questions -_10h35 : Pause (10 min)_ +_Pause (5 min)_ -3. L'API Présentation (1h40) +3. L'API Présentation (2h30) - - Présentation détaillée - - Exemples et démos - - Implémentation + - Présentation détaillée (20 min) + - Exemples et démos (40 min) + - Implémentation (20 min) - Questions (10 min) - - Exercices pratiques - 1. Identifier et sélectionner des ressources IIIF (15 min) - 2. Prendre en main Mirador (20 min) + - Exercices pratiques (60 min) + 1. Test + 2. Identifier et sélectionner des ressources IIIF + 3. Prendre en main Mirador -_12h30-14h30 : Pause déjeuner_ +4. Les autres API de IIIF (30 min) -### Après-midi +5. Ateliers (1h30) -1. Les autres API de IIIF (30 min) +!!! info "" -2. Ateliers : + Ce travail a bénéficié d'une aide de l’État gérée par l'Agence Nationale de la Recherche au titre du programme d’Investissements d’avenir intégré à France 2030 portant la référence « ANR-21-ESRE-0005 » ([ÉquipEx Biblissima+](https://projet.biblissima.fr)). - - Atelier 1 : créer un Manifeste avec le Manifest Editor (45 min) - - _Pause (15 min)_ - - Atelier 2 : annoter un objet avec SimpleAnnotationServer (45 min) +
+ ![](biblissima-baseline-sombre-france2030.png){ width="400" } +
diff --git a/mkdocs.yml b/mkdocs.yml index 70fc6ad..3c2d4f7 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -73,4 +73,5 @@ nav: - Ateliers: - ateliers/atelier-1.md - ateliers/atelier-2.md + - ateliers/atelier-3.md - Crédits: credits.md