id: https://nde.nl/ontology/hc/class/METSAPI name: mets_api title: METSAPI 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/ premis: http://www.loc.gov/premis/rdf/v3/ xsd: http://www.w3.org/2001/XMLSchema# imports: - linkml:types - ../metadata - ./DataServiceEndpoint - ../slots/protocol - ../slots/response_formats - ../slots/class_metadata_slots classes: METSAPI: is_a: DataServiceEndpoint class_uri: hc:METSAPI description: | METS (Metadata Encoding and Transmission Standard) document retrieval API. **Purpose:** Models endpoints that provide access to METS documents describing the structure and metadata of digital objects in heritage collections. METS is a Library of Congress standard widely used in digital preservation and repository systems. **METS Structure:** A METS document contains: - **metsHdr**: Header with creation/modification metadata - **dmdSec**: Descriptive metadata (Dublin Core, MODS, EAD, etc.) - **amdSec**: Administrative metadata (technical, rights, provenance) - **fileSec**: File inventory with technical properties - **structMap**: Logical/physical structure of the object - **structLink**: Links between structural divisions - **behaviorSec**: Executable behaviors **Example - Nationaal Archief METS API:** ```yaml mets_api: endpoint_name: "Nationaal Archief METS API" base_url: "https://service.archief.nl/gaf/api/mets/v1/" url_pattern: "{base_url}{uuid}" mets_profile: NATIONAAL_ARCHIEF version: "v1" descriptive_metadata_schemas: - Dublin Core - EAD rights_metadata_available: true structural_metadata_available: true file_inventory_included: true example_url: "https://service.archief.nl/gaf/api/mets/v1/12345678-1234-1234-1234-123456789012" ``` **Use Cases:** 1. **Digital preservation**: Validate object integrity 2. **Viewer integration**: Build multi-page viewers from structural metadata 3. **Migration**: Transfer objects between repository systems 4. **Audit**: Track provenance and rights **See Also:** - METS Standard: https://www.loc.gov/standards/mets/ - METS Primer: https://www.loc.gov/standards/mets/METSPrimer.pdf attributes: base_url: slot_uri: dcat:endpointURL description: | Base URL for METS document retrieval. Individual documents are accessed by appending an identifier. Example: "https://service.archief.nl/gaf/api/mets/v1/" range: uri required: true url_pattern: slot_uri: hydra:template description: | URL pattern for constructing METS document requests. Use {placeholders} for dynamic parts. Examples: - "{base_url}{uuid}" → https://service.archief.nl/gaf/api/mets/v1/12345678-... - "{base_url}?id={identifier}" → https://example.org/mets?id=doc123 range: string identifier_type: slot_uri: dcterms:identifier description: | Type of identifier used to request METS documents. Values: UUID, HANDLE, DOI, ARK, LOCAL_ID Example: UUID range: METSIdentifierTypeEnum mets_profile: slot_uri: dcterms:conformsTo description: | METS profile implemented by this API. METS profiles constrain the standard for specific use cases. Examples: - NATIONAAL_ARCHIEF: Dutch National Archive profile - BHL: Biodiversity Heritage Library profile - FEDORA: Fedora repository profile - NDNP: National Digital Newspaper Program range: string mets_schema_version: slot_uri: schema:schemaVersion description: | METS schema version used. Current version: 1.12.1 Example: "1.12.1" range: string descriptive_metadata_schemas: slot_uri: dcterms:format description: | Descriptive metadata schemas embedded in dmdSec. Common schemas: - Dublin Core (oai_dc) - MODS - EAD (for archival description) - MARCXML - VRA Core (visual resources) Example: ["Dublin Core", "EAD"] range: string multivalued: true administrative_metadata_sections: slot_uri: schema:additionalProperty description: | Administrative metadata sections included. METS defines: - techMD: Technical metadata (file formats, dimensions) - rightsMD: Rights/permissions - sourceMD: Source/provenance - digiprovMD: Digital provenance (PREMIS events) Example: ["techMD", "rightsMD", "digiprovMD"] range: string multivalued: true rights_metadata_available: slot_uri: dcterms:rights description: | Whether rights metadata (rightsMD) is included. Important for access control and reuse decisions. range: boolean technical_metadata_standard: slot_uri: premis:hasObjectCharacteristics description: | Standard used for technical metadata. Common standards: - PREMIS: PREservation Metadata - MIX: NISO Metadata for Images in XML - textMD: Technical metadata for text - AudioMD/VideoMD: AV technical metadata Example: "PREMIS" range: string structural_metadata_available: slot_uri: schema:hasPart description: | Whether structural metadata (structMap) is included. Structural maps define how components relate to form the object (pages in a book, frames in a film, etc.). range: boolean structure_map_types: slot_uri: schema:additionalProperty description: | Types of structural maps included. Common types: - LOGICAL: Intellectual structure (chapters, sections) - PHYSICAL: Physical organization (pages, leaves) - MIXED: Combination of logical and physical Example: ["LOGICAL", "PHYSICAL"] range: string multivalued: true file_inventory_included: slot_uri: dcat:distribution description: | Whether file inventory (fileSec) is included. File section lists all files with locations, sizes, checksums. range: boolean file_location_resolvable: slot_uri: schema:contentUrl description: | Whether file URLs in fileSec are directly resolvable. If true, file URLs can be used to download content. If false, files may require authentication or be internal references. range: boolean checksum_algorithms: slot_uri: schema:algorithm description: | Checksum algorithms used in file inventory. For integrity verification. Example: ["MD5", "SHA-256", "SHA-512"] range: string multivalued: true supports_validation: slot_uri: schema:validIn description: | Whether the API validates METS against schema/profile. Well-formed METS should validate against XSD schema. range: boolean example_url: slot_uri: schema:workExample description: | Example URL for retrieving a METS document. Example: "https://service.archief.nl/gaf/api/mets/v1/12345678-1234-1234-1234-123456789012" range: uri slot_usage: protocol: description: METS APIs typically use REST protocol (DataServiceProtocolEnum.REST). response_formats: description: | METS documents are always XML. ifabsent: string(application/xml) specificity_annotation: range: SpecificityAnnotation inlined: true template_specificity: range: TemplateSpecificityScores inlined: true comments: - METS is essential for digital preservation and repository interoperability - Structural maps enable building multi-page viewers - Consider caching METS documents for frequently accessed objects see_also: - https://www.loc.gov/standards/mets/ - https://www.loc.gov/standards/mets/mets-schemadocs.html slots: - specificity_annotation - template_specificity enums: METSIdentifierTypeEnum: description: | Types of identifiers used to request METS documents. permissible_values: UUID: description: | Universally Unique Identifier. Format: 8-4-4-4-12 hexadecimal Example: "12345678-1234-1234-1234-123456789012" HANDLE: description: | Handle System persistent identifier. Format: prefix/suffix Example: "10.5072/example.001" DOI: description: | Digital Object Identifier. Format: 10.prefix/suffix Example: "10.1234/example.001" ARK: description: | Archival Resource Key. Format: ark:/NAAN/assigned-name Example: "ark:/12345/fk4sample" URN: description: | Uniform Resource Name. Format: urn:namespace:identifier Example: "urn:nbn:nl:ui:13-sample-001" LOCAL_ID: description: | Local/internal identifier specific to the repository. Format varies by institution. INVENTORY_NUMBER: description: | Archival inventory/call number. Format varies (e.g., "2.04.87/123")