id: https://nde.nl/ontology/hc/class/digital-platform name: digital_platform_class title: DigitalPlatform Class imports: - linkml:types - ./Custodian - ./CustodianObservation - ./ReconstructionActivity - ./DigitalPlatformType - ./DigitalPlatformTypes - ./AuxiliaryDigitalPlatform - ./TimeSpan - ./CollectionManagementSystem - ./DataServiceEndpoint - ./OAIPMHEndpoint - ./SearchAPI - ./METSAPI - ./DataServiceEndpointTypes # REMOVED - migrated to has_or_had_auxiliary_entities with range AuxiliaryDigitalPlatform (Rule 53) # - ../slots/auxiliary_platforms - ../slots/has_or_had_auxiliary_entities - ../slots/has_or_had_powered_by_cm - ../slots/has_or_had_access_restriction - ../slots/preservation_level - ../slots/has_or_had_api_endpoint - ../slots/metadata_standard - ../slots/sparql_endpoint - ../slots/oai_pmh_endpoint - ../slots/platform_type - ../slots/platform_name - ../slots/storage_location - ../slots/serves_finding_aid - ./ReconstructedEntity - ../slots/has_or_had_data_service_endpoint - ../slots/collection_web_address - ../slots/fixity_check_date - ../slots/homepage_web_address - ../slots/iiif_support - ../slots/inventory_web_address - ../slots/linked_data - ../slots/platform_id - ../slots/programming_language - ../slots/refers_to_custodian - ../slots/repository_software - ../slots/specificity_annotation - ../slots/template_specificity - ../slots/temporal_extent - ../slots/was_derived_from - ../slots/was_generated_by - ./SpecificityAnnotation - ./TemplateSpecificityScores prefixes: linkml: https://w3id.org/linkml/ hc: https://nde.nl/ontology/hc/ schema: http://schema.org/ foaf: http://xmlns.com/foaf/0.1/ dcat: http://www.w3.org/ns/dcat# dcterms: http://purl.org/dc/terms/ crm: http://www.cidoc-crm.org/cidoc-crm/ doap: http://usefulinc.com/ns/doap# premis: http://www.loc.gov/premis/rdf/v3/ prov: http://www.w3.org/ns/prov# classes: DigitalPlatform: is_a: ReconstructedEntity class_uri: schema:WebSite description: "Digital platform or online system associated with a heritage custodian.\n\n**CRITICAL DISTINCTION**:\n\n\ **DigitalPlatform CLASS** (this class):\n- Represents the DIGITAL INFRASTRUCTURE of any custodian\n- Used by PHYSICAL\ \ institutions (museums, archives, libraries) to represent their websites\n- Used by DIGITAL-FIRST institutions to represent\ \ their primary platform\n- Examples: Rijksmuseum website, museum online catalog, archive digital portal\n\n**DigitalPlatformType**\ \ (custodian type):\n- Classification for DIGITAL-FIRST custodians (online-only, no physical building)\n- Example: Europeana\ \ (aggregation platform), Internet Archive (born-digital)\n\n**Decision Rules**:\n\n1. **Physical Institution with Website**:\n\ \ - Custodian.custodian_type = MUSEUM/ARCHIVE/LIBRARY (not DIGITAL_PLATFORM)\n - Custodian.digital_platform → DigitalPlatform\ \ instance (this class)\n - Example: Rijksmuseum (MUSEUM) has Rijksstudio (DigitalPlatform)\n\n2. **Digital-First\ \ Institution**:\n - Custodian.custodian_type = DIGITAL_PLATFORM (DigitalPlatformType)\n - Custodian.digital_platform\ \ → DigitalPlatform instance (primary platform)\n - Example: Europeana (DIGITAL_PLATFORM) operates at https://europeana.eu/\n\ \n**Relationship to Custodian Hub**:\n\nDigitalPlatform is DIRECTLY connected to Custodian via refers_to_custodian,\n\ just like CustodianPlace, CustodianName, and CustodianLegalStatus.\n\nThis allows modeling:\n- Multiple digital platforms\ \ per custodian (website + API + mobile app)\n- Platform evolution over time (temporal validity)\n- Platform features\ \ and technical capabilities\n- Access points for digital heritage\n\n- Schema.org: schema:WebSite (primary), schema:WebApplication\n\ - DCAT: dcat:Catalog (for aggregation platforms), dcat:DataService (for APIs)\n- FOAF: foaf:homepage, foaf:Document\n\ - CIDOC-CRM: crm:E73_Information_Object (digital objects)\n\n**Example - Physical Museum with Digital Platform**:\n\ ```yaml\nCustodian:\n hc_id: \"https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804\"\n preferred_label: \"Rijksmuseum\"\ \n custodian_type: MUSEUM # Physical institution\n digital_platform:\n - platform_name: \"Rijksmuseum Website\"\ \n homepage_web_address: \"https://www.rijksmuseum.nl/\"\n platform_type: DISCOVERY_PORTAL\n iiif_support:\ \ true\n linked_data: true\n```\n\n**Example - Digital-First Platform**:\n```yaml\nCustodian:\n hc_id: \"https://nde.nl/ontology/hc/eu-europeana\"\ \n preferred_label: \"Europeana\"\n custodian_type: DIGITAL_PLATFORM # Digital-first\n digital_platform:\n -\ \ platform_name: \"Europeana Platform\"\n homepage_web_address: \"https://www.europeana.eu/\"\n platform_type:\ \ AGGREGATION_PLATFORM\n api_endpoint: \"https://api.europeana.eu/\"\n iiif_support: true\n linked_data:\ \ true\n programming_languages: [\"Java\", \"Python\", \"JavaScript\"]\n```\n" exact_mappings: - schema:WebSite - foaf:homepage close_mappings: - schema:WebApplication - dcat:Catalog - dcat:DataService - crm:E73_Information_Object - doap:Project - premis:IntellectualEntity related_mappings: - foaf:Document - schema:SoftwareApplication - dcat:accessURL slots: - has_or_had_access_restriction - has_or_had_api_endpoint # MIGRATED from auxiliary_platforms to has_or_had_auxiliary_entities (Rule 53) # - auxiliary_platforms - has_or_had_auxiliary_entities - collection_web_address - has_or_had_data_service_endpoint - fixity_check_date - homepage_web_address - iiif_support - inventory_web_address - linked_data - metadata_standard - oai_pmh_endpoint - platform_id - platform_name - platform_type - has_or_had_powered_by_cm - preservation_level - programming_language - refers_to_custodian - repository_software - serves_finding_aid - sparql_endpoint - specificity_annotation - storage_location - template_specificity - temporal_extent - was_derived_from - was_generated_by slot_usage: platform_id: range: uriorcurie required: true identifier: true examples: - value: https://nde.nl/ontology/hc/platform/rijksmuseum-website description: Platform ID for Rijksmuseum website platform_name: range: string required: true examples: - value: Rijksmuseum Website description: Main website name - value: Europeana Platform description: Aggregation platform name platform_type: range: DigitalPlatformType multivalued: true required: false examples: - value: DigitalArchivePlatform description: Digital archive platform (wd:Q1224984) - value: AggregationPlatform description: Aggregation platform (wd:Q7894) homepage_web_address: range: uri required: true pattern: ^https?:// examples: - value: https://www.rijksmuseum.nl/ description: Rijksmuseum homepage - value: https://www.europeana.eu/ description: Europeana homepage collection_web_address: range: uri multivalued: true examples: - value: https://www.rijksmuseum.nl/nl/rijksstudio description: Rijksstudio collection access inventory_web_address: range: uri multivalued: true examples: - value: https://www.nationaalarchief.nl/onderzoeken/index description: National Archives finding aids has_or_had_api_endpoint: range: uri examples: - value: https://api.europeana.eu/record/v2/ description: Europeana REST API endpoint sparql_endpoint: range: uri examples: - value: https://api.europeana.eu/sparql description: Europeana SPARQL endpoint oai_pmh_endpoint: range: uri examples: - value: https://www.europeana.eu/oai description: Europeana OAI-PMH endpoint programming_language: range: string multivalued: true examples: - value: Java description: Primary backend language - value: Python description: Data processing language - value: JavaScript description: Frontend language repository_software: range: string examples: - value: DSpace 7.2 description: Digital repository software has_or_had_powered_by_cm: range: CollectionManagementSystem multivalued: true required: false examples: - value: https://nde.nl/ontology/hc/cms/rijksmuseum-adlib description: Platform powered by Rijksmuseum's Adlib CMS iiif_support: range: boolean examples: - value: true description: Platform supports IIIF - value: false description: No IIIF support linked_data: range: boolean examples: - value: true description: Platform provides linked data - value: false description: No linked data metadata_standard: range: string multivalued: true examples: - value: Dublin Core description: Basic descriptive standard - value: MARC21 description: Library catalog standard has_or_had_access_restriction: range: string examples: - value: Public access description: Open to all users - value: API key required description: Developer registration needed # MIGRATED from auxiliary_platforms / has_auxiliary_platform (Rule 53) has_or_had_auxiliary_entities: description: | MIGRATED from auxiliary_platforms (Rule 53). Subordinate or auxiliary digital platforms associated with this platform. range: AuxiliaryDigitalPlatform multivalued: true inlined_as_list: true required: false examples: - value: - platform_name: Rijksstudio auxiliary_platform_type: PROJECT_WEBSITE platform_url: https://www.rijksmuseum.nl/nl/rijksstudio - platform_name: Rijksmuseum Data API auxiliary_platform_type: API_ENDPOINT platform_url: https://data.rijksmuseum.nl/ description: Rijksmuseum subordinate digital platforms temporal_extent: range: TimeSpan examples: - value: begin_of_the_begin: '2008-11-20' end_of_the_begin: '2008-11-20' description: Europeana launched November 20, 2008 was_derived_from: range: CustodianObservation multivalued: true required: false was_generated_by: range: ReconstructionActivity required: false refers_to_custodian: range: Custodian required: true examples: - value: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804 description: Rijksmuseum custodian hub preservation_level: range: string required: false examples: - value: full_preservation description: Complete digital preservation with format migration - value: bit_preservation description: Bit-level integrity preservation only storage_location: range: string required: false examples: - value: AWS S3 eu-west-1 description: Cloud storage in EU West region - value: DANS Data Archive description: Dutch trusted digital repository fixity_check_date: range: date required: false examples: - value: '2025-11-15' description: Last fixity check date serves_finding_aid: range: uriorcurie multivalued: true inlined_as_list: true required: false examples: - value: https://nde.nl/ontology/hc/finding-aid/na/voc-inventory description: VOC Archives inventory finding aid - value: https://nde.nl/ontology/hc/finding-aid/rm/paintings-catalogue description: Rijksmuseum paintings catalogue has_or_had_data_service_endpoint: range: DataServiceEndpoint multivalued: true inlined_as_list: true required: false examples: - value: - endpoint_id: https://nde.nl/ontology/hc/endpoint/na-oai-pmh endpoint_name: Nationaal Archief OAI-PMH endpoint_url: https://www.nationaalarchief.nl/onderzoeken/oai-pmh protocol: OAI_PMH status: ACTIVE description: Nationaal Archief data service endpoints comments: - DigitalPlatform is DIRECTLY linked to Custodian hub (not a subclass of CustodianObservation) - Used by BOTH physical institutions (website) and digital-first custodians (primary platform) - 'Multivalued on Custodian: one custodian can have multiple platforms (website + API + mobile app)' - Temporal validity tracks platform lifecycle (launch, shutdown, migration) - IIIF and linked data flags enable discovery of interoperable platforms - 'MIGRATED: auxiliary_platforms → has_or_had_auxiliary_entities for AuxiliaryDigitalPlatform sites (project portals, microsites, APIs)' - Hierarchical pattern mirrors CustodianName → CustodianAppellation relationship see_also: - https://schema.org/WebSite - https://www.w3.org/ns/dcat - https://iiif.io/ - http://usefulinc.com/ns/doap# - https://www.loc.gov/standards/premis/ examples: - value: platform_id: https://nde.nl/ontology/hc/platform/rijksmuseum-website platform_name: Rijksmuseum Website platform_type: - DiscoveryPortal homepage_web_address: https://www.rijksmuseum.nl/ collection_web_address: - https://www.rijksmuseum.nl/nl/rijksstudio api_endpoint: https://www.rijksmuseum.nl/api/ iiif_support: true linked_data: true metadata_standard: - Dublin Core - LIDO access_restrictions: Public access, API key required for API refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804 description: Rijksmuseum digital platform (physical museum with website) - value: platform_id: https://nde.nl/ontology/hc/platform/europeana platform_name: Europeana Platform platform_type: - AggregationPlatform - APIService homepage_web_address: https://www.europeana.eu/ collection_web_address: - https://www.europeana.eu/en/collections api_endpoint: https://api.europeana.eu/record/v2/ sparql_endpoint: https://api.europeana.eu/sparql oai_pmh_endpoint: https://www.europeana.eu/oai programming_language: - Java - Python - JavaScript iiif_support: true linked_data: true metadata_standard: - EDM (Europeana Data Model) - Dublin Core - LIDO - EAD access_restrictions: Public access, API key required for API temporal_extent: begin_of_the_begin: '2008-11-20' end_of_the_begin: '2008-11-20' refers_to_custodian: https://nde.nl/ontology/hc/eu-europeana description: Europeana platform (digital-first aggregation platform)