glam/schemas/20251121/linkml/modules/classes/IIPImageServer.yaml
kempersc 0d5d48568d refactor(schema): centralize slot definitions per Rule 38
- Remove slot_uri, description, mappings from slot_usage sections
- Move these properties to centralized slot files in modules/slots/
- Keep only class-specific overrides in slot_usage (required, inlined, examples)
- Update 1,499 centralized slot files with enriched definitions
- Clean 188 class files

Violations fixed:
- slot_uri in slot_usage: 1,676 → 0
- description in slot_usage: 2,287 → 0 (moved to centralized)

Schema still validates: 816 classes, 2028 slots, 127 enums
2026-01-11 23:27:17 +01:00

345 lines
9.6 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/specificity_annotation
- ../slots/template_specificity
- ./SpecificityAnnotation
- ./TemplateSpecificityScores
- ../enums/ImageProtocolEnum
- ../enums/IIIFComplianceLevelEnum
classes:
IIPImageServer:
is_a: DataServiceEndpoint
class_uri: hc:IIPImageServer
description: "Tiled image server endpoint for dynamic high-resolution image delivery.\n\n**Purpose:**\n\nModels image\
\ server endpoints that provide:\n- Deep zoom for high-resolution images\n- Tile-based delivery for smooth navigation\n\
- On-the-fly image manipulation (rotation, cropping, format conversion)\n- Efficient delivery of gigapixel images\n\n\
**Supported Protocols:**\n\n| Protocol | Description | Use Case |\n|----------|-------------|----------|\n| **IIP**\
\ | Internet Imaging Protocol | Legacy, widely deployed |\n| **IIIF Image** | International Image Interoperability Framework\
\ | Modern standard, interoperable |\n| **Zoomify** | Zoomify tile format | Common in heritage sector |\n| **DeepZoom**\
\ | Microsoft Deep Zoom | Seadragon viewers |\n\n**Example - Nationaal Archief IIP Server:**\n\n```yaml\niip_image_server:\n\
\ endpoint_name: \"Nationaal Archief Image Server\"\n base_url: \"https://service.archief.nl/iipsrv\"\n server_software:\
\ \"IIPImage\"\n supported_protocols:\n - IIP\n - Zoomify\n - IIIF_IMAGE\n iiif_compliance_level: LEVEL_1\n\
\ max_image_dimension: 10000\n supported_output_formats:\n - image/jpeg\n - image/png\n supports_region_extraction:\
\ true\n supports_rotation: true\n supports_quality_selection: true\n```\n\n**IIIF Image API Features:**\n\nIIIF Image\
\ API URL structure:\n`{scheme}://{server}{/prefix}/{identifier}/{region}/{size}/{rotation}/{quality}.{format}`\n\n\
- **region**: full, square, x,y,w,h, pct:x,y,w,h\n- **size**: full, max, w,, ,h, pct:n, w,h, !w,h\n- **rotation**: 0-360,\
\ with optional mirror (!)\n- **quality**: default, color, gray, bitonal\n- **format**: jpg, png, gif, webp, tif\n\n\
**See Also:**\n\n- IIIF Image API: https://iiif.io/api/image/\n- IIPImage Server: https://iipimage.sourceforge.io/\n"
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:
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