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