diff --git a/frontend/public/schemas/20251121/linkml/manifest.json b/frontend/public/schemas/20251121/linkml/manifest.json index 57d5377045..6632812864 100644 --- a/frontend/public/schemas/20251121/linkml/manifest.json +++ b/frontend/public/schemas/20251121/linkml/manifest.json @@ -1,5 +1,5 @@ { - "generated": "2026-01-11T20:42:55.546Z", + "generated": "2026-01-11T21:26:38.219Z", "schemaRoot": "/schemas/20251121/linkml", "totalFiles": 2869, "categoryCounts": { @@ -3952,41 +3952,6 @@ "path": "modules/slots/accepts_or_accepted_visiting_scholar.yaml", "category": "slot" }, - { - "name": "access_rights", - "path": "modules/slots/access_rights.yaml", - "category": "slot" - }, - { - "name": "access_trigger_events", - "path": "modules/slots/access_trigger_events.yaml", - "category": "slot" - }, - { - "name": "account_id", - "path": "modules/slots/account_id.yaml", - "category": "slot" - }, - { - "name": "accumulation_date_end", - "path": "modules/slots/accumulation_date_end.yaml", - "category": "slot" - }, - { - "name": "accumulation_date_start", - "path": "modules/slots/accumulation_date_start.yaml", - "category": "slot" - }, - { - "name": "accuracy_meters", - "path": "modules/slots/accuracy_meters.yaml", - "category": "slot" - }, - { - "name": "active_since", - "path": "modules/slots/active_since.yaml", - "category": "slot" - }, { "name": "activities_societies", "path": "modules/slots/activities_societies.yaml", @@ -5672,6 +5637,21 @@ "path": "modules/slots/custodian_only.yaml", "category": "slot" }, + { + "name": "custodian_type_broader", + "path": "modules/slots/custodian_type_broader.yaml", + "category": "slot" + }, + { + "name": "custodian_type_narrower", + "path": "modules/slots/custodian_type_narrower.yaml", + "category": "slot" + }, + { + "name": "custodian_type_related", + "path": "modules/slots/custodian_type_related.yaml", + "category": "slot" + }, { "name": "custody_history", "path": "modules/slots/custody_history.yaml", @@ -5812,6 +5792,11 @@ "path": "modules/slots/defined_by_standard.yaml", "category": "slot" }, + { + "name": "definition", + "path": "modules/slots/definition.yaml", + "category": "slot" + }, { "name": "degree_name", "path": "modules/slots/degree_name.yaml", @@ -6877,6 +6862,16 @@ "path": "modules/slots/financial_document_url.yaml", "category": "slot" }, + { + "name": "finding_aid_access_restriction", + "path": "modules/slots/finding_aid_access_restriction.yaml", + "category": "slot" + }, + { + "name": "finding_aid_description", + "path": "modules/slots/finding_aid_description.yaml", + "category": "slot" + }, { "name": "finding_aid_note", "path": "modules/slots/finding_aid_note.yaml", @@ -6887,6 +6882,11 @@ "path": "modules/slots/finding_aid_scope_note.yaml", "category": "slot" }, + { + "name": "finding_aid_temporal_coverage", + "path": "modules/slots/finding_aid_temporal_coverage.yaml", + "category": "slot" + }, { "name": "finding_aid_type", "path": "modules/slots/finding_aid_type.yaml", @@ -7292,11 +7292,6 @@ "path": "modules/slots/has_accession_number.yaml", "category": "slot" }, - { - "name": "has_account_identifier", - "path": "modules/slots/has_account_identifier.yaml", - "category": "slot" - }, { "name": "has_accumulation_end_date", "path": "modules/slots/has_accumulation_end_date.yaml", @@ -7332,11 +7327,6 @@ "path": "modules/slots/has_acquisition_source.yaml", "category": "slot" }, - { - "name": "has_active_since_date", - "path": "modules/slots/has_active_since_date.yaml", - "category": "slot" - }, { "name": "has_activity_description", "path": "modules/slots/has_activity_description.yaml", @@ -8067,6 +8057,11 @@ "path": "modules/slots/has_or_had_accessibility_feature.yaml", "category": "slot" }, + { + "name": "has_or_had_account_identifier", + "path": "modules/slots/has_or_had_account_identifier.yaml", + "category": "slot" + }, { "name": "has_or_had_account_name", "path": "modules/slots/has_or_had_account_name.yaml", @@ -9477,6 +9472,11 @@ "path": "modules/slots/is_or_was_access_restricted.yaml", "category": "slot" }, + { + "name": "is_or_was_active_since", + "path": "modules/slots/is_or_was_active_since.yaml", + "category": "slot" + }, { "name": "is_or_was_affected_by_event", "path": "modules/slots/is_or_was_affected_by_event.yaml", diff --git a/schemas/20251121/linkml/manifest.json b/schemas/20251121/linkml/manifest.json index 6632812864..edf8f4cba2 100644 --- a/schemas/20251121/linkml/manifest.json +++ b/schemas/20251121/linkml/manifest.json @@ -1,5 +1,5 @@ { - "generated": "2026-01-11T21:26:38.219Z", + "generated": "2026-01-11T21:40:23.628Z", "schemaRoot": "/schemas/20251121/linkml", "totalFiles": 2869, "categoryCounts": { diff --git a/schemas/20251121/linkml/modules/classes/AllocationAgency.yaml b/schemas/20251121/linkml/modules/classes/AllocationAgency.yaml index 7a1c79d208..4429c6638c 100644 --- a/schemas/20251121/linkml/modules/classes/AllocationAgency.yaml +++ b/schemas/20251121/linkml/modules/classes/AllocationAgency.yaml @@ -20,33 +20,26 @@ imports: - ../slots/template_specificity - ./SpecificityAnnotation - ./TemplateSpecificityScores +- ../enums/AllocationDomainEnum classes: AllocationAgency: class_uri: org:FormalOrganization - description: "An organization that allocates identifiers within a specific geographic\ - \ area \nand/or domain of heritage institutions.\n\n**Key Distinction from RegistrationAuthority:**\n\ - \n- **RegistrationAuthority**: Maintains the GLOBAL registry for a standard\n\ - \ - Example: Danish Agency for Culture and Palaces maintains global ISIL registry\n\ - \ - Example: ISNI International Agency (WIPO) maintains global ISNI database\n\ - \n- **AllocationAgency**: Allocates identifiers LOCALLY within constraints\n\ - \ - Example: Koninklijke Bibliotheek allocates ISIL for Dutch public libraries\n\ - \ - Example: OCLC allocates ISIL for Dutch academic libraries\n - Example:\ - \ Nationaal Archief allocates ISIL for Dutch archives\n\n**Multi-Dimensional\ - \ Scope:**\n\nAllocationAgencies have both:\n1. **Geographic scope**: Which\ - \ country/region they serve\n2. **Domain scope**: Which types of institutions\ - \ they serve\n\nThis allows multiple agencies per country, each serving different\ - \ domains:\n- NL public libraries → KB\n- NL academic libraries → OCLC\n- NL\ - \ archives → Nationaal Archief\n\n**Relationship to Standard:**\n\nAn AllocationAgency\ - \ allocates for one or more Standards:\n- AllocationAgency.allocates_for → Standard[]\n\ - - Standard can have multiple AllocationAgencies (one per country/domain)\n\n\ - **Examples:**\n\n| Agency | Country | Domain | Standard |\n|--------|---------|--------|----------|\n\ - | Koninklijke Bibliotheek | NL | Public libraries | ISIL |\n| OCLC | NL | Academic\ - \ libraries | ISIL |\n| Nationaal Archief | NL | Archives | ISIL |\n| British\ - \ Library | GB | All | ISIL |\n| Library of Congress | US | All | ISIL |\n|\ - \ OCLC | Global | Academic | VIAF |\n| Deutsche Nationalbibliothek | DE | All\ - \ | ISNI |\n\n**Ontology Alignment:**\n\n- org:FormalOrganization - W3C Organization\ - \ Ontology\n- Extends gleif_base:RegistrationAuthority concept (but for allocation,\ - \ not registration)\n" + description: "An organization that allocates identifiers within a specific geographic area \nand/or domain of heritage\ + \ institutions.\n\n**Key Distinction from RegistrationAuthority:**\n\n- **RegistrationAuthority**: Maintains the GLOBAL\ + \ registry for a standard\n - Example: Danish Agency for Culture and Palaces maintains global ISIL registry\n - Example:\ + \ ISNI International Agency (WIPO) maintains global ISNI database\n\n- **AllocationAgency**: Allocates identifiers LOCALLY\ + \ within constraints\n - Example: Koninklijke Bibliotheek allocates ISIL for Dutch public libraries\n - Example: OCLC\ + \ allocates ISIL for Dutch academic libraries\n - Example: Nationaal Archief allocates ISIL for Dutch archives\n\n\ + **Multi-Dimensional Scope:**\n\nAllocationAgencies have both:\n1. **Geographic scope**: Which country/region they serve\n\ + 2. **Domain scope**: Which types of institutions they serve\n\nThis allows multiple agencies per country, each serving\ + \ different domains:\n- NL public libraries → KB\n- NL academic libraries → OCLC\n- NL archives → Nationaal Archief\n\ + \n**Relationship to Standard:**\n\nAn AllocationAgency allocates for one or more Standards:\n- AllocationAgency.allocates_for\ + \ → Standard[]\n- Standard can have multiple AllocationAgencies (one per country/domain)\n\n**Examples:**\n\n| Agency\ + \ | Country | Domain | Standard |\n|--------|---------|--------|----------|\n| Koninklijke Bibliotheek | NL | Public\ + \ libraries | ISIL |\n| OCLC | NL | Academic libraries | ISIL |\n| Nationaal Archief | NL | Archives | ISIL |\n| British\ + \ Library | GB | All | ISIL |\n| Library of Congress | US | All | ISIL |\n| OCLC | Global | Academic | VIAF |\n| Deutsche\ + \ Nationalbibliothek | DE | All | ISNI |\n\n**Ontology Alignment:**\n\n- org:FormalOrganization - W3C Organization Ontology\n\ + - Extends gleif_base:RegistrationAuthority concept (but for allocation, not registration)\n" exact_mappings: - org:FormalOrganization close_mappings: @@ -56,138 +49,193 @@ classes: id: identifier: true slot_uri: schema:identifier - description: | - Unique identifier for this allocation agency. + description: 'Unique identifier for this allocation agency. + Recommended format: {country}-{abbreviation} or {abbreviation} + Examples: "nl-kb", "nl-oclc", "nl-na", "gb-bl", "us-loc" + + ' range: uriorcurie required: true name: slot_uri: schema:name - description: | - Official full name of the allocation agency. + description: 'Official full name of the allocation agency. + Examples: + - "Koninklijke Bibliotheek" + - "Nationaal Archief" + - "British Library" + - "Library of Congress" + + ' range: string required: true name_local: slot_uri: schema:alternateName - description: | - Name in local language (if different from English name). + description: 'Name in local language (if different from English name). + Examples: + - "Koninklijke Bibliotheek" (Dutch) + - "Deutsche Nationalbibliothek" (German) + - "Bibliothèque nationale de France" (French) + + ' range: string has_or_had_abbreviation: slot_uri: schema:alternateName - description: | - Common abbreviation. + description: 'Common abbreviation. + Examples: "KB", "NA", "BL", "LOC", "BnF", "DNB" + + ' range: string country_scope: slot_uri: gleif_base:hasCoverageArea - description: | - Geographic area(s) where this agency allocates identifiers. + description: 'Geographic area(s) where this agency allocates identifiers. + Usually a single country, but can be multiple countries or subregions. + Examples: + - [NL] for Koninklijke Bibliotheek + - [GB] for British Library + - [US] for Library of Congress + - [DE-BY, DE-BW] for regional German agency + + ' range: Country multivalued: true required: true inlined: false subregion_scope: slot_uri: schema:areaServed - description: | - Subregion-level geographic scope (if more specific than country). + description: 'Subregion-level geographic scope (if more specific than country). + For agencies that only serve specific regions within a country. + Examples: + - Staatsarchiv München: [DE-BY] (Bavaria only) + + ' range: Subregion multivalued: true inlined: false allocation_domain: slot_uri: schema:audienceType - description: | - Types of institutions this agency allocates identifiers for. + description: 'Types of institutions this agency allocates identifiers for. + Multiple values allowed for agencies serving multiple domains. + Examples: + - KB: [LIBRARY_PUBLIC] + - OCLC: [LIBRARY_ACADEMIC, LIBRARY_RESEARCH] + - Nationaal Archief: [ARCHIVE] + - British Library: [LIBRARY_PUBLIC, LIBRARY_ACADEMIC, ARCHIVE] (all types) + + ' range: AllocationDomainEnum multivalued: true required: true allocates_for: slot_uri: schema:serviceOutput - description: | - Standards for which this agency allocates identifiers. + description: 'Standards for which this agency allocates identifiers. + Most agencies allocate for a single standard, but some handle multiple. + Examples: + - KB: [ISIL] + - DNB: [ISIL, ISNI] + - OCLC: [ISIL, VIAF] + + ' range: Standard multivalued: true required: true inlined: false allocation_prefix: slot_uri: schema:identifier - description: | - Prefix used by this agency when allocating identifiers. + description: 'Prefix used by this agency when allocating identifiers. + For ISIL, this is typically the country code. + Examples: + - Netherlands ISIL: "NL-" + - Germany ISIL: "DE-" + - UK ISIL: "UK-" or "GB-" (both used historically) + + ' range: string parent_registration_authority: slot_uri: schema:parentOrganization - description: | - The registration authority to which this agency reports allocations. + description: 'The registration authority to which this agency reports allocations. + AllocationAgencies report their allocations to the global RegistrationAuthority. + Examples: + - KB (NL ISIL) → Danish Agency for Culture and Palaces + - DNB (DE ISNI) → ISNI International Agency + + ' range: RegistrationAuthority inlined: false allocation_start_date: slot_uri: schema:startDate - description: | - Date when this agency started allocating identifiers. + description: 'Date when this agency started allocating identifiers. + Format: ISO 8601 date + + ' range: date allocation_end_date: slot_uri: schema:endDate - description: | - Date when this agency stopped allocating (if no longer active). + description: 'Date when this agency stopped allocating (if no longer active). + Null if still active. + + ' range: date is_active: slot_uri: schema:status @@ -196,24 +244,30 @@ classes: required: true website: slot_uri: schema:url - description: | - Official website of the allocation agency. + description: 'Official website of the allocation agency. + Preferably the page about identifier allocation services. + + ' range: uri contact_email: slot_uri: schema:email - description: | - Contact email for identifier allocation requests. + description: 'Contact email for identifier allocation requests. + Examples: "isil@kb.nl", "isni@dnb.de" + + ' range: string allocation_policy_url: slot_uri: schema:usageInfo - description: | - URL to the allocation policy documentation. + description: 'URL to the allocation policy documentation. + Describes eligibility, process, requirements for obtaining identifiers. + + ' range: uri agency_description: slot_uri: schema:description @@ -229,62 +283,3 @@ classes: template_specificity: range: TemplateSpecificityScores inlined: true -enums: - AllocationDomainEnum: - description: | - Types of heritage institutions that an AllocationAgency can serve. - - Based on GLAMORCUBESFIXPHDNT taxonomy but focused on allocation domains. - permissible_values: - LIBRARY_PUBLIC: - description: | - Public libraries (openbare bibliotheken). - Examples: Municipal libraries, regional libraries - LIBRARY_ACADEMIC: - description: | - Academic and university libraries. - Examples: University libraries, polytechnic libraries - LIBRARY_RESEARCH: - description: | - Research and special libraries. - Examples: Corporate libraries, government agency libraries - LIBRARY_NATIONAL: - description: | - National libraries. - Examples: Koninklijke Bibliotheek, Library of Congress - ARCHIVE: - description: | - Archives of all types. - Examples: National archives, regional archives, municipal archives - MUSEUM: - description: | - Museums of all types. - Examples: Art museums, history museums, science museums - GALLERY: - description: | - Art galleries and exhibition spaces. - Examples: Commercial galleries, kunsthallen - HERITAGE_SOCIETY: - description: | - Heritage and historical societies. - Examples: Heemkundige kringen, genealogical societies - RESEARCH_ORGANIZATION: - description: | - Research organizations and documentation centers. - Examples: Research institutes, knowledge centers - EDUCATION_PROVIDER: - description: | - Educational institutions with heritage collections. - Examples: Universities, academies - RELIGIOUS_INSTITUTION: - description: | - Religious institutions with collections. - Examples: Church archives, monastery libraries - GOVERNMENT_AGENCY: - description: | - Government agencies and official institutions. - Examples: Ministries, provincial heritage services - ALL: - description: | - Agency allocates for all institution types. - Used when there's a single national agency for all domains. diff --git a/schemas/20251121/linkml/modules/classes/DataLicensePolicy.yaml b/schemas/20251121/linkml/modules/classes/DataLicensePolicy.yaml index 16ce2e2c42..f51349fa68 100644 --- a/schemas/20251121/linkml/modules/classes/DataLicensePolicy.yaml +++ b/schemas/20251121/linkml/modules/classes/DataLicensePolicy.yaml @@ -15,33 +15,28 @@ imports: - ../slots/template_specificity - ./SpecificityAnnotation - ./TemplateSpecificityScores +- ../enums/DataLicenseTypeEnum +- ../enums/DataOpennessLevelEnum +- ../enums/OpennessStanceEnum default_prefix: hc classes: DataLicensePolicy: class_uri: odrl:Policy - description: "An organization's policy regarding data licensing and openness,\ - \ representing\nthe principles and practices the organization strives for in\ - \ sharing data.\n\n**APPLICABLE TO BOTH**:\n\n1. **EncompassingBody** (Cooperative,\ - \ SocialMovement, Network, Consortium, Umbrella)\n - OCLC (Cooperative): Mixed\ - \ policy - WorldCat proprietary, VIAF open\n - Wikimedia Foundation (SocialMovement):\ - \ Strong open advocate - CC0 for Wikidata\n \n2. **Custodian** (Museums, Archives,\ - \ Libraries, etc.)\n - Rijksmuseum: Open policy - CC0 for high-res images\n\ - \ - Some private collections: Proprietary - no reuse allowed\n\n**POLICY vs\ - \ LICENSE**:\n\n- **DataLicensePolicy**: The ASPIRATIONAL stance - what the\ - \ organization strives for\n- **DataLicense**: The LEGAL instrument - specific\ - \ license terms (CC0, CC-BY, etc.)\n\nAn organization's policy may include:\n\ - - Default license for all data/content\n- Service-specific licenses (different\ - \ licenses for different services)\n- Advocacy activities (promoting open data\ - \ beyond their own data)\n- Endorsement of open data principles (FAIR, Open\ - \ Definition)\n\n**CRITICAL DISTINCTION: OPEN vs CLOSED**\n\nThis class is essential\ - \ for understanding the fundamental difference between:\n\n- **OCLC (Cooperative)**:\ - \ MIXED_POLICY\n - WorldCat: Proprietary (subscription-based)\n - VIAF: ODC-BY\ - \ (open with attribution)\n - Members pay for services\n \n- **Wikimedia Foundation\ - \ (Social Movement)**: STRONG_OPEN_ADVOCATE\n - Wikidata: CC0 (public domain)\n\ - \ - Wikipedia: CC-BY-SA (copyleft)\n - All contributions openly licensed\n\ - \ - Free access for all\n\n**Ontology Alignment:**\n\n- odrl:Policy (ODRL -\ - \ Open Digital Rights Language)\n- dcterms:Policy (Dublin Core)\n- schema:DigitalDocument\ - \ (for policy documents)\n" + description: "An organization's policy regarding data licensing and openness, representing\nthe principles and practices\ + \ the organization strives for in sharing data.\n\n**APPLICABLE TO BOTH**:\n\n1. **EncompassingBody** (Cooperative,\ + \ SocialMovement, Network, Consortium, Umbrella)\n - OCLC (Cooperative): Mixed policy - WorldCat proprietary, VIAF\ + \ open\n - Wikimedia Foundation (SocialMovement): Strong open advocate - CC0 for Wikidata\n \n2. **Custodian** (Museums,\ + \ Archives, Libraries, etc.)\n - Rijksmuseum: Open policy - CC0 for high-res images\n - Some private collections:\ + \ Proprietary - no reuse allowed\n\n**POLICY vs LICENSE**:\n\n- **DataLicensePolicy**: The ASPIRATIONAL stance - what\ + \ the organization strives for\n- **DataLicense**: The LEGAL instrument - specific license terms (CC0, CC-BY, etc.)\n\ + \nAn organization's policy may include:\n- Default license for all data/content\n- Service-specific licenses (different\ + \ licenses for different services)\n- Advocacy activities (promoting open data beyond their own data)\n- Endorsement\ + \ of open data principles (FAIR, Open Definition)\n\n**CRITICAL DISTINCTION: OPEN vs CLOSED**\n\nThis class is essential\ + \ for understanding the fundamental difference between:\n\n- **OCLC (Cooperative)**: MIXED_POLICY\n - WorldCat: Proprietary\ + \ (subscription-based)\n - VIAF: ODC-BY (open with attribution)\n - Members pay for services\n \n- **Wikimedia Foundation\ + \ (Social Movement)**: STRONG_OPEN_ADVOCATE\n - Wikidata: CC0 (public domain)\n - Wikipedia: CC-BY-SA (copyleft)\n\ + \ - All contributions openly licensed\n - Free access for all\n\n**Ontology Alignment:**\n\n- odrl:Policy (ODRL -\ + \ Open Digital Rights Language)\n- dcterms:Policy (Dublin Core)\n- schema:DigitalDocument (for policy documents)\n" exact_mappings: - odrl:Policy close_mappings: @@ -51,142 +46,177 @@ classes: id: identifier: true slot_uri: schema:identifier - description: | - Unique identifier for this data license policy. + description: 'Unique identifier for this data license policy. + Format: https://nde.nl/ontology/hc/policy/{organization-slug} + Examples: + - "https://nde.nl/ontology/hc/policy/oclc" + - "https://nde.nl/ontology/hc/policy/wikimedia" + - "https://nde.nl/ontology/hc/policy/rijksmuseum" + + ' range: uriorcurie required: true policy_name: slot_uri: schema:name - description: | - Name of the data license policy. + description: 'Name of the data license policy. + Examples: + - "OCLC Data Usage Policy" + - "Wikimedia Foundation Open Data Policy" + - "Europeana Licensing Framework" + - "Rijksmuseum Open Access Policy" + + ' range: string required: true default_license: slot_uri: schema:license - description: | - The default license applied to data/content unless otherwise specified. + description: 'The default license applied to data/content unless otherwise specified. + Links to a DataLicense instance representing the specific legal instrument. + Examples: + - Wikimedia Foundation: CC0 (for Wikidata) + - Europeana: CC0 (for metadata) + - OCLC: Proprietary (for WorldCat) + - Rijksmuseum: CC0 (for high-res images) + + ' range: DataLicense inlined: false required: true service_specific_licenses: slot_uri: schema:hasPart - description: | - Licenses for specific services that differ from the default. - - Allows modeling organizations with mixed policies where different - services or data types have different licenses. - - **Example - OCLC (Cooperative with mixed policy):** - ```yaml - default_license: proprietary-worldcat - service_specific_licenses: - - service_name: "VIAF" - license: odc-by-1.0 - - service_name: "WorldCat Identities" - license: odc-by-1.0 - ``` - - **Example - Wikimedia (Movement with unified open policy):** - ```yaml - default_license: cc0-1.0 - service_specific_licenses: - - service_name: "Wikipedia" - license: cc-by-sa-4.0 # Different from default - - service_name: "Wikidata" - license: cc0-1.0 # Same as default - ``` + description: "Licenses for specific services that differ from the default.\n\nAllows modeling organizations with mixed\ + \ policies where different\nservices or data types have different licenses.\n\n**Example - OCLC (Cooperative with\ + \ mixed policy):**\n```yaml\ndefault_license: proprietary-worldcat\nservice_specific_licenses:\n - service_name:\ + \ \"VIAF\"\n license: odc-by-1.0\n - service_name: \"WorldCat Identities\"\n license: odc-by-1.0\n```\n\n\ + **Example - Wikimedia (Movement with unified open policy):**\n```yaml\ndefault_license: cc0-1.0\nservice_specific_licenses:\n\ + \ - service_name: \"Wikipedia\"\n license: cc-by-sa-4.0 # Different from default\n - service_name: \"Wikidata\"\ + \n license: cc0-1.0 # Same as default\n```\n" range: ServiceLicense multivalued: true inlined_as_list: true openness_stance: slot_uri: schema:position - description: | - Organization's overall philosophical stance on data openness. + description: 'Organization''s overall philosophical stance on data openness. + This captures the ADVOCACY dimension beyond just licensing: + - **STRONG_OPEN_ADVOCATE**: Actively promotes open data (Wikimedia, CC, OKFN) + - **OPEN_BY_DEFAULT**: Generally open but practical exceptions (Europeana) + - **MIXED_POLICY**: Some open, some closed (OCLC) + - **CLOSED_BY_DEFAULT**: Generally closed with some open offerings + - **FULLY_PROPRIETARY**: All data proprietary + This is the PRIMARY indicator for comparing organizations. + + ' range: OpennessStanceEnum required: true open_data_principles: slot_uri: schema:valueReference - description: | - Open data principles or frameworks the organization formally endorses. + description: 'Open data principles or frameworks the organization formally endorses. + Examples: + - "FAIR Principles" (Findable, Accessible, Interoperable, Reusable) + - "Open Definition" (Open Knowledge Foundation) + - "Sunlight Foundation Open Data Principles" + - "G8 Open Data Charter" + - "Budapest Open Access Initiative" + - "Berlin Declaration on Open Access" + + ' range: string multivalued: true policy_url: slot_uri: schema:url - description: | - URL to the organization's official data policy documentation. + description: 'URL to the organization''s official data policy documentation. + Examples: + - https://www.oclc.org/en/worldcat/community/data-strategy.html + - https://foundation.wikimedia.org/wiki/Policy:Terms_of_Use + - https://www.rijksmuseum.nl/en/research/image-requests + + ' range: uri policy_effective_date: slot_uri: schema:datePublished - description: | - Date when this policy became effective. + description: 'Date when this policy became effective. + Useful for tracking policy evolution over time. + + ' range: date advocacy_activities: slot_uri: schema:potentialAction - description: | - Open data advocacy activities the organization engages in. + description: 'Open data advocacy activities the organization engages in. + These activities go BEYOND just licensing their own data - they + represent active promotion of open data practices in the broader community. + Examples: + - "Open Data Day sponsorship" + - "Creative Commons affiliate network membership" + - "Open Knowledge Foundation partnership" + - "FAIR data training programs" + - "Open GLAM initiative participation" + - "Linked Open Data evangelism" + + ' range: string multivalued: true policy_description: slot_uri: schema:description - description: | - Narrative description of the organization's data policy philosophy. + description: 'Narrative description of the organization''s data policy philosophy. + + ' range: string slots: - specificity_annotation @@ -200,21 +230,16 @@ classes: inlined: true DataLicense: class_uri: cc:License - description: "A specific data license - the legal instrument that defines how\ - \ data may be\nused, shared, and redistributed.\n\n**License Categories:**\n\ - \n1. **Creative Commons (CC)** - For creative works and data\n - CC0: Public\ - \ domain dedication (no rights reserved)\n - CC-BY: Attribution required\n\ - \ - CC-BY-SA: Attribution + ShareAlike (copyleft)\n - CC-BY-NC: Attribution\ - \ + Non-Commercial\n - CC-BY-ND: Attribution + No Derivatives\n \n2. **Open\ - \ Data Commons (ODC)** - Specifically for databases\n - PDDL: Public Domain\ - \ Dedication and License\n - ODC-BY: Attribution License for databases\n \ - \ - ODbL: Open Database License (Attribution + ShareAlike)\n \n3. **Government\ - \ Open Licenses**\n - UK OGL: UK Open Government Licence\n - French Licence\ - \ Ouverte\n - US Public Domain (government works)\n \n4. **Proprietary**\ - \ - Closed/restricted access\n - Subscription required\n - Terms of service\ - \ restrictions\n - No redistribution rights\n\n**Reference**: https://creativecommons.org/licenses/\n\ - \n**Ontology Alignment:**\n\n- cc:License (Creative Commons namespace)\n- dcterms:LicenseDocument\ - \ (Dublin Core)\n- schema:CreativeWork (for license documents)\n" + description: "A specific data license - the legal instrument that defines how data may be\nused, shared, and redistributed.\n\ + \n**License Categories:**\n\n1. **Creative Commons (CC)** - For creative works and data\n - CC0: Public domain dedication\ + \ (no rights reserved)\n - CC-BY: Attribution required\n - CC-BY-SA: Attribution + ShareAlike (copyleft)\n - CC-BY-NC:\ + \ Attribution + Non-Commercial\n - CC-BY-ND: Attribution + No Derivatives\n \n2. **Open Data Commons (ODC)** - Specifically\ + \ for databases\n - PDDL: Public Domain Dedication and License\n - ODC-BY: Attribution License for databases\n \ + \ - ODbL: Open Database License (Attribution + ShareAlike)\n \n3. **Government Open Licenses**\n - UK OGL: UK Open\ + \ Government Licence\n - French Licence Ouverte\n - US Public Domain (government works)\n \n4. **Proprietary**\ + \ - Closed/restricted access\n - Subscription required\n - Terms of service restrictions\n - No redistribution\ + \ rights\n\n**Reference**: https://creativecommons.org/licenses/\n\n**Ontology Alignment:**\n\n- cc:License (Creative\ + \ Commons namespace)\n- dcterms:LicenseDocument (Dublin Core)\n- schema:CreativeWork (for license documents)\n" exact_mappings: - cc:License close_mappings: @@ -224,167 +249,239 @@ classes: id: identifier: true slot_uri: schema:identifier - description: | - Unique identifier for this license. + description: 'Unique identifier for this license. + Recommended: Use standard SPDX-style identifiers. + Examples: + - "cc0-1.0" (Creative Commons Zero 1.0) + - "cc-by-4.0" (Creative Commons Attribution 4.0) + - "odc-by-1.0" (Open Data Commons Attribution 1.0) + - "proprietary-oclc" (OCLC proprietary terms) + + ' range: uriorcurie required: true name: slot_uri: schema:name - description: | - Full official name of the license. + description: 'Full official name of the license. + Examples: + - "Creative Commons Zero 1.0 Universal" + - "Creative Commons Attribution 4.0 International" + - "Open Data Commons Attribution License 1.0" + - "Open Database License (ODbL) 1.0" + + ' range: string required: true has_or_had_abbreviation: slot_uri: schema:alternateName - description: | - Common has_or_had_abbreviation for the license. + description: 'Common has_or_had_abbreviation for the license. + Examples: "CC0", "CC-BY", "CC-BY-SA", "ODC-BY", "ODbL" + + ' range: string license_type: slot_uri: schema:additionalType - description: | - Classification of this license by its framework/family. + description: 'Classification of this license by its framework/family. + + ' range: DataLicenseTypeEnum required: true openness_level: slot_uri: schema:accessMode - description: | - Degree of openness on a spectrum from fully open to fully closed. + description: 'Degree of openness on a spectrum from fully open to fully closed. + This is the PRIMARY indicator for data accessibility: + - **FULLY_OPEN**: No restrictions (CC0, PDDL) + - **OPEN_WITH_ATTRIBUTION**: Attribution required (CC-BY, ODC-BY) + - **OPEN_SHAREALIKE**: Copyleft requirement (CC-BY-SA, ODbL) + - **RESTRICTED_NONCOMMERCIAL**: Non-commercial only (CC-BY-NC) + - **RESTRICTED_NO_DERIVATIVES**: No modifications (CC-BY-ND) + - **CLOSED_SUBSCRIPTION**: Paid access required + - **CLOSED_PROPRIETARY**: No reuse rights + + ' range: DataOpennessLevelEnum required: true license_url: slot_uri: cc:legalcode - description: | - URL to the official legal text of the license. + description: 'URL to the official legal text of the license. + Examples: + - https://creativecommons.org/publicdomain/zero/1.0/legalcode + - https://creativecommons.org/licenses/by/4.0/legalcode + - https://opendatacommons.org/licenses/by/1-0/ + + ' range: uri required: true deed_url: slot_uri: schema:url - description: | - URL to the human-readable license summary (the "deed"). + description: 'URL to the human-readable license summary (the "deed"). + Examples: + - https://creativecommons.org/publicdomain/zero/1.0/ + - https://creativecommons.org/licenses/by/4.0/ + + ' range: uri version: slot_uri: schema:version - description: | - Version number of the license. + description: 'Version number of the license. + Examples: + - "1.0" (CC0 1.0, ODC-BY 1.0) + - "4.0" (CC-BY 4.0 - current version) + - "3.0" (legacy CC licenses) + + ' range: string allows_commercial_use: slot_uri: cc:commercialUse - description: | - Whether the license permits commercial use of the data. + description: 'Whether the license permits commercial use of the data. + - true: Commercial use allowed (CC0, CC-BY, ODC-BY, ODbL) + - false: Non-commercial only (CC-BY-NC, CC-BY-NC-SA) + + ' range: boolean required: true requires_attribution: slot_uri: cc:attributionRequired - description: | - Whether the license requires attribution to the source. + description: 'Whether the license requires attribution to the source. + - true: Attribution required (CC-BY, ODC-BY, ODbL) + - false: No attribution needed (CC0, PDDL) + + ' range: boolean required: true requires_sharealike: slot_uri: cc:shareAlike - description: | - Whether derivatives must be shared under the same or compatible license. + description: 'Whether derivatives must be shared under the same or compatible license. + - true: ShareAlike/copyleft required (CC-BY-SA, ODbL) + - false: No ShareAlike requirement (CC0, CC-BY, ODC-BY) + + ' range: boolean required: true allows_derivatives: slot_uri: cc:DerivativeWorks - description: | - Whether the license permits creating derivative works. + description: 'Whether the license permits creating derivative works. + - true: Derivatives allowed (most open licenses) + - false: No derivatives allowed (CC-BY-ND, CC-BY-NC-ND) + + ' range: boolean required: true license_jurisdiction: slot_uri: cc:jurisdiction - description: | - Legal jurisdiction of the license (if jurisdiction-specific). + description: 'Legal jurisdiction of the license (if jurisdiction-specific). + Most modern licenses (CC 4.0+) are "international" (jurisdiction-agnostic). + Earlier versions (CC 3.0, 2.x) had jurisdiction-specific "ports". + Examples: + - null: International/universal (CC 4.0 licenses) + - "NL": Netherlands-specific ported license + - "US": United States-specific + + ' range: string steward_organization: slot_uri: schema:maintainer - description: | - Organization that maintains and stewards this license. + description: 'Organization that maintains and stewards this license. + Examples: + - "Creative Commons" (for CC licenses) + - "Open Knowledge Foundation" (for ODC licenses) + - "UK National Archives" (for UK OGL) + + ' range: string spdx_identifier: slot_uri: dcterms:identifier - description: | - SPDX License Identifier for software license compatibility. + description: 'SPDX License Identifier for software license compatibility. + SPDX (Software Package Data Exchange) provides standardized + identifiers for licenses used in software and data. + Examples: + - "CC0-1.0" + - "CC-BY-4.0" + - "ODbL-1.0" + Reference: https://spdx.org/licenses/ + + ' range: string license_description: slot_uri: schema:description - description: | - Human-readable description of what this license permits and requires. + description: 'Human-readable description of what this license permits and requires. + + ' range: string slots: - specificity_annotation @@ -398,58 +495,83 @@ classes: inlined: true ServiceLicense: class_uri: odrl:Agreement - description: | - A license assignment for a specific service within an organization's policy. + description: 'A license assignment for a specific service within an organization''s policy. + Used when an organization has different licenses for different services, + allowing for nuanced modeling of mixed open/closed policies. + **Example - OCLC (Cooperative with mixed policy):** + - WorldCat: Proprietary (default) + - VIAF: ODC-BY (open for linked data) + - WorldCat Identities: ODC-BY + **Example - Wikimedia (Movement with mostly unified policy):** + - Wikidata: CC0 (default) + - Wikipedia: CC-BY-SA (different - copyleft for text) + - Commons: Varies by upload (contributor choice) + + ' attributes: service_name: slot_uri: schema:name - description: | - Name of the service this license applies to. + description: 'Name of the service this license applies to. + Examples: "VIAF", "WorldCat", "Wikidata", "Wikipedia", "Rijksstudio" + + ' range: string required: true service_url: slot_uri: schema:url - description: | - URL of the service. + description: 'URL of the service. + Examples: + - https://viaf.org/ + - https://www.worldcat.org/ + - https://www.wikidata.org/ + + ' range: uri service_license: slot_uri: schema:license - description: | - The specific license that applies to this service. + description: 'The specific license that applies to this service. + Links to a DataLicense instance. + + ' range: DataLicense inlined: false required: true license_notes: slot_uri: schema:description - description: | - Additional notes about how the license applies to this service. + description: 'Additional notes about how the license applies to this service. + Examples: + - "VIAF data is available under ODC-BY via OCLC Research" + - "API access requires registration but data is freely reusable" + - "High-resolution images require separate agreement" + + ' range: string slots: - specificity_annotation @@ -461,242 +583,3 @@ classes: template_specificity: range: TemplateSpecificityScores inlined: true -enums: - DataLicenseTypeEnum: - description: | - Classification of license types by their framework/family. - - Different license families are designed for different purposes: - - Creative Commons: General creative works and data - - Open Data Commons: Specifically for databases - - Government: Public sector data - permissible_values: - CREATIVE_COMMONS: - description: | - Creative Commons license family (CC0, CC-BY, CC-BY-SA, etc.). - - The most widely used open content licenses globally. - - Reference: https://creativecommons.org/licenses/ - meaning: cc:License - OPEN_DATA_COMMONS: - description: | - Open Data Commons license family (PDDL, ODC-BY, ODbL). - - Specifically designed for databases and structured data. - Addresses sui generis database rights in EU law. - - Reference: https://opendatacommons.org/licenses/ - PUBLIC_DOMAIN: - description: | - Explicit public domain dedication (not technically a license). - - Represents waiver of all rights to the fullest extent possible. - - Examples: - - CC0 (Creative Commons public domain dedication) - - PDDL (Open Data Commons Public Domain Dedication) - - Unlicense (for software) - OPEN_SOURCE: - description: | - Open source licenses approved by Open Source Initiative (OSI). - - Primarily for software but sometimes applied to data. - - Examples: MIT, Apache 2.0, GPL, BSD - - Reference: https://opensource.org/licenses - GOVERNMENT_OPEN: - description: | - Government open data licenses. - - National licenses for public sector information. - - Examples: - - UK Open Government Licence (OGL) - - French Licence Ouverte / Open Licence - - US works: Public domain by default (17 U.S.C. § 105) - PROPRIETARY: - description: | - Proprietary/closed licenses with restricted rights. - - Typically requires subscription, payment, or specific agreements. - No redistribution or derivative rights without permission. - TERMS_OF_SERVICE: - description: | - Terms of service that govern data access without being a formal license. - - Often more restrictive than licenses, may change without notice. - Common for commercial platforms and APIs. - DataOpennessLevelEnum: - description: | - Spectrum of data openness from fully open to fully closed. - - This is the PRIMARY indicator for comparing data accessibility: - - Wikimedia Wikidata: FULLY_OPEN (CC0) - - OCLC VIAF: OPEN_WITH_ATTRIBUTION (ODC-BY) - - OCLC WorldCat: CLOSED_SUBSCRIPTION - permissible_values: - FULLY_OPEN: - description: "No restrictions on use, redistribution, or modification.\nPublic\ - \ domain or equivalent dedication.\n\n**Rights**: No attribution required,\ - \ commercial use allowed, \nderivatives allowed, no ShareAlike requirement.\n\ - \nExamples:\n- Wikidata (CC0)\n- Europeana metadata (CC0)\n- US Government\ - \ works (public domain by law)\n- Open Library metadata (PDDL)\n" - OPEN_WITH_ATTRIBUTION: - description: | - Open for any use, but attribution/credit to source required. - - **Rights**: Commercial use allowed, derivatives allowed, - no ShareAlike requirement. MUST credit source. - - Examples: - - VIAF (ODC-BY) - - Many government datasets (UK OGL) - - Some museum collections (CC-BY) - OPEN_SHAREALIKE: - description: | - Open for any use, but derivatives must use same/compatible license. - Also known as "copyleft" for data. - - **Rights**: Commercial use allowed, derivatives allowed, - attribution required. MUST share derivatives under same terms. - - Examples: - - Wikipedia text (CC-BY-SA) - - OpenStreetMap (ODbL) - - Wikibooks (CC-BY-SA) - RESTRICTED_NONCOMMERCIAL: - description: | - Open for non-commercial use only. Commercial use prohibited. - - **Rights**: Attribution usually required, derivatives may be allowed. - NO commercial use without separate agreement. - - Examples: - - Some academic research datasets (CC-BY-NC) - - Some museum image collections (CC-BY-NC) - - Educational resources (CC-BY-NC-SA) - RESTRICTED_NO_DERIVATIVES: - description: | - Can share/redistribute but cannot modify or create derivatives. - - **Rights**: Attribution required, redistribution allowed. - NO modifications, adaptations, or derivative works. - - Examples: - - Some archival materials (CC-BY-ND) - - Marketing materials - - Certain scholarly publications - CLOSED_SUBSCRIPTION: - description: | - Requires paid subscription or membership for access. - Limited or no redistribution rights. - - **Rights**: Access requires payment. Redistribution typically prohibited. - May allow limited use under subscription terms. - - Examples: - - OCLC WorldCat (subscription database) - - JSTOR (academic subscription) - - ProQuest (commercial database) - CLOSED_PROPRIETARY: - description: | - Fully proprietary with no reuse rights. - Data cannot be redistributed, repurposed, or derived without explicit agreement. - - **Rights**: No access or reuse without explicit permission. - All rights reserved. - - Examples: - - Internal corporate databases - - Classified government data - - Trade secrets and confidential business information - OpennessStanceEnum: - description: | - Organization's overall philosophical stance on data openness. - - This captures the ADVOCACY and ASPIRATION dimension beyond just - the specific licenses applied. It represents what the organization - strives for and promotes in the broader community. - permissible_values: - STRONG_OPEN_ADVOCATE: - description: | - Organization actively promotes and advocates for open data. - - Goes BEYOND just licensing own data openly - actively works - to influence others and advance open data movement. - - **Characteristics:** - - All/most own data under open licenses - - Participates in open data advocacy organizations - - Provides funding/resources for open data initiatives - - Influences policy toward openness - - Trains others in open data practices - - May be part of a broader social movement - - **Examples:** - - Wikimedia Foundation (social movement for free knowledge) - - Creative Commons (license steward and advocate) - - Open Knowledge Foundation (open data advocacy) - - Mozilla Foundation (open web advocacy) - - Internet Archive (preservation and access) - OPEN_BY_DEFAULT: - description: | - Organization prefers open data as default but may have practical exceptions. - - **Characteristics:** - - Default license is open - - May have some restricted data for practical/legal reasons - - Generally supportive of open data movement - - Not necessarily active in advocacy - - **Examples:** - - Many government open data programs - - Europeana (open metadata aggregator) - - Library of Congress (public domain by default) - - Rijksmuseum (open access to images) - MIXED_POLICY: - description: | - Organization has mix of open and closed data offerings. - - **Characteristics:** - - Some services open, some proprietary - - May be transitioning toward openness - - Business model partially depends on closed data - - Pragmatic rather than ideological approach - - **Examples:** - - OCLC (VIAF open, WorldCat closed) - - Some academic publishers (some open access journals) - - Hybrid open access publishers - - Museums with partial open access programs - CLOSED_BY_DEFAULT: - description: | - Organization generally keeps data closed but has some open offerings. - - **Characteristics:** - - Default is proprietary/closed - - Some data released for specific purposes or requirements - - May participate in limited open data initiatives - - Open offerings are exceptions, not the rule - - **Examples:** - - Traditional commercial publishers with some OA - - Some corporate data providers with limited free tiers - - Organizations transitioning slowly toward openness - FULLY_PROPRIETARY: - description: | - Organization maintains fully closed/proprietary data model. - - **Characteristics:** - - All data proprietary - - No open data initiatives - - Business model depends on data exclusivity - - May view open data as threat to business - - **Examples:** - - Commercial data vendors - - Some subscription databases - - Private corporate archives - - Trade secret repositories diff --git a/schemas/20251121/linkml/modules/classes/DataServiceEndpoint.yaml b/schemas/20251121/linkml/modules/classes/DataServiceEndpoint.yaml index 0a9823ad41..9fa494b394 100644 --- a/schemas/20251121/linkml/modules/classes/DataServiceEndpoint.yaml +++ b/schemas/20251121/linkml/modules/classes/DataServiceEndpoint.yaml @@ -20,6 +20,9 @@ imports: - ../slots/template_specificity - ./SpecificityAnnotation - ./TemplateSpecificityScores +- ../enums/DataServiceProtocolEnum +- ../enums/AuthenticationMethodEnum +- ../enums/EndpointStatusEnum classes: DataServiceEndpoint: abstract: true @@ -30,31 +33,22 @@ classes: - response_format - specificity_annotation - template_specificity - description: "Abstract base class for API service endpoints exposed by heritage\ - \ digital platforms.\n\n**Purpose:**\n\nModels the technical API endpoints discovered\ - \ at heritage institutions, enabling:\n- Machine-readable discovery of available\ - \ APIs\n- Integration with aggregation platforms\n- Automated harvesting and\ - \ synchronization\n- Developer documentation\n\n**DCAT 3 Alignment:**\n\nMaps\ - \ to `dcat:DataService` which represents:\n- \"A collection of operations that\ - \ provides access to one or more datasets or data processing functions\"\n-\ - \ Has endpoint URL (dcat:endpointURL)\n- Has endpoint description/documentation\ - \ (dcat:endpointDescription)\n- May serve one or more datasets (dcat:servesDataset)\n\ - \n**Subclasses:**\n\n| Class | Protocol | Purpose |\n|-------|----------|---------|\n\ - | OAIPMHEndpoint | OAI-PMH | Metadata harvesting |\n| SearchAPI | REST/JSON\ - \ | Search and discovery |\n| METSAPI | REST/XML | METS document retrieval |\n\ - | FileAPI | REST | File/asset download |\n| IIPImageServer | IIP/IIIF | Image\ - \ serving |\n| EADDownload | HTTP | EAD finding aid export |\n\n**Example -\ - \ Nationaal Archief APIs:**\n\n```yaml\ndigital_platform:\n platform_name:\ - \ \"Nationaal Archief Website\"\n data_service_endpoints:\n - endpoint_type:\ - \ OAIPMHEndpoint\n endpoint_url: \"https://www.nationaalarchief.nl/onderzoeken/oai-pmh\"\ - \n protocol: OAI-PMH\n \n - endpoint_type: SearchAPI\n endpoint_url:\ - \ \"https://www.nationaalarchief.nl/onderzoeken/api/zoeken\"\n protocol:\ - \ REST\n response_formats: [\"application/json\"]\n \n - endpoint_type:\ - \ IIPImageServer\n endpoint_url: \"https://service.archief.nl/iipsrv\"\n\ - \ protocol: IIP\n```\n\n**Provenance:**\n\nDataServiceEndpoint instances\ - \ MUST include discovery provenance:\n- When the endpoint was discovered\n-\ - \ How it was discovered (web scrape, documentation, API testing)\n- Verification\ - \ status\n" + description: "Abstract base class for API service endpoints exposed by heritage digital platforms.\n\n**Purpose:**\n\n\ + Models the technical API endpoints discovered at heritage institutions, enabling:\n- Machine-readable discovery of available\ + \ APIs\n- Integration with aggregation platforms\n- Automated harvesting and synchronization\n- Developer documentation\n\ + \n**DCAT 3 Alignment:**\n\nMaps to `dcat:DataService` which represents:\n- \"A collection of operations that provides\ + \ access to one or more datasets or data processing functions\"\n- Has endpoint URL (dcat:endpointURL)\n- Has endpoint\ + \ description/documentation (dcat:endpointDescription)\n- May serve one or more datasets (dcat:servesDataset)\n\n**Subclasses:**\n\ + \n| Class | Protocol | Purpose |\n|-------|----------|---------|\n| OAIPMHEndpoint | OAI-PMH | Metadata harvesting |\n\ + | SearchAPI | REST/JSON | Search and discovery |\n| METSAPI | REST/XML | METS document retrieval |\n| FileAPI | REST\ + \ | File/asset download |\n| IIPImageServer | IIP/IIIF | Image serving |\n| EADDownload | HTTP | EAD finding aid export\ + \ |\n\n**Example - Nationaal Archief APIs:**\n\n```yaml\ndigital_platform:\n platform_name: \"Nationaal Archief Website\"\ + \n data_service_endpoints:\n - endpoint_type: OAIPMHEndpoint\n endpoint_url: \"https://www.nationaalarchief.nl/onderzoeken/oai-pmh\"\ + \n protocol: OAI-PMH\n \n - endpoint_type: SearchAPI\n endpoint_url: \"https://www.nationaalarchief.nl/onderzoeken/api/zoeken\"\ + \n protocol: REST\n response_formats: [\"application/json\"]\n \n - endpoint_type: IIPImageServer\n\ + \ endpoint_url: \"https://service.archief.nl/iipsrv\"\n protocol: IIP\n```\n\n**Provenance:**\n\nDataServiceEndpoint\ + \ instances MUST include discovery provenance:\n- When the endpoint was discovered\n- How it was discovered (web scrape,\ + \ documentation, API testing)\n- Verification status\n" exact_mappings: - dcat:DataService close_mappings: @@ -64,195 +58,245 @@ classes: endpoint_id: identifier: true slot_uri: dcterms:identifier - description: | - Unique identifier for this data service endpoint. + description: 'Unique identifier for this data service endpoint. + Recommended format: URI combining platform ID and service type. + Example: "https://nde.nl/ontology/hc/endpoint/nationaalarchief-oai-pmh" + + ' range: uriorcurie required: true endpoint_name: slot_uri: schema:name - description: | - Human-readable name for this endpoint. + description: 'Human-readable name for this endpoint. + Examples: + - "Nationaal Archief OAI-PMH Endpoint" + - "Heritage Search API" + - "Image Server (IIP)" + + ' range: string required: true endpoint_url: slot_uri: dcat:endpointURL - description: | - Base URL of the service endpoint. + description: 'Base URL of the service endpoint. + DCAT: dcat:endpointURL - "The root location or primary endpoint of the service" + This is the URL that clients use to access the service. + Examples: + - "https://www.nationaalarchief.nl/onderzoeken/oai-pmh" + - "https://api.europeana.eu/record/v2/" + - "https://service.archief.nl/iipsrv" + + ' range: uri required: true endpoint_description_url: slot_uri: dcat:endpointDescription - description: | - URL to machine-readable API documentation. + description: 'URL to machine-readable API documentation. + DCAT: dcat:endpointDescription - "A description of the service end-point" + May be: + - OpenAPI/Swagger specification (JSON/YAML) + - OAI-PMH Identify response + - WSDL document + - Human-readable documentation page + Examples: + - "https://api.example.org/openapi.json" + - "https://www.nationaalarchief.nl/onderzoeken/oai-pmh?verb=Identify" + + ' range: uri authentication_method: slot_uri: schema:potentialAction - description: | - Authentication method required (if authentication_required is true). + description: 'Authentication method required (if authentication_required is true). + Values from AuthenticationMethodEnum: + - NONE: No authentication + - API_KEY: API key in header or query parameter + - OAUTH2: OAuth 2.0 + - BASIC: HTTP Basic Authentication + - IP_WHITELIST: IP address whitelist + - INSTITUTIONAL: Institutional login (Shibboleth, etc.) + + ' range: AuthenticationMethodEnum cors_enabled: slot_uri: schema:additionalProperty - description: | - Whether CORS (Cross-Origin Resource Sharing) is enabled. + description: 'Whether CORS (Cross-Origin Resource Sharing) is enabled. + Important for browser-based JavaScript applications: + - true: Cross-origin requests allowed + - false: Same-origin only + - null: Unknown + + ' range: boolean rate_limit: slot_uri: schema:rateValue - description: | - Rate limit description if applicable. + description: 'Rate limit description if applicable. + Free-text description of rate limiting policy. + Examples: + - "100 requests per minute" + - "1000 requests per day per API key" + - "No limit" + - "Unknown" + + ' range: string documentation_url: slot_uri: schema:documentation - description: | - URL to human-readable documentation. + description: 'URL to human-readable documentation. + This is separate from endpoint_description_url which is machine-readable. + Examples: + - "https://pro.europeana.eu/resources/apis/record" + - "https://www.nationaalarchief.nl/onderzoeken/handleiding/api" + + ' range: uri status: slot_uri: schema:serverStatus - description: | - Operational status of the endpoint. + description: 'Operational status of the endpoint. + Values from EndpointStatusEnum: + - ACTIVE: Endpoint is operational + - DEPRECATED: Endpoint works but will be removed + - BETA: Endpoint in testing/beta + - OFFLINE: Endpoint currently unavailable + - UNKNOWN: Status not verified + + ' range: EndpointStatusEnum last_verified: slot_uri: schema:dateModified - description: | - Date when this endpoint was last verified to be operational. + description: 'Date when this endpoint was last verified to be operational. + ISO 8601 date format. + Example: "2025-12-14" + + ' range: date serves_dataset: slot_uri: dcat:servesDataset - description: | - Dataset(s) that this service provides access to. + description: 'Dataset(s) that this service provides access to. + DCAT: dcat:servesDataset - "A collection of data that this data service can distribute" + References to DCAT Dataset identifiers or descriptions. + + ' range: uriorcurie multivalued: true version: slot_uri: schema:version - description: | - Version of the API or service. + description: 'Version of the API or service. + Examples: + - "v2" + - "1.0.0" + - "2023-01" + + ' range: string discovery_provenance: slot_uri: dcterms:provenance - description: | - Provenance information about how this endpoint was discovered. + description: 'Provenance information about how this endpoint was discovered. + Should include: + - Discovery date + - Discovery method (documentation, web scrape, API testing) + - Verification status + Free-text or structured provenance note. + + ' range: string endpoint_type: slot_uri: dcterms:type - description: | - Classification of this endpoint from the DataServiceEndpointType taxonomy. - - **Instance vs Type Architecture:** - - This slot links an INSTANCE (DataServiceEndpoint) to its TYPE classification - (DataServiceEndpointType), following the same architectural pattern as - Custodian/CustodianType. - - ``` - DataServiceEndpoint (INSTANCE) DataServiceEndpointType (TYPE) - ├── endpoint_url ├── protocol_name - ├── status ├── protocol_version - ├── authentication_required ├── specification_url - └── endpoint_type ────────────────►└── typical_response_formats - ``` - - **Why Both `protocol` and `endpoint_type`?** - - - `protocol` (enum): Simple string classification for quick filtering - - `endpoint_type` (class reference): Rich type metadata with SKOS hierarchy, - specification URLs, and semantic relationships - - **Example:** - - ```yaml - data_service_endpoint: - endpoint_id: "https://nde.nl/hc/endpoint/na-oai-pmh" - endpoint_url: "https://www.nationaalarchief.nl/onderzoeken/oai-pmh" - protocol: OAI_PMH # Simple enum (DataServiceProtocolEnum) - endpoint_type: OAIPMHEndpointType # Rich type (DataServiceEndpointType subclass) - ``` - - This pattern mirrors: - - `custodian_type` enum + `CustodianType` class on `Custodian` - - `platform_type` enum + `DigitalPlatformType` class on `DigitalPlatform` + description: "Classification of this endpoint from the DataServiceEndpointType taxonomy.\n\n**Instance vs Type Architecture:**\n\ + \nThis slot links an INSTANCE (DataServiceEndpoint) to its TYPE classification\n(DataServiceEndpointType), following\ + \ the same architectural pattern as\nCustodian/CustodianType.\n\n```\nDataServiceEndpoint (INSTANCE) DataServiceEndpointType\ + \ (TYPE)\n├── endpoint_url ├── protocol_name\n├── status ├── protocol_version\n\ + ├── authentication_required ├── specification_url\n└── endpoint_type ────────────────►└── typical_response_formats\n\ + ```\n\n**Why Both `protocol` and `endpoint_type`?**\n\n- `protocol` (enum): Simple string classification for quick\ + \ filtering\n- `endpoint_type` (class reference): Rich type metadata with SKOS hierarchy,\n specification URLs,\ + \ and semantic relationships\n\n**Example:**\n\n```yaml\ndata_service_endpoint:\n endpoint_id: \"https://nde.nl/hc/endpoint/na-oai-pmh\"\ + \n endpoint_url: \"https://www.nationaalarchief.nl/onderzoeken/oai-pmh\"\n protocol: OAI_PMH \ + \ # Simple enum (DataServiceProtocolEnum)\n endpoint_type: OAIPMHEndpointType # Rich type (DataServiceEndpointType\ + \ subclass)\n```\n\nThis pattern mirrors:\n- `custodian_type` enum + `CustodianType` class on `Custodian`\n- `platform_type`\ + \ enum + `DigitalPlatformType` class on `DigitalPlatform`\n" range: DataServiceEndpointType required: false comments: @@ -274,195 +318,3 @@ classes: template_specificity: range: TemplateSpecificityScores inlined: true -enums: - DataServiceProtocolEnum: - description: | - Protocols and standards implemented by data service endpoints. - permissible_values: - OAI_PMH: - description: | - Open Archives Initiative Protocol for Metadata Harvesting. - - Standard for harvesting metadata from repositories. - Specification: http://www.openarchives.org/OAI/openarchivesprotocol.html - REST: - description: | - RESTful HTTP API. - - Uses HTTP methods (GET, POST, etc.) with JSON/XML responses. - SOAP: - description: | - SOAP web services. - - XML-based protocol with WSDL service description. - GRAPHQL: - description: | - GraphQL API. - - Query language for APIs. - SPARQL: - description: | - SPARQL Protocol and RDF Query Language. - - For querying RDF triple stores. - IIIF_IMAGE: - description: | - IIIF Image API. - - International Image Interoperability Framework Image API. - Specification: https://iiif.io/api/image/ - IIIF_PRESENTATION: - description: | - IIIF Presentation API. - - For describing structure and layout of compound digital objects. - Specification: https://iiif.io/api/presentation/ - IIIF_CONTENT_SEARCH: - description: | - IIIF Content Search API. - - For searching within annotations. - Specification: https://iiif.io/api/search/ - IIIF_CHANGE_DISCOVERY: - description: | - IIIF Change Discovery API. - - For discovering changes in IIIF resources. - Specification: https://iiif.io/api/discovery/ - IIP: - description: | - Internet Imaging Protocol. - - Tile-based image delivery protocol. - Common implementations: IIPImage server. - ZOOMIFY: - description: | - Zoomify tile protocol. - - Proprietary but widely-supported tiling format. - DEEPZOOM: - description: | - Microsoft Deep Zoom. - - Tile-based image format for Seadragon viewers. - SRU: - description: | - Search/Retrieve via URL. - - Standard search protocol from Library of Congress. - Specification: http://www.loc.gov/standards/sru/ - Z39_50: - description: | - ANSI/NISO Z39.50 protocol. - - Library search and retrieval protocol. - ATOM: - description: | - Atom Syndication Format. - - XML-based feed format for content syndication. - RSS: - description: | - RSS (Really Simple Syndication). - - XML-based feed format. - OPENSEARCH: - description: | - OpenSearch protocol. - - Collection of simple formats for sharing search results. - Specification: https://opensearch.org/ - WEBDAV: - description: | - WebDAV (Web Distributed Authoring and Versioning). - - HTTP extension for collaborative editing. - FTP: - description: | - File Transfer Protocol. - - For bulk file downloads. - AuthenticationMethodEnum: - description: | - Authentication methods for accessing API endpoints. - permissible_values: - NONE: - description: No authentication required (public access) - API_KEY: - description: | - API key authentication. - - Key provided in HTTP header (e.g., X-API-Key) or query parameter. - API_KEY_HEADER: - description: API key in HTTP header - API_KEY_QUERY: - description: API key in URL query parameter - OAUTH2: - description: | - OAuth 2.0 authentication. - - Token-based authentication with authorization flow. - OAUTH1: - description: OAuth 1.0a authentication - BASIC: - description: | - HTTP Basic Authentication. - - Username/password in Authorization header. - BEARER_TOKEN: - description: | - Bearer token authentication. - - JWT or opaque token in Authorization header. - IP_WHITELIST: - description: | - IP address whitelist. - - Access restricted to specific IP ranges. - INSTITUTIONAL: - description: | - Institutional login. - - Shibboleth, SAML, or similar federated authentication. - CLIENT_CERTIFICATE: - description: | - Client certificate authentication. - - TLS/SSL client certificates. - DIGEST: - description: HTTP Digest Authentication - EndpointStatusEnum: - description: | - Operational status of an API endpoint. - permissible_values: - ACTIVE: - description: | - Endpoint is operational and accepting requests. - DEPRECATED: - description: | - Endpoint works but is deprecated. - - Will be removed in future - migrate to new endpoint. - BETA: - description: | - Endpoint in testing/beta phase. - - May change without notice. - ALPHA: - description: | - Endpoint in early alpha testing. - - Not recommended for production use. - OFFLINE: - description: | - Endpoint currently unavailable. - - May be temporary maintenance or permanent shutdown. - MAINTENANCE: - description: | - Endpoint temporarily offline for maintenance. - UNKNOWN: - description: | - Status not verified. - - Needs testing to determine current status. diff --git a/schemas/20251121/linkml/modules/classes/DataServiceEndpointType.yaml b/schemas/20251121/linkml/modules/classes/DataServiceEndpointType.yaml index bbdacd1127..552d99cb41 100644 --- a/schemas/20251121/linkml/modules/classes/DataServiceEndpointType.yaml +++ b/schemas/20251121/linkml/modules/classes/DataServiceEndpointType.yaml @@ -14,6 +14,11 @@ imports: - ../metadata - ../slots/specificity_annotation - ../slots/template_specificity +- ../slots/protocol_name +- ../slots/protocol_version +- ../slots/specification_url +- ../slots/typical_response_formats +- ../slots/typical_http_methods - ./SpecificityAnnotation - ./TemplateSpecificityScores classes: @@ -253,6 +258,11 @@ classes: slots: - specificity_annotation - template_specificity + - protocol_name + - protocol_version + - specification_url + - typical_response_formats + - typical_http_methods slot_usage: specificity_annotation: range: SpecificityAnnotation diff --git a/schemas/20251121/linkml/modules/classes/DataServiceEndpointTypes.yaml b/schemas/20251121/linkml/modules/classes/DataServiceEndpointTypes.yaml index edf1c4943b..e69642b766 100644 --- a/schemas/20251121/linkml/modules/classes/DataServiceEndpointTypes.yaml +++ b/schemas/20251121/linkml/modules/classes/DataServiceEndpointTypes.yaml @@ -18,89 +18,10 @@ imports: - ./SpecificityAnnotation - ./TemplateSpecificityScores classes: - OAIPMHEndpoint: - is_a: DataServiceEndpointType - class_uri: hc:OAIPMHEndpoint - description: | - Classification for OAI-PMH (Open Archives Initiative Protocol for Metadata Harvesting) endpoints. - - **Protocol**: OAI-PMH 2.0 - **Purpose**: Metadata harvesting from repositories - **Standard**: http://www.openarchives.org/OAI/openarchivesprotocol.html - - **Heritage Sector Usage**: - - OAI-PMH is the dominant protocol for metadata aggregation in GLAM: - - National aggregators harvest from institutional repositories - - Europeana harvests from national aggregators - - Archives Portal Europe aggregates archival finding aids - - **Verbs**: Identify, ListMetadataFormats, ListSets, ListIdentifiers, ListRecords, GetRecord - - **Common Metadata Formats**: oai_dc, ese, edm, mods, marc21, ead, lido - slot_usage: - protocol_name: - equals_string: OAI-PMH - protocol_version: - ifabsent: string(2.0) - specification_url: - ifabsent: uri(http://www.openarchives.org/OAI/openarchivesprotocol.html) - typical_response_formats: - ifabsent: string(application/xml) - typical_http_methods: - ifabsent: string(GET) - specificity_annotation: - range: SpecificityAnnotation - inlined: true - template_specificity: - range: TemplateSpecificityScores - inlined: true - comments: - - Most widely adopted metadata harvesting protocol in heritage sector - - Base protocol for Europeana, Archives Portal Europe, national aggregators - slots: - - specificity_annotation - - template_specificity - SearchAPI: - is_a: DataServiceEndpointType - class_uri: hc:SearchAPI - description: | - Classification for REST/JSON search API endpoints. - - **Protocol**: REST over HTTP - **Purpose**: Search and discovery of collection records - **Format**: Typically JSON responses - - **Heritage Sector Usage**: - - Search APIs provide programmatic access to collection search: - - Europeana Search API - - Rijksmuseum API - - National Archives search endpoints - - **Common Features**: - - Full-text search - - Faceted filtering - - Pagination - - Field-specific queries - slot_usage: - protocol_name: - equals_string: REST - typical_response_formats: - ifabsent: string(application/json) - typical_http_methods: - ifabsent: string(GET) - specificity_annotation: - range: SpecificityAnnotation - inlined: true - template_specificity: - range: TemplateSpecificityScores - inlined: true - comments: - - Generic REST search endpoints - institution-specific implementations - slots: - - specificity_annotation - - template_specificity + # NOTE: OAIPMHEndpoint, SearchAPI, FileAPI, IIPImageServer, EADDownload are defined + # as full instance classes (is_a: DataServiceEndpoint) in their individual files. + # This file contains only TYPE classifications that do not conflict with those. + SRUEndpoint: is_a: DataServiceEndpointType class_uri: hc:SRUEndpoint @@ -179,151 +100,6 @@ classes: slots: - specificity_annotation - template_specificity - METSEndpoint: - is_a: DataServiceEndpointType - class_uri: hc:METSEndpoint - description: | - Classification for METS (Metadata Encoding and Transmission Standard) API endpoints. - - **Protocol**: REST/XML - **Purpose**: METS document retrieval for digital objects - **Standard**: https://www.loc.gov/standards/mets/ - - **Heritage Sector Usage**: - - METS APIs provide structural metadata for complex digital objects: - - Digitized archival records (scans + metadata) - - Multi-page documents - - Compound objects (book with pages) - - **Example**: Nationaal Archief METS API for archival scans - slot_usage: - protocol_name: - equals_string: METS - typical_response_formats: - ifabsent: string(application/xml) - typical_http_methods: - ifabsent: string(GET) - specificity_annotation: - range: SpecificityAnnotation - inlined: true - template_specificity: - range: TemplateSpecificityScores - inlined: true - comments: - - Structural metadata for complex digital objects - - Library of Congress standard - slots: - - specificity_annotation - - template_specificity - EADDownload: - is_a: DataServiceEndpointType - class_uri: hc:EADDownload - description: | - Classification for EAD (Encoded Archival Description) download endpoints. - - **Protocol**: HTTP download - **Purpose**: Export archival finding aids in EAD XML format - **Standard**: https://www.loc.gov/ead/ - - **Heritage Sector Usage**: - - EAD download endpoints enable: - - Finding aid export for offline use - - Aggregation by archival portals - - Migration between systems - - Preservation of archival descriptions - - **Example**: Dutch regional archives EAD export endpoints - slot_usage: - protocol_name: - equals_string: HTTP - typical_response_formats: - ifabsent: string(application/xml) - typical_http_methods: - ifabsent: string(GET) - specificity_annotation: - range: SpecificityAnnotation - inlined: true - template_specificity: - range: TemplateSpecificityScores - inlined: true - comments: - - Archival finding aid export standard - - Used for APE aggregation and migration - slots: - - specificity_annotation - - template_specificity - FileAPI: - is_a: DataServiceEndpointType - class_uri: hc:FileAPI - description: | - Classification for file/asset download API endpoints. - - **Protocol**: HTTP file download - **Purpose**: Retrieve digital files (images, documents, media) - - **Heritage Sector Usage**: - - File APIs enable download of digital assets: - - High-resolution images - - PDF documents - - Audio/video files - - Bulk downloads - - **Example**: Nationaal Archief File API for scan downloads - slot_usage: - protocol_name: - equals_string: HTTP - typical_http_methods: - ifabsent: string(GET) - specificity_annotation: - range: SpecificityAnnotation - inlined: true - template_specificity: - range: TemplateSpecificityScores - inlined: true - comments: - - Generic file download endpoints - - May include authentication/rate limiting - slots: - - specificity_annotation - - template_specificity - IIPImageServer: - is_a: DataServiceEndpointType - class_uri: hc:IIPImageServer - description: | - Classification for IIP (Internet Imaging Protocol) image server endpoints. - - **Protocol**: IIP - **Purpose**: Tile-based image delivery for deep zoom - **Software**: IIPImage Server - - **Heritage Sector Usage**: - - IIP servers enable high-resolution image viewing: - - Deep zoom for large images (maps, paintings, manuscripts) - - Efficient tile-based delivery - - Integration with OpenSeadragon, Leaflet viewers - - **Example**: Nationaal Archief image server for archival scans - slot_usage: - protocol_name: - equals_string: IIP - typical_http_methods: - ifabsent: string(GET) - specificity_annotation: - range: SpecificityAnnotation - inlined: true - template_specificity: - range: TemplateSpecificityScores - inlined: true - comments: - - Tile-based image server - predecessor to IIIF Image API - - Still widely used in Dutch heritage sector - slots: - - specificity_annotation - - template_specificity IIIFImageAPI: is_a: DataServiceEndpointType class_uri: hc:IIIFImageAPI diff --git a/schemas/20251121/linkml/modules/classes/DigitalPlatformType.yaml b/schemas/20251121/linkml/modules/classes/DigitalPlatformType.yaml index 618c2632d4..f7a11b2dee 100644 --- a/schemas/20251121/linkml/modules/classes/DigitalPlatformType.yaml +++ b/schemas/20251121/linkml/modules/classes/DigitalPlatformType.yaml @@ -24,6 +24,7 @@ imports: - ../slots/wikidata_mapping - ./SpecificityAnnotation - ./TemplateSpecificityScores +- ../enums/PlatformTypeCategoryEnum classes: DigitalPlatformType: class_uri: skos:Concept @@ -210,23 +211,3 @@ classes: - https://www.wikidata.org/ - https://www.w3.org/2004/02/skos/ - https://www.w3.org/ns/dcat -enums: - PlatformTypeCategoryEnum: - description: High-level categories for digital platform type classification - permissible_values: - REPOSITORY: - description: Platforms for storing and accessing digital content (digital libraries, archives, document repositories) - AGGREGATOR: - description: Platforms aggregating metadata/content from multiple sources (aggregators, bibliographic databases) - DISCOVERY: - description: Platforms for searching and browsing heritage content (web portals, online databases) - VIRTUAL_HERITAGE: - description: Digital representations of physical heritage (virtual museums, virtual tours, online galleries) - RESEARCH: - description: Platforms supporting scholarly research (disciplinary repositories, preprint servers) - INTERACTIVE: - description: Platforms enabling user engagement (crowdsourcing, educational, social media) - COMMERCE: - description: Transaction-oriented platforms (booking systems, webshops) - AUXILIARY: - description: Secondary/supporting platforms (project sites, microsites, APIs, legacy platforms) diff --git a/schemas/20251121/linkml/modules/classes/EADDownload.yaml b/schemas/20251121/linkml/modules/classes/EADDownload.yaml index d6c72e7666..0f8e726442 100644 --- a/schemas/20251121/linkml/modules/classes/EADDownload.yaml +++ b/schemas/20251121/linkml/modules/classes/EADDownload.yaml @@ -18,256 +18,286 @@ imports: - ../slots/template_specificity - ./SpecificityAnnotation - ./TemplateSpecificityScores +- ../enums/EADVersionEnum +- ../enums/CompressionTypeEnum classes: EADDownload: is_a: DataServiceEndpoint class_uri: hc:EADDownload - description: | - EAD (Encoded Archival Description) finding aid download endpoint. - - **Purpose:** - - Models endpoints that provide EAD XML downloads for archival finding aids. - EAD is the international standard for encoding archival descriptive information. - - **EAD Versions:** - - - **EAD3** (2015): Current standard, aligned with ISAD(G), RiC-CM - - **EAD 2002**: Previous version, still widely used - - **EAD 1.0** (1998): Original version, legacy - - **EAD Structure:** - - An EAD document contains: - - **** / ****: Finding aid metadata - - ****: Archival description - - ****: Descriptive identification (title, dates, extent) - - ****: Biographical/historical note - - ****: Scope and content - - ****: Arrangement - - ****: Access restrictions - - ****: Use restrictions - - ****: Description of subordinate components (hierarchy) - - **Example - Nationaal Archief EAD Download:** - - ```yaml - ead_download: - endpoint_name: "Nationaal Archief EAD Download" - base_url: "https://www.nationaalarchief.nl/onderzoeken/archief/" - url_pattern: "{base_url}{archive_code}/download/ead" - ead_version: EAD_2002 - archive_code_format: "^[0-9]+\\.[0-9]+\\.[0-9]+$" - includes_dao_links: true - includes_index: true - compression: none - example_url: "https://www.nationaalarchief.nl/onderzoeken/archief/2.04.87/download/ead" - ``` - - **Use Cases:** - - 1. **Finding aid harvesting**: Aggregate archival descriptions - 2. **Data migration**: Move descriptions between systems - 3. **Preservation**: Archive finding aids as XML - 4. **Integration**: Import into archival management systems - - **See Also:** - - - EAD3: https://www.loc.gov/ead/ - - ISAD(G): https://www.ica.org/en/isadg-general-international-standard-archival-description-second-edition + description: "EAD (Encoded Archival Description) finding aid download endpoint.\n\n**Purpose:**\n\nModels endpoints that\ + \ provide EAD XML downloads for archival finding aids.\nEAD is the international standard for encoding archival descriptive\ + \ information.\n\n**EAD Versions:**\n\n- **EAD3** (2015): Current standard, aligned with ISAD(G), RiC-CM\n- **EAD 2002**:\ + \ Previous version, still widely used\n- **EAD 1.0** (1998): Original version, legacy\n\n**EAD Structure:**\n\nAn EAD\ + \ document contains:\n- **** / ****: Finding aid metadata\n- ****: Archival description\n\ + \ - ****: Descriptive identification (title, dates, extent)\n - ****: Biographical/historical note\n\ + \ - ****: Scope and content\n - ****: Arrangement\n - ****: Access restrictions\n\ + \ - ****: Use restrictions\n - ****: Description of subordinate components (hierarchy)\n\n**Example\ + \ - Nationaal Archief EAD Download:**\n\n```yaml\nead_download:\n endpoint_name: \"Nationaal Archief EAD Download\"\ + \n base_url: \"https://www.nationaalarchief.nl/onderzoeken/archief/\"\n url_pattern: \"{base_url}{archive_code}/download/ead\"\ + \n ead_version: EAD_2002\n archive_code_format: \"^[0-9]+\\\\.[0-9]+\\\\.[0-9]+$\"\n includes_dao_links: true\n \ + \ includes_index: true\n compression: none\n example_url: \"https://www.nationaalarchief.nl/onderzoeken/archief/2.04.87/download/ead\"\ + \n```\n\n**Use Cases:**\n\n1. **Finding aid harvesting**: Aggregate archival descriptions\n2. **Data migration**: Move\ + \ descriptions between systems\n3. **Preservation**: Archive finding aids as XML\n4. **Integration**: Import into archival\ + \ management systems\n\n**See Also:**\n\n- EAD3: https://www.loc.gov/ead/\n- ISAD(G): https://www.ica.org/en/isadg-general-international-standard-archival-description-second-edition\n" attributes: base_url: slot_uri: dcat:endpointURL - description: | - Base URL for EAD downloads. + description: 'Base URL for EAD downloads. + Individual finding aids accessed by appending archive code. + Example: "https://www.nationaalarchief.nl/onderzoeken/archief/" + + ' range: uri required: true url_pattern: slot_uri: hydra:template - description: | - URL pattern for constructing EAD download requests. + description: 'URL pattern for constructing EAD download requests. + Use {placeholders} for dynamic parts: + - {archive_code}: Archive/fonds identifier + - {format}: Output format (ead, xml) + Example: "{base_url}{archive_code}/download/ead" + + ' range: string ead_version: slot_uri: dcterms:conformsTo - description: | - EAD version used in downloaded files. + description: 'EAD version used in downloaded files. + Values: + - EAD3: Current standard (2015) + - EAD_2002: Previous version, widely used + - EAD_1_0: Original version (legacy) + + ' range: EADVersionEnum required: true ead_schema_url: slot_uri: schema:schemaVersion - description: | - URL to EAD schema (XSD or RNG) used for validation. + description: 'URL to EAD schema (XSD or RNG) used for validation. + Example: "https://www.loc.gov/ead/ead3.xsd" + + ' range: uri archive_code_format: slot_uri: dcterms:identifier - description: | - Regex pattern for archive/fonds codes used in URLs. + description: 'Regex pattern for archive/fonds codes used in URLs. + Dutch Nationaal Archief uses: "^[0-9]+\\.[0-9]+\\.[0-9]+$" (e.g., 2.04.87) + Example: "^[0-9]+\\.[0-9]+\\.[0-9]+$" + + ' range: string archive_code_examples: slot_uri: schema:workExample - description: | - Example archive codes for reference. + description: 'Example archive codes for reference. + Example: ["2.04.87", "2.21.281.02", "4.MST"] + + ' range: string multivalued: true isad_g_compliant: slot_uri: dcterms:conformsTo - description: | - Whether EAD output follows ISAD(G) description standard. + description: 'Whether EAD output follows ISAD(G) description standard. + ISAD(G) = General International Standard Archival Description + + ' range: boolean includes_dao_links: slot_uri: schema:associatedMedia - description: | - Whether EAD includes (digital archival object) links. + description: 'Whether EAD includes (digital archival object) links. + elements link to digitized content (images, documents). + Essential for integration with digital content delivery. + + ' range: boolean includes_index: slot_uri: schema:hasPart - description: | - Whether EAD includes elements. + description: 'Whether EAD includes elements. + Index provides structured access points (names, subjects, places). + + ' range: boolean includes_controlaccess: slot_uri: schema:hasPart - description: | - Whether EAD includes elements. + description: 'Whether EAD includes elements. + Controlled access terms (subjects, names, genres, functions). + + ' range: boolean multilevel_description: slot_uri: schema:hasPart - description: | - Whether EAD supports multi-level hierarchical description. + description: 'Whether EAD supports multi-level hierarchical description. + Uses (description of subordinate components) with nested + (component) elements for series, files, items. + + ' range: boolean max_hierarchy_depth: slot_uri: schema:maxValue - description: | - Maximum depth of component hierarchy in downloaded EADs. + description: 'Maximum depth of component hierarchy in downloaded EADs. + Some systems limit depth for performance. + Example: 12 + + ' range: integer encoding: slot_uri: schema:encodingType - description: | - Character encoding of EAD output. + description: 'Character encoding of EAD output. + Should be UTF-8 for modern systems. + Example: "UTF-8" + + ' range: string compression: slot_uri: schema:encodingFormat - description: | - Compression applied to downloads. + description: 'Compression applied to downloads. + Values: + - NONE: Plain XML + - GZIP: Gzip compressed + - ZIP: ZIP archive + + ' range: CompressionTypeEnum includes_dtd_declaration: slot_uri: schema:additionalProperty - description: | - Whether XML includes DOCTYPE declaration referencing DTD. + description: 'Whether XML includes DOCTYPE declaration referencing DTD. + Legacy EAD often includes DTD reference. + Modern practice uses XSD validation. + + ' range: boolean namespace_aware: slot_uri: schema:additionalProperty - description: | - Whether EAD uses XML namespaces. + description: 'Whether EAD uses XML namespaces. + EAD3 uses namespace: urn:isbn:1-931666-22-9 (changed to LOC namespace) + EAD 2002 may be namespace-aware or not. + + ' range: boolean default_namespace: slot_uri: schema:additionalProperty - description: | - Default XML namespace for EAD elements. + description: 'Default XML namespace for EAD elements. + EAD3: "http://ead3.archivists.org/schema/" + EAD 2002: "urn:isbn:1-931666-22-9" + + ' range: uri language_of_description: slot_uri: dcterms:language - description: | - Primary language of finding aid descriptions. + description: 'Primary language of finding aid descriptions. + ISO 639-1 code. + Example: "nl" (Dutch) + + ' range: string supports_partial_download: slot_uri: schema:additionalProperty - description: | - Whether partial EAD download is supported. + description: 'Whether partial EAD download is supported. + Some systems allow downloading specific components rather + than entire finding aid. + + ' range: boolean batch_download_available: slot_uri: schema:additionalProperty - description: | - Whether batch download of multiple finding aids is available. + description: 'Whether batch download of multiple finding aids is available. + May provide ZIP archive or OAI-PMH harvesting. + + ' range: boolean transform_options: slot_uri: schema:additionalProperty - description: | - Output transformation options available. + description: 'Output transformation options available. + Some systems offer XSLT-transformed output (HTML, PDF). + Example: ["EAD", "HTML", "PDF"] + + ' range: string multivalued: true example_url: slot_uri: schema:workExample - description: | - Example URL for EAD download. + description: 'Example URL for EAD download. + Example: "https://www.nationaalarchief.nl/onderzoeken/archief/2.04.87/download/ead" + + ' range: uri slot_usage: protocol: description: EAD downloads use HTTP GET (REST-like). Uses DataServiceProtocolEnum.REST. response_format: - description: | - EAD is always XML. + description: 'EAD is always XML. + + ' ifabsent: string(application/xml) specificity_annotation: range: SpecificityAnnotation @@ -286,68 +316,3 @@ classes: slots: - specificity_annotation - template_specificity -enums: - EADVersionEnum: - description: | - Versions of the EAD (Encoded Archival Description) standard. - permissible_values: - EAD3: - description: | - EAD3 (2015) - Current standard. - - Major revision aligned with: - - ISAD(G) and ISAAR(CPF) - - RiC-CM (Records in Contexts) - - Schema-first design (XSD, RNG) - - Namespace: http://ead3.archivists.org/schema/ - EAD_2002: - description: | - EAD 2002 - Previous version. - - Most widely deployed version. - DTD and XSD schemas available. - - Namespace: urn:isbn:1-931666-22-9 - EAD_1_0: - description: | - EAD 1.0 (1998) - Original version. - - Legacy, rarely used for new content. - DTD-based validation. - UNKNOWN: - description: | - EAD version not specified or unknown. - - May require inspection of downloaded file. - CompressionTypeEnum: - description: | - Compression types for file downloads. - permissible_values: - NONE: - description: | - No compression - plain file. - - MIME type unchanged from content type. - GZIP: - description: | - Gzip compression. - - Single compressed file. - Content-Encoding: gzip - ZIP: - description: | - ZIP archive. - - May contain multiple files. - application/zip - BZIP2: - description: | - Bzip2 compression. - - Higher compression ratio than gzip. - XZ: - description: | - XZ/LZMA compression. - - Very high compression ratio. diff --git a/schemas/20251121/linkml/modules/classes/EncompassingBody.yaml b/schemas/20251121/linkml/modules/classes/EncompassingBody.yaml index 5f7b1c7dec..c580963526 100644 --- a/schemas/20251121/linkml/modules/classes/EncompassingBody.yaml +++ b/schemas/20251121/linkml/modules/classes/EncompassingBody.yaml @@ -402,907 +402,3 @@ classes: - Complements but does not replace GovernanceStructure or OrganizationalStructure - 'Six types reflect different relationship models: legal (umbrella), service (network), collaborative (consortium), ownership (cooperative), ideological (social movement), financial (funding)' - UmbrellaOrganisation: - is_a: EncompassingBody - class_uri: org:FormalOrganization - description: "A legal parent organization with formal governance authority over heritage custodians,\ndefined in articles\ - \ of association, foundation statutes, or legislation. Represents\nPERMANENT hierarchical legal structures.\n\n**Characteristics**:\n\ - - **Legal basis**: Defined in founding documents, statutes, or laws\n- **Authority**: Strong governance authority (budgets,\ - \ appointments, policy)\n- **Permanence**: Permanent structure (changes require legal amendments)\n- **Relationship**:\ - \ Legal subordination (parent-child hierarchy)\n\n**Examples**:\n- **Ministry governing national cultural institutions**:\n\ - \ - Ministry of OCW → National Archives, Rijksmuseum, National Library\n - Defined in Dutch government legislation\n\ - - **Foundation board governing museum**:\n - Museum Board of Trustees → Museum operations\n - Defined in foundation\ - \ statutes\n- **University governing university libraries**:\n - University administration → University library system\n\ - \ - Defined in university charter\n- **Religious order governing monastery archives**:\n - Franciscan Order → Franciscan\ - \ Archive\n - Defined in religious constitution\n\n**Ontological Alignment**:\n- W3C ORG: `org:FormalOrganization`\ - \ - \"An Organization which is recognized in \n the world at large, in particular in legal jurisdictions, with associated\ - \ rights \n and responsibilities.\"\n- TOOI: `tooi:Ministerie`, `tooi:RegionaalOpenbaarLichaam` (Dutch government bodies)\n\ - - CPOV: `cpov:PublicOrganisation` (for public sector umbrella bodies)\n- Schema.org: `schema:GovernmentOrganization`,\ - \ `schema:EducationalOrganization`\n\n**Temporal Dynamics**:\nUmbrella relationships typically persist over long periods.\ - \ Changes occur through:\n- Government reorganizations (ministries merge/split)\n- Legal entity changes (foundation\ - \ restructuring)\n- Policy reforms (agencies transferred between ministries)\n" - slot_usage: - organization_type: - range: EncompassingBodyTypeEnum - required: true - ifabsent: string(UMBRELLA) - description: Must be UMBRELLA for UmbrellaOrganisation - governance_authority: - required: true - description: 'Detailed description of legal governance authority. - - Must document legal basis (statute, law, articles of association). - - ' - examples: - - value: Ministry OCW exercises governance authority over National Archives under Dutch Heritage Act 2016. Authority - includes budget approval, director appointment, and policy oversight. - organization_legal_form: - required: true - description: Legal form is required for umbrella organizations - examples: - - value: Government ministry - - value: Foundation board - - value: University governing body - legal_jurisdiction: - required: true - range: Jurisdiction - description: 'Legal jurisdiction where this umbrella organization has authority. - - - Required for UmbrellaOrganisation because legal parent-child relationships - - are defined by law within specific jurisdictions. - - - **Examples:** - - - Ministry of OCW: jurisdiction_type=NATIONAL, country=NL - - - Bavarian State Ministry: jurisdiction_type=SUBNATIONAL, subregion=DE-BY - - - University of Amsterdam: jurisdiction_type=NATIONAL, country=NL - - ' - examples: - - value: - jurisdiction_id: NL - jurisdiction_type: NATIONAL - country: - alpha_2: NL - alpha_3: NLD - description: Netherlands national jurisdiction - - value: - jurisdiction_id: DE-BY - jurisdiction_type: SUBNATIONAL - country: - alpha_2: DE - alpha_3: DEU - subregion: - iso_3166_2_code: DE-BY - description: Bavaria subnational jurisdiction - specificity_annotation: - range: SpecificityAnnotation - inlined: true - template_specificity: - range: TemplateSpecificityScores - inlined: true - exact_mappings: - - org:FormalOrganization - close_mappings: - - tooi:Ministerie - - tooi:RegionaalOpenbaarLichaam - - cpov:PublicOrganisation - - schema:GovernmentOrganization - comments: - - UmbrellaOrganisation represents LEGAL parent-child relationships - - Changes to umbrella relationships require legal/statutory amendments - - Permanent structure - not temporary agreements - examples: - - value: - id: https://nde.nl/ontology/hc/encompassing-body/umbrella/nl-ministry-ocw - organization_name: Ministerie van Onderwijs, Cultuur en Wetenschap - organization_type: UMBRELLA - organization_legal_form: Government ministry - founding_date: '1965-07-01' - governance_authority: Exercises governance over Dutch national cultural heritage institutions under Heritage Act 2016. - Authority includes budget oversight, director appointments, and strategic policy direction. - legal_jurisdiction: - jurisdiction_id: NL - jurisdiction_type: NATIONAL - country: - alpha_2: NL - alpha_3: NLD - description: Netherlands national jurisdiction - has_or_had_member_custodian: - - hc_id: https://nde.nl/ontology/hc/nl-na - preferred_label: Nationaal Archief - - hc_id: https://nde.nl/ontology/hc/nl-nh-ams-m-rm - preferred_label: Rijksmuseum - website: https://www.rijksoverheid.nl/ministeries/ocw - description: Dutch Ministry OCW as umbrella organization for national heritage - slots: - - specificity_annotation - - template_specificity - NetworkOrganisation: - is_a: EncompassingBody - class_uri: schema:Organization - description: "A service provider network that coordinates and delivers services to member heritage\ncustodians through\ - \ TEMPORARY agreements or treaties. Members choose to participate\nto access services; participation is NOT legally\ - \ imposed.\n\n**Characteristics**:\n- **Service-oriented**: Provides infrastructure, platforms, training, coordination\n\ - - **Voluntary membership**: Custodians choose to join for service benefits\n- **Temporary agreements**: Based on contracts/treaties,\ - \ not permanent legal structure\n- **Limited authority**: Coordinates services but no direct governance over members\n\ - \n**Examples**:\n- **Digital Heritage Network (Netherlands)**:\n - Provides digital preservation infrastructure to\ - \ museums, archives, libraries\n - Members pay fees for services\n - No governance authority over member institutions\n\ - - **DPLA (Digital Public Library of America)**:\n - Aggregates digital collections from libraries/archives\n - Members\ - \ contribute metadata for aggregation\n - No control over member collection policies\n- **Europeana**:\n - European\ - \ digital heritage aggregation network\n - Museums/archives contribute digitized collections\n - Coordination, not\ - \ governance\n- **Regional archive networks**:\n - Shared conservation labs, digitization services\n - Temporary service\ - \ agreements between institutions\n- Schema.org: `schema:Organization` (general organization type)\n- W3C ORG: `org:Organization`\ - \ (parent class)\n- TOOI: `tooi:Samenwerkingsorganisatie` (Dutch collaborative organizations)\n\n**Temporal Dynamics**:\n\ - Network memberships fluctuate - custodians join/leave based on service needs.\nNetworks themselves may dissolve if service\ - \ model becomes obsolete or funding ends.\nTrack membership changes with temporal validity.\n" - slot_usage: - organization_type: - range: EncompassingBodyTypeEnum - required: true - ifabsent: string(NETWORK) - description: Must be NETWORK for NetworkOrganisation - service_offering: - required: true - description: 'Services provided to member custodians. - - Required field for NetworkOrganisation (defines purpose). - - ' - examples: - - value: Digital preservation storage infrastructure - - value: Shared cataloging platform (union catalog) - - value: Conservation services and expertise - - value: Professional development workshops - membership_criteria: - recommended: true - description: 'Eligibility criteria for joining network. - - Typically based on institution type, geographic location, or service needs. - - ' - examples: - - value: 'Dutch heritage institutions with digital collections seeking long-term preservation services. Membership - fee: €5,000/year.' - governance_authority: - description: 'Limited to SERVICE coordination authority. - - Networks do NOT exercise governance over member institutions. - - ' - examples: - - value: Network defines technical standards for digital preservation but members retain full autonomy over collection - policies and operations. - specificity_annotation: - range: SpecificityAnnotation - inlined: true - template_specificity: - range: TemplateSpecificityScores - inlined: true - exact_mappings: - - schema:Organization - close_mappings: - - tooi:Samenwerkingsorganisatie - - org:Organization - comments: - - NetworkOrganisation provides SERVICES, not governance - - Membership is voluntary and service-driven - - Temporary agreements - not permanent legal subordination - examples: - - value: - id: https://nde.nl/ontology/hc/encompassing-body/network/digital-heritage-nl - organization_name: Digital Heritage Network Netherlands - organization_type: NETWORK - founding_date: '2015-03-01' - description: 'Collaborative network providing digital preservation infrastructure - - and services to Dutch heritage institutions. Members access shared - - storage, metadata standards, and technical expertise. - - ' - has_or_had_area_served: - - NL - service_offering: - - Long-term digital preservation storage (100TB+ capacity) - - Metadata aggregation and normalization services - - Technical training workshops (quarterly) - - Preservation format migration services - membership_criteria: Dutch museums, archives, and libraries with digital collections. Annual membership fee based - on storage usage. - has_or_had_member_custodian: - - hc_id: https://nde.nl/ontology/hc/nl-nh-ams-m-am - preferred_label: Amsterdam Museum - - hc_id: https://nde.nl/ontology/hc/nl-ut-utr-l-ub - preferred_label: Utrecht University Library - website: https://digitalheritage.nl - description: Service network for digital preservation - slots: - - specificity_annotation - - template_specificity - Consortium: - is_a: EncompassingBody - class_uri: schema:Consortium - description: "A collaborative body where member heritage custodians provide MUTUAL assistance\nto each other through TEMPORARY\ - \ agreements. Unlike networks (centralized service\nprovider), consortia are PEER-TO-PEER collaboration models.\n\n\ - **Characteristics**:\n- **Mutual assistance**: Members help each other (not centralized services)\n- **Peer-to-peer**:\ - \ Equal participation, shared responsibility\n- **Temporary agreements**: Based on memoranda of understanding, not permanent\ - \ structure\n- **Coordination only**: Facilitates collaboration, no authority over members\n\n**Examples**:\n- **Library\ - \ consortia for shared cataloging**:\n - Members contribute catalog records to shared database\n - Peer-to-peer cataloging\ - \ standards and quality control\n - Example: OCLC WorldCat participating libraries\n- **Bulk licensing consortia**:\n\ - \ - Libraries collectively negotiate database subscriptions\n - Shared purchasing power, individual licenses\n- **Interlibrary\ - \ loan consortia**:\n - Members lend materials to each other\n - Reciprocal borrowing agreements\n- **Conservation\ - \ consortia**:\n - Museums share conservation expertise and equipment\n - Rotating access to specialized conservation\ - \ labs\n- **Digitization consortia**:\n - Archives collaborate on large-scale digitization projects\n - Shared equipment,\ - \ coordinated workflows\n\n**Distinction from NetworkOrganisation**:\n- **Consortium**: Peer-to-peer mutual assistance\ - \ (members help each other)\n- **Network**: Centralized service provider (network provides services to members)\n\n\ - **Ontological Alignment**:\n- Schema.org: `schema:Consortium` - \"A Consortium is a membership Organization \n whose\ - \ members are typically Organizations.\"\n- W3C ORG: `org:Organization` (parent class)\n- TOOI: `tooi:Samenwerkingsorganisatie`\ - \ (Dutch collaborative organizations)\n\n**Temporal Dynamics**:\nConsortia form for specific collaborative goals and\ - \ may dissolve when goals are\nachieved or collaboration model becomes obsolete. Short to medium-term duration\n(3-10\ - \ years typical).\n" - slot_usage: - organization_type: - range: EncompassingBodyTypeEnum - required: true - ifabsent: string(CONSORTIUM) - description: Must be CONSORTIUM for Consortium class - service_offering: - description: 'Services members provide TO EACH OTHER (not centralized services). - - Focus on reciprocal/mutual assistance patterns. - - ' - examples: - - value: Shared cataloging contributions to union catalog - - value: Reciprocal interlibrary loan services - - value: Peer review of conservation treatments - - value: Collaborative digitization equipment sharing - membership_criteria: - recommended: true - description: 'Criteria for joining consortium. - - Typically based on ability to contribute to mutual assistance model. - - ' - examples: - - value: Academic libraries with interlibrary loan capabilities and commitment to reciprocal lending. No membership - fee. - governance_authority: - description: 'Minimal authority - coordination and facilitation only. - - Consortia do NOT govern members; they facilitate peer collaboration. - - ' - examples: - - value: Consortium coordinates shared cataloging standards and provides technical infrastructure, but members retain - full autonomy. - specificity_annotation: - range: SpecificityAnnotation - inlined: true - template_specificity: - range: TemplateSpecificityScores - inlined: true - exact_mappings: - - schema:Consortium - close_mappings: - - tooi:Samenwerkingsorganisatie - - org:Organization - comments: - - Consortium is PEER-TO-PEER mutual assistance model - - Distinguished from Network (centralized service provider) - - Temporary collaborative agreements, not permanent legal structure - examples: - - value: - id: https://nde.nl/ontology/hc/encompassing-body/consortium/dutch-univ-lib-consortium - organization_name: Dutch University Libraries Consortium - organization_type: CONSORTIUM - founding_date: '2010-09-01' - description: 'Collaborative consortium of Dutch university libraries for shared - - cataloging, bulk licensing, and interlibrary loan. Members contribute - - equally and benefit from collective resources. - - ' - service_offering: - - Shared union catalog contributions - - Collective database subscription negotiations - - Reciprocal interlibrary loan services - - Collaborative metadata enrichment projects - membership_criteria: Dutch university libraries accredited by VSNU (Association of Universities in the Netherlands). - Members must contribute cataloging records and participate in interlibrary loan network. - has_or_had_member_custodian: - - hc_id: https://nde.nl/ontology/hc/nl-zh-lei-l-ub - preferred_label: Leiden University Library - - hc_id: https://nde.nl/ontology/hc/nl-nh-ams-l-uba - preferred_label: Amsterdam University Library - website: https://universiteitsbibliotheken.nl - description: University library consortium for mutual assistance - slots: - - specificity_annotation - - template_specificity - Cooperative: - is_a: EncompassingBody - class_uri: org:FormalOrganization - description: "A member-OWNED organization where members both contribute to and benefit from\nshared services. Distinguished\ - \ from Consortium by PERMANENT structure and\nOWNERSHIP model - members are legal owners of the cooperative.\n\n**Characteristics**:\n\ - - **Member ownership**: Members hold shares/ownership stake\n- **Member governance**: One member, one vote principle\ - \ (democratic)\n- **Permanent legal structure**: Formal organization, not temporary agreements\n- **Shared services\ - \ AND shared ownership**: Dual benefit model\n- **Typically operates as non-profit**: Mutual benefit corporation\n-\ - \ **May have closed/proprietary data model**: Data as organizational asset\n\n**CRITICAL: Data Openness Pattern**:\n\ - Cooperatives often have MIXED or CLOSED data policies because:\n- Data contributed by members is organizational asset\n\ - - Business model may depend on subscription/membership revenue\n- Balancing member value vs. public open access\n- Historical\ - \ model predates open data movement\n\n**Examples**:\n\n- **OCLC** (Online Computer Library Center)\n - Member-owned\ - \ library cooperative since 1967\n - 30,000+ member libraries worldwide\n - WorldCat: Proprietary (subscription-based)\n\ - \ - VIAF: Open (ODC-BY) - strategic choice for linked data\n - Members both contribute data AND receive services\n\ - \ \n- **RERO** (Library Network of Western Switzerland)\n - Cooperative of Swiss academic libraries\n - Shared cataloging\ - \ and discovery services\n \n- **HathiTrust**\n - Partnership of academic and research libraries\n - Shared digital\ - \ preservation infrastructure\n\n**Distinction from Consortium**:\n- **Cooperative**: Members OWN the organization (permanent\ - \ legal structure)\n- **Consortium**: Members PARTICIPATE in agreements (temporary, no ownership)\n\n**Distinction from\ - \ NetworkOrganisation**:\n- **Cooperative**: Members are owners AND contributors AND consumers\n- **Network**: Members\ - \ are consumers of centralized services only\n\n**Ontological Alignment**:\n- W3C ORG: `org:FormalOrganization` (formal\ - \ legal entity)\n- Schema.org: `schema:Organization` with `additionalType: Cooperative`\n- Can align with ICA (International\ - \ Cooperative Alliance) principles\n" - slot_usage: - organization_type: - range: EncompassingBodyTypeEnum - required: true - ifabsent: string(COOPERATIVE) - description: Must be COOPERATIVE for Cooperative class - organization_legal_form: - required: true - description: 'Legal form of the cooperative. - - Examples: "Cooperative corporation", "Mutual benefit corporation", - - "Library cooperative", "Non-profit cooperative" - - ' - governance_authority: - required: true - description: 'Member governance model. - - Must document: voting rights, board composition, annual meeting structure. - - ' - examples: - - value: OCLC is governed by a Global Council of library representatives elected by member libraries. Each member - has voting rights proportional to their usage. Annual Members Council meeting. - membership_criteria: - required: true - description: 'How to become a member/owner of the cooperative. - - Must include: eligibility, membership fees, ownership stake. - - ' - examples: - - value: OCLC membership is open to libraries and cultural heritage organizations. Members pay annual fees based on - usage. Members receive governance rights and access to services. - data_license_policy: - recommended: true - description: 'Data openness policy for the cooperative. - - - Cooperatives typically have MIXED_POLICY: - - - Core services may be proprietary (subscription revenue) - - - Some services may be open (strategic value for linked data) - - ' - specificity_annotation: - range: SpecificityAnnotation - inlined: true - template_specificity: - range: TemplateSpecificityScores - inlined: true - exact_mappings: - - org:FormalOrganization - close_mappings: - - schema:Organization - comments: - - Cooperative = member-owned permanent organization - - Distinguished from Consortium (ownership, permanence) - - Distinguished from Network (members contribute, not just consume) - - Typically MIXED or CLOSED data policy (data as organizational asset) - - 'Examples: OCLC, RERO, HathiTrust' - examples: - - value: - id: https://nde.nl/ontology/hc/encompassing-body/cooperative/oclc - organization_name: OCLC - organization_type: COOPERATIVE - organization_legal_form: Non-profit library cooperative - founding_date: '1967-07-05' - description: 'OCLC is a global library cooperative providing shared technology - - services, research, and programs that help libraries meet the changing - - needs of their users, institutions, and communities. Member libraries - - cooperatively maintain WorldCat, the world''s largest shared catalog. - - ' - service_offering: - - WorldCat (shared cataloging database) - - VIAF (Virtual International Authority File) - - WorldShare Management Services - - Interlibrary loan services (WorldShare ILL) - - Digital preservation services - - CONTENTdm (digital collection management) - membership_criteria: Open to libraries and cultural heritage organizations worldwide. Membership includes governance - rights (voting in Global Council), access to member pricing for services, and participation in cooperative programs. - governance_authority: Governed by Global Council of elected library representatives. Board of Trustees provides strategic - oversight. Regional councils for Americas, EMEA, and Asia Pacific. Annual Members Council meeting. - data_license_policy: - policy_name: OCLC Data Usage Policy - openness_stance: MIXED_POLICY - default_license: proprietary-worldcat - service_specific_licenses: - - service_name: VIAF - license: odc-by-1.0 - - service_name: WorldCat Identities - license: odc-by-1.0 - external_identifier: - - http://www.wikidata.org/entity/Q190593 - - https://viaf.org/viaf/125315828 - website: https://www.oclc.org/ - description: OCLC as member-owned library cooperative with mixed data policy - slots: - - specificity_annotation - - template_specificity - SocialMovement: - is_a: EncompassingBody - class_uri: schema:Organization - description: "A value-driven movement organized around shared ideological principles,\nwith open participation and commitment\ - \ to public benefit. Distinguished from\nother types by ideological motivation and OPEN data policies as core value.\n\ - \n**Characteristics**:\n- **Value-driven**: Ideological commitment to principles (free knowledge, openness)\n- **Open\ - \ participation**: Anyone can join/contribute based on shared values\n- **Decentralized governance**: Community-driven\ - \ decision making\n- **Non-proprietary by design**: Open data is core value, not business decision\n- **Global grassroots\ - \ participation**: Often volunteer-driven\n- **May include formal foundation**: Legal entity supports the movement\n\ - \n**CRITICAL: Data Openness Pattern**:\nSocial movements typically have FULLY OPEN data policies because:\n- Openness\ - \ is ideological value, not business strategy\n- Mission centers on public access and benefit\n- Data openness is prerequisite\ - \ for participation\n- No proprietary business model to protect\n- \"Information wants to be free\" philosophy\n\n**Examples**:\n\ - \n- **Wikimedia Foundation / Movement**\n - Mission: \"Free knowledge for everyone\"\n - Wikidata: CC0 (public domain)\n\ - \ - Wikipedia: CC-BY-SA (copyleft)\n - Global volunteer contributor base (300,000+ active editors)\n - Foundation\ - \ supports movement, doesn't own content\n \n- **Creative Commons**\n - Mission: \"Enable sharing and reuse\"\n -\ - \ License steward and open advocate\n - All materials openly licensed\n \n- **Open Knowledge Foundation**\n - Mission:\ - \ \"Promote open data worldwide\"\n - Advocacy for open access and transparency\n - CKAN open source software\n \n\ - - **Mozilla Foundation / Movement**\n - Mission: \"Open, accessible internet for all\"\n - Firefox (open source browser)\n\ - \ - Open web standards advocacy\n \n- **Internet Archive**\n - Mission: \"Universal access to all knowledge\"\n \ - \ - Wayback Machine, Open Library\n - Preservation and open access\n\n**Distinction from Cooperative**:\n- **SocialMovement**:\ - \ Open participation, ideological commitment, open data\n- **Cooperative**: Membership-based ownership, may have closed\ - \ data\n\n**Distinction from NetworkOrganisation**:\n- **SocialMovement**: Value-driven, open participation\n- **Network**:\ - \ Service-driven, membership-based access\n\n**Ontological Alignment**:\n- Schema.org: `schema:Organization` (with movement\ - \ characteristics)\n- Sociological concept of \"social movement\"\n- May have formal foundation (e.g., Wikimedia Foundation)\ - \ but movement is broader\n" - slot_usage: - organization_type: - range: EncompassingBodyTypeEnum - required: true - ifabsent: string(SOCIAL_MOVEMENT) - description: Must be SOCIAL_MOVEMENT for SocialMovement class - description: - required: true - description: 'Must describe the ideological values and mission of the movement. - - Should explain the open participation model and commitment to openness. - - ' - service_offering: - description: 'Services/platforms provided by the movement. - - Typically all openly accessible (no subscription barriers). - - ' - examples: - - value: Wikidata (open knowledge base, CC0) - - value: Wikipedia (free encyclopedia, CC-BY-SA) - - value: Wikimedia Commons (free media repository) - membership_criteria: - description: 'How to participate in the movement. - - Typically open to anyone who shares the values - no formal membership. - - ' - examples: - - value: Open participation - anyone can edit Wikipedia, contribute to Wikidata, or upload to Wikimedia Commons. No - membership fee or application process. Contribution governed by community policies. - governance_authority: - description: 'Community-driven governance model. - - Describes how decisions are made within the movement. - - ' - examples: - - value: Wikimedia projects are governed by community consensus. The Wikimedia Foundation provides infrastructure - and legal support but does not control content. Movement governance through affiliates, chapters, and community-elected - bodies. - data_license_policy: - required: true - description: 'Data openness policy for the movement. - - - Social movements typically have STRONG_OPEN_ADVOCATE stance: - - - All content openly licensed - - - Openness is ideological requirement, not business option - - - Active advocacy for open data in broader community - - ' - specificity_annotation: - range: SpecificityAnnotation - inlined: true - template_specificity: - range: TemplateSpecificityScores - inlined: true - exact_mappings: - - schema:Organization - comments: - - SocialMovement = value-driven, open participation, open data - - Distinguished from Cooperative (ideology vs. ownership) - - Distinguished from Network (values vs. services) - - Typically FULLY OPEN data policy (openness as core value) - - 'Examples: Wikimedia, Creative Commons, Open Knowledge Foundation, Mozilla' - examples: - - value: - id: https://nde.nl/ontology/hc/encompassing-body/social-movement/wikimedia - organization_name: Wikimedia Foundation / Movement - organization_type: SOCIAL_MOVEMENT - organization_legal_form: 501(c)(3) non-profit foundation supporting broader movement - founding_date: '2003-06-20' - description: 'The Wikimedia movement is a global community of volunteers and - - organizations dedicated to free knowledge. The movement operates - - Wikipedia, Wikidata, Wikimedia Commons, and other free knowledge - - projects. The Wikimedia Foundation provides infrastructure and - - legal support but does not own or control the content created by - - the volunteer community. The movement''s core value is that knowledge - - should be freely accessible to everyone. - - ' - service_offering: - - Wikipedia (free encyclopedia, 60M+ articles, 300+ languages) - - Wikidata (open knowledge base, 100M+ items, CC0) - - Wikimedia Commons (free media repository, 90M+ files) - - Wikisource (free library of source texts) - - Wiktionary (free dictionary) - - MediaWiki (open source wiki software) - membership_criteria: Open participation - anyone can edit Wikipedia, contribute to Wikidata, or upload to Wikimedia - Commons. No membership fee or application. Contribution governed by community policies (neutral point of view, verifiability, - no original research). The movement includes formal affiliates (chapters, user groups, thematic orgs). - governance_authority: Wikimedia projects are governed by community consensus through volunteer administrators, arbitration - committees, and policy pages. The Wikimedia Foundation Board of Trustees provides strategic oversight. Movement - governance through affiliates, chapters, and community-elected bodies (Movement Charter in development). - data_license_policy: - policy_name: Wikimedia Foundation Open Content Policy - openness_stance: STRONG_OPEN_ADVOCATE - default_license: cc0-1.0 - service_specific_licenses: - - service_name: Wikidata - license: cc0-1.0 - license_notes: All structured data is public domain - - service_name: Wikipedia - license: cc-by-sa-4.0 - license_notes: Text content is copyleft - derivatives must share alike - - service_name: Wikimedia Commons - license_notes: Varies by upload - must be free license (CC-BY, CC-BY-SA, CC0, or public domain) - open_data_principles: - - Free knowledge for everyone - - Open participation - - Neutral point of view - advocacy_activities: - - Open Access advocacy - - GLAM-Wiki partnerships - - Open data advocacy in policy forums - - Training librarians and cultural heritage professionals - external_identifier: - - http://www.wikidata.org/entity/Q180 - - https://viaf.org/viaf/305375908 - website: https://www.wikimedia.org/ - description: Wikimedia as social movement for free knowledge with fully open data policy - slots: - - specificity_annotation - - template_specificity - FundingOrganisation: - is_a: EncompassingBody - class_uri: schema:FundingAgency - description: "A grant-giving organization that provides FINANCIAL RESOURCES to heritage\ncustodians through funding schemes,\ - \ grants, and subsidies. Distinguished from\nother EncompassingBody types by the FINANCIAL relationship rather than\ - \ governance,\nservices, or collaboration.\n\n**Characteristics**:\n- **Financial support**: Provides grants, subsidies,\ - \ funding to custodians\n- **Funding schemes**: Implements structured programs with application processes\n- **No governance**:\ - \ Does NOT govern recipients (unlike UmbrellaOrganisation)\n- **No ongoing services**: Does NOT provide operational\ - \ services (unlike NetworkOrganisation)\n- **Evaluation and monitoring**: Assesses applications, monitors outcomes\n\ - - **Time-limited relationships**: Grant periods define relationship duration\n\n**Relationship Model**:\nUnlike other\ - \ EncompassingBody types that have ongoing structural relationships,\nFundingOrganisation has TRANSACTIONAL relationships:\n\ - - Funder → (awards grant) → Custodian\n- Grant has start date, end date, amount, purpose\n- Multiple custodians may\ - \ receive funding simultaneously\n- Same custodian may receive multiple grants over time\n\n**Examples**:\n\n- **Mondriaan\ - \ Fund** (Mondriaan Fonds, Q2714299)\n - Dutch public fund for visual arts and cultural heritage\n - Instance of \"\ - funding body\" (Q5509032) in Wikidata\n - Provides grants for exhibitions, acquisitions, conservation\n - Government-funded\ - \ through Ministry of OCW, operates independently\n \n- **European Research Council** (ERC, Q1377836)\n - EU agency\ - \ funding frontier research\n - Starting Grants, Consolidator Grants, Advanced Grants\n - Operates under Horizon Europe\ - \ framework\n \n- **Creative Europe** (Q17084973)\n - EU programme supporting cultural and creative sectors\n - 2021-2027\ - \ programming period\n - Funds transnational cooperation projects\n \n- **DC4EU** (Digital Credentials for Europe)\n\ - \ - EU Digital Europe Programme project\n - Funds digital infrastructure for heritage sector\n \n- **National Endowment\ - \ for the Humanities** (NEH)\n - US federal agency for humanities funding\n - Preservation, research, public programs\n\ - \ \n- **Heritage Lottery Fund** (now National Lottery Heritage Fund)\n - UK lottery distributor for heritage projects\n\ - \ - Major funder of UK heritage custodians\n\n**Distinction from UmbrellaOrganisation**:\n- **FundingOrganisation**:\ - \ Provides money, NO governance authority\n- **UmbrellaOrganisation**: Legal parent WITH governance authority\n- A ministry\ - \ may BOTH fund AND govern - in that case use UMBRELLA\n (the governance relationship is primary)\n\n**Distinction\ - \ from NetworkOrganisation**:\n- **FundingOrganisation**: One-way financial relationship (funder → recipient)\n- **NetworkOrganisation**:\ - \ Ongoing service provision relationship\n\n**When a Ministry is UMBRELLA vs FUNDING_BODY**:\n- Ministry of OCW → National\ - \ Archives: UMBRELLA (governs)\n- Ministry of OCW → Mondriaan Fund: UMBRELLA (governs the fund)\n- Mondriaan Fund →\ - \ Museum X: FUNDING_BODY (only provides grant)\n\n**Ontological Alignment**:\n- Schema.org: `schema:FundingAgency` -\ - \ \"An organization that implements\n FundingSchemes and manages the granting process (via Grants)\"\n- Schema.org:\ - \ `schema:FundingScheme` - structured funding programs\n- Schema.org: `schema:Grant` / `schema:MonetaryGrant` - individual\ - \ awards\n- Wikidata: Q5509032 (funding body)\n- FOAF: `foaf:fundedBy` (legacy, use schema:funder instead)\n" - slots: - - funding_focus - - funding_scheme - - funding_source - - implements_agenda - - issued_call - - programme_period - - specificity_annotation - - template_specificity - - total_annual_budget - slot_usage: - organization_type: - range: EncompassingBodyTypeEnum - required: true - ifabsent: string(FUNDING_BODY) - description: Must be FUNDING_BODY for FundingOrganisation - description: - required: true - description: 'Description of the funding organization''s mission and focus areas. - - Should explain what types of projects/custodians it funds. - - ' - implements_agenda: - slot_uri: org:linkedTo - range: uriorcurie - multivalued: true - inlined_as_list: true - description: "Strategic agendas implemented by this funding organisation.\n\nLinks to FundingAgenda instances that\ - \ define strategic priorities\nguiding the organisation's funding decisions and call design.\n\n**Relationship Chain**:\n\ - ```\nFundingAgenda (NWA, Horizon Europe SP)\n │\n └── implemented by → FundingOrganisation\n \ - \ │\n └── issues → CallForApplication[]\n```\n" - examples: - - value: https://nde.nl/ontology/hc/agenda/nl/nwa - description: NWO implements Dutch Research Agenda - issued_call: - slot_uri: schema:makesOffer - range: uriorcurie - multivalued: true - inlined_as_list: true - description: 'Funding calls issued by this organisation. - - - Links to CallForApplication instances representing specific - - funding opportunities with defined budgets, deadlines, and criteria. - - - **Inverse of CallForApplication.issuing_organisation** - - ' - examples: - - value: https://nde.nl/ontology/hc/call/nwo/nwa-heritage-2025 - description: NWO NWA heritage call 2025 - funding_focus: - range: string - multivalued: true - description: 'Focus areas for funding (heritage sectors, themes, activities). - - Examples: "Visual arts", "Conservation", "Digitization", "Research" - - ' - examples: - - value: Visual arts and cultural heritage - - value: Museum acquisitions - - value: Conservation and restoration - - value: Digital infrastructure - funding_scheme: - range: string - multivalued: true - description: 'Named funding programs offered by this organization. - - Each scheme typically has its own application process, criteria, and budget. - - ' - examples: - - value: Project Grants for Museums - - value: Conservation Subsidy Programme - - value: Starting Grant - - value: Consolidator Grant - total_annual_budget: - range: string - description: 'Approximate annual budget for grants (for context). - - Format: "€X million" or "€X-Y million range" - - ' - examples: - - value: €30 million - - value: €2.5 billion (Horizon Europe ERC share) - funding_source: - range: string - description: 'Where the funding organization gets its resources. - - Examples: "Government appropriation", "Lottery proceeds", "EU budget" - - ' - examples: - - value: Dutch Ministry of OCW annual budget - - value: Horizon Europe Framework Programme - - value: National Lottery proceeds - programme_period: - slot_uri: schema:temporalCoverage - range: TimeSpan - description: 'Temporal period of the funding programme. - - - **EU Programmes**: Use exact dates for 7-year programming periods. - - **Ongoing Funds**: Set start date, leave end null. - - - Uses CIDOC-CRM E52_Time-Span pattern via TimeSpan class. - - ' - examples: - - value: - begin_of_the_begin: '2021-01-01T00:00:00Z' - end_of_the_begin: '2021-01-01T00:00:00Z' - begin_of_the_end: '2027-12-31T23:59:59Z' - end_of_the_end: '2027-12-31T23:59:59Z' - description: 2021-2027 EU programming period - has_or_had_member_custodian: - description: 'For FundingOrganisation, this represents FUNDED custodians, not members. - - - Note: Unlike other EncompassingBody types where member_custodians - - represents ongoing membership, for FundingOrganisation this captures - - custodians that have received funding. Consider using Grant records - - for detailed funding relationships with temporal information. - - ' - service_offering: - description: 'Additional services beyond funding (if any). - - Many funding bodies also provide advisory services, training, etc. - - ' - examples: - - value: Application guidance and coaching - - value: Networking events for grantees - - value: Outcome evaluation support - has_or_had_area_served: - description: 'Geographic scope of funding eligibility. - - Which countries/regions can apply for funding? - - ' - examples: - - value: NL - description: Netherlands only (Mondriaan Fund) - - value: EU - description: EU member states (Creative Europe) - - value: GLOBAL - description: Worldwide eligibility - specificity_annotation: - range: SpecificityAnnotation - inlined: true - template_specificity: - range: TemplateSpecificityScores - inlined: true - exact_mappings: - - schema:FundingAgency - close_mappings: - - schema:Organization - comments: - - FundingOrganisation provides FINANCIAL RESOURCES, not governance or services - - Relationship with custodians is transactional (grant-based) - - Distinguished from UMBRELLA (no governance authority) - - Distinguished from NETWORK (no ongoing services) - - Use schema:funder property to link to funded custodians - examples: - - value: - id: https://nde.nl/ontology/hc/encompassing-body/funding/mondriaan-fund - organization_name: Mondriaan Fonds - organization_type: FUNDING_BODY - organization_legal_form: Public fund (publiekrechtelijk fonds) - founding_date: '1994-01-01' - description: 'The Mondriaan Fund is the Dutch public fund for visual arts and - - cultural heritage. It provides grants to artists, museums, archives, - - and heritage organizations for exhibitions, acquisitions, conservation, - - international exchange, and other cultural heritage activities. - - The fund is named after Dutch painter Piet Mondrian. - - ' - funding_focus: - - Visual arts - - Cultural heritage - - Museum acquisitions - - Conservation and restoration - - International cultural exchange - - Artist residencies - funding_scheme: - - Project Grants for Museums - - Conservation Subsidy - - International Heritage Programme - - Acquisition Grants - total_annual_budget: €30 million (approximate) - funding_source: Dutch Ministry of OCW annual appropriation - has_or_had_area_served: - - NL - service_offering: - - Application guidance - - Networking events for grantees - - Impact evaluation - membership_criteria: 'Eligibility depends on specific funding scheme. Generally: Dutch museums, archives, heritage - organizations, and visual artists. International projects may have broader eligibility.' - external_identifier: - - http://www.wikidata.org/entity/Q2714299 - website: https://www.mondriaanfonds.nl/ - description: Mondriaan Fund as Dutch heritage funding organization - - value: - id: https://nde.nl/ontology/hc/encompassing-body/funding/erc - organization_name: European Research Council - organization_type: FUNDING_BODY - organization_legal_form: EU executive agency - founding_date: '2007-02-27' - description: 'The European Research Council (ERC) is the premier European funding - - organisation for excellent frontier research. It funds researchers - - of any nationality and has_age who wish to carry out their research in - - EU Member States or Associated Countries. ERC grants are awarded - - through open competition to researchers in any field of research. - - ' - funding_focus: - - Frontier research (all disciplines) - - Principal investigator-driven research - - High-risk/high-gain research - funding_scheme: - - Starting Grant (2-7 years post-PhD) - - Consolidator Grant (7-12 years post-PhD) - - Advanced Grant (established leaders) - - Synergy Grant (small group collaboration) - - Proof of Concept - total_annual_budget: €2.5 billion (under Horizon Europe) - funding_source: Horizon Europe Framework Programme (EU budget) - has_or_had_area_served: - - EU - - EEA - - Associated Countries - membership_criteria: Open to researchers of any nationality. Host institution must be in EU Member State or Horizon - Europe Associated Country. Selection based on scientific excellence only. - external_identifier: - - http://www.wikidata.org/entity/Q1377836 - website: https://erc.europa.eu/ - description: European Research Council as frontier research funding agency diff --git a/schemas/20251121/linkml/modules/classes/FileAPI.yaml b/schemas/20251121/linkml/modules/classes/FileAPI.yaml index 3742dc44a0..3930ddeae5 100644 --- a/schemas/20251121/linkml/modules/classes/FileAPI.yaml +++ b/schemas/20251121/linkml/modules/classes/FileAPI.yaml @@ -19,232 +19,261 @@ imports: - ../slots/template_specificity - ./SpecificityAnnotation - ./TemplateSpecificityScores +- ../enums/ContentDispositionEnum classes: FileAPI: is_a: DataServiceEndpoint class_uri: hc:FileAPI - description: | - File/asset retrieval API for downloading digital content. - - **Purpose:** - - Models endpoints that provide direct access to digital files - (images, documents, audio, video, 3D models) stored in heritage repositories. - - **Distinction from Image Servers:** - - - **FileAPI**: Downloads original or derivative files as-is - - **IIPImageServer**: Dynamic image delivery with zooming, tiling, region extraction - - Use FileAPI when you need: - - Original/master files - - Fixed-resolution derivatives - - Non-image files (PDFs, audio, video, office documents) - - **Example - Nationaal Archief File API:** - - ```yaml - file_api: - endpoint_name: "Nationaal Archief File API" - base_url: "https://service.archief.nl/gaf/api/file/v1/" - url_pattern: "{base_url}{uuid}/{level}/{format}" - version: "v1" - supported_levels: - - MASTER - - HIGH - - MEDIUM - - LOW - - THUMBNAIL - supported_format: - - image/jpeg - - image/png - - application/pdf - max_file_size_mb: 500 - supports_range_requests: true - example_url: "https://service.archief.nl/gaf/api/file/v1/12345678.../high/jpeg" - ``` - - **Use Cases:** - - 1. **Download master files**: Archival-quality preservation copies - 2. **Generate derivatives**: Request specific size/format - 3. **Batch harvesting**: Download all files for a record - 4. **Streaming**: Audio/video delivery - - **See Also:** - - - Content-Disposition header for filename hints - - HTTP Range requests (RFC 7233) for partial downloads + description: "File/asset retrieval API for downloading digital content.\n\n**Purpose:**\n\nModels endpoints that provide\ + \ direct access to digital files\n(images, documents, audio, video, 3D models) stored in heritage repositories.\n\n\ + **Distinction from Image Servers:**\n\n- **FileAPI**: Downloads original or derivative files as-is\n- **IIPImageServer**:\ + \ Dynamic image delivery with zooming, tiling, region extraction\n\nUse FileAPI when you need:\n- Original/master files\n\ + - Fixed-resolution derivatives\n- Non-image files (PDFs, audio, video, office documents)\n\n**Example - Nationaal Archief\ + \ File API:**\n\n```yaml\nfile_api:\n endpoint_name: \"Nationaal Archief File API\"\n base_url: \"https://service.archief.nl/gaf/api/file/v1/\"\ + \n url_pattern: \"{base_url}{uuid}/{level}/{format}\"\n version: \"v1\"\n supported_levels:\n - MASTER\n -\ + \ HIGH\n - MEDIUM\n - LOW\n - THUMBNAIL\n supported_format:\n - image/jpeg\n - image/png\n - application/pdf\n\ + \ max_file_size_mb: 500\n supports_range_requests: true\n example_url: \"https://service.archief.nl/gaf/api/file/v1/12345678.../high/jpeg\"\ + \n```\n\n**Use Cases:**\n\n1. **Download master files**: Archival-quality preservation copies\n2. **Generate derivatives**:\ + \ Request specific size/format\n3. **Batch harvesting**: Download all files for a record\n4. **Streaming**: Audio/video\ + \ delivery\n\n**See Also:**\n\n- Content-Disposition header for filename hints\n- HTTP Range requests (RFC 7233) for\ + \ partial downloads\n" attributes: base_url: slot_uri: dcat:endpointURL - description: | - Base URL for file retrieval. + description: 'Base URL for file retrieval. + Individual files are accessed by appending identifiers. + Example: "https://service.archief.nl/gaf/api/file/v1/" + + ' range: uri required: true url_pattern: slot_uri: hydra:template - description: | - URL pattern for constructing file requests. + description: 'URL pattern for constructing file requests. + Use {placeholders} for dynamic parts: + - {uuid}: File identifier + - {level}: Quality level (master, high, low, thumbnail) + - {format}: File format (jpeg, png, pdf) + Example: "{base_url}{uuid}/{level}/{format}" + + ' range: string identifier_type: slot_uri: dcterms:identifier - description: | - Type of identifier used to request files. + description: 'Type of identifier used to request files. + Values: UUID, HANDLE, DOI, ARK, LOCAL_ID, FILENAME + + ' range: string supported_levels: slot_uri: schema:encodingFormat - description: | - Quality/resolution levels available. + description: 'Quality/resolution levels available. + Common levels: + - MASTER/ORIGINAL: Archival master file + - HIGH: High-resolution derivative + - MEDIUM: Medium resolution (web-suitable) + - LOW: Low resolution (fast loading) + - THUMBNAIL: Small preview image + Example: ["MASTER", "HIGH", "MEDIUM", "LOW", "THUMBNAIL"] + + ' range: string multivalued: true supported_format: slot_uri: dcterms:format - description: | - File formats (MIME types) available for download. + description: 'File formats (MIME types) available for download. + May vary by content type and level. + Example: + - Images: ["image/jpeg", "image/png", "image/tiff"] + - Documents: ["application/pdf", "application/xml"] + - Audio: ["audio/mpeg", "audio/wav"] + - Video: ["video/mp4", "video/webm"] + + ' range: string multivalued: true required: true max_file_size_mb: slot_uri: schema:contentSize - description: | - Maximum file size available for download (in MB). + description: 'Maximum file size available for download (in MB). + Larger files may require special access or batch delivery. + Example: 500 + + ' range: integer typical_file_size_mb: slot_uri: schema:contentSize - description: | - Typical file size for most downloads (in MB). + description: 'Typical file size for most downloads (in MB). + Helps clients estimate download times. + Example: 10 + + ' range: integer supports_range_requests: slot_uri: schema:additionalProperty - description: | - Whether HTTP Range requests are supported (RFC 7233). + description: 'Whether HTTP Range requests are supported (RFC 7233). + Enables: + - Resumable downloads + - Partial content retrieval + - Streaming + Check for Accept-Ranges: bytes header. + + ' range: boolean supports_streaming: slot_uri: schema:additionalProperty - description: | - Whether the API supports media streaming. + description: 'Whether the API supports media streaming. + Relevant for audio/video content. + Enables progressive playback without full download. + + ' range: boolean content_disposition: slot_uri: schema:additionalProperty - description: | - Content-Disposition header behavior. + description: 'Content-Disposition header behavior. + Values: + - INLINE: Browser displays content + - ATTACHMENT: Browser downloads file + - CONFIGURABLE: Client can request either + + ' range: ContentDispositionEnum filename_in_url: slot_uri: schema:additionalProperty - description: | - Whether original filename is included in URL. + description: 'Whether original filename is included in URL. + Some APIs include filename for better download naming: + /api/file/v1/uuid/original.tif + + ' range: boolean supports_batch_download: slot_uri: schema:additionalProperty - description: | - Whether batch/bulk download is supported. + description: 'Whether batch/bulk download is supported. + May provide ZIP archives or async batch jobs. + + ' range: boolean batch_download_format: slot_uri: dcterms:format - description: | - Format for batch downloads. + description: 'Format for batch downloads. + Example: "application/zip" + + ' range: string thumbnail_dimensions: slot_uri: schema:width - description: | - Dimensions of thumbnail images (if thumbnail level available). + description: 'Dimensions of thumbnail images (if thumbnail level available). + Format: "WIDTHxHEIGHT" + Example: "150x150" + + ' range: string watermark_applied: slot_uri: schema:additionalProperty - description: | - Whether watermarks are applied to downloaded files. + description: 'Whether watermarks are applied to downloaded files. + May vary by access level or file type. + + ' range: boolean has_or_had_access_restriction: slot_uri: dcterms:accessRights - description: | - Access restrictions on file downloads. + description: 'Access restrictions on file downloads. + Examples: + - "Public access to all levels" + - "Master files require authentication" + - "Some collections IP-restricted" + + ' range: string example_url: slot_uri: schema:workExample - description: | - Example URL for file download. + description: 'Example URL for file download. + Example: "https://service.archief.nl/gaf/api/file/v1/12345678.../high/jpeg" + + ' range: uri slot_usage: protocol: description: File APIs use REST protocol for downloads (DataServiceProtocolEnum.REST). has_authentication_required_flag: - description: | - Master files often require authentication. + description: 'Master files often require authentication. + Thumbnails and low-res typically public. + + ' specificity_annotation: range: SpecificityAnnotation inlined: true @@ -261,27 +290,3 @@ classes: slots: - specificity_annotation - template_specificity -enums: - ContentDispositionEnum: - description: | - HTTP Content-Disposition header behavior options. - permissible_values: - INLINE: - description: | - Content displayed inline in browser. - - Header: Content-Disposition: inline - - Browser attempts to render (images, PDFs). - ATTACHMENT: - description: | - Content downloaded as attachment. - - Header: Content-Disposition: attachment; filename="example.pdf" - - Browser prompts for download. - CONFIGURABLE: - description: | - Client can request either behavior. - - Usually via query parameter: ?download=true diff --git a/schemas/20251121/linkml/modules/classes/FindingAid.yaml b/schemas/20251121/linkml/modules/classes/FindingAid.yaml index 596007fd8e..55c7f19a9c 100644 --- a/schemas/20251121/linkml/modules/classes/FindingAid.yaml +++ b/schemas/20251121/linkml/modules/classes/FindingAid.yaml @@ -152,81 +152,10 @@ imports: - ../slots/event - ../slots/event_en - ../slots/claim_source_url -enums: - ExternalResourceTypeEnum: - description: 'Types of external resources linked from finding aids. - - ' - permissible_values: - database: - description: Searchable online database - organization: - description: Related organization or society - portal: - description: Discovery portal or aggregator - archive: - description: External archive holding related materials - library: - description: Library with related holdings - museum: - description: Museum with related collections - website: - description: General website resource - api: - description: API endpoint for programmatic access - reference: - description: Reference material or documentation - research_institute: - description: Research institution or academic center - aggregator: - description: Data aggregator or harvesting service - SubGuideTypeEnum: - description: 'Types of sub-guide references within a repository guide. - - ' - permissible_values: - sub_guide: - description: Direct sub-guide within same repository - cross_reference: - description: Cross-reference to another main guide - thematic: - description: Thematic sub-collection - regional: - description: Regional sub-guide - RelationshipTypeEnum: - description: 'Types of relationships between finding aids. - - ' - permissible_values: - cross_reference: - description: Related guide on related topic - parent: - description: Parent guide containing this guide - child: - description: Child guide within this guide - see_also: - description: See also reference - predecessor: - description: Previous version of this guide - successor: - description: Newer version of this guide - LinkTypeEnum: - description: 'Types of hyperlinks extracted from pages. - - ' - permissible_values: - internal: - description: Link within same domain - external: - description: Link to external domain - anchor: - description: Same-page anchor link - download: - description: Link to downloadable file - sub_guide: - description: Link to a sub-guide finding aid - featured: - description: Featured/highlighted link +- ../enums/ExternalResourceTypeEnum +- ../enums/SubGuideTypeEnum +- ../enums/RelationshipTypeEnum +- ../enums/LinkTypeEnum classes: FindingAid: class_uri: rico:FindingAid diff --git a/schemas/20251121/linkml/modules/classes/GeoSpatialPlace.yaml b/schemas/20251121/linkml/modules/classes/GeoSpatialPlace.yaml index e57c4dd4fa..e1c8f793a2 100644 --- a/schemas/20251121/linkml/modules/classes/GeoSpatialPlace.yaml +++ b/schemas/20251121/linkml/modules/classes/GeoSpatialPlace.yaml @@ -33,6 +33,7 @@ imports: - ../slots/valid_to_geo - ./SpecificityAnnotation - ./TemplateSpecificityScores +- ../enums/GeometryTypeEnum types: WktLiteral: uri: geosparql:wktLiteral @@ -45,24 +46,6 @@ types: examples: - value: POINT(4.2894 52.0705) - value: POLYGON((4.0 52.0, 4.5 52.0, 4.5 52.5, 4.0 52.5, 4.0 52.0)) -enums: - GeometryTypeEnum: - description: OGC Simple Features geometry types - permissible_values: - POINT: - description: Single point location - LINESTRING: - description: Line or path - POLYGON: - description: Closed polygon boundary - MULTIPOINT: - description: Multiple points - MULTILINESTRING: - description: Multiple lines - MULTIPOLYGON: - description: Multiple polygons (e.g., archipelago) - GEOMETRYCOLLECTION: - description: Mixed geometry types classes: GeoSpatialPlace: class_uri: geosparql:Feature diff --git a/schemas/20251121/linkml/modules/classes/IIPImageServer.yaml b/schemas/20251121/linkml/modules/classes/IIPImageServer.yaml index 845da4e75e..9af5a215b9 100644 --- a/schemas/20251121/linkml/modules/classes/IIPImageServer.yaml +++ b/schemas/20251121/linkml/modules/classes/IIPImageServer.yaml @@ -18,282 +18,318 @@ imports: - ../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. - - **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/ + 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. + 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. + 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. + description: 'Version of the image server software. + Example: "1.1" + + ' range: string supported_protocols: slot_uri: dcterms:conformsTo - description: | - Image delivery protocols supported. + 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). + 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). + 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. + 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. + 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. + 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. + 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. + 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. + 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. + 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. + 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. + 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. + 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. + 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. + 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. + 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. + 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. + 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. + 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. + 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. + 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. + description: 'Primary protocol. Use supported_protocols for full list. + + ' specificity_annotation: range: SpecificityAnnotation inlined: true @@ -311,73 +347,3 @@ classes: 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. diff --git a/schemas/20251121/linkml/modules/classes/METSAPI.yaml b/schemas/20251121/linkml/modules/classes/METSAPI.yaml index dfb2cb2492..2dbd3278bf 100644 --- a/schemas/20251121/linkml/modules/classes/METSAPI.yaml +++ b/schemas/20251121/linkml/modules/classes/METSAPI.yaml @@ -19,229 +19,260 @@ imports: - ../slots/template_specificity - ./SpecificityAnnotation - ./TemplateSpecificityScores +- ../enums/METSIdentifierTypeEnum 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 + description: "METS (Metadata Encoding and Transmission Standard) document retrieval API.\n\n**Purpose:**\n\nModels endpoints\ + \ that provide access to METS documents describing\nthe structure and metadata of digital objects in heritage collections.\n\ + \nMETS is a Library of Congress standard widely used in digital preservation\nand repository systems.\n\n**METS Structure:**\n\ + \nA METS document contains:\n- **metsHdr**: Header with creation/modification metadata\n- **dmdSec**: Descriptive metadata\ + \ (Dublin Core, MODS, EAD, etc.)\n- **amdSec**: Administrative metadata (technical, rights, provenance)\n- **fileSec**:\ + \ File inventory with technical properties\n- **structMap**: Logical/physical structure of the object\n- **structLink**:\ + \ Links between structural divisions\n- **behaviorSec**: Executable behaviors\n\n**Example - Nationaal Archief METS\ + \ API:**\n\n```yaml\nmets_api:\n endpoint_name: \"Nationaal Archief METS API\"\n base_url: \"https://service.archief.nl/gaf/api/mets/v1/\"\ + \n url_pattern: \"{base_url}{uuid}\"\n mets_profile: NATIONAAL_ARCHIEF\n version: \"v1\"\n descriptive_metadata_schemas:\n\ + \ - Dublin Core\n - EAD\n rights_metadata_available: true\n structural_metadata_available: true\n file_inventory_included:\ + \ true\n example_url: \"https://service.archief.nl/gaf/api/mets/v1/12345678-1234-1234-1234-123456789012\"\n```\n\n\ + **Use Cases:**\n\n1. **Digital preservation**: Validate object integrity\n2. **Viewer integration**: Build multi-page\ + \ viewers from structural metadata\n3. **Migration**: Transfer objects between repository systems\n4. **Audit**: Track\ + \ provenance and rights\n\n**See Also:**\n\n- METS Standard: https://www.loc.gov/standards/mets/\n- METS Primer: https://www.loc.gov/standards/mets/METSPrimer.pdf\n" attributes: base_url: slot_uri: dcat:endpointURL - description: | - Base URL for METS document retrieval. + 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. + 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. + 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. + 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. + 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. + 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. + 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. + 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. + 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. + 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. + 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. + 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. + 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. + 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. + 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. + 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_format: - description: | - METS documents are always XML. + description: 'METS documents are always XML. + + ' ifabsent: string(application/xml) specificity_annotation: range: SpecificityAnnotation @@ -259,53 +290,3 @@ classes: 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") diff --git a/schemas/20251121/linkml/modules/classes/OAIPMHEndpoint.yaml b/schemas/20251121/linkml/modules/classes/OAIPMHEndpoint.yaml index a0e6e69736..d2f3869fbb 100644 --- a/schemas/20251121/linkml/modules/classes/OAIPMHEndpoint.yaml +++ b/schemas/20251121/linkml/modules/classes/OAIPMHEndpoint.yaml @@ -18,250 +18,279 @@ imports: - ../slots/template_specificity - ./SpecificityAnnotation - ./TemplateSpecificityScores +- ../enums/OAIDeletedRecordPolicyEnum +- ../enums/OAIGranularityEnum classes: OAIPMHEndpoint: is_a: DataServiceEndpoint class_uri: hc:OAIPMHEndpoint - description: | - OAI-PMH (Open Archives Initiative Protocol for Metadata Harvesting) endpoint. - - **Purpose:** - - Models OAI-PMH endpoints for automated metadata harvesting from heritage repositories. - OAI-PMH is the dominant protocol for metadata aggregation in the GLAM sector. - - **Protocol Overview:** - - OAI-PMH defines six verbs: - 1. **Identify** - Repository information - 2. **ListMetadataFormats** - Available metadata formats - 3. **ListSets** - Collection/set hierarchy - 4. **ListIdentifiers** - Record identifiers - 5. **ListRecords** - Full records with metadata - 6. **GetRecord** - Single record by identifier - - **Example - Nationaal Archief OAI-PMH:** - - ```yaml - oai_pmh_endpoint: - endpoint_name: "Nationaal Archief OAI-PMH" - base_url: "https://www.nationaalarchief.nl/onderzoeken/oai-pmh" - protocol_version: "2.0" - repository_name: "Nationaal Archief" - admin_email: "helpdesk@nationaalarchief.nl" - earliest_datestamp: "2010-01-01" - deleted_record_policy: NO - granularity: YYYY_MM_DD - metadata_prefixes: - - oai_dc - - ese - - edm - sets: - - name: "Fotografische documenten" - spec: "foto" - - name: "Kaarten en tekeningen" - spec: "kaarten" - ``` - - **Harvesting Workflow:** - - 1. Call Identify to get repository info - 2. Call ListMetadataFormats to discover available formats - 3. Call ListSets to understand collection structure - 4. Call ListRecords with resumptionToken for incremental harvesting - - **See Also:** - - - OAI-PMH Specification: http://www.openarchives.org/OAI/openarchivesprotocol.html - - Europeana Harvesting: https://pro.europeana.eu/page/harvesting-and-downloads + description: "OAI-PMH (Open Archives Initiative Protocol for Metadata Harvesting) endpoint.\n\n**Purpose:**\n\nModels\ + \ OAI-PMH endpoints for automated metadata harvesting from heritage repositories.\nOAI-PMH is the dominant protocol\ + \ for metadata aggregation in the GLAM sector.\n\n**Protocol Overview:**\n\nOAI-PMH defines six verbs:\n1. **Identify**\ + \ - Repository information\n2. **ListMetadataFormats** - Available metadata formats\n3. **ListSets** - Collection/set\ + \ hierarchy\n4. **ListIdentifiers** - Record identifiers\n5. **ListRecords** - Full records with metadata\n6. **GetRecord**\ + \ - Single record by identifier\n\n**Example - Nationaal Archief OAI-PMH:**\n\n```yaml\noai_pmh_endpoint:\n endpoint_name:\ + \ \"Nationaal Archief OAI-PMH\"\n base_url: \"https://www.nationaalarchief.nl/onderzoeken/oai-pmh\"\n protocol_version:\ + \ \"2.0\"\n repository_name: \"Nationaal Archief\"\n admin_email: \"helpdesk@nationaalarchief.nl\"\n earliest_datestamp:\ + \ \"2010-01-01\"\n deleted_record_policy: NO\n granularity: YYYY_MM_DD\n metadata_prefixes:\n - oai_dc\n -\ + \ ese\n - edm\n sets:\n - name: \"Fotografische documenten\"\n spec: \"foto\"\n - name: \"Kaarten en\ + \ tekeningen\"\n spec: \"kaarten\"\n```\n\n**Harvesting Workflow:**\n\n1. Call Identify to get repository info\n\ + 2. Call ListMetadataFormats to discover available formats\n3. Call ListSets to understand collection structure\n4. Call\ + \ ListRecords with resumptionToken for incremental harvesting\n\n**See Also:**\n\n- OAI-PMH Specification: http://www.openarchives.org/OAI/openarchivesprotocol.html\n\ + - Europeana Harvesting: https://pro.europeana.eu/page/harvesting-and-downloads\n" attributes: base_url: slot_uri: dcat:endpointURL - description: "Base URL for OAI-PMH requests.\n\nAll OAI-PMH verbs are appended\ - \ as query parameters to this URL.\n\nExample: \n- Base URL: \"https://www.nationaalarchief.nl/onderzoeken/oai-pmh\"\ - \n- Identify request: \"https://www.nationaalarchief.nl/onderzoeken/oai-pmh?verb=Identify\"\ + description: "Base URL for OAI-PMH requests.\n\nAll OAI-PMH verbs are appended as query parameters to this URL.\n\n\ + Example: \n- Base URL: \"https://www.nationaalarchief.nl/onderzoeken/oai-pmh\"\n- Identify request: \"https://www.nationaalarchief.nl/onderzoeken/oai-pmh?verb=Identify\"\ \n" range: uri required: true protocol_version: slot_uri: schema:version - description: | - OAI-PMH protocol version supported. + description: 'OAI-PMH protocol version supported. + Current standard is version 2.0 (since 2002). + Earlier version 1.x is deprecated but may exist in legacy systems. + Values: + - "2.0" (current standard) + - "1.1" (legacy) + - "1.0" (legacy) + + ' range: string pattern: ^[12]\.[0-9]+$ repository_name: slot_uri: schema:name - description: | - Human-readable name of the repository. + description: 'Human-readable name of the repository. + From OAI-PMH Identify response: + Example: "Nationaal Archief" + + ' range: string admin_email: slot_uri: schema:email - description: | - Email address of repository administrator. + description: 'Email address of repository administrator. + From OAI-PMH Identify response: + May be multiple emails. + Example: "helpdesk@nationaalarchief.nl" + + ' range: string multivalued: true earliest_datestamp: slot_uri: dcterms:temporal - description: | - Earliest datestamp available in the repository. + description: 'Earliest datestamp available in the repository. + From OAI-PMH Identify response: + Records with dates before this are not available. + Format: YYYY-MM-DD or YYYY-MM-DDThh:mm:ssZ (depending on granularity) + Example: "2010-01-01" + + ' range: string deleted_record_policy: slot_uri: schema:additionalProperty - description: | - Policy for reporting deleted records. + description: 'Policy for reporting deleted records. + From OAI-PMH Identify response: + Values: + - NO: Repository does not maintain deleted records + - PERSISTENT: Deleted records are kept with "deleted" status + - TRANSIENT: Deleted records are kept for some time + + ' range: OAIDeletedRecordPolicyEnum granularity: slot_uri: dcterms:accrualPeriodicity - description: | - Datestamp granularity supported by the repository. + description: 'Datestamp granularity supported by the repository. + From OAI-PMH Identify response: + Values: + - YYYY_MM_DD: Day-level precision (YYYY-MM-DD) + - YYYY_MM_DD_THH_MM_SS_Z: Second-level precision (YYYY-MM-DDThh:mm:ssZ) + Determines format for `from` and `until` parameters in selective harvesting. + + ' range: OAIGranularityEnum metadata_prefixes: slot_uri: dcterms:format - description: | - Metadata formats (prefixes) supported by this repository. + description: 'Metadata formats (prefixes) supported by this repository. + From OAI-PMH ListMetadataFormats response. + Common prefixes: + - **oai_dc**: Dublin Core (required by OAI-PMH specification) + - **ese**: Europeana Semantic Elements + - **edm**: Europeana Data Model + - **mods**: MODS (Metadata Object Description Schema) + - **marc21**: MARC 21 + - **ead**: Encoded Archival Description + - **lido**: LIDO (museum objects) + - **dc**: Dublin Core (variant) + - **qdc**: Qualified Dublin Core + Example: ["oai_dc", "ese", "edm"] + + ' range: string multivalued: true required: true compression: slot_uri: schema:encodingFormat - description: | - Compression methods supported. + description: 'Compression methods supported. + From OAI-PMH Identify response: + Examples: ["gzip", "deflate"] + + ' range: string multivalued: true sets: slot_uri: dcat:theme - description: "Sets (collections) available for selective harvesting.\n\nFrom\ - \ OAI-PMH ListSets response.\n\nStructured as list of set specifications\ - \ with names.\n\nExample:\n```yaml\nsets:\n - spec: \"foto\"\n name:\ - \ \"Fotografische documenten\"\n - spec: \"kaarten\" \n name: \"Kaarten\ - \ en tekeningen\"\n```\n" + description: "Sets (collections) available for selective harvesting.\n\nFrom OAI-PMH ListSets response.\n\nStructured\ + \ as list of set specifications with names.\n\nExample:\n```yaml\nsets:\n - spec: \"foto\"\n name: \"Fotografische\ + \ documenten\"\n - spec: \"kaarten\" \n name: \"Kaarten en tekeningen\"\n```\n" range: OAIPMHSet multivalued: true inlined_as_list: true sample_identifier: slot_uri: dcterms:identifier - description: | - Example identifier format used by this repository. + description: 'Example identifier format used by this repository. + From OAI-PMH Identify response: (optional in spec) + Helps understand the identifier scheme. + Example: "oai:nationaalarchief.nl:2.04.87.01" + + ' range: string endpoint_description: slot_uri: dcterms:description - description: | - Repository description from OAI-PMH Identify response. + description: 'Repository description from OAI-PMH Identify response. + May contain structured XML (oai-identifier, eprints, friends, etc.) + or free-text description. + + ' range: string supports_resumption_token: slot_uri: schema:additionalProperty - description: | - Whether the repository supports resumption tokens for large result sets. + description: 'Whether the repository supports resumption tokens for large result sets. + Required by OAI-PMH spec for ListRecords/ListIdentifiers/ListSets. + Most compliant repositories support this. + + ' range: boolean batch_size: slot_uri: schema:maxValue - description: | - Typical number of records per response (before resumption token). + description: 'Typical number of records per response (before resumption token). + Not part of OAI-PMH spec but useful for harvesting optimization. + Example: 100 + + ' range: integer total_records: slot_uri: schema:numberOfItems - description: | - Total number of records in the repository (approximate). + description: 'Total number of records in the repository (approximate). + From completeListSize attribute in OAI-PMH response (optional). + Example: 1500000 + + ' range: integer last_harvested: slot_uri: schema:dateModified - description: | - Date when this endpoint was last successfully harvested. + description: 'Date when this endpoint was last successfully harvested. + Useful for tracking incremental harvesting. + ISO 8601 format. + Example: "2025-12-01T10:30:00Z" + + ' range: datetime slot_usage: protocol: - description: Protocol is always OAI-PMH for this endpoint type. Value should - be OAI_PMH. + description: Protocol is always OAI-PMH for this endpoint type. Value should be OAI_PMH. response_format: - description: | - For OAI-PMH, always ["application/xml"]. + description: 'For OAI-PMH, always ["application/xml"]. + OAI-PMH responses are always XML. + + ' ifabsent: string(application/xml) specificity_annotation: range: SpecificityAnnotation @@ -281,52 +310,67 @@ classes: - template_specificity OAIPMHSet: class_uri: hc:OAIPMHSet - description: | - Represents an OAI-PMH Set (collection) available for selective harvesting. + description: 'Represents an OAI-PMH Set (collection) available for selective harvesting. + Sets provide hierarchical organization of records, allowing harvesters + to request records from specific collections. + Set hierarchies use colon separator: "category:subcategory:item" + + ' attributes: spec: slot_uri: dcterms:identifier - description: | - Set specification (setSpec). + description: 'Set specification (setSpec). + Machine-readable identifier used in OAI-PMH requests. + Hierarchy indicated by colons (e.g., "photo:portraits:19th-century"). + Example: "foto" + + ' range: string required: true name: slot_uri: schema:name - description: | - Human-readable set name (setName). + description: 'Human-readable set name (setName). + Example: "Fotografische documenten" + + ' range: string required: true set_description: slot_uri: dcterms:description - description: | - Optional description of the set contents. + description: 'Optional description of the set contents. + + ' range: string parent_spec: slot_uri: schema:isPartOf - description: | - Parent set specification for hierarchical sets. + description: 'Parent set specification for hierarchical sets. + If spec is "photo:portraits", parent_spec would be "photo". + + ' range: string record_count: slot_uri: schema:numberOfItems - description: | - Approximate number of records in this set. + description: 'Approximate number of records in this set. + Not part of OAI-PMH spec but useful if available. + + ' range: integer slots: - specificity_annotation @@ -338,53 +382,3 @@ classes: template_specificity: range: TemplateSpecificityScores inlined: true -enums: - OAIDeletedRecordPolicyEnum: - description: | - OAI-PMH deleted record support policy. - - Determines how the repository handles records that have been deleted. - permissible_values: - false: - description: | - Repository does not maintain information about deletions. - - No "deleted" status will ever be returned. - Harvesters cannot detect deleted records. - TRANSIENT: - description: | - Repository maintains deleted records for an unspecified period. - - Harvesters may see "deleted" status, but it's not guaranteed - to persist indefinitely. - PERSISTENT: - description: | - Repository persistently maintains deleted records. - - Once a record is assigned "deleted" status, it remains - queryable with that status. - - Recommended for reliable incremental harvesting. - OAIGranularityEnum: - description: | - OAI-PMH datestamp granularity. - - Determines the precision of date/time values used in - selective harvesting (from/until parameters). - permissible_values: - YYYY_MM_DD: - description: | - Day-level granularity. - - Format: YYYY-MM-DD - - Example: "2025-12-14" - YYYY_MM_DD_THH_MM_SS_Z: - description: | - Second-level granularity. - - Format: YYYY-MM-DDThh:mm:ssZ - - Example: "2025-12-14T10:30:00Z" - - Note: Must use UTC (Z suffix). diff --git a/schemas/20251121/linkml/modules/classes/OAIPMHSet.yaml b/schemas/20251121/linkml/modules/classes/OAIPMHSet.yaml deleted file mode 100644 index 34fd21375b..0000000000 --- a/schemas/20251121/linkml/modules/classes/OAIPMHSet.yaml +++ /dev/null @@ -1,76 +0,0 @@ -id: https://nde.nl/ontology/hc/class/OAIPMHSet -name: oai_pmh_set -title: OAIPMHSet Class -prefixes: - linkml: https://w3id.org/linkml/ - hc: https://nde.nl/ontology/hc/ - dcterms: http://purl.org/dc/terms/ - schema: http://schema.org/ -imports: - - linkml:types - - ../slots/specificity_annotation - - ./SpecificityAnnotation - - ../slots/template_specificity - - ./TemplateSpecificityScores -default_prefix: hc - -classes: - OAIPMHSet: - class_uri: hc:OAIPMHSet - description: | - Represents an OAI-PMH Set (collection) available for selective harvesting. - - Sets provide hierarchical organization of records, allowing harvesters - to request records from specific collections. - - Set hierarchies use colon separator: "category:subcategory:item" - attributes: - spec: - slot_uri: dcterms:identifier - description: | - Set specification (setSpec). - - Machine-readable identifier used in OAI-PMH requests. - - Hierarchy indicated by colons (e.g., "photo:portraits:19th-century"). - - Example: "foto" - range: string - required: true - name: - slot_uri: schema:name - description: | - Human-readable set name (setName). - - Example: "Fotografische documenten" - range: string - required: true - set_description: - slot_uri: dcterms:description - description: | - Optional description of the set contents. - range: string - parent_spec: - slot_uri: schema:isPartOf - description: | - Parent set specification for hierarchical sets. - - If spec is "photo:portraits", parent_spec would be "photo". - range: string - record_count: - slot_uri: schema:numberOfItems - description: | - Approximate number of records in this set. - - Not part of OAI-PMH spec but useful if available. - range: integer - slots: - - specificity_annotation - - template_specificity - slot_usage: - specificity_annotation: - range: SpecificityAnnotation - inlined: true - template_specificity: - range: TemplateSpecificityScores - inlined: true diff --git a/schemas/20251121/linkml/modules/classes/PersonWebClaim.yaml b/schemas/20251121/linkml/modules/classes/PersonWebClaim.yaml index 75f8416cf1..290f7c9ae2 100644 --- a/schemas/20251121/linkml/modules/classes/PersonWebClaim.yaml +++ b/schemas/20251121/linkml/modules/classes/PersonWebClaim.yaml @@ -25,128 +25,9 @@ imports: - ../slots/template_specificity - ./SpecificityAnnotation - ./TemplateSpecificityScores +- ../enums/PersonClaimTypeEnum +- ../enums/RetrievalAgentEnum default_prefix: hc -enums: - PersonClaimTypeEnum: - description: 'Types of claims that can be extracted about persons from web pages. - - Each claim type has expected source locations in institutional pages. - - ' - permissible_values: - full_name: - description: Full name of the person - comments: - - 'Expected in: staff directory, about page, h2/h3 headings' - given_name: - description: First/given name only - comments: - - May be parsed from full_name - family_name: - description: Family/surname only - comments: - - May be parsed from full_name - role_title: - description: Job title or role within organization - comments: - - 'Expected in: staff directory, org chart, biography section' - department: - description: Department or division name - comments: - - 'Expected in: staff directory, org chart' - email: - description: Professional email address - comments: - - 'Expected in: staff directory, contact section' - - Only include if publicly listed - phone: - description: Professional phone number - comments: - - 'Expected in: staff directory, contact section' - - Only include if publicly listed - biography: - description: Professional biography text - comments: - - 'Expected in: staff page, about section' - specialization: - description: Area of expertise or specialization - comments: - - 'Expected in: biography, staff profile, research interests' - education: - description: Educational background or degrees - comments: - - 'Expected in: biography, CV section' - - 'Example: ''PhD Art History, University of Amsterdam''' - start_date: - description: Date when person started current role - comments: - - 'Expected in: biography, news announcements' - - 'Format: ISO 8601 date' - end_date: - description: Date when person ended role (if applicable) - comments: - - 'Expected in: historical records, farewell announcements' - photo_url: - description: URL to profile photo - comments: - - 'Expected in: staff directory, biography page' - - 'For LinkedIn: use CDN URL (media.licdn.com), not overlay page' - linkedin_url: - description: LinkedIn profile URL - comments: - - 'Expected in: staff page footer, social links' - orcid: - description: ORCID researcher identifier - comments: - - 'Expected in: research publications, CV section' - - 'Format: 0000-0000-0000-0000' - twitter_handle: - description: Twitter/X handle - comments: - - 'Expected in: social media section, footer' - previous_employer: - description: Previous organization where person worked - comments: - - 'Expected in: biography, LinkedIn experience' - publication: - description: Citation or link to publication - comments: - - 'Expected in: publications list, CV' - award: - description: Professional award or recognition - comments: - - 'Expected in: biography, awards section' - language_proficiency: - description: Language the person speaks - comments: - - 'Expected in: LinkedIn profile, CV' - RetrievalAgentEnum: - description: 'Tools/agents used to retrieve and extract person data. - - Must match the tool that was actually used for extraction. - - ' - permissible_values: - firecrawl: - description: FireCrawl MCP tools for web scraping - comments: - - Primary tool for institutional websites - playwright: - description: Playwright browser automation - comments: - - For JavaScript-heavy sites requiring browser rendering - exa_crawling_exa: - description: Exa AI crawling with direct URL - comments: - - Primary tool for LinkedIn profile extraction - exa_linkedin_search_exa: - description: Exa AI LinkedIn search - comments: - - For finding LinkedIn profiles when URL unknown - manual: - description: Manual inspection and copy - comments: - - Last resort - document why automated tools failed classes: PersonWebClaim: class_uri: prov:Entity diff --git a/schemas/20251121/linkml/modules/classes/ReadingRoomAnnex.yaml b/schemas/20251121/linkml/modules/classes/ReadingRoomAnnex.yaml index 8f53a44939..8485961cd1 100644 --- a/schemas/20251121/linkml/modules/classes/ReadingRoomAnnex.yaml +++ b/schemas/20251121/linkml/modules/classes/ReadingRoomAnnex.yaml @@ -26,6 +26,7 @@ imports: - ./SpecificityAnnotation - ./TemplateSpecificityScores - ../slots/has_annex_identifier +- ../enums/ReadingRoomAnnexReasonEnum prefixes: linkml: https://w3id.org/linkml/ hc: https://nde.nl/ontology/hc/ @@ -328,17 +329,3 @@ classes: is_temporary: true planned_closure_date: '2025-06-30' description: Temporary renovation annex -enums: - ReadingRoomAnnexReasonEnum: - description: Reasons for establishing a reading room annex - permissible_values: - CAPACITY_OVERFLOW: - description: Main reading room at capacity - SPECIALIZED_MATERIALS: - description: Serves specific material types (maps, newspapers, etc.) - GEOGRAPHIC_REACH: - description: Serves researchers in another geographic area - RENOVATION: - description: Temporary annex during main building renovation - PARTNERSHIP: - description: Shared space with another institution diff --git a/schemas/20251121/linkml/modules/classes/RegistrationAuthority.yaml b/schemas/20251121/linkml/modules/classes/RegistrationAuthority.yaml index a38dd0ab59..f68d0756e6 100644 --- a/schemas/20251121/linkml/modules/classes/RegistrationAuthority.yaml +++ b/schemas/20251121/linkml/modules/classes/RegistrationAuthority.yaml @@ -16,47 +16,24 @@ imports: - ../slots/template_specificity - ./SpecificityAnnotation - ./TemplateSpecificityScores +- ../enums/RegistrationAuthorityGovernanceEnum classes: RegistrationAuthority: class_uri: gleif_base:RegistrationAuthority - description: | - An organization that maintains the GLOBAL registry for an identifier standard. - - **Key Distinction from AllocationAgency:** - - - **RegistrationAuthority**: Single authoritative maintainer of the global registry - - Ensures uniqueness across all identifiers - - Publishes the authoritative dataset - - Defines governance and policies - - - **AllocationAgency**: Allocates identifiers locally within constraints set by RegistrationAuthority - - Multiple agencies per standard (one per country/domain) - - Reports allocations to RegistrationAuthority - - Follows policies set by RegistrationAuthority - - **Examples:** - - | Standard | Registration Authority | AllocationAgencies | - |----------|------------------------|---------------------| - | ISIL (ISO 15511) | Danish Agency for Culture and Palaces | KB (NL), BL (UK), LOC (US), etc. | - | ISNI (ISO 27729) | ISNI International Agency (WIPO) | DNB, BnF, OCLC, etc. | - | VIAF | OCLC | (contributing agencies, not allocators) | - | Wikidata | Wikimedia Foundation | (community-allocated) | - | ROR | ROR Steering Group | (community-allocated) | - - **ISIL Registration Authority History:** - - The ISIL global registry has been maintained by: - 1. **Before 2019**: Danish Agency for Library and Media (DALM) - 2. **2019-present**: Danish Agency for Culture and Palaces (Slots- og Kulturstyrelsen) - - The registry is published at: https://sigel.info/ - - **Ontology Alignment:** - - - gleif_base:RegistrationAuthority - GLEIF Legal Entity Identifier ontology - - org:FormalOrganization - W3C Organization Ontology - - schema:Organization - Schema.org + description: "An organization that maintains the GLOBAL registry for an identifier standard.\n\n**Key Distinction from\ + \ AllocationAgency:**\n\n- **RegistrationAuthority**: Single authoritative maintainer of the global registry\n - Ensures\ + \ uniqueness across all identifiers\n - Publishes the authoritative dataset\n - Defines governance and policies\n\n\ + - **AllocationAgency**: Allocates identifiers locally within constraints set by RegistrationAuthority\n - Multiple\ + \ agencies per standard (one per country/domain)\n - Reports allocations to RegistrationAuthority\n - Follows policies\ + \ set by RegistrationAuthority\n\n**Examples:**\n\n| Standard | Registration Authority | AllocationAgencies |\n|----------|------------------------|---------------------|\n\ + | ISIL (ISO 15511) | Danish Agency for Culture and Palaces | KB (NL), BL (UK), LOC (US), etc. |\n| ISNI (ISO 27729)\ + \ | ISNI International Agency (WIPO) | DNB, BnF, OCLC, etc. |\n| VIAF | OCLC | (contributing agencies, not allocators)\ + \ |\n| Wikidata | Wikimedia Foundation | (community-allocated) |\n| ROR | ROR Steering Group | (community-allocated)\ + \ |\n\n**ISIL Registration Authority History:**\n\nThe ISIL global registry has been maintained by:\n1. **Before 2019**:\ + \ Danish Agency for Library and Media (DALM)\n2. **2019-present**: Danish Agency for Culture and Palaces (Slots- og\ + \ Kulturstyrelsen)\n\nThe registry is published at: https://sigel.info/\n\n**Ontology Alignment:**\n\n- gleif_base:RegistrationAuthority\ + \ - GLEIF Legal Entity Identifier ontology\n- org:FormalOrganization - W3C Organization Ontology\n- schema:Organization\ + \ - Schema.org\n" exact_mappings: - gleif_base:RegistrationAuthority close_mappings: @@ -66,151 +43,212 @@ classes: id: identifier: true slot_uri: schema:identifier - description: | - Unique identifier for this registration authority. + description: 'Unique identifier for this registration authority. + Recommended format: lowercase abbreviation. + Examples: "dacp", "isni-ia", "oclc", "wikimedia" + + ' range: uriorcurie required: true name: slot_uri: schema:name - description: | - Official full name of the registration authority. + description: 'Official full name of the registration authority. + Examples: + - "Danish Agency for Culture and Palaces" + - "ISNI International Agency" + - "OCLC" + - "Wikimedia Foundation" + + ' range: string required: true name_local: slot_uri: schema:alternateName - description: | - Name in local language (if different from English name). + description: 'Name in local language (if different from English name). + Examples: + - "Slots- og Kulturstyrelsen" (Danish) + - "Online Computer Library Center" (full form of OCLC) + + ' range: string has_or_had_abbreviation: slot_uri: schema:alternateName - description: | - Common abbreviation. + description: 'Common abbreviation. + Examples: "DACP", "ISNI-IA", "OCLC", "WMF" + + ' range: string country: slot_uri: schema:location - description: | - Country where the registration authority is based (ISO 3166-1 alpha-2). + description: 'Country where the registration authority is based (ISO 3166-1 alpha-2). + Examples: + - "DK" (Danish Agency for Culture and Palaces) + - "CH" (WIPO/ISNI-IA in Geneva) + - "US" (OCLC, Wikimedia Foundation) + + ' range: Country required: true inlined: false registry_url: slot_uri: schema:url - description: | - URL to the official registry or lookup service. + description: 'URL to the official registry or lookup service. + Examples: + - ISIL: https://sigel.info/ + - ISNI: https://isni.org/ + - VIAF: https://viaf.org/ + - Wikidata: https://www.wikidata.org/ + + ' range: uri required: true api_url: slot_uri: schema:url - description: | - URL to the API or data service (if available). + description: 'URL to the API or data service (if available). + Examples: + - VIAF: https://viaf.org/viaf/search + - Wikidata: https://www.wikidata.org/w/api.php + - ISNI: https://isni.org/isni/ + + ' range: uri sparql_endpoint: slot_uri: schema:url - description: | - SPARQL endpoint URL (if available for Linked Data). + description: 'SPARQL endpoint URL (if available for Linked Data). + Examples: + - Wikidata: https://query.wikidata.org/sparql + - VIAF: (via OCLC Research) + + ' range: uri data_license: slot_uri: schema:license - description: | - License for data from this registry. + description: 'License for data from this registry. + Examples: + - VIAF: ODC-BY + - Wikidata: CC0 + - ISNI: varies + + ' range: uri governance_type: slot_uri: schema:additionalType - description: | - Type of governance for the registry. + description: 'Type of governance for the registry. + Values: + - GOVERNMENT: Government agency (DACP for ISIL) + - INTERGOVERNMENTAL: UN agency or similar (WIPO for ISNI) + - NONPROFIT: Non-profit organization (OCLC, Wikimedia) + - CONSORTIUM: Multi-stakeholder consortium (ROR) + + ' range: RegistrationAuthorityGovernanceEnum required: true established_year: slot_uri: schema:foundingDate - description: | - Year the registration authority was established or took over the registry. + description: 'Year the registration authority was established or took over the registry. + Examples: + - ISNI-IA: 2010 + - VIAF (OCLC): 2012 (transferred from LOC partnership) + + ' range: integer predecessor: slot_uri: schema:predecessorOrganization - description: | - Previous registration authority (if registry was transferred). + description: 'Previous registration authority (if registry was transferred). + Example: Danish Agency for Library and Media → Danish Agency for Culture and Palaces + + ' range: RegistrationAuthority inlined: false standards_maintained: slot_uri: schema:hasPart - description: | - Standards for which this authority maintains the global registry. + description: 'Standards for which this authority maintains the global registry. + Most authorities maintain a single standard, but some handle multiple. + Examples: + - OCLC: [VIAF, WorldCat, FAST] + - DACP: [ISIL] + + ' range: Standard multivalued: true inlined: false allocation_agencies: slot_uri: schema:hasOfferCatalog - description: | - Allocation agencies that report to this registration authority. + description: 'Allocation agencies that report to this registration authority. + For standards with distributed allocation (like ISIL), + this lists all national/domain agencies. + + ' range: AllocationAgency multivalued: true inlined: false website: slot_uri: schema:url - description: | - Official website of the organization (may differ from registry URL). + description: 'Official website of the organization (may differ from registry URL). + + ' range: uri authority_description: slot_uri: schema:description @@ -218,13 +256,18 @@ classes: range: string wikidata_id: slot_uri: schema:sameAs - description: | - Wikidata Q-ID for this registration authority. + description: 'Wikidata Q-ID for this registration authority. + Examples: + - OCLC: Q190593 + - Wikimedia Foundation: Q180 + - Danish Agency for Culture and Palaces: Q12324270 + + ' range: string pattern: ^Q[0-9]+$ slots: @@ -237,44 +280,3 @@ classes: template_specificity: range: TemplateSpecificityScores inlined: true -enums: - RegistrationAuthorityGovernanceEnum: - description: Type of governance for a registration authority - permissible_values: - GOVERNMENT: - description: | - Government agency maintaining the registry. - - Examples: - - Danish Agency for Culture and Palaces (ISIL) - - Library of Congress (LCNAF) - - National Diet Library (NDL) - INTERGOVERNMENTAL: - description: | - Intergovernmental organization (UN agency, etc.). - - Examples: - - WIPO (ISNI International Agency) - - UNESCO - NONPROFIT: - description: | - Non-profit organization. - - Examples: - - OCLC (VIAF) - - Wikimedia Foundation (Wikidata) - - Getty Research Institute (ULAN, AAT, TGN) - CONSORTIUM: - description: | - Multi-stakeholder consortium. - - Examples: - - ROR Steering Group - - ORCID - - Crossref/DataCite - COMMERCIAL: - description: | - Commercial organization operating a registry. - - Examples: - - Ringgold (organizational identifiers for publishing) diff --git a/schemas/20251121/linkml/modules/classes/SearchAPI.yaml b/schemas/20251121/linkml/modules/classes/SearchAPI.yaml index 2a16985e74..49d98cc0b5 100644 --- a/schemas/20251121/linkml/modules/classes/SearchAPI.yaml +++ b/schemas/20251121/linkml/modules/classes/SearchAPI.yaml @@ -19,239 +19,236 @@ imports: - ../slots/template_specificity - ./SpecificityAnnotation - ./TemplateSpecificityScores +- ../enums/PaginationMethodEnum +- ../enums/HTTPMethodEnum +- ../enums/SearchResponseFormatEnum classes: SearchAPI: is_a: DataServiceEndpoint class_uri: hc:SearchAPI - description: | - REST/JSON search API endpoint for heritage collection discovery. - - **Purpose:** - - Models search APIs that provide programmatic access to collection search - functionality. These APIs enable: - - Custom search interface development - - Integration with aggregation platforms - - Automated data discovery - - Faceted search and filtering - - **Common Patterns:** - - Heritage search APIs typically support: - - **Full-text search**: Query across all fields - - **Field-specific search**: Query specific metadata fields - - **Faceted search**: Filter by category, date, type, etc. - - **Pagination**: Navigate large result sets - - **Sorting**: Order results by relevance, date, etc. - - **Example - Nationaal Archief Search API:** - - ```yaml - search_api: - endpoint_name: "Nationaal Archief Search API" - endpoint_url: "https://www.nationaalarchief.nl/onderzoeken/api/zoeken" - protocol: REST - query_parameters: - - name: "q" - type: "string" - description: "Full-text search query" - - name: "from" - type: "integer" - description: "Pagination offset" - - name: "size" - type: "integer" - description: "Results per page" - pagination_method: OFFSET_LIMIT - max_results_per_page: 100 - response_format: JSON - supports_facets: true - facet_fields: ["type", "periode", "archief"] - ``` - - **Response Structure:** - - Most heritage search APIs return JSON with: - - `total`: Total number of matching records - - `results`/`items`/`records`: Array of result objects - - `facets`: Aggregation counts for filtering - - `pagination`: Links or cursors for paging - - **See Also:** - - - OpenSearch: https://opensearch.org/ - - Hydra API vocabulary: https://www.hydra-cg.com/ + description: "REST/JSON search API endpoint for heritage collection discovery.\n\n**Purpose:**\n\nModels search APIs that\ + \ provide programmatic access to collection search\nfunctionality. These APIs enable:\n- Custom search interface development\n\ + - Integration with aggregation platforms\n- Automated data discovery\n- Faceted search and filtering\n\n**Common Patterns:**\n\ + \nHeritage search APIs typically support:\n- **Full-text search**: Query across all fields\n- **Field-specific search**:\ + \ Query specific metadata fields\n- **Faceted search**: Filter by category, date, type, etc.\n- **Pagination**: Navigate\ + \ large result sets\n- **Sorting**: Order results by relevance, date, etc.\n\n**Example - Nationaal Archief Search API:**\n\ + \n```yaml\nsearch_api:\n endpoint_name: \"Nationaal Archief Search API\"\n endpoint_url: \"https://www.nationaalarchief.nl/onderzoeken/api/zoeken\"\ + \n protocol: REST\n query_parameters:\n - name: \"q\"\n type: \"string\"\n description: \"Full-text search\ + \ query\"\n - name: \"from\"\n type: \"integer\"\n description: \"Pagination offset\"\n - name: \"size\"\ + \n type: \"integer\"\n description: \"Results per page\"\n pagination_method: OFFSET_LIMIT\n max_results_per_page:\ + \ 100\n response_format: JSON\n supports_facets: true\n facet_fields: [\"type\", \"periode\", \"archief\"]\n```\n\ + \n**Response Structure:**\n\nMost heritage search APIs return JSON with:\n- `total`: Total number of matching records\n\ + - `results`/`items`/`records`: Array of result objects\n- `facets`: Aggregation counts for filtering\n- `pagination`:\ + \ Links or cursors for paging\n\n**See Also:**\n\n- OpenSearch: https://opensearch.org/\n- Hydra API vocabulary: https://www.hydra-cg.com/\n" attributes: search_url: slot_uri: dcat:endpointURL - description: | - Search endpoint URL. + description: 'Search endpoint URL. + The base URL for search requests. Query parameters are appended. + Example: "https://www.nationaalarchief.nl/onderzoeken/api/zoeken" + + ' range: uri required: true query_parameters: slot_uri: hydra:mapping - description: | - Query parameters supported by this search API. - - Documents the available search parameters, their types, and usage. - - Example: - ```yaml - query_parameters: - - name: "q" - type: "string" - required: true - description: "Full-text query" - - name: "type" - type: "string" - description: "Filter by record type" - ``` + description: "Query parameters supported by this search API.\n\nDocuments the available search parameters, their types,\ + \ and usage.\n\nExample:\n```yaml\nquery_parameters:\n - name: \"q\"\n type: \"string\"\n required: true\n\ + \ description: \"Full-text query\"\n - name: \"type\"\n type: \"string\"\n description: \"Filter by record\ + \ type\"\n```\n" range: SearchQueryParameter multivalued: true inlined_as_list: true http_method: slot_uri: hydra:method - description: | - HTTP method(s) supported for search requests. + description: 'HTTP method(s) supported for search requests. + Values: + - GET: Query parameters in URL (most common) + - POST: Query in request body (for complex queries) + - BOTH: Supports both methods + + ' range: HTTPMethodEnum pagination_method: slot_uri: hydra:pageIndex - description: | - Pagination method used by this API. + description: 'Pagination method used by this API. + Values: + - OFFSET_LIMIT: Uses offset/start and limit/size parameters + - PAGE_NUMBER: Uses page number and page size + - CURSOR: Uses cursor/token for stateful pagination + - LINK_HEADER: Uses HTTP Link headers (RFC 5988) + - NONE: No pagination (returns all results) + + ' range: PaginationMethodEnum max_results_per_page: slot_uri: schema:maxValue - description: | - Maximum number of results per page. + description: 'Maximum number of results per page. + The API may return fewer results, but never more. + Example: 100 + + ' range: integer default_results_per_page: slot_uri: schema:defaultValue - description: | - Default number of results returned per page if not specified. + description: 'Default number of results returned per page if not specified. + Example: 20 + + ' range: integer total_records: slot_uri: schema:numberOfItems - description: | - Total number of searchable records (approximate). + description: 'Total number of searchable records (approximate). + Example: 15000000 + + ' range: integer response_format: slot_uri: dcterms:format - description: | - Primary response format. + description: 'Primary response format. + Most modern APIs use JSON. + Values: JSON, XML, JSON_LD, HTML, CSV + + ' range: SearchResponseFormatEnum supports_facets: slot_uri: schema:additionalProperty - description: | - Whether the API supports faceted search. + description: 'Whether the API supports faceted search. + Faceted search allows filtering by categories (type, date, location, etc.) + with counts for each facet value. + + ' range: boolean facet_fields: slot_uri: hydra:variable - description: | - Fields available for faceted filtering. + description: 'Fields available for faceted filtering. + Example: ["type", "periode", "archief", "toegang"] + + ' range: string multivalued: true supports_sorting: slot_uri: schema:additionalProperty - description: | - Whether the API supports custom sorting of results. + description: 'Whether the API supports custom sorting of results. + + ' range: boolean sort_fields: slot_uri: hydra:variable - description: | - Fields available for sorting. + description: 'Fields available for sorting. + Example: ["relevance", "date", "title", "created"] + + ' range: string multivalued: true supports_boolean_operators: slot_uri: schema:additionalProperty - description: | - Whether the API supports boolean operators (AND, OR, NOT) in queries. + description: 'Whether the API supports boolean operators (AND, OR, NOT) in queries. + + ' range: boolean supports_phrase_search: slot_uri: schema:additionalProperty - description: | - Whether the API supports phrase search (exact match using quotes). + description: 'Whether the API supports phrase search (exact match using quotes). + + ' range: boolean supports_wildcards: slot_uri: schema:additionalProperty - description: | - Whether the API supports wildcard characters (* or ?). + description: 'Whether the API supports wildcard characters (* or ?). + + ' range: boolean supports_field_search: slot_uri: schema:additionalProperty - description: | - Whether the API supports field-specific search (e.g., title:painting). + description: 'Whether the API supports field-specific search (e.g., title:painting). + + ' range: boolean date_filter_format: slot_uri: dcterms:temporal - description: | - Expected format for date filters. + description: 'Expected format for date filters. + Example: "YYYY-MM-DD", "ISO8601", "Unix timestamp" + + ' range: string result_schema_url: slot_uri: schema:encodingFormat - description: | - URL to JSON Schema or documentation describing the result format. + description: 'URL to JSON Schema or documentation describing the result format. + Example: "https://api.example.org/schema/search-result.json" + + ' range: uri opensearch_description_url: slot_uri: schema:potentialAction - description: | - URL to OpenSearch description document (if applicable). + description: 'URL to OpenSearch description document (if applicable). + Example: "https://example.org/opensearch.xml" + + ' range: uri example_query: slot_uri: schema:workExample - description: | - Example search query demonstrating API usage. + description: 'Example search query demonstrating API usage. + Example: "/api/zoeken?q=foto&type=image&size=10" + + ' range: string slot_usage: protocol: - description: | - Protocol for search APIs. + description: 'Protocol for search APIs. + Typically REST, but may be GRAPHQL or OPENSEARCH. + + ' response_format: - description: | - Response formats supported. + description: 'Response formats supported. + Common: ["application/json"] + + ' specificity_annotation: range: SpecificityAnnotation inlined: true @@ -270,60 +267,76 @@ classes: - template_specificity SearchQueryParameter: class_uri: hydra:IriTemplateMapping - description: | - Describes a query parameter supported by a search API. + description: 'Describes a query parameter supported by a search API. + + + Documents the parameter name, type, whether it''s required, - Documents the parameter name, type, whether it's required, and its purpose. + + ' attributes: name: slot_uri: hydra:variable - description: | - Parameter name as used in the query string. + description: 'Parameter name as used in the query string. + Example: "q", "type", "from", "size" + + ' range: string required: true type: slot_uri: hydra:property - description: | - Data type of the parameter value. + description: 'Data type of the parameter value. + Values: string, integer, boolean, date, array + + ' range: string required: slot_uri: hydra:required - description: | - Whether this parameter is required. + description: 'Whether this parameter is required. + + ' range: boolean parameter_description: slot_uri: dcterms:description - description: | - Human-readable description of the parameter. + description: 'Human-readable description of the parameter. + Example: "Full-text search query" + + ' range: string default_value: slot_uri: schema:defaultValue - description: | - Default value if not specified. + description: 'Default value if not specified. + Example: "10" for a size parameter + + ' range: string allowed_values: slot_uri: schema:valueReference - description: | - List of allowed values (for enumerated parameters). + description: 'List of allowed values (for enumerated parameters). + Example: ["image", "document", "audio", "video"] + + ' range: string multivalued: true example_value: slot_uri: schema:workExample - description: | - Example value for this parameter. + description: 'Example value for this parameter. + Example: "amsterdam museum" + + ' range: string slots: - specificity_annotation @@ -335,100 +348,3 @@ classes: template_specificity: range: TemplateSpecificityScores inlined: true -enums: - PaginationMethodEnum: - description: | - Methods for paginating large result sets. - permissible_values: - OFFSET_LIMIT: - description: | - Uses offset (or start/from) and limit (or size/count) parameters. - - Example: ?offset=100&limit=20 - - Pros: Simple, allows jumping to any page - Cons: Inconsistent results if data changes between requests - PAGE_NUMBER: - description: | - Uses page number and page size parameters. - - Example: ?page=5&per_page=20 - - Similar to OFFSET_LIMIT but uses page numbers. - CURSOR: - description: | - Uses opaque cursor/token for stateful pagination. - - Example: ?cursor=eyJsYXN0X2lkIjogMTIzfQ== - - Pros: Consistent results, efficient for large datasets - Cons: Cannot jump to arbitrary page - LINK_HEADER: - description: | - Uses HTTP Link headers for pagination (RFC 5988). - - Response includes: Link: ; rel="next", ; rel="prev" - - RESTful approach following HATEOAS principles. - SCROLL: - description: | - Uses scroll/scan API for deep pagination. - - Common in Elasticsearch-based APIs. - Maintains search context for consistent results. - NONE: - description: | - No pagination - returns all results at once. - - Only suitable for small result sets. - HTTPMethodEnum: - description: | - HTTP methods supported for API requests. - permissible_values: - GET: - description: | - HTTP GET method. - - Query parameters in URL. Most common for search APIs. - POST: - description: | - HTTP POST method. - - Query in request body. Used for complex queries. - BOTH: - description: | - Supports both GET and POST methods. - SearchResponseFormatEnum: - description: | - Response formats for search API results. - permissible_values: - JSON: - description: | - JSON (application/json). - - Most common format for modern APIs. - XML: - description: | - XML (application/xml or text/xml). - - Legacy format, still used in some heritage APIs. - JSON_LD: - description: | - JSON-LD (application/ld+json). - - JSON with linked data semantics. - HTML: - description: | - HTML (text/html). - - Human-readable results page (not ideal for API use). - CSV: - description: | - CSV (text/csv). - - Tabular export format. - ATOM: - description: | - Atom feed (application/atom+xml). - - Syndication format. diff --git a/schemas/20251121/linkml/modules/classes/SearchQueryParameter.yaml b/schemas/20251121/linkml/modules/classes/SearchQueryParameter.yaml deleted file mode 100644 index dea19bf024..0000000000 --- a/schemas/20251121/linkml/modules/classes/SearchQueryParameter.yaml +++ /dev/null @@ -1,85 +0,0 @@ -id: https://nde.nl/ontology/hc/class/SearchQueryParameter -name: search_query_parameter -title: Search Query Parameter Class -prefixes: - linkml: https://w3id.org/linkml/ - hc: https://nde.nl/ontology/hc/ - dcterms: http://purl.org/dc/terms/ - schema: http://schema.org/ - hydra: http://www.w3.org/ns/hydra/core# -imports: - - linkml:types - - ../slots/specificity_annotation - - ./SpecificityAnnotation - - ../slots/template_specificity - - ./TemplateSpecificityScores -default_prefix: hc - -classes: - SearchQueryParameter: - class_uri: hydra:IriTemplateMapping - description: | - Describes a query parameter supported by a search API. - - Documents the parameter name, type, whether it's required, - and its purpose. - attributes: - name: - slot_uri: hydra:variable - description: | - Parameter name as used in the query string. - - Example: "q", "type", "from", "size" - range: string - required: true - type: - slot_uri: hydra:property - description: | - Data type of the parameter value. - - Values: string, integer, boolean, date, array - range: string - required: - slot_uri: hydra:required - description: | - Whether this parameter is required. - range: boolean - parameter_description: - slot_uri: dcterms:description - description: | - Human-readable description of the parameter. - - Example: "Full-text search query" - range: string - default_value: - slot_uri: schema:defaultValue - description: | - Default value if not specified. - - Example: "10" for a size parameter - range: string - allowed_values: - slot_uri: schema:valueReference - description: | - List of allowed values (for enumerated parameters). - - Example: ["image", "document", "audio", "video"] - range: string - multivalued: true - example_value: - slot_uri: schema:workExample - description: | - Example value for this parameter. - - Example: "amsterdam museum" - range: string - slots: - - specificity_annotation - - template_specificity - slot_usage: - specificity_annotation: - range: SpecificityAnnotation - inlined: true - template_specificity: - range: TemplateSpecificityScores - inlined: true diff --git a/schemas/20251121/linkml/modules/classes/SocialMediaPlatformType.yaml b/schemas/20251121/linkml/modules/classes/SocialMediaPlatformType.yaml index 5dce9ef198..e528d96dfd 100644 --- a/schemas/20251121/linkml/modules/classes/SocialMediaPlatformType.yaml +++ b/schemas/20251121/linkml/modules/classes/SocialMediaPlatformType.yaml @@ -24,6 +24,7 @@ imports: - ../slots/template_specificity - ./SpecificityAnnotation - ./TemplateSpecificityScores +- ../enums/PlatformCategoryEnum classes: SocialMediaPlatformType: class_uri: skos:Concept @@ -109,27 +110,3 @@ classes: - http://xmlns.com/foaf/0.1/OnlineAccount - https://schema.org/ContactPoint - https://www.wikidata.org/wiki/Q12538 -enums: - PlatformCategoryEnum: - description: High-level categories for social media platform classification - permissible_values: - GENERAL_SOCIAL: - description: General-purpose social networking platforms (Facebook, VKontakte) - MICROBLOGGING: - description: Short-form text and discussion platforms (X/Twitter, Bluesky, Mastodon) - IMAGE_FOCUSED: - description: Photo and image sharing platforms (Instagram, Pinterest, Flickr) - VIDEO_FOCUSED: - description: Video hosting and streaming platforms (YouTube, TikTok, Vimeo) - PROFESSIONAL: - description: Business and professional networking platforms (LinkedIn) - MESSAGING: - description: Messaging and communication platforms (WhatsApp, Telegram, WeChat) - AUDIO: - description: Audio, podcast, and music platforms (Spotify, SoundCloud) - PUBLISHING: - description: Long-form content and newsletter platforms (Medium, Substack) - MEMBERSHIP: - description: Patronage and membership platforms (Patreon) - OTHER: - description: Emerging or uncategorized platforms diff --git a/schemas/20251121/linkml/modules/classes/SocialMediaPostType.yaml b/schemas/20251121/linkml/modules/classes/SocialMediaPostType.yaml index bdff8422e1..8b79ee3d33 100644 --- a/schemas/20251121/linkml/modules/classes/SocialMediaPostType.yaml +++ b/schemas/20251121/linkml/modules/classes/SocialMediaPostType.yaml @@ -27,6 +27,7 @@ imports: - ../slots/template_specificity - ./SpecificityAnnotation - ./TemplateSpecificityScores +- ../enums/PostTypeCategoryEnum classes: SocialMediaPostType: class_uri: skos:Concept @@ -136,103 +137,3 @@ classes: - https://www.w3.org/ns/activitystreams#Object - https://schema.org/MediaObject - https://www.w3.org/TR/activitystreams-vocabulary/ -enums: - PostTypeCategoryEnum: - description: High-level categories for social media post type classification - permissible_values: - VIDEO: - description: 'Standard video content with no strict duration limit. - - Platforms: YouTube, Vimeo, Facebook Video, LinkedIn Video - - Activity Streams: as:Video - - Schema.org: schema:VideoObject - - ' - SHORT_VIDEO: - description: 'Short-form video content, typically under 60-90 seconds. - - Platforms: TikTok, Instagram Reels, YouTube Shorts - - Optimized for mobile viewing and algorithmic discovery. - - ' - IMAGE: - description: 'Static image content including photos and graphics. - - Platforms: Instagram, Pinterest, Flickr, Facebook, X/Twitter - - Activity Streams: as:Image - - Schema.org: schema:ImageObject - - ' - TEXT: - description: 'Text-based posts, typically short-form. - - Platforms: X/Twitter, Mastodon, Bluesky, LinkedIn - - Activity Streams: as:Note - - May include attached media as supplements. - - ' - STORY: - description: 'Ephemeral content that auto-deletes (typically 24 hours). - - Platforms: Instagram Stories, Facebook Stories, LinkedIn Stories - - Often vertical format, designed for mobile. - - ' - LIVE_STREAM: - description: 'Real-time video broadcasting. - - Platforms: YouTube Live, Instagram Live, Twitch, LinkedIn Live - - May be archived as standard video after broadcast. - - ' - AUDIO: - description: 'Audio-only content including podcasts and music. - - Platforms: Spotify, Apple Podcasts, SoundCloud - - Activity Streams: as:Audio - - Schema.org: schema:AudioObject - - ' - ARTICLE: - description: 'Long-form written content. - - Platforms: Medium, Substack, LinkedIn Articles, blogs - - Activity Streams: as:Article - - Schema.org: schema:Article - - ' - THREAD: - description: 'Multi-post sequences forming a narrative. - - Platforms: X/Twitter threads, Mastodon threads - - Connected series of posts, often numbered. - - ' - CAROUSEL: - description: 'Multi-media post with multiple images or videos. - - Platforms: Instagram carousels, LinkedIn carousels - - Swipeable content collections, up to 10-20 items. - - ' - OTHER: - description: 'Emerging or uncategorized content formats. - - Use for new platform features not yet classified. - - ' diff --git a/schemas/20251121/linkml/modules/classes/StaffRole.yaml b/schemas/20251121/linkml/modules/classes/StaffRole.yaml index 9798778dbf..906ed9a110 100644 --- a/schemas/20251121/linkml/modules/classes/StaffRole.yaml +++ b/schemas/20251121/linkml/modules/classes/StaffRole.yaml @@ -31,6 +31,7 @@ imports: - ../slots/typical_responsibility - ./SpecificityAnnotation - ./TemplateSpecificityScores +- ../enums/RoleCategoryEnum classes: StaffRole: class_uri: org:Role @@ -251,33 +252,3 @@ classes: - https://www.w3.org/TR/vocab-org/#class-role - https://schema.org/Role - https://github.com/FICLIT/PiCo -enums: - RoleCategoryEnum: - description: High-level categories for staff role classification - permissible_values: - CURATORIAL: - description: Roles focused on collections, exhibitions, and scholarly interpretation - CONSERVATION: - description: Roles focused on preservation and restoration of heritage objects - ARCHIVAL: - description: Roles focused on archival management, appraisal, and description - LIBRARY: - description: Roles focused on library services, cataloging, and reference - DIGITAL: - description: Roles focused on digitization, digital preservation, data management - EDUCATION: - description: Roles focused on public education, outreach, and engagement - GOVERNANCE: - description: Board and committee roles in associations, cooperatives, and societies - LEADERSHIP: - description: Executive and management roles - RESEARCH: - description: Roles focused on scholarly research and fellowship programs - TECHNICAL: - description: Roles focused on IT, facilities, and technical operations - SUPPORT: - description: Roles supporting daily operations (security, cleaning, reception) - CREATIVE: - description: Roles for creative practitioners (artists, designers) - EXTERNAL: - description: External roles (consultants, volunteers, legal advisors) diff --git a/schemas/20251121/linkml/modules/classes/Standard.yaml b/schemas/20251121/linkml/modules/classes/Standard.yaml index 87df41382e..2043f62263 100644 --- a/schemas/20251121/linkml/modules/classes/Standard.yaml +++ b/schemas/20251121/linkml/modules/classes/Standard.yaml @@ -20,43 +20,24 @@ imports: - ../slots/template_specificity - ./SpecificityAnnotation - ./TemplateSpecificityScores +- ../enums/StandardTypeEnum +- ../enums/GovernanceModelEnum +- ../enums/StandardScopeTypeEnum +- ../enums/IdentifierDomainEnum classes: Standard: class_uri: skos:ConceptScheme - description: | - A standard that defines an identifier system for heritage institutions or related entities. - - **Key Concepts:** - - 1. **Standard**: The specification itself (ISO 15511, ISO 27729) - 2. **RegistrationAuthority**: Global registry maintainer (OCLC for ISIL, WIPO for ISNI) - 3. **AllocationAgency**: Local allocator by country/domain (National Library of NL for ISIL) - 4. **IdentifierFormat**: Format variants (ISNI with or without spaces) - - **Examples:** - - - **ISIL** (ISO 15511): - - defined_by: ISO - - registration_authority: Danish Agency for Culture and Palaces - - geographic_scope: Global (160+ countries) - - formats: "XX-YYYY" (country prefix + local code) - - - **ISNI** (ISO 27729): - - defined_by: ISO - - registration_authority: WIPO (ISNI International Agency) - - geographic_scope: Global - - formats: "0000 0000 0000 0000" or "0000000000000000" - - - **Wikidata Q-ID**: - - defined_by: Wikimedia Foundation (not ISO) - - registration_authority: Wikimedia Foundation - - formats: "Q" + digits - - **Ontology Alignment:** - - - skos:ConceptScheme - SKOS concept scheme (identifier systems as schemes) - - schema:DefinedTermSet - Schema.org defined term set - - dcterms:Standard - Dublin Core standard reference + description: "A standard that defines an identifier system for heritage institutions or related entities.\n\n**Key Concepts:**\n\ + \n1. **Standard**: The specification itself (ISO 15511, ISO 27729)\n2. **RegistrationAuthority**: Global registry maintainer\ + \ (OCLC for ISIL, WIPO for ISNI)\n3. **AllocationAgency**: Local allocator by country/domain (National Library of NL\ + \ for ISIL)\n4. **IdentifierFormat**: Format variants (ISNI with or without spaces)\n\n**Examples:**\n\n- **ISIL** (ISO\ + \ 15511):\n - defined_by: ISO\n - registration_authority: Danish Agency for Culture and Palaces\n - geographic_scope:\ + \ Global (160+ countries)\n - formats: \"XX-YYYY\" (country prefix + local code)\n\n- **ISNI** (ISO 27729):\n - defined_by:\ + \ ISO\n - registration_authority: WIPO (ISNI International Agency)\n - geographic_scope: Global\n - formats: \"0000\ + \ 0000 0000 0000\" or \"0000000000000000\"\n\n- **Wikidata Q-ID**:\n - defined_by: Wikimedia Foundation (not ISO)\n\ + \ - registration_authority: Wikimedia Foundation\n - formats: \"Q\" + digits\n\n**Ontology Alignment:**\n\n- skos:ConceptScheme\ + \ - SKOS concept scheme (identifier systems as schemes)\n- schema:DefinedTermSet - Schema.org defined term set\n- dcterms:Standard\ + \ - Dublin Core standard reference\n" exact_mappings: - skos:ConceptScheme close_mappings: @@ -66,174 +47,252 @@ classes: id: identifier: true slot_uri: schema:identifier - description: | - Unique identifier for this standard. + description: 'Unique identifier for this standard. + Recommended format: lowercase short name. + Examples: "isil", "isni", "viaf", "wikidata", "ror", "orcid" + + ' range: uriorcurie required: true name: slot_uri: schema:name - description: | - Full name of the standard. + description: 'Full name of the standard. + Examples: + - "International Standard Identifier for Libraries and Related Organizations" + - "International Standard Name Identifier" + - "Virtual International Authority File" + + ' range: string required: true has_or_had_abbreviation: slot_uri: schema:alternateName - description: | - Common abbreviation/acronym. + description: 'Common abbreviation/acronym. + Examples: "ISIL", "ISNI", "VIAF", "ROR", "ORCID" + + ' range: string required: true iso_standard_number: slot_uri: dcterms:identifier - description: | - ISO standard number if applicable. + description: 'ISO standard number if applicable. + Examples: + - "ISO 15511" (ISIL) + - "ISO 27729" (ISNI) + - "ISO 2108" (ISBN) + - null (Wikidata - not an ISO standard) + + ' range: string defined_by: slot_uri: dcterms:creator - description: | - Standards organization that defines this standard. + description: 'Standards organization that defines this standard. + Examples: + - ISIL → ISO + - VIAF → OCLC (in collaboration with national libraries) + - Wikidata → Wikimedia Foundation + + ' range: StandardsOrganization required: true inlined: false registration_authority: slot_uri: schema:maintainer - description: | - Organization that maintains the GLOBAL registry for this standard. + description: 'Organization that maintains the GLOBAL registry for this standard. + This is different from AllocationAgency which allocates locally. + Examples: + - ISIL: Danish Agency for Culture and Palaces + - ISNI: ISNI International Agency (administered by WIPO) + - VIAF: OCLC + + ' range: RegistrationAuthority inlined: false country_scope: slot_uri: schema:areaServed - description: | - Geographic areas where this standard applies. + description: 'Geographic areas where this standard applies. + Options: + - Empty/null: Global scope (most standards) + - List of Country: Country-specific standard + - List of Subregion: Regional standard + Examples: + - ISIL: Global (used in 160+ countries) + - KvK number: [NL] (Netherlands only) + - NUTS codes: [EU member countries] + + ' range: Country multivalued: true inlined: false scope_type: slot_uri: schema:additionalType - description: | - Classification of geographic scope. + description: 'Classification of geographic scope. + Values: + - GLOBAL: Applies worldwide (ISIL, ISNI, VIAF) + - NATIONAL: Single country (KvK for NL) + - REGIONAL: Specific regions (NUTS for EU) + - DOMAIN_SPECIFIC: Limited to specific institution types + + ' range: StandardScopeTypeEnum required: true identifier_domain: slot_uri: schema:about - description: | - What entities this identifier standard applies to. + description: 'What entities this identifier standard applies to. + Values: + - ORGANIZATION: Libraries, museums, archives (ISIL) + - PERSON: Authors, creators (ISNI, ORCID) + - WORK: Publications, creative works (ISBN, DOI) + - NAME_AUTHORITY: Name records (VIAF) + - RESEARCH_ORG: Research organizations (ROR) + - LEGAL_ENTITY: Legal entities (LEI) + + ' range: IdentifierDomainEnum required: true formats: slot_uri: schema:hasPart - description: | - Format variants for this identifier standard. + description: 'Format variants for this identifier standard. + Many standards allow multiple display formats: + - ISNI: "0000 0000 0000 0000" (with spaces) or "0000000000000000" (compact) + - ISIL: "NL-AmUvA" (with prefix) or just "AmUvA" (local part) + The canonical_format indicates which is preferred for storage. + + ' range: IdentifierFormat multivalued: true inlined_as_list: true canonical_format: slot_uri: schema:encodingFormat - description: | - Reference to the preferred/canonical format for storage. + description: 'Reference to the preferred/canonical format for storage. + Points to one of the formats in the formats list. + + ' range: IdentifierFormat inlined: false website: slot_uri: schema:url - description: | - Official website for the standard or registry. + description: 'Official website for the standard or registry. + Examples: + - https://www.iso.org/standard/57332.html (ISIL) + - https://isni.org/ (ISNI) + - https://viaf.org/ (VIAF) + + ' range: uri lookup_url_template: slot_uri: schema:urlTemplate - description: | - URL template for looking up identifiers. + description: 'URL template for looking up identifiers. + Use {id} as placeholder for the identifier value. + Examples: + - ISIL: "https://ld.zdb-services.de/resource/organisations/{id}" + - ISNI: "https://isni.org/isni/{id}" + - Wikidata: "https://www.wikidata.org/wiki/{id}" + - VIAF: "https://viaf.org/viaf/{id}" + + ' range: string first_published_year: slot_uri: schema:datePublished - description: | - Year the standard was first published. + description: 'Year the standard was first published. + Examples: + - ISIL (ISO 15511): 2003 + - ISNI (ISO 27729): 2012 + - VIAF: 2003 (launched) + + ' range: integer current_version: slot_uri: schema:version - description: | - Current version of the standard. + description: 'Current version of the standard. + Examples: + - ISO 15511:2019 (3rd edition) + - ISO 27729:2012 (1st edition) + + ' range: string standard_description: slot_uri: schema:description @@ -241,174 +300,241 @@ classes: range: string standard_type: slot_uri: schema:additionalType - description: | - Classification of how this standard/identifier system is governed. - - This is CRITICAL for understanding the authority model: - - - **ISO_STANDARD**: Formal ISO standard with TC governance - - Examples: ISIL (ISO 15511), ISNI (ISO 27729) - - Has iso_standard_number - - Governed by ISO Technical Committee - - - **CONSORTIUM_SERVICE**: Collaborative aggregation service - - Examples: VIAF, ORCID, ROR - - NO ISO number - - Governed by council/board with contributor representatives - - has contributing_agencies list - - - **PROPRIETARY_SYSTEM**: Single-organization system - - Examples: Wikidata Q-IDs, GND, LCNAF - - Controlled by one organization - - - **NATIONAL_STANDARD**: Country-specific standard - - Examples: KvK (NL), Companies House (UK) - - - **COMMUNITY_STANDARD**: De facto community standard - - Examples: DOI (before ISO formalization) + description: "Classification of how this standard/identifier system is governed.\n\nThis is CRITICAL for understanding\ + \ the authority model:\n\n- **ISO_STANDARD**: Formal ISO standard with TC governance\n - Examples: ISIL (ISO 15511),\ + \ ISNI (ISO 27729)\n - Has iso_standard_number\n - Governed by ISO Technical Committee\n\n- **CONSORTIUM_SERVICE**:\ + \ Collaborative aggregation service\n - Examples: VIAF, ORCID, ROR\n - NO ISO number\n - Governed by council/board\ + \ with contributor representatives\n - has contributing_agencies list\n\n- **PROPRIETARY_SYSTEM**: Single-organization\ + \ system\n - Examples: Wikidata Q-IDs, GND, LCNAF\n - Controlled by one organization\n\n- **NATIONAL_STANDARD**:\ + \ Country-specific standard\n - Examples: KvK (NL), Companies House (UK)\n\n- **COMMUNITY_STANDARD**: De facto\ + \ community standard\n - Examples: DOI (before ISO formalization)\n" range: StandardTypeEnum required: true governance_model: slot_uri: schema:governmentType - description: | - How decisions are made about this identifier system. + description: 'How decisions are made about this identifier system. + Values: + - ISO_TC: ISO Technical Committee with national body voting + - COUNCIL: Representative council (VIAF Council) + - SINGLE_AUTHORITY: Single organization decides (Wikidata) + - COMMUNITY_CONSENSUS: RFC/vote process (IETF) + - MEMBERSHIP_BOARD: Elected board (ORCID) + + ' range: GovernanceModelEnum contributing_agencies: slot_uri: schema:contributor - description: | - Organizations that contribute data to this identifier system. + description: 'Organizations that contribute data to this identifier system. + ONLY applicable for CONSORTIUM_SERVICE type standards. + For VIAF, this includes 37 national libraries and agencies: + - Library of Congress (LC) + - Deutsche Nationalbibliothek (DNB) + - Bibliothèque nationale de France (BnF) + - National Library of the Netherlands (NTA) + - etc. + Contributors are both: + 1. DATA SOURCES: They provide authority records + 2. ALLOCATION AGENCIES: They allocate their own national IDs + See ContributingAgency class for full modeling. + + ' range: ContributingAgency multivalued: true inlined: false governance_council: slot_uri: schema:organizer - description: | - The governance body for consortium-type services. + description: 'The governance body for consortium-type services. + For VIAF: VIAF Council (every contributor can appoint a voting representative) + For ORCID: ORCID Board of Directors + Links to a StandardsOrganization (or governance subclass). + + ' range: StandardsOrganization inlined: false data_license: slot_uri: schema:license - description: | - License for data from this identifier system. + description: 'License for data from this identifier system. + Examples: + - VIAF: ODC-BY (Open Data Commons Attribution) + - ORCID: CC0 (public domain) + - Wikidata: CC0 + + ' range: uri applicable_schema_types: slot_uri: schema:about - description: "Schema.org classes that this identifier standard applies to.\n\ - \nThis enables semantic querying like \"which identifiers apply to Museums?\"\ - \n\nExamples:\n- ISIL: [schema:Library, schema:Museum, schema:ArchiveOrganization,\ - \ \n schema:ResearchOrganization, schema:GovernmentOrganization]\n\ - - ORCID: [schema:Person]\n- ROR: [schema:ResearchOrganization, schema:EducationalOrganization]\n\ - - KvK: [schema:Organization] (all legal entity types)\n\nUses Schema.org\ - \ class URIs from https://schema.org/\n" + description: "Schema.org classes that this identifier standard applies to.\n\nThis enables semantic querying like\ + \ \"which identifiers apply to Museums?\"\n\nExamples:\n- ISIL: [schema:Library, schema:Museum, schema:ArchiveOrganization,\ + \ \n schema:ResearchOrganization, schema:GovernmentOrganization]\n- ORCID: [schema:Person]\n- ROR: [schema:ResearchOrganization,\ + \ schema:EducationalOrganization]\n- KvK: [schema:Organization] (all legal entity types)\n\nUses Schema.org class\ + \ URIs from https://schema.org/\n" range: uriorcurie multivalued: true wikidata_id: slot_uri: schema:sameAs - description: | - Wikidata Q-identifier for this standard. + description: 'Wikidata Q-identifier for this standard. + Examples: + - ISIL: Q470458 + - VIAF: Q54919 + - ORCID: Q51044 + Enables linking to Wikidata knowledge graph. + + ' range: uriorcurie glamorcubesfixphdnt_types: slot_uri: schema:applicableCategory - description: | - GLAMORCUBESFIXPHDNT custodian type codes this standard applies to. + description: 'GLAMORCUBESFIXPHDNT custodian type codes this standard applies to. + Single-letter codes: + - G: Galleries + - L: Libraries + - A: Archives + - M: Museums + - O: Official institutions + - R: Research centers + - C: Corporations + - U: Unknown + - B: Botanical gardens/Zoos + - E: Education providers + - S: Collecting societies + - F: Features/Monuments + - I: Intangible heritage groups + - X: Mixed + - P: Personal collections + - H: Holy sites + - D: Digital platforms + - N: NGOs + - T: Taste/smell heritage + Examples: + - ISIL: ["L", "A", "M", "R", "O", "G"] + - BGCI: ["B"] + - UNESCO_WHC: ["F", "H"] + + ' range: string multivalued: true category: slot_uri: schema:category - description: | - Category grouping for this identifier standard. + description: 'Category grouping for this identifier standard. + Categories: + 1. ISO Standards + 2. Authority Files (National Libraries) + 3. Consortium Services + 4. Domain-Specific Art/Cultural Heritage + 5. Archives/Manuscripts + 6. National Quality Standards + 7. Web/Open Data + 8. Religious/Ecclesiastical + 9. Encyclopedias/Reference Works + 10. Architecture/Buildings + 11. Social Media/Web Presence + 12. Commercial/Discovery Platforms + 13. Dutch-Specific + 14. Legal Entity Registries + 15. Japanese Identifiers + 16. Botanical Gardens/Zoos + 17. Higher Education/Research + 18. Numismatic/Philatelic (Collecting) + 19. Monuments/Heritage Sites + 20. Intangible Heritage + 21. Provenance/Art Registry + 22. Persistent Identifiers (Digital) + 23. Heritage NGOs + 24. Religious Heritage + 25. Gastronomy/Culinary Heritage + + ' range: string slots: - specificity_annotation @@ -422,31 +548,13 @@ classes: inlined: true IdentifierFormat: class_uri: schema:PropertyValue - description: | - A specific format variant for an identifier standard. - - Many identifier standards allow multiple display formats. This class - captures the variations and which is canonical for storage. - - **Examples:** - - - **ISNI formats:** - - "0000 0000 0000 0000" (display format with spaces) - - "0000000000000000" (compact/canonical for storage) - - "http://isni.org/isni/0000000000000000" (URI format) - - - **ISIL formats:** - - "NL-AmUvA" (full format with country prefix) - - "AmUvA" (local part only) - - - **Wikidata formats:** - - "Q12345" (short form) - - "http://www.wikidata.org/entity/Q12345" (full URI) - - **Usage:** - - When storing identifiers, use the canonical format (canonical: true). - When displaying, choose the appropriate format for the context. + description: "A specific format variant for an identifier standard.\n\nMany identifier standards allow multiple display\ + \ formats. This class\ncaptures the variations and which is canonical for storage.\n\n**Examples:**\n\n- **ISNI formats:**\n\ + \ - \"0000 0000 0000 0000\" (display format with spaces)\n - \"0000000000000000\" (compact/canonical for storage)\n\ + \ - \"http://isni.org/isni/0000000000000000\" (URI format)\n\n- **ISIL formats:**\n - \"NL-AmUvA\" (full format with\ + \ country prefix)\n - \"AmUvA\" (local part only)\n\n- **Wikidata formats:**\n - \"Q12345\" (short form)\n - \"http://www.wikidata.org/entity/Q12345\"\ + \ (full URI)\n\n**Usage:**\n\nWhen storing identifiers, use the canonical format (canonical: true).\nWhen displaying,\ + \ choose the appropriate format for the context.\n" exact_mappings: - schema:PropertyValue attributes: @@ -458,74 +566,109 @@ classes: required: true format_name: slot_uri: schema:name - description: | - Human-readable name for this format. + description: 'Human-readable name for this format. + Examples: + - "Display format with spaces" + - "Compact format" + - "Full URI format" + - "Local part only" + + ' range: string required: true pattern: slot_uri: schema:pattern - description: | - Regular expression pattern for this format. + description: 'Regular expression pattern for this format. + Examples: + - ISNI display: "^[0-9]{4} [0-9]{4} [0-9]{4} [0-9]{3}[0-9X]$" + - ISNI compact: "^[0-9]{15}[0-9X]$" + - ISIL: "^[A-Z]{2}-[A-Za-z0-9-]+$" + - Wikidata: "^Q[0-9]+$" + + ' range: string required: true example: slot_uri: schema:exampleOfWork - description: | - Example identifier in this format. + description: 'Example identifier in this format. + Examples: + - ISNI display: "0000 0001 2146 5765" + - ISNI compact: "0000000121465765" + - ISIL: "NL-AmRMA" + - Wikidata: "Q190804" + + ' range: string required: true is_canonical: slot_uri: schema:isBasedOn - description: | - Whether this is the canonical/preferred format for storage. + description: 'Whether this is the canonical/preferred format for storage. + Only one format per standard should be canonical. + Canonical format should be: + - Unambiguous (no optional characters) + - Compact (minimal characters) + - Sortable (if possible) + + ' range: boolean required: true is_uri_format: slot_uri: schema:url - description: | - Whether this format is a full URI. + description: 'Whether this format is a full URI. + Examples: + - true: "http://www.wikidata.org/entity/Q190804" + - true: "https://isni.org/isni/0000000121465765" + - false: "Q190804" + - false: "0000 0001 2146 5765" + + ' range: boolean required: true transformation_to_canonical: slot_uri: schema:algorithm - description: | - Description of how to transform this format to canonical. + description: 'Description of how to transform this format to canonical. + Examples: + - ISNI display → compact: "Remove spaces" + - Wikidata URI → short: "Extract Q-number from URI path" + - ISIL local → full: "Prepend country code prefix" + + ' range: string slots: - specificity_annotation @@ -537,389 +680,3 @@ classes: template_specificity: range: TemplateSpecificityScores inlined: true -enums: - StandardTypeEnum: - description: | - Classification of how a standard/identifier system is defined and governed. - - This is CRITICAL for understanding the authority model: - - ISO_STANDARD: Formal ISO/IEC standard with TC governance - - CONSORTIUM_SERVICE: Collaborative service (VIAF, ORCID) - - PROPRIETARY_SYSTEM: Single-organization system (Wikidata) - permissible_values: - ISO_STANDARD: - description: | - Formal ISO or ISO/IEC standard developed by Technical Committee. - - Characteristics: - - Published as numbered ISO document (ISO NNNNN) - - Formal revision process - - National body voting - - Periodic review cycle (5 years) - - Examples: - - ISIL (ISO 15511) - - ISNI (ISO 27729) - - ISBN (ISO 2108) - - ISSN (ISO 3297) - CONSORTIUM_SERVICE: - description: | - Collaborative service operated by consortium of contributing agencies. - - Characteristics: - - Multiple data contributors - - Shared governance (council/board) - - Aggregation of authority records - - NOT a formal ISO standard - - Examples: - - VIAF (OCLC + 37 national libraries) - - ORCID (open consortium) - - ROR (community-governed) - - FAST (OCLC subject headings) - PROPRIETARY_SYSTEM: - description: | - Identifier system controlled by single organization. - - Characteristics: - - Single authority defines/allocates - - May be open (Wikidata) or closed - - Organization controls governance - - Examples: - - Wikidata Q-IDs (Wikimedia Foundation) - - GND (Deutsche Nationalbibliothek) - - LCNAF (Library of Congress) - - ULAN (Getty Research Institute) - NATIONAL_STANDARD: - description: | - National standard defined by a single country's standards body. - - Characteristics: - - Defined by national body (NEN, DIN, BSI, ANSI) - - May align with ISO standards - - Country-specific governance - - Examples: - - KvK number (NL Chamber of Commerce) - - Companies House number (UK) - COMMUNITY_STANDARD: - description: | - De facto standard emerging from community practice. - - Characteristics: - - Wide adoption without formal governance - - Often becomes formalized later - - Community consensus-driven - - Examples: - - DOI (before ISO formalization) - - Handle System - QUALITY_STANDARD: - description: | - Quality or accreditation standard for heritage institutions. - - NOT an identifier standard, but a set of criteria that institutions - must meet to receive certification or accreditation. - - Characteristics: - - Defines quality criteria (governance, collections, access) - - Assessed by certification body - - Grants status/accreditation (not identifier) - - May result in listing in official register - - Examples: - - Museumnorm (NL) - Museum quality standard - - Defined by: Museumvereniging - - Certified by: Stichting Museumregister Nederland - - Wikidata: Q2292728 - - Museum Accreditation (UK) - Arts Council England - - AAM Accreditation (US) - American Alliance of Museums - - ICOM ethical guidelines - - Note: Institutions certified under quality standards may be listed - in a register (e.g., Museumregister Nederland), but this is - certification status, not an identifier assignment. - COMMERCIAL_SERVICE: - description: | - Commercial platform providing identifier-like functionality. - - Characteristics: - - For-profit company operates service - - Terms of service controlled by company - - May have API restrictions or costs - - Examples: - - TripAdvisor (review platform) - - Google Maps (place IDs) - - LinkedIn (profile URLs) - - Yelp (business IDs) - GOVERNMENT_REGISTRY: - description: | - Official government registry assigning identifiers. - - Characteristics: - - Operated by government agency - - Legal authority for registration - - Official records - - Examples: - - NRHP (US National Register of Historic Places) - - NHLE (UK National Heritage List for England) - - Rijksmonument (NL heritage registry) - - Companies House (UK company registration) - INTERNATIONAL_TREATY: - description: | - Identifier system established by international treaty or convention. - - Characteristics: - - Governed by international body (UN, UNESCO) - - Treaty-based legal framework - - Intergovernmental oversight - - Examples: - - UNESCO World Heritage (WHC) - - UNESCO Intangible Cultural Heritage - - IGP/PDO (EU geographic indications) - CROWDSOURCED: - description: | - Community-edited open data platform. - - Characteristics: - - Open editing by public - - Community governance - - CC0 or open license - - Examples: - - Wikidata - - OpenStreetMap - - GeoNames - COMMUNITY_NONPROFIT: - description: | - Non-profit organization maintaining identifier system. - - Characteristics: - - Non-profit governance - - Community-focused mission - - Often membership-based - - Examples: - - ICOMOS (heritage sites) - - World Monuments Fund - - Europa Nostra - OPEN_STANDARD: - description: | - Open technical standard for persistent identifiers. - - Characteristics: - - Technical specification published openly - - Multiple implementations allowed - - Community or standards body governance - - Examples: - - DOI (Digital Object Identifier) - - Handle System - - ARK (Archival Resource Key) - - PURL - ACADEMIC_DATABASE: - description: | - Academic or research database with identifier system. - - Characteristics: - - Academic institution maintains - - Scholarly/research focus - - Often freely accessible - - Examples: - - CiNii (Japan scholarly database) - - IPEDS (US education statistics) - - Database of Religious History - CONTROLLED_VOCABULARY: - description: | - Controlled vocabulary or thesaurus providing term identifiers. - - Characteristics: - - Standardized terminology - - Hierarchical relationships - - Used for subject access - - Examples: - - AAT (Art & Architecture Thesaurus) - - TGN (Getty Thesaurus of Geographic Names) - - FAST (Faceted Application of Subject Terminology) - QUALITY_CERTIFICATION: - description: | - Quality certification or accreditation system. - - Characteristics: - - Certification body assesses compliance - - Standards-based assessment - - Grants certification status - - Examples: - - Museumnorm (NL museum quality) - - Muséofile (FR museum registry) - EXTRACTED_DATA: - description: | - Identifiers extracted from other data sources. - - Characteristics: - - Derived from primary sources (Wikipedia, etc.) - - Structured data extraction - - Often linked data focus - - Examples: - - DBpedia (extracted from Wikipedia) - GovernanceModelEnum: - description: | - How the identifier system is governed and decisions are made. - permissible_values: - ISO_TC: - description: | - ISO Technical Committee governance with national body voting. - Used by formal ISO standards. - COUNCIL: - description: | - Governance council with representative voting. - Examples: VIAF Council, ORCID Board - SINGLE_AUTHORITY: - description: | - Single organization makes all governance decisions. - Examples: Wikidata (Wikimedia Foundation), national libraries - COMMUNITY_CONSENSUS: - description: | - Community-driven decision making (RFCs, votes). - Examples: IETF, W3C - MEMBERSHIP_BOARD: - description: | - Governing board elected by member organizations. - Examples: OCLC, ORCID - PROPRIETARY: - description: | - Commercial entity controls governance unilaterally. - Examples: TripAdvisor, Google Maps, Facebook - GOVERNMENT: - description: | - Government agency controls governance. - Examples: NRHP (National Park Service), Companies House - ACADEMIC: - description: | - Academic institution or consortium governs. - Examples: CiNii (NII Japan), DBpedia (Leipzig University) - INTERGOVERNMENTAL: - description: | - International/intergovernmental body governs. - Examples: UNESCO (World Heritage), European Union (IGP/PDO) - COMMUNITY: - description: | - Open community governance with consensus-based decisions. - Examples: OpenStreetMap, GeoNames - INDUSTRY_BODY: - description: | - Industry association or professional body governs. - Examples: WAZA (zoos), BGCI (botanical gardens) - StandardScopeTypeEnum: - description: Classification of geographic scope for standards - permissible_values: - GLOBAL: - description: | - Standard applies worldwide. - Examples: ISIL, ISNI, VIAF, ORCID - NATIONAL: - description: | - Standard applies to a single country. - Examples: KvK (NL), Companies House (UK), NRHP (US) - REGIONAL: - description: | - Standard applies to a region or group of countries. - Examples: NUTS (EU), LEI (global but with regional allocators), IGP/PDO (EU) - DOMAIN_SPECIFIC: - description: | - Standard limited to specific institution types regardless of geography. - Examples: IGSN (geological samples), BGCI (botanical gardens) - INSTITUTIONAL: - description: | - Standard applies to a single institution or organization. - Examples: Museum-specific collection IDs, institutional repositories - IdentifierDomainEnum: - description: Classification of what entities an identifier applies to - permissible_values: - ORGANIZATION: - description: | - Identifies organizations (libraries, museums, archives, etc.). - Examples: ISIL, GRID (deprecated), ROR - HERITAGE_INSTITUTION: - description: | - Specifically identifies heritage custodian institutions. - - More specific than ORGANIZATION - focused on GLAM sector. - - Examples: - - ISIL (ISO 15511) - primary identifier for heritage institutions - - Museumregister Nederland - certified museums - - Museofile (FR) - French museum registry - - ACMI (AU) - Australian Centre for the Moving Image - PERSON: - description: | - Identifies persons (authors, creators, contributors). - Examples: ISNI, ORCID, VIAF (also organizations) - WORK: - description: | - Identifies works (publications, creative works). - Examples: ISBN, DOI, Handle - NAME_AUTHORITY: - description: | - Identifies authority records for names. - Examples: VIAF, LCNAF, GND, BnF - RESEARCH_ORG: - description: | - Identifies research organizations specifically. - Examples: ROR - LEGAL_ENTITY: - description: | - Identifies legal entities for financial/regulatory purposes. - Examples: LEI (Legal Entity Identifier), KvK, Companies House - COLLECTION: - description: | - Identifies collections or datasets. - Examples: DOI (for datasets), Handle - PLACE: - description: | - Identifies geographic places. - Examples: GeoNames ID, What3Words, OpenStreetMap - BUILDING: - description: | - Identifies buildings and architectural structures. - Examples: Structurae, archINFORM - HERITAGE_SITE: - description: | - Identifies protected heritage sites and monuments. - Examples: UNESCO World Heritage, NRHP, NHLE, Rijksmonument - OBJECT: - description: | - Identifies physical objects (artworks, artifacts, specimens). - Examples: Museum object IDs, ACMI, NGC (coins) - UNIVERSAL: - description: | - Applies to any entity type (universal identifier). - Examples: Wikidata Q-IDs, DBpedia URIs - SOCIAL_MEDIA: - description: | - Social media profile or page identifiers. - Examples: Facebook page ID, Twitter handle, Instagram username - DIGITAL_OBJECT: - description: | - Identifies digital objects and persistent identifiers. - Examples: DOI, Handle, ARK, PURL, URN:NBN - INTANGIBLE_HERITAGE: - description: | - Identifies intangible cultural heritage elements. - Examples: UNESCO ICH, UNESCO ICH Good Safeguarding Practices - SUBJECT_TERM: - description: | - Identifies subject terms in controlled vocabularies. - Examples: AAT, FAST, TGN - PRODUCT: - description: | - Identifies products with geographic or quality designations. - Examples: IGP, PDO (Protected Designation of Origin) diff --git a/schemas/20251121/linkml/modules/classes/StandardsOrganization.yaml b/schemas/20251121/linkml/modules/classes/StandardsOrganization.yaml index ef7458a63d..13be2ba3de 100644 --- a/schemas/20251121/linkml/modules/classes/StandardsOrganization.yaml +++ b/schemas/20251121/linkml/modules/classes/StandardsOrganization.yaml @@ -16,60 +16,25 @@ imports: - ../slots/template_specificity - ./SpecificityAnnotation - ./TemplateSpecificityScores +- ../enums/StandardsOrganizationTypeEnum classes: StandardsOrganization: class_uri: org:FormalOrganization - description: | - An organization that defines and maintains identifier standards. - - **Key Distinction from RegistrationAuthority:** - - - StandardsOrganization: DEFINES the standard (rules, format, governance) - - RegistrationAuthority: MAINTAINS a registry of identifiers following the standard - - **Examples:** - - - **ISO** (International Organization for Standardization) - - Defines: ISIL (ISO 15511), ISNI (ISO 27729), VIAF structure - - Does NOT directly maintain registries - - - **ANSI** (American National Standards Institute) - - US national standards body - - Defines standards in collaboration with ISO - - - **W3C** (World Wide Web Consortium) - - Defines: URI/URL format, SKOS, RDF - - Web-focused standards - - - **IETF** (Internet Engineering Task Force) - - Defines: UUID format (RFC 4122), URN (RFC 8141) - - Internet protocol standards - - - **OCLC** (Online Computer Library Center) - - Defines: WorldCat identifiers - - Also acts as RegistrationAuthority for some identifiers - - - **Museumvereniging** (Netherlands Museums Association) - - Defines: Museumnorm (Netherlands museum quality standard) - - Wikidata: Q2335495 - - National association representing Dutch museums - - - **Stichting Museumregister Nederland** - - Maintains: Museumregister Nederland (certified museum list) - - Wikidata: Q110989623 - - Grants official museum status in Netherlands based on Museumnorm - - **Relationship to Standards:** - - A StandardsOrganization defines one or more Standard classes via the - defined_by inverse relationship: - - Standard.defined_by → StandardsOrganization - - **Ontology Alignment:** - - - org:FormalOrganization - W3C Organization Ontology - - schema:Organization - Schema.org - - foaf:Organization - FOAF + description: "An organization that defines and maintains identifier standards.\n\n**Key Distinction from RegistrationAuthority:**\n\ + \n- StandardsOrganization: DEFINES the standard (rules, format, governance)\n- RegistrationAuthority: MAINTAINS a registry\ + \ of identifiers following the standard\n\n**Examples:**\n\n- **ISO** (International Organization for Standardization)\n\ + \ - Defines: ISIL (ISO 15511), ISNI (ISO 27729), VIAF structure\n - Does NOT directly maintain registries\n\n- **ANSI**\ + \ (American National Standards Institute)\n - US national standards body\n - Defines standards in collaboration with\ + \ ISO\n\n- **W3C** (World Wide Web Consortium)\n - Defines: URI/URL format, SKOS, RDF\n - Web-focused standards\n\n\ + - **IETF** (Internet Engineering Task Force)\n - Defines: UUID format (RFC 4122), URN (RFC 8141)\n - Internet protocol\ + \ standards\n\n- **OCLC** (Online Computer Library Center)\n - Defines: WorldCat identifiers\n - Also acts as RegistrationAuthority\ + \ for some identifiers\n\n- **Museumvereniging** (Netherlands Museums Association)\n - Defines: Museumnorm (Netherlands\ + \ museum quality standard)\n - Wikidata: Q2335495\n - National association representing Dutch museums\n\n- **Stichting\ + \ Museumregister Nederland**\n - Maintains: Museumregister Nederland (certified museum list)\n - Wikidata: Q110989623\n\ + \ - Grants official museum status in Netherlands based on Museumnorm\n\n**Relationship to Standards:**\n\nA StandardsOrganization\ + \ defines one or more Standard classes via the\ndefined_by inverse relationship:\n- Standard.defined_by → StandardsOrganization\n\ + \n**Ontology Alignment:**\n\n- org:FormalOrganization - W3C Organization Ontology\n- schema:Organization - Schema.org\n\ + - foaf:Organization - FOAF\n" exact_mappings: - org:FormalOrganization close_mappings: @@ -81,87 +46,123 @@ classes: id: identifier: true slot_uri: schema:identifier - description: | - Unique identifier for this standards organization. + description: 'Unique identifier for this standards organization. + Recommended format: lowercase acronym or short name. + Examples: "iso", "ansi", "w3c", "ietf", "oclc" + + ' range: uriorcurie required: true name: slot_uri: schema:name - description: | - Official full name of the standards organization. + description: 'Official full name of the standards organization. + Examples: + - "International Organization for Standardization" + - "American National Standards Institute" + - "World Wide Web Consortium" + + ' range: string required: true has_or_had_abbreviation: slot_uri: schema:alternateName - description: | - Common abbreviation/acronym. + description: 'Common abbreviation/acronym. + Examples: "ISO", "ANSI", "W3C", "IETF", "OCLC" + + ' range: string required: true organization_type: slot_uri: schema:additionalType - description: | - Type of standards organization. + description: 'Type of standards organization. + Values: + - INTERGOVERNMENTAL: International government collaboration (ISO, UN) + - NATIONAL: National standards body (ANSI, DIN, BSI, NEN) + - INDUSTRY_CONSORTIUM: Industry-led organization (W3C, IETF) + - LIBRARY_COOPERATIVE: Library/cultural heritage focus (OCLC, IFLA) + - PROFESSIONAL_ASSOCIATION: Professional body (SAA, ALA) + + ' range: StandardsOrganizationTypeEnum required: true member_countries: slot_uri: schema:member - description: | - Countries that are members of this organization (for intergovernmental orgs). + description: 'Countries that are members of this organization (for intergovernmental orgs). + List of ISO 3166-1 alpha-2 country codes. + Example for ISO: ["NL", "US", "JP", "DE", ...] (167 member countries) + + ' range: string multivalued: true founded_year: slot_uri: schema:foundingDate - description: | - Year the organization was founded. + description: 'Year the organization was founded. + Examples: + - ISO: 1947 + - ANSI: 1918 + - W3C: 1994 + - IETF: 1986 + + ' range: integer headquarters_country: slot_uri: schema:location - description: | - Country where headquarters is located (ISO 3166-1 alpha-2). + description: 'Country where headquarters is located (ISO 3166-1 alpha-2). + Examples: + - ISO: "CH" (Geneva, Switzerland) + - ANSI: "US" (Washington DC) + - W3C: "US" (MIT) + "FR" (ERCIM) + "JP" (Keio) + + ' range: string pattern: ^[A-Z]{2}$ website: slot_uri: schema:url - description: | - Official website URL. + description: 'Official website URL. + Examples: + - https://www.iso.org/ + - https://www.ansi.org/ + - https://www.w3.org/ + + ' range: uri organization_description: slot_uri: schema:description @@ -169,38 +170,53 @@ classes: range: string standards_maintained: slot_uri: schema:hasPart - description: | - Standards defined by this organization. + description: 'Standards defined by this organization. + Inverse relationship: Standard.defined_by → StandardsOrganization + Note: This is the inverse side; the forward relationship is on Standard. + + ' range: Standard multivalued: true inlined: false wikidata_id: slot_uri: schema:sameAs - description: | - Wikidata Q-ID for this standards organization. + description: 'Wikidata Q-ID for this standards organization. + Examples: + - ISO: Q15028 + - OCLC: Q190593 + - Museumvereniging: Q2335495 + - Stichting Museumregister Nederland: Q110989623 + + ' range: string pattern: ^Q[0-9]+$ headquarters_country_code: slot_uri: schema:location - description: | - Country where the organization is headquartered (ISO 3166-1 alpha-2 code). + description: 'Country where the organization is headquartered (ISO 3166-1 alpha-2 code). + For intergovernmental organizations, use primary headquarters location. + Examples: + - ISO: CH (Geneva) + - OCLC: US (Dublin, Ohio) + - Museumvereniging: NL + + ' range: string pattern: ^[A-Z]{2}$ slots: @@ -213,85 +229,3 @@ classes: template_specificity: range: TemplateSpecificityScores inlined: true -enums: - StandardsOrganizationTypeEnum: - description: Classification of standards organization types - permissible_values: - INTERGOVERNMENTAL: - description: | - International organization with government membership. - Examples: ISO, United Nations, UNESCO - NATIONAL: - description: | - National standards body for a single country. - Examples: ANSI (US), DIN (DE), BSI (UK), NEN (NL), AFNOR (FR) - INDUSTRY_CONSORTIUM: - description: | - Industry-led standards organization. - Examples: W3C, IETF, OASIS, OMG - LIBRARY_COOPERATIVE: - description: | - Library or cultural heritage cooperative. - Examples: OCLC, IFLA, CENL, LIBER - PROFESSIONAL_ASSOCIATION: - description: | - Professional association setting domain standards. - Examples: SAA (archivists), ALA (librarians), ICOM (museums) - NATIONAL_MUSEUM_ASSOCIATION: - description: | - National museum association that defines quality standards. - - These organizations represent museums at the national level and - often define quality standards, accreditation criteria, and - professional guidelines. - - Examples: - - Museumvereniging (Netherlands Museums Association) - Q2335495 - - Defines: Museumnorm (museum quality standard) - - Works with Stichting Museumregister Nederland - - Museums Association (UK) - - American Alliance of Museums (AAM, US) - - Deutscher Museumsbund (DE) - - ICOM National Committees - - Characteristics: - - Membership-based (museums as members) - - Advocacy and representation - - Professional development - - Quality standards and accreditation - CERTIFICATION_BODY: - description: | - Organization that certifies compliance with standards. - - These bodies assess institutions against standards and grant - certification or accreditation status. - - Examples: - - Stichting Museumregister Nederland (Q110989623) - - Certifies: Museums meeting Museumnorm - - Maintains: Official museum register - - Museum Accreditation Scheme (Arts Council England) - - AAM Accreditation Commission (US) - - Characteristics: - - Assessment and audit function - - Grants/revokes certification - - Maintains certified institution list - - Independent from membership organization - GOVERNANCE_COUNCIL: - description: | - Governance body for a consortium-type identifier service. - - These councils have representatives from contributing agencies and - make decisions about the service's development, policies, and direction. - - Examples: - - VIAF Council (representatives from 37 contributing agencies) - - ORCID Board of Directors - - ROR Steering Group - - Characteristics: - - Voting members from data contributors - - Meets regularly (annually, quarterly) - - Advises on technical and policy decisions - - May have working groups for specific topics diff --git a/schemas/20251121/linkml/modules/classes/TemporaryLocation.yaml b/schemas/20251121/linkml/modules/classes/TemporaryLocation.yaml index 21e69c99f3..bf7543451f 100644 --- a/schemas/20251121/linkml/modules/classes/TemporaryLocation.yaml +++ b/schemas/20251121/linkml/modules/classes/TemporaryLocation.yaml @@ -28,6 +28,7 @@ imports: - ./TemplateSpecificityScores - ../slots/has_actual_start_date - ../slots/has_actual_end_date +- ../enums/TemporaryLocationReasonEnum prefixes: linkml: https://w3id.org/linkml/ hc: https://nde.nl/ontology/hc/ @@ -422,21 +423,3 @@ classes: serves_function_of: - Collection storage description: Emergency storage (active, end date unknown) -enums: - TemporaryLocationReasonEnum: - description: Reasons for establishing a temporary location - permissible_values: - RENOVATION: - description: Building renovation or refurbishment work - CONSTRUCTION: - description: New building construction - EMERGENCY: - description: Disaster or emergency response - POP_UP_PROGRAM: - description: Planned temporary outreach or exhibition - PILOT_PROJECT: - description: Testing new service model or location - EVENT_PRESENCE: - description: Temporary presence at festival or conference - INTERIM_RELOCATION: - description: Planned temporary move between permanent facilities diff --git a/schemas/20251121/linkml/modules/classes/VideoAnnotation.yaml b/schemas/20251121/linkml/modules/classes/VideoAnnotation.yaml index e26b337997..0eac840ed8 100644 --- a/schemas/20251121/linkml/modules/classes/VideoAnnotation.yaml +++ b/schemas/20251121/linkml/modules/classes/VideoAnnotation.yaml @@ -23,6 +23,7 @@ imports: - ../slots/total_frames_analyzed - ./SpecificityAnnotation - ./TemplateSpecificityScores +- ../enums/AnnotationTypeEnum prefixes: linkml: https://w3id.org/linkml/ hc: https://nde.nl/ontology/hc/ @@ -420,29 +421,3 @@ classes: - https://www.w3.org/TR/annotation-model/ - http://www.cidoc-crm.org/cidoc-crm/E13_Attribute_Assignment - https://iiif.io/api/presentation/3.0/ -enums: - AnnotationTypeEnum: - description: 'Types of video annotation based on analysis method. - - ' - permissible_values: - SCENE_DETECTION: - description: Shot and scene boundary detection - OBJECT_DETECTION: - description: Object, face, and logo detection - OCR: - description: Optical character recognition (text-in-video) - ACTION_RECOGNITION: - description: Human action and activity detection - SEMANTIC_SEGMENTATION: - description: Pixel-level semantic classification - POSE_ESTIMATION: - description: Human body pose detection - EMOTION_RECOGNITION: - description: Facial emotion/expression analysis - MULTIMODAL: - description: Combined audio-visual analysis - CAPTIONING: - description: Automated video captioning/description - CUSTOM: - description: Custom annotation type diff --git a/schemas/20251121/linkml/modules/classes/VideoAnnotationTypes.yaml b/schemas/20251121/linkml/modules/classes/VideoAnnotationTypes.yaml index 00b172f01e..3753fb8b84 100644 --- a/schemas/20251121/linkml/modules/classes/VideoAnnotationTypes.yaml +++ b/schemas/20251121/linkml/modules/classes/VideoAnnotationTypes.yaml @@ -64,6 +64,10 @@ imports: - ../slots/unique_object_count - ./SpecificityAnnotation - ./TemplateSpecificityScores +- ../enums/DetectionLevelEnum +- ../enums/SceneTypeEnum +- ../enums/TransitionTypeEnum +- ../enums/TextTypeEnum prefixes: linkml: https://w3id.org/linkml/ hc: https://nde.nl/ontology/hc/ @@ -1180,84 +1184,3 @@ classes: template_specificity: range: TemplateSpecificityScores inlined: true -enums: - DetectionLevelEnum: - description: Granularity of scene/shot detection - permissible_values: - SHOT: - description: Technical camera edit boundaries - SCENE: - description: Semantic content/location boundaries - BOTH: - description: Both shot and scene detection - SceneTypeEnum: - description: Types of scenes in heritage videos - permissible_values: - INTERIOR: - description: Indoor/interior shots - EXTERIOR: - description: Outdoor/exterior shots - CLOSEUP: - description: Detail shots of objects/artworks - WIDE_SHOT: - description: Establishing or wide-angle shots - INTERVIEW: - description: Talking head / interview format - ARCHIVAL: - description: Historical footage or photographs - ANIMATION: - description: Animated or graphics sequence - TITLE_CARD: - description: Text overlay or title sequence - B_ROLL: - description: Supplementary/cutaway footage - DEMONSTRATION: - description: Process or technique demonstration - TOUR: - description: Walking tour or navigation sequence - TransitionTypeEnum: - description: Types of video transitions - permissible_values: - CUT: - description: Instantaneous transition (hard cut) - FADE_IN: - description: Gradual appearance from black - FADE_OUT: - description: Gradual disappearance to black - DISSOLVE: - description: Cross-fade between shots - WIPE: - description: Geometric wipe transition - MORPH: - description: Morphing transition effect - FLASH: - description: Flash or strobe transition - OTHER: - description: Other transition type - TextTypeEnum: - description: Types of on-screen text regions - permissible_values: - TITLE_CARD: - description: Opening/closing titles - LOWER_THIRD: - description: Name/title overlay at bottom - SUBTITLE: - description: Burned-in subtitles/captions - SIGN: - description: Physical signs in scene - LABEL: - description: Museum/exhibition labels - DOCUMENT: - description: Text from documents/books - HANDWRITTEN: - description: Handwritten text - GRAPHIC: - description: Infographic or chart text - WATERMARK: - description: Video watermark or logo - URL: - description: Website URL display - CREDITS: - description: Credits or attribution text - OTHER: - description: Other text type diff --git a/schemas/20251121/linkml/modules/classes/VideoAudioAnnotation.yaml b/schemas/20251121/linkml/modules/classes/VideoAudioAnnotation.yaml index 9db7b09107..bc523eaa26 100644 --- a/schemas/20251121/linkml/modules/classes/VideoAudioAnnotation.yaml +++ b/schemas/20251121/linkml/modules/classes/VideoAudioAnnotation.yaml @@ -52,6 +52,9 @@ imports: - ./SpecificityAnnotation - ./TemplateSpecificityScores - ../slots/has_audio_event_segment +- ../enums/AudioEventTypeEnum +- ../enums/SoundEventTypeEnum +- ../enums/MusicTypeEnum prefixes: linkml: https://w3id.org/linkml/ hc: https://nde.nl/ontology/hc/ @@ -864,75 +867,3 @@ classes: template_specificity: range: TemplateSpecificityScores inlined: true -enums: - AudioEventTypeEnum: - description: 'Types of audio events detected in video. - - ' - permissible_values: - SPEECH: - description: Speech/voice detection and analysis - MUSIC: - description: Music detection and classification - SILENCE: - description: Silence or very low audio - SOUND_EVENT: - description: Non-speech, non-music sound events - NOISE: - description: Noise detection (for quality assessment) - MIXED: - description: Multiple audio event types analyzed - SoundEventTypeEnum: - description: 'Types of non-speech, non-music sound events. - - ' - permissible_values: - APPLAUSE: - description: Clapping, applause - LAUGHTER: - description: Laughter from audience or speakers - CROWD_NOISE: - description: General crowd/audience noise - FOOTSTEPS: - description: Walking, footsteps - DOOR: - description: Door opening/closing sounds - NATURE_SOUNDS: - description: Birds, wind, water, etc. - TRAFFIC: - description: Vehicles, urban sounds - BELLS: - description: Church bells, temple bells, etc. - MACHINERY: - description: Industrial, mechanical sounds - COUGHING: - description: Coughing, clearing throat - PAPER: - description: Paper rustling - TYPING: - description: Keyboard typing - PHONE: - description: Phone ringing or notification - MUSIC_INSTRUMENT: - description: Individual instrument sounds - OTHER: - description: Other sound event type - MusicTypeEnum: - description: 'Types of music presence in audio. - - ' - permissible_values: - BACKGROUND: - description: Background/ambient music under other content - FEATURED: - description: Primary audio is music (performance, recording) - ARCHIVAL: - description: Historical/archival music recording - INTRO_OUTRO: - description: Opening or closing music/jingle - TRANSITION: - description: Music used for scene transitions - DIEGETIC: - description: Music from within the scene (radio, live performance) - NON_DIEGETIC: - description: Music added in post-production diff --git a/schemas/20251121/linkml/modules/classes/VideoPost.yaml b/schemas/20251121/linkml/modules/classes/VideoPost.yaml index bf1e64e9b8..1a94c4aa36 100644 --- a/schemas/20251121/linkml/modules/classes/VideoPost.yaml +++ b/schemas/20251121/linkml/modules/classes/VideoPost.yaml @@ -41,6 +41,8 @@ imports: - ./TemplateSpecificityScores - ../slots/definition - ../slots/has_available_caption_language +- ../enums/VideoDefinitionEnum +- ../enums/LiveBroadcastStatusEnum prefixes: linkml: https://w3id.org/linkml/ hc: https://nde.nl/ontology/hc/ @@ -702,36 +704,3 @@ classes: template_specificity: range: TemplateSpecificityScores inlined: true -enums: - VideoDefinitionEnum: - description: 'Video resolution/definition quality categories. - - - Based on common platform standards. - - ' - permissible_values: - sd: - description: Standard definition (480p or lower) - hd: - description: High definition (720p, 1080p) - uhd: - description: Ultra HD (2160p/4K) - 4k: - description: 4K resolution (2160p) - alias for uhd - 8k: - description: Full Ultra HD (4320p) - LiveBroadcastStatusEnum: - description: 'Live broadcast status values for video content. - - - Based on YouTube API liveBroadcastContent values. - - ' - permissible_values: - none: - description: Not a live broadcast (standard uploaded video) - live: - description: Currently broadcasting live - upcoming: - description: Scheduled live stream that hasn't started yet diff --git a/schemas/20251121/linkml/modules/classes/VideoSubtitle.yaml b/schemas/20251121/linkml/modules/classes/VideoSubtitle.yaml index 5c0ec186d0..07f4d8d72e 100644 --- a/schemas/20251121/linkml/modules/classes/VideoSubtitle.yaml +++ b/schemas/20251121/linkml/modules/classes/VideoSubtitle.yaml @@ -22,6 +22,8 @@ imports: - ../slots/track_name - ./SpecificityAnnotation - ./TemplateSpecificityScores +- ../enums/SubtitlePositionEnum +- ../enums/SubtitleFormatEnum prefixes: linkml: https://w3id.org/linkml/ hc: https://nde.nl/ontology/hc/ @@ -579,152 +581,3 @@ classes: - https://www.w3.org/TR/webvtt1/ - https://developer.mozilla.org/en-US/docs/Web/API/WebVTT_API - https://www.3playmedia.com/learn/popular-topics/closed-captioning/ -enums: - SubtitleFormatEnum: - description: 'Subtitle/caption file formats. - - - Each format has different capabilities for timing precision, - - styling, positioning, and metadata. - - ' - permissible_values: - SRT: - description: 'SubRip subtitle format (.srt). - - Most widely supported format. - - Simple: sequence number, timecode, text. - - No styling or positioning support. - - ' - VTT: - description: 'WebVTT format (.vtt). - - W3C standard for HTML5 video. - - Supports styling (CSS), positioning, cue settings. - - Recommended for web delivery. - - ' - TTML: - description: 'Timed Text Markup Language (.ttml/.dfxp/.xml). - - W3C XML-based standard. - - Rich styling, regions, timing. - - Used in broadcast and streaming (Netflix, Amazon). - - ' - SBV: - description: 'YouTube SubViewer format (.sbv). - - Simple format similar to SRT. - - Native YouTube caption format. - - ' - ASS: - description: 'Advanced SubStation Alpha (.ass). - - Advanced styling, positioning, effects. - - Popular for anime subtitles. - - Includes SSA (.ssa) as predecessor. - - ' - STL: - description: 'EBU STL format (.stl). - - European Broadcasting Union standard. - - Used in broadcast television. - - Binary format with teletext compatibility. - - ' - CAP: - description: 'Scenarist Closed Caption (.scc/.cap). - - Used for broadcast closed captioning. - - CEA-608/CEA-708 compliant. - - ' - SAMI: - description: 'Synchronized Accessible Media Interchange (.smi/.sami). - - Microsoft format for Windows Media. - - HTML-like markup with timing. - - ' - LRC: - description: 'LRC lyrics format (.lrc). - - Simple format for song lyrics. - - Line-by-line timing, no duration. - - ' - JSON: - description: 'JSON-based subtitle format. - - Used by some APIs (YouTube transcript API). - - Structure varies by source. - - ' - UNKNOWN: - description: 'Unknown or unrecognized format. - - May require manual parsing or conversion. - - ' - SubtitlePositionEnum: - description: 'Default caption display position on video. - - - May be overridden by format-specific positioning (VTT, TTML, ASS). - - ' - permissible_values: - BOTTOM: - description: 'Bottom of video frame (standard position). - - Most common for subtitles and captions. - - Typically in lower 10-15% of frame. - - ' - TOP: - description: 'Top of video frame. - - Used when bottom is occluded. - - Common for some broadcast formats. - - ' - MIDDLE: - description: 'Center of video frame. - - Rarely used except for specific effects. - - ' - LEFT: - description: 'Left side of frame (vertical text). - - Rare, used for specific languages/effects. - - ' - RIGHT: - description: 'Right side of frame (vertical text). - - Rare, used for specific languages/effects. - - ' diff --git a/schemas/20251121/linkml/modules/classes/VideoTextContent.yaml b/schemas/20251121/linkml/modules/classes/VideoTextContent.yaml index cc01828365..5414e58f29 100644 --- a/schemas/20251121/linkml/modules/classes/VideoTextContent.yaml +++ b/schemas/20251121/linkml/modules/classes/VideoTextContent.yaml @@ -24,6 +24,7 @@ imports: - ../slots/word_count - ./SpecificityAnnotation - ./TemplateSpecificityScores +- ../enums/GenerationMethodEnum prefixes: linkml: https://w3id.org/linkml/ hc: https://nde.nl/ontology/hc/ @@ -386,34 +387,3 @@ classes: see_also: - https://www.w3.org/TR/prov-o/ - http://www.cidoc-crm.org/cidoc-crm/E73_Information_Object -enums: - GenerationMethodEnum: - description: 'Methods for generating video-derived text content. - - - Standardized values for provenance tracking. - - ' - permissible_values: - ASR_AUTOMATIC: - description: Automatic speech recognition (raw output) - ASR_ENHANCED: - description: ASR with post-processing (punctuation, normalization) - MANUAL_TRANSCRIPTION: - description: Fully human-transcribed content - MANUAL_CORRECTION: - description: Human-corrected ASR output - CV_AUTOMATIC: - description: Computer vision detection (raw output) - CV_ENHANCED: - description: CV with post-processing or filtering - MULTIMODAL: - description: Combined audio+visual AI processing - OCR: - description: Optical character recognition from video frames - PLATFORM_PROVIDED: - description: Content from platform API (YouTube, Vimeo captions) - HYBRID: - description: Combination of automated and manual methods - UNKNOWN: - description: Generation method not recorded diff --git a/schemas/20251121/linkml/modules/classes/VideoTranscript.yaml b/schemas/20251121/linkml/modules/classes/VideoTranscript.yaml index a3b1eed522..ca9d2081b7 100644 --- a/schemas/20251121/linkml/modules/classes/VideoTranscript.yaml +++ b/schemas/20251121/linkml/modules/classes/VideoTranscript.yaml @@ -19,6 +19,7 @@ imports: - ../slots/transcript_format - ./SpecificityAnnotation - ./TemplateSpecificityScores +- ../enums/TranscriptFormatEnum prefixes: linkml: https://w3id.org/linkml/ hc: https://nde.nl/ontology/hc/ @@ -337,60 +338,3 @@ classes: see_also: - https://schema.org/transcript - http://www.cidoc-crm.org/cidoc-crm/E33_Linguistic_Object -enums: - TranscriptFormatEnum: - description: 'Format/structure of transcript text content. - - - Indicates how the full_text is organized. - - ' - permissible_values: - PLAIN_TEXT: - description: 'Continuous text without structural markers. - - No speaker labels, no timestamps, no paragraph breaks. - - Suitable for simple full-text search indexing. - - ' - PARAGRAPHED: - description: 'Text broken into paragraphs. - - May be based on topic changes, speaker pauses, or semantic units. - - Improves human readability. - - ' - STRUCTURED: - description: 'Text with speaker labels and/or section markers. - - Format: "[Speaker] Text content" or similar. - - Enables speaker-specific analysis. - - ' - TIMESTAMPED: - description: 'Text with inline time markers. - - Format: "[00:30] Text content" or similar. - - Enables temporal navigation in text view. - - ' - VERBATIM: - description: 'Exact transcription including fillers, false starts, overlaps. - - "[um]", "[pause]", "[crosstalk]" markers. - - Used for linguistic analysis or legal transcripts. - - ' - CLEAN: - description: 'Edited for readability - fillers removed, grammar corrected. - - May diverge slightly from literal spoken content. - - Suitable for publication or accessibility. - - ' diff --git a/schemas/20251121/linkml/modules/classes/Warehouse.yaml b/schemas/20251121/linkml/modules/classes/Warehouse.yaml index 33da017590..cc401fd8ce 100644 --- a/schemas/20251121/linkml/modules/classes/Warehouse.yaml +++ b/schemas/20251121/linkml/modules/classes/Warehouse.yaml @@ -25,6 +25,7 @@ imports: - ../slots/was_generated_by - ./SpecificityAnnotation - ./TemplateSpecificityScores +- ../enums/WarehouseTypeEnum prefixes: linkml: https://w3id.org/linkml/ hc: https://nde.nl/ontology/hc/ @@ -345,19 +346,3 @@ classes: warehouse_security_level: BASIC warehouse_managed_by: Facilities Management description: Archive supplies warehouse -enums: - WarehouseTypeEnum: - description: Types of warehouse facilities - permissible_values: - EXHIBITION_EQUIPMENT: - description: Display cases, lighting, pedestals, exhibition furniture - PACKING_MATERIALS: - description: Crates, boxes, foam, tissue, packing supplies - FURNITURE: - description: Office furniture, event furniture - GENERAL_SUPPLIES: - description: Mixed operational supplies - TECHNICAL_EQUIPMENT: - description: AV equipment, tools, machinery - SIGNAGE: - description: Exhibition signage, wayfinding, banners diff --git a/schemas/20251121/linkml/modules/classes/WebPortalType.yaml b/schemas/20251121/linkml/modules/classes/WebPortalType.yaml index 21183d0778..26ace2ba3c 100644 --- a/schemas/20251121/linkml/modules/classes/WebPortalType.yaml +++ b/schemas/20251121/linkml/modules/classes/WebPortalType.yaml @@ -24,6 +24,7 @@ imports: - ../slots/typical_scope - ./SpecificityAnnotation - ./TemplateSpecificityScores +- ../enums/PortalCategoryEnum classes: WebPortalType: class_uri: skos:Concept @@ -110,25 +111,3 @@ classes: see_also: - https://pro.europeana.eu/page/edm-documentation - https://www.w3.org/2004/02/skos/ -enums: - PortalCategoryEnum: - description: High-level categories for web portal type classification - permissible_values: - GEOGRAPHIC_SCOPE: - description: Portals defined by territorial coverage (national, regional) - DOMAIN_SPECIFIC: - description: Portals focused on a specific heritage domain (archives, libraries, museums) - CROSS_DOMAIN: - description: Portals spanning multiple heritage sectors (LAM integration) - THEMATIC: - description: Portals with specialized subject focus (colonial, monastic, genealogical) - TECHNICAL_INFRASTRUCTURE: - description: Portals providing technical services (SPARQL, IIIF, OAI-PMH) - ACCESS_MODEL: - description: Portals defined by access approach (open access, research data) - RESEARCH_INFRASTRUCTURE: - description: Pan-European/international research infrastructure portals - REGISTRY: - description: Dataset registries tracking published heritage data (e.g., NDE Dataset Register) - LIFECYCLE: - description: Historical status portals (legacy, deprecated) diff --git a/schemas/20251121/linkml/modules/slots/hc_preset_uri.yaml b/schemas/20251121/linkml/modules/slots/hc_preset_uri.yaml index 9a9d4754aa..1f04221dcb 100644 --- a/schemas/20251121/linkml/modules/slots/hc_preset_uri.yaml +++ b/schemas/20251121/linkml/modules/slots/hc_preset_uri.yaml @@ -29,7 +29,7 @@ slots: - hc:ColdStorageEnvironment (-5°C, 30% RH) - hc:PhotographicMaterialsEnvironment (15°C, 35% RH) - hc:TextileStorageEnvironment (18°C, 50% RH, 50 lux) - range: uriorcurie + range: string slot_uri: skos:exactMatch examples: - value: hc:StandardArchiveEnvironment diff --git a/schemas/20251121/linkml/modules/slots/organizational_principle_uri.yaml b/schemas/20251121/linkml/modules/slots/organizational_principle_uri.yaml index 3832817d44..f232ec1e44 100644 --- a/schemas/20251121/linkml/modules/slots/organizational_principle_uri.yaml +++ b/schemas/20251121/linkml/modules/slots/organizational_principle_uri.yaml @@ -11,7 +11,7 @@ slots: organizational_principle_uri: slot_uri: hc:organizationalPrincipleUri description: URI reference to RiC-O organizational principle vocabulary term. - range: uriorcurie + range: string required: false comments: - rico:hasOrHadOrganizationalPrinciple does not exist in RiC-O - use hc namespace \ No newline at end of file diff --git a/schemas/20251121/linkml/modules/slots/post_type_activity_streams_type.yaml b/schemas/20251121/linkml/modules/slots/post_type_activity_streams_type.yaml index 6108606ae9..e128edaf66 100644 --- a/schemas/20251121/linkml/modules/slots/post_type_activity_streams_type.yaml +++ b/schemas/20251121/linkml/modules/slots/post_type_activity_streams_type.yaml @@ -11,5 +11,5 @@ slots: post_type_activity_streams_type: slot_uri: schema:additionalType description: Activity Streams 2.0 type mapping for this post type. - range: uriorcurie + range: string required: false \ No newline at end of file diff --git a/schemas/20251121/linkml/modules/slots/post_type_schema_org_type.yaml b/schemas/20251121/linkml/modules/slots/post_type_schema_org_type.yaml index cbfb39dfc9..b5268d0635 100644 --- a/schemas/20251121/linkml/modules/slots/post_type_schema_org_type.yaml +++ b/schemas/20251121/linkml/modules/slots/post_type_schema_org_type.yaml @@ -11,5 +11,5 @@ slots: post_type_schema_org_type: slot_uri: schema:additionalType description: Schema.org type mapping for this post type. - range: uriorcurie + range: string required: false \ No newline at end of file diff --git a/schemas/20251121/linkml/modules/slots/preservation_method.yaml b/schemas/20251121/linkml/modules/slots/preservation_method.yaml index 884bf43cbe..0674d18cb3 100644 --- a/schemas/20251121/linkml/modules/slots/preservation_method.yaml +++ b/schemas/20251121/linkml/modules/slots/preservation_method.yaml @@ -6,6 +6,7 @@ prefixes: hc: https://nde.nl/ontology/hc/ imports: - linkml:types +- ../enums/PreservationMethodEnum default_prefix: hc slots: preservation_method: diff --git a/schemas/20251121/linkml/modules/slots/protocol_name.yaml b/schemas/20251121/linkml/modules/slots/protocol_name.yaml new file mode 100644 index 0000000000..09de64d236 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/protocol_name.yaml @@ -0,0 +1,24 @@ +id: https://nde.nl/ontology/hc/slot/protocol_name +name: protocol_name_slot +title: Protocol Name Slot +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + dcterms: http://purl.org/dc/terms/ +imports: + - linkml:types +default_prefix: hc +slots: + protocol_name: + slot_uri: dcterms:conformsTo + description: | + Name of the protocol or standard this endpoint type implements. + + Dublin Core: conformsTo for standard compliance. + + Examples: + - "OAI-PMH" (Open Archives Initiative Protocol for Metadata Harvesting) + - "IIIF Image API" (International Image Interoperability Framework) + - "SPARQL" (SPARQL Protocol and RDF Query Language) + range: string + required: false diff --git a/schemas/20251121/linkml/modules/slots/protocol_version.yaml b/schemas/20251121/linkml/modules/slots/protocol_version.yaml new file mode 100644 index 0000000000..fc701cf4ab --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/protocol_version.yaml @@ -0,0 +1,24 @@ +id: https://nde.nl/ontology/hc/slot/protocol_version +name: protocol_version_slot +title: Protocol Version Slot +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ +imports: + - linkml:types +default_prefix: hc +slots: + protocol_version: + slot_uri: schema:version + description: | + Version of the protocol this endpoint type supports. + + Schema.org: version for protocol version. + + Examples: + - "2.0" (OAI-PMH) + - "3.0" (IIIF Image API) + - "1.1" (SPARQL) + range: string + required: false diff --git a/schemas/20251121/linkml/modules/slots/social_media_wikidata_id.yaml b/schemas/20251121/linkml/modules/slots/social_media_wikidata_id.yaml index e5b0e980df..23fc65f92f 100644 --- a/schemas/20251121/linkml/modules/slots/social_media_wikidata_id.yaml +++ b/schemas/20251121/linkml/modules/slots/social_media_wikidata_id.yaml @@ -11,5 +11,5 @@ slots: social_media_wikidata_id: slot_uri: schema:sameAs description: Wikidata entity ID for this social media platform. - range: uriorcurie + range: string required: false \ No newline at end of file diff --git a/schemas/20251121/linkml/modules/slots/specification_url.yaml b/schemas/20251121/linkml/modules/slots/specification_url.yaml new file mode 100644 index 0000000000..2e635f9d3b --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/specification_url.yaml @@ -0,0 +1,23 @@ +id: https://nde.nl/ontology/hc/slot/specification_url +name: specification_url_slot +title: Specification URL Slot +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ +imports: + - linkml:types +default_prefix: hc +slots: + specification_url: + slot_uri: schema:documentation + description: | + URL to the official specification document for this protocol. + + Schema.org: documentation for specification reference. + + Examples: + - "http://www.openarchives.org/OAI/openarchivesprotocol.html" (OAI-PMH) + - "https://iiif.io/api/image/3.0/" (IIIF Image API 3.0) + range: uri + required: false diff --git a/schemas/20251121/linkml/modules/slots/typical_http_methods.yaml b/schemas/20251121/linkml/modules/slots/typical_http_methods.yaml new file mode 100644 index 0000000000..0a6724cd0c --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/typical_http_methods.yaml @@ -0,0 +1,22 @@ +id: https://nde.nl/ontology/hc/slot/typical_http_methods +name: typical_http_methods_slot +title: Typical HTTP Methods Slot +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ +imports: + - linkml:types +default_prefix: hc +slots: + typical_http_methods: + slot_uri: schema:httpMethod + description: | + HTTP methods typically used by endpoints of this type. + + Schema.org: httpMethod for HTTP verb. + + Values: GET, POST, PUT, DELETE, HEAD, OPTIONS + range: string + multivalued: true + required: false diff --git a/schemas/20251121/linkml/modules/slots/typical_response_formats.yaml b/schemas/20251121/linkml/modules/slots/typical_response_formats.yaml new file mode 100644 index 0000000000..e2f071af45 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/typical_response_formats.yaml @@ -0,0 +1,24 @@ +id: https://nde.nl/ontology/hc/slot/typical_response_formats +name: typical_response_formats_slot +title: Typical Response Formats Slot +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + dcterms: http://purl.org/dc/terms/ +imports: + - linkml:types +default_prefix: hc +slots: + typical_response_formats: + slot_uri: dcterms:format + description: | + MIME types typically returned by endpoints of this type. + + Dublin Core: format for media types. + + Examples: + - ["application/xml"] (OAI-PMH - always XML) + - ["application/json", "application/ld+json"] (REST APIs) + range: string + multivalued: true + required: false diff --git a/schemas/20251121/linkml/modules/slots/wikidata_equivalent.yaml b/schemas/20251121/linkml/modules/slots/wikidata_equivalent.yaml index 5dab6eb6e9..9b266be65f 100644 --- a/schemas/20251121/linkml/modules/slots/wikidata_equivalent.yaml +++ b/schemas/20251121/linkml/modules/slots/wikidata_equivalent.yaml @@ -11,5 +11,5 @@ slots: wikidata_equivalent: slot_uri: skos:exactMatch description: Wikidata entity that is equivalent to this concept. - range: uriorcurie + range: string required: false \ No newline at end of file diff --git a/schemas/20251121/linkml/modules/slots/wikidata_mapping.yaml b/schemas/20251121/linkml/modules/slots/wikidata_mapping.yaml index 57b3bdd001..8acbf169f5 100644 --- a/schemas/20251121/linkml/modules/slots/wikidata_mapping.yaml +++ b/schemas/20251121/linkml/modules/slots/wikidata_mapping.yaml @@ -11,5 +11,5 @@ slots: wikidata_mapping: slot_uri: skos:closeMatch description: Wikidata entity that closely matches this concept. - range: uriorcurie + range: string required: false \ No newline at end of file