glam/schemas/20251121/linkml/modules/classes/DigitalPlatform.yaml
kempersc eff2f47f6f Add auxiliary enums and slots for digital platforms and physical locations
- Created AuxiliaryDigitalPlatformTypeEnum.yaml to classify types of secondary digital platforms.
- Created AuxiliaryPlaceTypeEnum.yaml to classify types of secondary physical locations.
- Added OrganizationBranchTypeEnum.yaml for formal organizational branches at auxiliary locations.
- Introduced auxiliary_places.yaml slot to link CustodianPlace to subordinate physical locations.
- Introduced auxiliary_platforms.yaml slot to link DigitalPlatform to subordinate digital properties.
- Added located_at.yaml slot to connect OrganizationalStructure to physical locations.
2025-11-25 15:06:43 +01:00

665 lines
23 KiB
YAML

# Heritage Digital Platform Class
# Represents digital systems and online presence of heritage custodians
id: https://nde.nl/ontology/hc/class/digital-platform
name: digital-platform-class
title: DigitalPlatform Class
imports:
- linkml:types
- ./Custodian
- ./CustodianObservation
- ./ReconstructionActivity
- ./DigitalPlatformType
- ./AuxiliaryDigitalPlatform
- ./TimeSpan
- ../slots/auxiliary_platforms
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/
classes:
DigitalPlatform:
class_uri: schema:WebSite
description: >-
Digital platform or online system associated with a heritage custodian.
**CRITICAL DISTINCTION**:
**DigitalPlatform CLASS** (this class):
- Represents the DIGITAL INFRASTRUCTURE of any custodian
- Used by PHYSICAL institutions (museums, archives, libraries) to represent their websites
- Used by DIGITAL-FIRST institutions to represent their primary platform
- Examples: Rijksmuseum website, museum online catalog, archive digital portal
**DigitalPlatformType** (custodian type):
- Classification for DIGITAL-FIRST custodians (online-only, no physical building)
- Example: Europeana (aggregation platform), Internet Archive (born-digital)
**Decision Rules**:
1. **Physical Institution with Website**:
- Custodian.custodian_type = MUSEUM/ARCHIVE/LIBRARY (not DIGITAL_PLATFORM)
- Custodian.digital_platform → DigitalPlatform instance (this class)
- Example: Rijksmuseum (MUSEUM) has Rijksstudio (DigitalPlatform)
2. **Digital-First Institution**:
- Custodian.custodian_type = DIGITAL_PLATFORM (DigitalPlatformType)
- Custodian.digital_platform → DigitalPlatform instance (primary platform)
- Example: Europeana (DIGITAL_PLATFORM) operates at https://europeana.eu/
**Relationship to Custodian Hub**:
DigitalPlatform is DIRECTLY connected to Custodian via refers_to_custodian,
just like CustodianPlace, CustodianName, and CustodianLegalStatus.
This allows modeling:
- Multiple digital platforms per custodian (website + API + mobile app)
- Platform evolution over time (temporal validity)
- Platform features and technical capabilities
- Access points for digital heritage
**Ontology Alignment**:
- Schema.org: schema:WebSite (primary), schema:WebApplication
- DCAT: dcat:Catalog (for aggregation platforms), dcat:DataService (for APIs)
- FOAF: foaf:homepage, foaf:Document
- CIDOC-CRM: crm:E73_Information_Object (digital objects)
**Example - Physical Museum with Digital Platform**:
```yaml
Custodian:
hc_id: "https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804"
preferred_label: "Rijksmuseum"
custodian_type: MUSEUM # Physical institution
digital_platform:
- platform_name: "Rijksmuseum Website"
homepage_web_address: "https://www.rijksmuseum.nl/"
platform_type: DISCOVERY_PORTAL
iiif_support: true
linked_data: true
```
**Example - Digital-First Platform**:
```yaml
Custodian:
hc_id: "https://nde.nl/ontology/hc/eu-europeana"
preferred_label: "Europeana"
custodian_type: DIGITAL_PLATFORM # Digital-first
digital_platform:
- platform_name: "Europeana Platform"
homepage_web_address: "https://www.europeana.eu/"
platform_type: AGGREGATION_PLATFORM
api_endpoint: "https://api.europeana.eu/"
iiif_support: true
linked_data: true
programming_languages: ["Java", "Python", "JavaScript"]
```
exact_mappings:
- schema:WebSite
- foaf:homepage
close_mappings:
- schema:WebApplication
- dcat:Catalog
- dcat:DataService
- crm:E73_Information_Object
related_mappings:
- foaf:Document
- schema:SoftwareApplication
- dcat:accessURL
slots:
- platform_id
- platform_name
- platform_type
- homepage_web_address
- collection_web_addresses
- inventory_web_addresses
- api_endpoint
- sparql_endpoint
- oai_pmh_endpoint
- programming_languages
- repository_software
- iiif_support
- linked_data
- metadata_standards
- access_restrictions
- auxiliary_platforms
- temporal_extent
- was_derived_from
- was_generated_by
- refers_to_custodian
slot_usage:
platform_id:
slot_uri: dcterms:identifier
description: >-
Unique identifier for this digital platform instance.
Format: URI following NDE Heritage Custodian ontology conventions.
range: uriorcurie
required: true
identifier: true
examples:
- value: "https://nde.nl/ontology/hc/platform/rijksmuseum-website"
description: "Platform ID for Rijksmuseum website"
platform_name:
slot_uri: schema:name
description: >-
Human-readable name for this digital platform.
Examples:
- "Rijksmuseum Website"
- "Europeana Platform"
- "National Archives Digital Repository"
- "Museum API"
range: string
required: true
examples:
- value: "Rijksmuseum Website"
description: "Main website name"
- value: "Europeana Platform"
description: "Aggregation platform name"
platform_type:
slot_uri: dcterms:type
description: >-
Type of digital platform using DigitalPlatformType classification.
Links to DigitalPlatformType enum with categories:
- DISCOVERY_PORTAL: Search/browse collections
- AGGREGATION_PLATFORM: Harvests from multiple institutions
- DIGITAL_REPOSITORY: Stores digital objects
- VIRTUAL_MUSEUM: Online exhibitions
- WEB_ARCHIVE: Archived web content
- API_SERVICE: Programmatic access
- MOBILE_APPLICATION: Mobile app
- LEARNING_MANAGEMENT: Educational platform
A platform may have multiple types (e.g., discovery portal + API service).
range: DigitalPlatformType
multivalued: true
required: true
examples:
- value: "DISCOVERY_PORTAL"
description: "Public search interface"
- value: "API_SERVICE"
description: "Developer API"
homepage_web_address:
slot_uri: foaf:homepage
description: >-
Primary homepage URL for this digital platform.
FOAF: homepage for main web address.
This is the entry point users access to interact with the platform.
Must be a valid HTTP/HTTPS URL.
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_addresses:
slot_uri: dcat:accessURL
description: >-
URLs for accessing digital collections on this platform.
DCAT: accessURL for collection access points.
Examples:
- "https://www.rijksmuseum.nl/nl/rijksstudio" (Rijksstudio collections)
- "https://www.europeana.eu/en/collections" (Europeana collections browse)
- "https://archive.org/details/texts" (Internet Archive text collections)
range: uri
multivalued: true
examples:
- value: "https://www.rijksmuseum.nl/nl/rijksstudio"
description: "Rijksstudio collection access"
inventory_web_addresses:
slot_uri: dcat:landingPage
description: >-
URLs for archival inventories, finding aids, or collection catalogs.
DCAT: landingPage for human-readable collection descriptions.
Examples:
- "https://www.nationaalarchief.nl/onderzoeken/index" (National Archives inventories)
- "https://archief.amsterdam/inventarissen" (Amsterdam City Archives inventories)
range: uri
multivalued: true
examples:
- value: "https://www.nationaalarchief.nl/onderzoeken/index"
description: "National Archives finding aids"
api_endpoint:
slot_uri: dcat:endpointURL
description: >-
API endpoint URL for programmatic access.
DCAT: endpointURL for API base address.
Examples:
- "https://api.europeana.eu/record/v2/" (Europeana REST API)
- "https://www.rijksmuseum.nl/api/" (Rijksmuseum API)
- "https://archive.org/advancedsearch.php" (Internet Archive API)
range: uri
examples:
- value: "https://api.europeana.eu/record/v2/"
description: "Europeana REST API endpoint"
sparql_endpoint:
slot_uri: dcat:endpointURL
description: >-
SPARQL endpoint URL for linked data queries.
DCAT: endpointURL for SPARQL service.
Indicates platform supports RDF triple queries.
Examples:
- "https://api.europeana.eu/sparql" (Europeana SPARQL)
- "https://data.collectienederland.nl/sparql" (Collectie Nederland SPARQL)
range: uri
examples:
- value: "https://api.europeana.eu/sparql"
description: "Europeana SPARQL endpoint"
oai_pmh_endpoint:
slot_uri: dcat:endpointURL
description: >-
OAI-PMH endpoint URL for metadata harvesting.
DCAT: endpointURL for OAI-PMH service.
Supports Open Archives Initiative Protocol for Metadata Harvesting.
Examples:
- "https://www.europeana.eu/oai" (Europeana OAI-PMH)
- "https://repository.example.edu/oai" (Institutional repository OAI-PMH)
range: uri
examples:
- value: "https://www.europeana.eu/oai"
description: "Europeana OAI-PMH endpoint"
programming_languages:
slot_uri: schema:programmingLanguage
description: >-
Programming languages used to build this platform.
Schema.org: programmingLanguage for software implementation.
Examples:
- "Java", "Python", "JavaScript", "Ruby", "PHP"
- "TypeScript", "Go", "Rust"
Useful for technical assessment and developer onboarding.
range: string
multivalued: true
examples:
- value: "Java"
description: "Primary backend language"
- value: "Python"
description: "Data processing language"
- value: "JavaScript"
description: "Frontend language"
repository_software:
slot_uri: schema:softwareVersion
description: >-
Repository or content management software powering this platform.
Schema.org: softwareVersion for software identification.
Examples:
- "DSpace 7.x"
- "Fedora Commons 6.x"
- "CollectiveAccess"
- "ResourceSpace"
- "Omeka S"
- "Custom-built"
range: string
examples:
- value: "DSpace 7.2"
description: "Digital repository software"
iiif_support:
slot_uri: dcterms:conformsTo
description: >-
Does this platform support IIIF (International Image Interoperability Framework)?
Dublin Core: conformsTo indicates standard compliance.
IIIF enables:
- Image API (deep zoom, tiles)
- Presentation API (manifests, viewers)
- Content Search API (full-text search)
- Authentication API (access control)
Boolean true/false or null if unknown.
range: boolean
examples:
- value: true
description: "Platform supports IIIF"
- value: false
description: "No IIIF support"
linked_data:
slot_uri: dcterms:conformsTo
description: >-
Does this platform provide linked open data (RDF)?
Dublin Core: conformsTo indicates LOD compliance.
Linked data features:
- RDF triples (Turtle, JSON-LD, N-Triples)
- SPARQL endpoint
- Dereferenceable URIs
- Linked to external vocabularies (Wikidata, Getty, etc.)
Boolean true/false or null if unknown.
range: boolean
examples:
- value: true
description: "Platform provides linked data"
- value: false
description: "No linked data"
metadata_standards:
slot_uri: dcterms:conformsTo
description: >-
Metadata standards implemented by this platform.
Dublin Core: conformsTo for standard compliance.
Examples:
- "Dublin Core"
- "MARC21"
- "EAD (Encoded Archival Description)"
- "LIDO"
- "MODS"
- "EDM (Europeana Data Model)"
- "Schema.org"
- "CIDOC-CRM"
range: string
multivalued: true
examples:
- value: "Dublin Core"
description: "Basic descriptive standard"
- value: "MARC21"
description: "Library catalog standard"
access_restrictions:
slot_uri: dcterms:accessRights
description: >-
Access restrictions or rights management for this platform.
Dublin Core: accessRights for access control.
Examples:
- "Public access"
- "Registration required"
- "Institutional access only"
- "API key required"
- "Subscription-based"
- "Restricted to researchers"
range: string
examples:
- value: "Public access"
description: "Open to all users"
- value: "API key required"
description: "Developer registration needed"
auxiliary_platforms:
slot_uri: dcterms:hasPart
description: >-
Subordinate or project-based digital platforms associated with this main DigitalPlatform.
**DCAT Alignment**:
`dcterms:hasPart` - Links main catalog/platform to sub-catalogs.
**Hierarchical Pattern - Mirrors CustodianName/CustodianAppellation**:
- DigitalPlatform (main entry point) → primary foaf:homepage
- AuxiliaryDigitalPlatform (project sites) → secondary platforms
Like CustodianAppellation provides alternative names for CustodianName,
AuxiliaryDigitalPlatform provides subordinate platforms for DigitalPlatform.
**Use Cases**:
1. **Project Websites**: Research project portals, grant-funded sites
2. **Exhibition Microsites**: Temporary exhibition portals, virtual tours
3. **APIs and Tools**: Developer APIs, collection browsers, mobile apps
4. **Legacy/Archived**: Previous website versions, deprecated systems
5. **Educational Portals**: Teacher resources, learning modules
**Example - Rijksmuseum**:
```yaml
DigitalPlatform:
platform_name: "Rijksmuseum Website"
homepage_web_address: "https://www.rijksmuseum.nl/"
auxiliary_platforms:
- platform_name: "Rijksstudio"
auxiliary_platform_type: PROJECT_WEBSITE
- platform_name: "Rijksmuseum Data API"
auxiliary_platform_type: API_ENDPOINT
- platform_name: "Night Watch Experience"
auxiliary_platform_type: EXHIBITION_MICROSITE
```
**Temporal Considerations**:
Auxiliary platforms often have finite lifespans:
- Exhibition microsite opens/closes with exhibition
- Project portals run during funding period
- Legacy platforms archived but accessible
Each AuxiliaryDigitalPlatform tracks archival_status and archived_at.
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:
slot_uri: crm:P4_has_time-span
description: >-
Temporal period during which this platform was operational.
CIDOC-CRM: P4_has_time-span for platform lifecycle.
Use when:
- Platform launched (begin_of_the_begin)
- Platform shut down (end_of_the_end)
- Platform migrated to new URL
For current platforms, leave end dates null.
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:
slot_uri: prov:wasDerivedFrom
description: >-
CustodianObservation(s) documenting this platform.
PROV-O: wasDerivedFrom for observation provenance.
Examples:
- Website screenshot observation
- API documentation observation
- Technical specification observation
range: CustodianObservation
multivalued: true
required: false
was_generated_by:
slot_uri: prov:wasGeneratedBy
description: >-
ReconstructionActivity that created this platform record.
PROV-O: wasGeneratedBy for generation activity.
If present: Platform record created through formal reconstruction
If null: Platform record extracted directly
range: ReconstructionActivity
required: false
refers_to_custodian:
slot_uri: dcterms:references
description: >-
The Custodian hub that operates this digital platform (REQUIRED).
Links the digital platform to the custodian it represents.
Dublin Core: references for entity reference.
range: Custodian
required: true
examples:
- value: "https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804"
description: "Rijksmuseum custodian hub"
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"
- "NEW: auxiliary_platforms links to subordinate 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/"
examples:
- value:
platform_id: "https://nde.nl/ontology/hc/platform/rijksmuseum-website"
platform_name: "Rijksmuseum Website"
platform_type: ["DISCOVERY_PORTAL"]
homepage_web_address: "https://www.rijksmuseum.nl/"
collection_web_addresses:
- "https://www.rijksmuseum.nl/nl/rijksstudio"
api_endpoint: "https://www.rijksmuseum.nl/api/"
iiif_support: true
linked_data: true
metadata_standards:
- "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: ["AGGREGATION_PLATFORM", "API_SERVICE"]
homepage_web_address: "https://www.europeana.eu/"
collection_web_addresses:
- "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_languages: ["Java", "Python", "JavaScript"]
iiif_support: true
linked_data: true
metadata_standards:
- "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)"
slots:
platform_id:
description: Unique identifier for digital platform
range: uriorcurie
platform_name:
description: Human-readable platform name
range: string
platform_type:
description: Type of digital platform
range: DigitalPlatformType
homepage_web_address:
description: Primary homepage URL
range: uri
collection_web_addresses:
description: Collection access URLs
range: uri
inventory_web_addresses:
description: Inventory/finding aid URLs
range: uri
api_endpoint:
description: API endpoint URL
range: uri
sparql_endpoint:
description: SPARQL endpoint URL
range: uri
oai_pmh_endpoint:
description: OAI-PMH endpoint URL
range: uri
programming_languages:
description: Programming languages used
range: string
repository_software:
description: Repository software used
range: string
iiif_support:
description: IIIF support flag
range: boolean
linked_data:
description: Linked open data flag
range: boolean
metadata_standards:
description: Metadata standards implemented
range: string
access_restrictions:
description: Access restrictions
range: string