Skip to content

Navigation by Chronology

Cookbook URLs
Recipe: https://iiif.io/api/cookbook/recipe/0230-navdate/
JSON-LD Example 1 - 1986 Map: https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_2-manifest.json
JSON-LD Example 2 - 1987 Map: https://iiif.io/api/cookbook/recipe/0230-navdate/navdate_map_1-manifest.json
JSON-LD Example 3 - Collection: https://iiif.io/api/cookbook/recipe/0230-navdate/navdate-collection.json

Method 1 - Setting the navDate property during object construction using a datetime object

Example 1 - 1986 Map

from iiif_prezi3 import Manifest, config
from datetime import datetime, timezone

config.configs['helpers.auto_fields.AutoLang'].auto_lang = "en"
base_url = "https://iiif.io/api/cookbook/recipe/0230-navdate"

# n.b: You MUST set `tzinfo` as the Prezi3 Specification requires a timezone, and the default `datetime` does not have one.
manifest = Manifest(id=f"{base_url}/navdate_map_2-manifest.json",
                    label="1986 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide",
                    navDate=datetime(1986, 1, 1, tzinfo=timezone.utc))
canvas = manifest.make_canvas_from_iiif(url="https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-87691274-1986",
                                        id=f"{base_url}/canvas/p1",
                                        label="1986 Map, recto and verso, with a date of publication",
                                        anno_id=f"{base_url}/annotation/p0001-image",
                                        anno_page_id=f"{base_url}/page/p1/1")

# This is a workaround for an inconsistency in the Cookbook JSON - see https://github.com/IIIF/cookbook-recipes/issues/376
canvas.items[0].items[0].body.service[0].id = "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-87691274-1986/"

print(manifest.json(indent=2))

Example 2 - 1987 Map

from iiif_prezi3 import Manifest, config
from datetime import datetime, timezone

config.configs['helpers.auto_fields.AutoLang'].auto_lang = "en"
base_url = "https://iiif.io/api/cookbook/recipe/0230-navdate"

# n.b: You MUST set `tzinfo` as the Prezi3 Specification requires a timezone, and the default `datetime` does not have one.
manifest = Manifest(id=f"{base_url}/navdate_map_1-manifest.json",
                    label="1987 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide",
                    navDate=datetime(1987, 1, 1, tzinfo=timezone.utc))
canvas = manifest.make_canvas_from_iiif(url="https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674",
                                        id=f"{base_url}/canvas/p1",
                                        label="1987 Map, recto and verso, with a date of publication",
                                        anno_id=f"{base_url}/annotation/p0001-image",
                                        anno_page_id=f"{base_url}/page/p1/1")

# This is a workaround for an inconsistency in the Cookbook JSON - see https://github.com/IIIF/cookbook-recipes/issues/376
canvas.items[0].items[0].body.service[0].id = "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/"

print(manifest.json(indent=2))

Example 3 - Collection

Here we can make use of the fact that iiif-prezi3 will automatically turn a Manifest into a reference when it is added to a Collection object.

from iiif_prezi3 import Collection, Manifest, ResourceItem, config
from datetime import datetime, timezone

config.configs['helpers.auto_fields.AutoLang'].auto_lang = "en"
base_url = "https://iiif.io/api/cookbook/recipe/0230-navdate"

# n.b: You MUST set `tzinfo` as the Prezi3 Specification requires a timezone, and the default `datetime` does not have one.
manifest1986 = Manifest(id=f"{base_url}/navdate_map_2-manifest.json",
                        label="1986 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide",
                        navDate=datetime(1986, 1, 1, tzinfo=timezone.utc))
canvas1986 = manifest1986.make_canvas_from_iiif(url="https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-87691274-1986",
                                                id=f"{base_url}/canvas/p1",
                                                label="1986 Map, recto and verso, with a date of publication",
                                                anno_id=f"{base_url}/annotation/p0001-image",
                                                anno_page_id=f"{base_url}/page/p1/1")

manifest1987 = Manifest(id=f"{base_url}/navdate_map_1-manifest.json",
                        label="1987 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide",
                        navDate=datetime(1987, 1, 1, tzinfo=timezone.utc))
canvas1987 = manifest1987.make_canvas_from_iiif(url="https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674",
                                                id=f"{base_url}/canvas/p1",
                                                label="1987 Map, recto and verso, with a date of publication",
                                                anno_id=f"{base_url}/annotation/p0001-image",
                                                anno_page_id=f"{base_url}/page/p1/1")

collection = Collection(id=f"{base_url}/navdate-collection.json",
                        label="Chesapeake and Ohio Canal map and guide pamphlets")
thumbnail = ResourceItem(id="https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg",
                         type="Image",
                         format="image/jpeg",
                         height=300,
                         width=221)
thumbnail.make_service(id="https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674",
                       type="ImageService3",
                       profile="level1")
collection.thumbnail = [thumbnail]

collection.add_item(manifest1986)
collection.add_item(manifest1987)
collection.items[0].navDate = manifest1986.navDate
collection.items[1].navDate = manifest1987.navDate

print(collection.json(indent=2))

Method 2 - Setting the navDate property with a string

Example 1 - 1986 Map

from iiif_prezi3 import Manifest, config

config.configs['helpers.auto_fields.AutoLang'].auto_lang = "en"
base_url = "https://iiif.io/api/cookbook/recipe/0230-navdate"

manifest = Manifest(id=f"{base_url}/navdate_map_2-manifest.json",
                    label="1986 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide",
                    navDate="1986-01-01T00:00:00Z")

canvas = manifest.make_canvas_from_iiif(url="https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-87691274-1986",
                                        id=f"{base_url}/canvas/p1",
                                        label="1986 Map, recto and verso, with a date of publication",
                                        anno_id=f"{base_url}/annotation/p0001-image",
                                        anno_page_id=f"{base_url}/page/p1/1")

# This is a workaround for an inconsistency in the Cookbook JSON - see https://github.com/IIIF/cookbook-recipes/issues/376
canvas.items[0].items[0].body.service[0].id = "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-87691274-1986/"

print(manifest.json(indent=2))

Example 2 - 1987 Map

from iiif_prezi3 import Manifest, config

config.configs['helpers.auto_fields.AutoLang'].auto_lang = "en"
base_url = "https://iiif.io/api/cookbook/recipe/0230-navdate"

manifest = Manifest(id=f"{base_url}/navdate_map_1-manifest.json",
                    label="1987 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide",
                    navDate="1987-01-01T00:00:00Z")
canvas = manifest.make_canvas_from_iiif(url="https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674",
                                        id=f"{base_url}/canvas/p1",
                                        label="1987 Map, recto and verso, with a date of publication",
                                        anno_id=f"{base_url}/annotation/p0001-image",
                                        anno_page_id=f"{base_url}/page/p1/1")

# This is a workaround for an inconsistency in the Cookbook JSON - see https://github.com/IIIF/cookbook-recipes/issues/376
canvas.items[0].items[0].body.service[0].id = "https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/"

print(manifest.json(indent=2))

Example 3 - Collection

To show the different possible approaches, here we will build the Collection object manually using the ManifestRef class.

from iiif_prezi3 import Collection, ManifestRef, ResourceItem, config

config.configs['helpers.auto_fields.AutoLang'].auto_lang = "en"
base_url = "https://iiif.io/api/cookbook/recipe/0230-navdate"

collection = Collection(id=f"{base_url}/navdate-collection.json",
                        label="Chesapeake and Ohio Canal map and guide pamphlets")
thumbnail = ResourceItem(id="https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg",
                         type="Image",
                         format="image/jpeg",
                         height=300,
                         width=221)
thumbnail.make_service(id="https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674",
                       type="ImageService3",
                       profile="level1")
collection.thumbnail = [thumbnail]

manifest1986 = ManifestRef(id=f"{base_url}/navdate_map_2-manifest.json",
                           type="Manifest",
                           label="1986 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide",
                           navDate="1986-01-01T00:00:00+00:00")

manifest1987 = ManifestRef(id=f"{base_url}/navdate_map_1-manifest.json",
                           type="Manifest",
                           label="1987 Chesapeake and Ohio Canal, Washington, D.C., Maryland, West Virginia, official map and guide",
                           navDate="1987-01-01T00:00:00+00:00")

collection.add_item(manifest1986)
collection.add_item(manifest1987)

print(collection.json(indent=2))