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.