glam/schemas/20251121/linkml/modules/classes/IIPImageServer.yaml
kempersc b34992b1d3 Migrate all 293 class files to ontology-aligned slots
Extends migration to all class types (museums, libraries, galleries, etc.)

New slots added to class_metadata_slots.yaml:
- RiC-O: rico_record_set_type, rico_organizational_principle,
  rico_has_or_had_holder, rico_note
- Multilingual: label_de, label_es, label_fr, label_nl, label_it, label_pt
- Scope: scope_includes, scope_excludes, custodian_only,
  organizational_level, geographic_restriction
- Notes: privacy_note, preservation_note, legal_note

Migration script now handles 30+ annotation types.
All migrated schemas pass linkml-validate.

Total: 387 class files now use proper slots instead of annotations.
2026-01-06 12:24:54 +01:00

380 lines
12 KiB
YAML

id: https://nde.nl/ontology/hc/class/IIPImageServer
name: iip_image_server
title: IIPImageServer Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
dcat: http://www.w3.org/ns/dcat#
dcterms: http://purl.org/dc/terms/
schema: http://schema.org/
iiif: http://iiif.io/api/image/3#
xsd: http://www.w3.org/2001/XMLSchema#
imports:
- linkml:types
- ../metadata
- ./DataServiceEndpoint
- ../slots/protocol
- ../slots/class_metadata_slots
classes:
IIPImageServer:
is_a: DataServiceEndpoint
class_uri: hc:IIPImageServer
description: |
Tiled image server endpoint for dynamic high-resolution image delivery.
**Purpose:**
Models image server endpoints that provide:
- Deep zoom for high-resolution images
- Tile-based delivery for smooth navigation
- On-the-fly image manipulation (rotation, cropping, format conversion)
- Efficient delivery of gigapixel images
**Supported Protocols:**
| Protocol | Description | Use Case |
|----------|-------------|----------|
| **IIP** | Internet Imaging Protocol | Legacy, widely deployed |
| **IIIF Image** | International Image Interoperability Framework | Modern standard, interoperable |
| **Zoomify** | Zoomify tile format | Common in heritage sector |
| **DeepZoom** | Microsoft Deep Zoom | Seadragon viewers |
**Example - Nationaal Archief IIP Server:**
```yaml
iip_image_server:
endpoint_name: "Nationaal Archief Image Server"
base_url: "https://service.archief.nl/iipsrv"
server_software: "IIPImage"
supported_protocols:
- IIP
- Zoomify
- IIIF_IMAGE
iiif_compliance_level: LEVEL_1
max_image_dimension: 10000
supported_output_formats:
- image/jpeg
- image/png
supports_region_extraction: true
supports_rotation: true
supports_quality_selection: true
```
**IIIF Image API Features:**
IIIF Image API URL structure:
`{scheme}://{server}{/prefix}/{identifier}/{region}/{size}/{rotation}/{quality}.{format}`
- **region**: full, square, x,y,w,h, pct:x,y,w,h
- **size**: full, max, w,, ,h, pct:n, w,h, !w,h
- **rotation**: 0-360, with optional mirror (!)
- **quality**: default, color, gray, bitonal
- **format**: jpg, png, gif, webp, tif
**See Also:**
- IIIF Image API: https://iiif.io/api/image/
- IIPImage Server: https://iipimage.sourceforge.io/
attributes:
base_url:
slot_uri: dcat:endpointURL
description: |
Base URL of the image server.
Example: "https://service.archief.nl/iipsrv"
range: uri
required: true
server_software:
slot_uri: schema:softwareVersion
description: |
Image server software in use.
Common software:
- IIPImage: Open-source, supports IIP, IIIF, Zoomify
- Loris: Python IIIF image server
- Cantaloupe: Java IIIF server
- Digilib: Java image server
- RAIS: Rust IIIF server
Example: "IIPImage"
range: string
server_version:
slot_uri: schema:version
description: |
Version of the image server software.
Example: "1.1"
range: string
supported_protocols:
slot_uri: dcterms:conformsTo
description: |
Image delivery protocols supported.
Values from DataServiceProtocolEnum:
- IIP: Internet Imaging Protocol
- IIIF_IMAGE: IIIF Image API
- ZOOMIFY: Zoomify tiles
- DEEPZOOM: Microsoft Deep Zoom
Example: ["IIP", "IIIF_IMAGE", "ZOOMIFY"]
range: ImageProtocolEnum
multivalued: true
required: true
iiif_image_api_version:
slot_uri: iiif:apiVersion
description: |
IIIF Image API version supported (if IIIF enabled).
Current version: 3.0
Legacy versions: 2.1, 2.0, 1.1, 1.0
Example: "3.0"
range: string
iiif_compliance_level:
slot_uri: dcterms:conformsTo
description: |
IIIF Image API compliance level (if IIIF enabled).
Levels define mandatory features:
- LEVEL_0: Basic (fixed sizes only)
- LEVEL_1: Region, size, rotation
- LEVEL_2: Full Image API features
Example: LEVEL_1
range: IIIFComplianceLevelEnum
iiif_context_url:
slot_uri: schema:additionalType
description: |
IIIF context URL for JSON-LD.
Example: "http://iiif.io/api/image/3/context.json"
range: uri
max_image_dimension:
slot_uri: schema:maxValue
description: |
Maximum image dimension (width or height) that can be served.
Larger images may be available but capped in delivery.
Example: 10000
range: integer
max_area:
slot_uri: schema:maxValue
description: |
Maximum total pixel area that can be served in one request.
Prevents server overload on very large images.
Example: 100000000 (100 megapixels)
range: integer
tile_size:
slot_uri: schema:size
description: |
Default tile size in pixels.
Most servers use 256 or 512 pixel tiles.
Example: 512
range: integer
supported_input_formats:
slot_uri: dcterms:format
description: |
Source image formats the server can read.
Common: TIFF, JPEG 2000, Pyramid TIFF
Example: ["image/tiff", "image/jp2"]
range: string
multivalued: true
supported_output_formats:
slot_uri: dcterms:format
description: |
Output formats the server can deliver.
Example: ["image/jpeg", "image/png", "image/webp"]
range: string
multivalued: true
required: true
supports_region_extraction:
slot_uri: iiif:regionByPx
description: |
Whether the server supports extracting arbitrary image regions.
IIIF: region parameter (x,y,w,h or pct:x,y,w,h)
IIP: RGN parameter
range: boolean
supports_rotation:
slot_uri: iiif:rotation
description: |
Whether the server supports image rotation.
IIIF supports 0-360 degrees and mirroring.
range: boolean
supports_mirroring:
slot_uri: schema:additionalProperty
description: |
Whether the server supports horizontal mirroring.
IIIF: ! prefix on rotation (e.g., !0 for mirror only)
range: boolean
supports_quality_selection:
slot_uri: iiif:quality
description: |
Whether the server supports quality/color mode selection.
IIIF qualities: default, color, gray, bitonal
range: boolean
supported_qualities:
slot_uri: iiif:quality
description: |
Quality modes supported.
Example: ["default", "color", "gray", "bitonal"]
range: string
multivalued: true
supports_info_json:
slot_uri: schema:additionalProperty
description: |
Whether the server provides IIIF info.json for images.
info.json contains image metadata (dimensions, tiles, features).
range: boolean
info_json_url_pattern:
slot_uri: hydra:template
description: |
URL pattern for retrieving IIIF info.json.
Example: "{base_url}/iiif/{identifier}/info.json"
range: string
fcgi_path:
slot_uri: schema:additionalProperty
description: |
FastCGI path for IIPImage servers.
Common: "/iipsrv/iipsrv.fcgi" or "/fcgi-bin/iipsrv.fcgi"
Example: "/iipsrv/iipsrv.fcgi"
range: string
image_identifier_pattern:
slot_uri: hydra:template
description: |
Pattern for image identifiers.
IIPImage uses FIF parameter with filesystem path.
IIIF uses URL-encoded identifiers.
Example (IIP): "FIF=/path/to/{archive}/{uuid}.tif"
Example (IIIF): "{base_url}/iiif/{identifier}"
range: string
cors_enabled:
slot_uri: schema:additionalProperty
description: |
Whether CORS is enabled for browser access.
Essential for JavaScript-based viewers.
range: boolean
example_iiif_url:
slot_uri: schema:workExample
description: |
Example IIIF Image API URL.
Example: "https://service.archief.nl/iiif/2/uuid:12345/full/1000,/0/default.jpg"
range: uri
example_iip_url:
slot_uri: schema:workExample
description: |
Example IIP request URL.
Example: "https://service.archief.nl/iipsrv?FIF=/path/image.tif&WID=1000&CVT=jpeg"
range: uri
slot_usage:
protocol:
description: |
Primary protocol. Use supported_protocols for full list.
specificity_annotation:
range: SpecificityAnnotation
inlined: true
template_specificity:
range: TemplateSpecificityScores
inlined: true
comments:
- Essential for delivering high-resolution heritage images
- IIIF provides best interoperability with modern viewers
- IIPImage is most common open-source server in heritage sector
see_also:
- https://iiif.io/api/image/3.0/
- https://iipimage.sourceforge.io/
- https://github.com/loris-imageserver/loris
slots:
- specificity_annotation
- template_specificity
enums:
ImageProtocolEnum:
description: |
Image delivery protocols supported by image servers.
permissible_values:
IIP:
description: |
Internet Imaging Protocol.
Original tiled image protocol.
Parameters: FIF, WID, HEI, RGN, QLT, CVT
IIIF_IMAGE:
description: |
IIIF Image API.
Modern standard for interoperable image delivery.
URL structure: {server}/{identifier}/{region}/{size}/{rotation}/{quality}.{format}
ZOOMIFY:
description: |
Zoomify tile format.
Pyramid tiles in folders: TileGroup0/, TileGroup1/...
Properties in ImageProperties.xml
DEEPZOOM:
description: |
Microsoft Deep Zoom format.
Pyramid tiles with .dzi descriptor file.
Common with OpenSeadragon viewer.
DJATOKA:
description: |
Djatoka JPEG 2000 image server.
Legacy LoC image server, deprecated in favor of IIIF.
IIIFComplianceLevelEnum:
description: |
IIIF Image API compliance levels.
Higher levels support more features.
permissible_values:
LEVEL_0:
description: |
Level 0 - Basic.
Only supports predefined image sizes listed in info.json.
No region extraction, rotation limited.
Minimum viable IIIF implementation.
LEVEL_1:
description: |
Level 1 - Intermediate.
Supports:
- Region by pixel and percentage
- Size by width, height, or percentage
- 0 and 90 degree rotation
- Default quality
Most common compliance level.
LEVEL_2:
description: |
Level 2 - Full.
Supports all Level 1 features plus:
- Arbitrary rotation (0-360)
- Mirroring
- All quality modes (color, gray, bitonal)
- Multiple output formats
Full Image API implementation.