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": "デジタル台風:ひまわり8号クリッピング",
"@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"
}
]
}