Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

A web annotation server built with the same principles as Git

License

NotificationsYou must be signed in to change notification settings

nationalarchives/miiify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Miiify is a light-weight web annotation server using an embedded database. Its primary use case is to supportIIIF applications where it separates the annotation content away from the manifest. This has the advantage of simplifying the manifest and providing persistent access to each annotation through its own unique identifier. Miiify follows the Web Annotation Model and Protocol which means annotations are structured intocontainers. The followingvideo tutorial helps illustrates this and how the server can interact with a IIIF viewer.

There is a choice of two storage backends depending on requirements:

git

Designed to be compatible with the Git protocol. This means annotations can be added or edited using standard git flow mechanisms such as a pull request and all new content can go through a review process before going public.

pack

Designed to be highly-scalable and disk efficient. This backend uses technology that is part of the distributed ledger used within theTezos blockchain.

Getting started

Miiify can be run with Docker using either the git or pack backend. The example below uses the pack backend.

Starting server

docker compose pull packdocker compose up pack -d

Check the server is running

http:

Stopping server

docker compose down pack

Basic concepts

Annotations are organised into containers and can be retrieved in pages to display within IIIF viewers such asMirador. To filter the annotation page to a specific IIIF canvas an additional target parameter can be supplied. The examples below usehttpie with a live demo server which spins down when inactive.

Create an annotation container called my-container:

https miiify.onrender.com/annotations/< miiify/test/container1.json Slug:my-container

Add an annotation called foobar to my-container:

https miiify.onrender.com/annotations/my-container/< miiify/test/annotation1.json Slug:foobar

Add another annotation but use a system generated id:

https miiify.onrender.com/annotations/my-container/< miiify/test/annotation1.json

Retrieve the first annotation page from my-container:

https miiify.onrender.com/annotations/my-container/\?page\=0

produces:

{"@context":"http://iiif.io/api/presentation/3/context.json","id":"https://miiify.onrender.com/annotations/my-container/?page=0","items": [        {"@context":"http://www.w3.org/ns/anno.jsonld","body":"http://example.org/post1","created":"2023-12-07T17:13:18Z","id":"https://miiify.onrender.com/annotations/my-container/4acb2493-96b2-4efb-a5aa-044cde1408f0","target":"http://example.com/page1","type":"Annotation"        },        {"@context":"http://www.w3.org/ns/anno.jsonld","body":"http://example.org/post1","created":"2023-12-07T17:11:44Z","id":"https://miiify.onrender.com/annotations/my-container/foobar","target":"http://example.com/page1","type":"Annotation"        }    ],"partOf": {"created":"2023-12-07T17:10:20Z","id":"https://miiify.onrender.com/annotations/my-container/","label":"A Container for Web Annotations","total":2,"type":"AnnotationCollection"    },"startIndex":0,"type":"AnnotationPage"}

Retrieve the first annotation page from my-container but filter annotations based on their target:

https miiify.onrender.com/annotations/my-container/< miiify/test/annotation3.jsonhttps miiify.onrender.com/annotations/my-container/\?page\=0\&target\=http://example.com/page3

produces:

{"@context":"http://iiif.io/api/presentation/3/context.json","id":"https://miiify.onrender.com/annotations/my-container/?page=0&target=http://example.com/page3","items": [        {"@context":"http://www.w3.org/ns/anno.jsonld","body":"http://example.org/post3","created":"2023-12-07T17:15:47Z","id":"https://miiify.onrender.com/annotations/my-container/20375636-3af4-44e4-b005-b5c5e625ec85","target":"http://example.com/page3","type":"Annotation"        }    ],"partOf": {"created":"2023-12-07T17:10:20Z","id":"https://miiify.onrender.com/annotations/my-container/","label":"A Container for Web Annotations","total":3,"type":"AnnotationCollection"    },"startIndex":0,"type":"AnnotationPage"}

Retrieve a single annotation:

https miiify.onrender.com/annotations/my-container/foobar

produces

{"@context":"http://www.w3.org/ns/anno.jsonld","body":"http://example.org/post1","created":"2023-12-07T17:11:44Z","id":"https://miiify.onrender.com/annotations/my-container/foobar","target":"http://example.com/page1","type":"Annotation"}

Tutorial

Simplevideo tutorial to show how to create annotations and display them in the Mirador IIIF viewer.

Other key features

  • Support for validating annotations usingATD with a detailed example availablehere
  • Easy to use with Docker and Kubernetes
  • Support for ETag caching and collision avoidance
  • Simple key/value interface for working with IIIF manifests

Building from source

To build your own native Docker images:

cd miiify/test./build.sh pack

Documentation

API specification

About

A web annotation server built with the same principles as Git

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp