IIIF for the Open-Data-Portal of the City of Leipzig
This is an external IIIF API service for the CKAN Open Data Portal of the City of Leipzig. It is my entry to the Open Data Hackathon 2023 of the City of Leipzig (https://2023.dataweek.de/lodh-2023/).
For more information on IIIF see https://iiif.io
- Supports IIIF Presentation API version 2.1.1 and 3.0.0
- Supports IIIF Image API version 2 and 3 (via IIPImage Server)
- Cache with seamless demand driven metadata updates
- Lossless quality image conversion
- Asychronous/parallel architecture: high responsiveness even under high image conversion load
- Content Negotiation
Endless IIIF usage scenarios
- Digital Storytelling and Edutainment
- Cross-Institutional Research Workspaces
- Geo-Referencing of Maps and Photos
- Create Annotations
- Games and Fun-Apps
- Well prepared for AI and Machine-Learning
- and many more
Currently, as long as the service is not integrated into the appropriate websites, prior knowledge of the manifest URIs is required. See the file data/manifests.csv in order to get a list of the manifests.
Find a full list of available manifest URIs in file
Here are three simple image loading examples to demonstrate the functionality. IIIF has of course much higher potential.
Load an image into Mirador: https://manducus.net/m3/?manifest=https://leipzig.iiif.cloud/manifest/12feea1b-3edd-5308-8ae9-a41733bcc2ff
More complex usage scenarios are possible using storytelling apps (Storiiies, StrollView and others), research workspaces (Mirador 3 with annotation plugin), geo-referencing (Allmaps) or edutainment apps (Animal Crossing Art Generator or Cover.Boutique). See https://github.com/IIIF/awesome-iiif for inspiration. Check out the poster in
/img/. And here are some uncommented screenshots:
The entire system runs on Linux or MacOSX and employs Apache2, Nginx, IIPImage and other components.
The current mapping is as follows
|resource||canvas / annotation page / image|
Get all (max. 1000) datasets with resource format "jpg": https://opendata.leipzig.de/api/3/action/dataset_search?fq=res_format:jpg&rows=1000
Get a specific dataset: https://opendata.leipzig.de/api/3/action/dataset_show?id=d52bbf61-1995-4c41-a819-885fc4ea175a
Get a resource (canvas/image level): https://opendata.leipzig.de/api/3/action/resource_show?id=b28b38fa-85e5-4a8b-98a0-5230cd3f275c
IIIF URI Schema
This is an intermediate URI schema that may or should be subject to change in the future.
The API responds default with IIIF Presentation API version 2. In order to get version 3 manifests it is possible to
- append the parameter
?version=3to the manifest URI
- send the HTTP header
curl -H 'Accept: application/ld+json;profile="http://iiif.io/api/presentation/3/context.json"' 'https://leipzig.iiif.cloud/manifest/d52bbf61-1995-4c41-a819-885fc4ea175a'
In the near future the following things could be considered:
Grouping the manifests into collections. Requires the help of subject experts.
IIIF services could be integrated in their respective websites.
The contents of the system could be extended.
check out this repository
src/config.jsonand edit all parameters
optional: edit and run
node src/utils/warmup.jsin order to do all the heavy image conversion upfront
(install Linux, Apache2, Nginx, IIPServer etc. according to their documentation)
ImageMagick required this in
/etc/ImageMagick-6/policy.xml in order to process large images:
<policy domain="resource" name="disk" value="8GB"/>