Timeline API 1.0

Timeline API

Timeline API takes a similar structure with Manifest of IIIF Presentation API 2.1 (http://iiif.io/api/presentation/2.1/#manifest). At this moment, this is our own extension of IIIF Presentation API 2.1, so we refer to it as a @type of tl:Manifest. In the following we call this structure as Manifest.

tl:Manifest takes a structure as follows.

  • tl:Manifest
    • @context(Required)
    • @type(Required)
    • @id(Required)
    • label(Required)
    • viewingHint
    • sequences/cursors(Either one required)

tl:Manifest introduces new values, index and time, into viewingHint property in Manifest. And we define Timeline as a tl:Manifest that takes time as the value of viewingHint.

tl:Manifest can specify the list of objects using cursors property, in addition to sequences property. cursors is the ordered list (array) of information that belongs to Cursor service. This is called tl:cursorService, and cursor service is explained in Cursor API.

tl:CursorService takes a structure as follows.

  • tl:CursorService
    • @id
    • service(Required)
      • @context(Required)
      • @id(Required)
      • profile
    • first/last/default(Either one required)
    • step
    • status

@id of service specifies the URI of Cursor itself. This URI should be dereferencable.

first takes the first possible value of cursorIndex of Cursor that was specified by the @id of service, last, the last possible value of cursorIndex, and default, the default value of cursorIndex. In the case of Timeline, cursorIndex is interpreted as Unix time (second).

step specifies interval when cursorIndex property within cs:Canvas, included in Cursor specified in the @id of service, always takes the equal interval. On the other hand, cursorIndex property within cs:Canvas in Cursor does not have equal interval, step should not be specified. In the case of Timeline, step is interpreted as second. A client may refer to this value for its purpose.

status takes the value fixed when Timeline is static, while takes the value updating when Timeline could be dynamically updated. A client may refer to this value for its purpose.

Example

{
  "@context": [
    "http://iiif.io/api/presentation/2/context.json",
    "http://codh.rois.ac.jp/iiif/timeline/1/context.json"
  ],
  "@type": "tl:Manifest",
  "@id": "http://codh.rois.ac.jp/iiif/iiif-curation-viewer/sample/himawari/timeline.json",
  "label": [
    {
      "@value": "Digital Typhoon: Himawari-8 Clipping",
      "@language": "ja"
    },
    {
      "@value": "Digital Typhoon: Himawari-8 Clipping",
      "@language": "en"
    }
  ],
  "attribution": "NII \"Digital Typhoon\" / NICT \"Science Cloud\"",
  "related": [
    {
      "format": "text/html",
      "@id": "http://agora.ex.nii.ac.jp/digital-typhoon/himawari-3g/clipping/"
    }
  ],
  "viewingHint": "time",
  "cursors": [
    {
      "@id": "http://agora.ex.nii.ac.jp/digital-typhoon/service/iiif/Hsfd/cursor",
      "service": {
        "@context": "http://codh.rois.ac.jp/iiif/cursor/1/context.json",
        "@id": "http://agora.ex.nii.ac.jp/digital-typhoon/service/iiif/Hsfd/cursor",
        "profile": "http://codh.rois.ac.jp/iiif/cursor/1/level0.json"
      },
      "first": 1436234400,
      "last": 1498867200,
      "default": 1498867200,
      "step": 600,
      "status": "updating"
    }
  ]
}

Specification

ontology.xml

context.json

Proposed IIIF Extensions

Curation API

Timeline API

Cursor API

Software Implementations

IIIF Curation Viewer

IIIF Curation Viewer for Timeline