All checks were successful
Deploy Frontend / build-and-deploy (push) Successful in 3m57s
- Remove inline slot definitions from 144 class files - Create 7 new centralized slot files in modules/slots/: - custodian_type_broader.yaml - custodian_type_narrower.yaml - custodian_type_related.yaml - definition.yaml - finding_aid_access_restriction.yaml - finding_aid_description.yaml - finding_aid_temporal_coverage.yaml - Add centralize_inline_slots.py automation script - Update manifest with new timestamp Rule 48: Class files must NOT define inline slots - all slots must be imported from modules/slots/ directory. Note: Pre-existing IdentifierFormat duplicate class definition (in Standard.yaml and IdentifierFormat.yaml) not addressed in this commit - requires separate schema refactor.
635 lines
20 KiB
YAML
635 lines
20 KiB
YAML
id: https://nde.nl/ontology/hc/class/InternetOfThings
|
|
name: internet_of_things_class
|
|
title: InternetOfThings Class
|
|
imports:
|
|
- linkml:types
|
|
- ./Custodian
|
|
- ./CustodianObservation
|
|
- ./ReconstructionActivity
|
|
- ./TimeSpan
|
|
- ./CustodianPlace
|
|
- ../enums/DigitalPresenceTypeEnum
|
|
- ../slots/has_or_had_api_endpoint
|
|
- ./ReconstructedEntity
|
|
- ../slots/connectivity_type
|
|
- ../slots/coverage_area
|
|
- ../slots/data_format
|
|
- ../slots/decommission_date
|
|
- ../slots/device_count
|
|
- ../slots/device_id
|
|
- ../slots/device_manufacturer
|
|
- ../slots/device_model
|
|
- ../slots/device_name
|
|
- ../slots/device_type
|
|
- ../slots/installation_date
|
|
- ../slots/installed_at_place
|
|
- ../slots/maintenance_schedule
|
|
- ../slots/operational_status
|
|
- ../slots/power_source
|
|
- ../slots/publishes_to
|
|
- ../slots/purpose
|
|
- ../slots/refers_to_custodian
|
|
- ../slots/specificity_annotation
|
|
- ../slots/technical_specification
|
|
- ../slots/template_specificity
|
|
- ../slots/temporal_extent
|
|
- ../slots/update_frequency
|
|
- ../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/
|
|
sosa: http://www.w3.org/ns/sosa/
|
|
ssn: http://www.w3.org/ns/ssn/
|
|
dcterms: http://purl.org/dc/terms/
|
|
prov: http://www.w3.org/ns/prov#
|
|
crm: http://www.cidoc-crm.org/cidoc-crm/
|
|
geosparql: http://www.opengis.net/ont/geosparql#
|
|
wd: http://www.wikidata.org/entity/
|
|
default_prefix: hc
|
|
classes:
|
|
InternetOfThings:
|
|
is_a: ReconstructedEntity
|
|
class_uri: sosa:Platform
|
|
description: "Physical device with digital connectivity used by a heritage custodian\nto enhance visitor experience, monitor\
|
|
\ conditions, or provide services.\n\n**WHY IOT CLASS?**\n\nModern heritage institutions increasingly deploy IoT devices:\n\
|
|
- **Beacons**: Location-based triggers for mobile apps\n- **Kiosks**: Interactive information terminals\n- **Sensors**:\
|
|
\ Environmental monitoring (climate, light, visitor counts)\n- **Displays**: Digital signage, interactive screens\n\n\
|
|
These are a form of DIGITAL PRESENCE that bridges physical and digital worlds.\n\n**RELATIONSHIP TO OTHER DIGITAL PRESENCE\
|
|
\ TYPES**:\n\n```\nDigital Presence Hierarchy:\n\nDigitalPlatform (PRIMARY - websites)\n │\n └── AuxiliaryDigitalPlatform\
|
|
\ (SECONDARY - project sites)\n\nSocialMediaProfile (THIRD-PARTY - external platforms)\n\nInternetOfThings (PHYSICAL-DIGITAL\
|
|
\ - in-venue devices) ← THIS CLASS\n```\n\n**SOSA/SSN ALIGNMENT**:\n\nW3C Semantic Sensor Network (SSN) and Sensor,\
|
|
\ Observation, Sample, \nand Actuator (SOSA) ontologies provide the semantic foundation:\n\n- `sosa:Platform` - Entity\
|
|
\ hosting sensors/systems (building, room, beacon)\n- `sosa:Sensor` - Device that observes properties\n- `sosa:Observation`\
|
|
\ - Act of observing a property\n- `ssn:System` - System comprising multiple components\n\n**USE CASES**:\n\n1. **Visitor\
|
|
\ Experience Enhancement**:\n - Bluetooth beacons trigger app content near artworks\n - NFC tags on object labels\
|
|
\ for detailed information\n - Interactive kiosks for self-guided exploration\n \n2. **Environmental Monitoring**:\n\
|
|
\ - Climate sensors (temperature, humidity) for conservation\n - Light level sensors to protect sensitive materials\n\
|
|
\ - Air quality monitoring in storage areas\n \n3. **Visitor Analytics**:\n - People counters at entrances\n \
|
|
\ - Heat maps of gallery traffic\n - Dwell time sensors near exhibits\n \n4. **Digital Signage**:\n - Rotating\
|
|
\ information displays\n - Exhibition schedules\n - Wayfinding screens\n\n**EXAMPLE - Museum with IoT Devices**:\n\
|
|
\n```yaml\nCustodian:\n hc_id: \"https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804\"\n preferred_label: \"Rijksmuseum\"\
|
|
\n iot_devices:\n - device_id: \".../iot/rijksmuseum-beacon-gallery-1\"\n device_name: \"Gallery of Honour\
|
|
\ Beacon Network\"\n device_type: IOT_BEACON\n device_count: 24\n coverage_area: \"Gallery of Honour\
|
|
\ (main wing)\"\n purpose: \"Proximity triggers for mobile app content\"\n \n - device_id: \".../iot/rijksmuseum-climate-monitor\"\
|
|
\n device_name: \"Conservation Climate Monitoring\"\n device_type: IOT_SENSOR\n device_count: 150\n \
|
|
\ coverage_area: \"All galleries and storage\"\n purpose: \"Temperature and humidity monitoring for preservation\"\
|
|
\n publishes_to: \"https://dashboard.rijksmuseum.nl/climate\"\n```\n\n**TEMPORAL CONSIDERATIONS**:\n\nIoT devices\
|
|
\ have installation/decommissioning dates:\n- Beacons may be temporary for exhibitions\n- Sensors may be upgraded/replaced\n\
|
|
- Kiosks may be moved between venues\n\n**NOT INCLUDED**:\n\n- Smartphones/tablets (user devices, not custodian-owned)\n\
|
|
- Standard IT infrastructure (servers, networking)\n- Security cameras (unless part of heritage experience)\n"
|
|
exact_mappings:
|
|
- sosa:Platform
|
|
- ssn:System
|
|
close_mappings:
|
|
- schema:Thing
|
|
- crm:E22_Human-Made_Object
|
|
related_mappings:
|
|
- sosa:Sensor
|
|
- sosa:Actuator
|
|
- schema:Product
|
|
slots:
|
|
- has_or_had_api_endpoint
|
|
- connectivity_type
|
|
- coverage_area
|
|
- data_format
|
|
- decommission_date
|
|
- device_count
|
|
- device_id
|
|
- device_manufacturer
|
|
- device_model
|
|
- device_name
|
|
- device_type
|
|
- installation_date
|
|
- installed_at_place
|
|
- maintenance_schedule
|
|
- operational_status
|
|
- power_source
|
|
- publishes_to
|
|
- purpose
|
|
- refers_to_custodian
|
|
- specificity_annotation
|
|
- technical_specification
|
|
- template_specificity
|
|
- temporal_extent
|
|
- update_frequency
|
|
- was_derived_from
|
|
- was_generated_by
|
|
slot_usage:
|
|
device_id:
|
|
slot_uri: dcterms:identifier
|
|
description: 'Unique identifier for this IoT device or device network.
|
|
|
|
Format: URI following NDE Heritage Custodian ontology conventions.
|
|
|
|
'
|
|
range: uriorcurie
|
|
required: true
|
|
identifier: true
|
|
examples:
|
|
- value: https://nde.nl/ontology/hc/iot/rijksmuseum-beacon-gallery-1
|
|
description: Beacon network in Gallery of Honour
|
|
device_name:
|
|
slot_uri: schema:name
|
|
description: 'Human-readable name for this IoT device or network.
|
|
|
|
|
|
Should be descriptive of location and purpose.
|
|
|
|
'
|
|
range: string
|
|
required: true
|
|
examples:
|
|
- value: Gallery of Honour Beacon Network
|
|
description: Beacon network name
|
|
- value: Depot Climate Monitoring System
|
|
description: Sensor network name
|
|
device_type:
|
|
slot_uri: dcterms:type
|
|
description: 'Type of IoT device using DigitalPresenceTypeEnum IoT values.
|
|
|
|
|
|
Types:
|
|
|
|
- IOT_BEACON: Bluetooth/NFC beacons for location services
|
|
|
|
- IOT_KIOSK: Interactive terminals/touch screens
|
|
|
|
- IOT_SENSOR: Environmental/monitoring sensors
|
|
|
|
|
|
Additional device categories may be added.
|
|
|
|
'
|
|
range: DigitalPresenceTypeEnum
|
|
required: true
|
|
examples:
|
|
- value: IOT_BEACON
|
|
description: Bluetooth beacon
|
|
- value: IOT_SENSOR
|
|
description: Environmental sensor
|
|
- value: IOT_KIOSK
|
|
description: Interactive kiosk
|
|
device_model:
|
|
slot_uri: schema:model
|
|
description: 'Model name/number of the device.
|
|
|
|
|
|
Schema.org: model for product model.
|
|
|
|
|
|
Examples:
|
|
|
|
- "Estimote Proximity Beacon"
|
|
|
|
- "Samsung Kiosk 24"
|
|
|
|
- "Sensirion SHT45 Climate Sensor"
|
|
|
|
'
|
|
range: string
|
|
examples:
|
|
- value: Estimote Proximity Beacon
|
|
description: Beacon model
|
|
device_manufacturer:
|
|
slot_uri: schema:manufacturer
|
|
description: 'Manufacturer of the IoT device.
|
|
|
|
|
|
Schema.org: manufacturer for producer.
|
|
|
|
'
|
|
range: string
|
|
examples:
|
|
- value: Estimote
|
|
description: Beacon manufacturer
|
|
- value: Samsung
|
|
description: Kiosk manufacturer
|
|
device_count:
|
|
slot_uri: schema:numberOfItems
|
|
description: 'Number of devices in this device group/network.
|
|
|
|
|
|
For individual devices, value is 1.
|
|
|
|
For beacon networks or sensor arrays, value is total count.
|
|
|
|
'
|
|
range: integer
|
|
minimum_value: 1
|
|
examples:
|
|
- value: 24
|
|
description: 24 beacons in gallery network
|
|
- value: 150
|
|
description: 150 climate sensors across facility
|
|
- value: 1
|
|
description: Single information kiosk
|
|
coverage_area:
|
|
slot_uri: schema:areaServed
|
|
description: 'Physical area covered by this device or device network.
|
|
|
|
|
|
Schema.org: areaServed for geographic coverage.
|
|
|
|
|
|
Can be room names, zones, or descriptions.
|
|
|
|
'
|
|
range: string
|
|
examples:
|
|
- value: Gallery of Honour (main wing)
|
|
description: Specific gallery
|
|
- value: All galleries and storage areas
|
|
description: Facility-wide
|
|
- value: Main entrance lobby
|
|
description: Specific location
|
|
purpose:
|
|
slot_uri: dcterms:description
|
|
description: 'Purpose and use case for this IoT device/network.
|
|
|
|
|
|
Dublin Core: description for purpose statement.
|
|
|
|
'
|
|
range: string
|
|
required: true
|
|
examples:
|
|
- value: Proximity triggers for mobile app content
|
|
description: Beacon purpose
|
|
- value: Temperature and humidity monitoring for preservation
|
|
description: Climate sensor purpose
|
|
- value: Self-service collection search for visitors
|
|
description: Kiosk purpose
|
|
technical_specification:
|
|
slot_uri: schema:description
|
|
description: 'Technical details about the device.
|
|
|
|
|
|
May include:
|
|
|
|
- Transmission range (for beacons)
|
|
|
|
- Measurement accuracy (for sensors)
|
|
|
|
- Screen resolution (for kiosks)
|
|
|
|
- Battery life
|
|
|
|
- Operating temperature range
|
|
|
|
'
|
|
range: string
|
|
examples:
|
|
- value: BLE 5.0, 50m range, 5-year battery, IP67 rated
|
|
description: Beacon specifications
|
|
connectivity_type:
|
|
slot_uri: schema:potentialAction
|
|
description: 'Type of connectivity used by the device.
|
|
|
|
|
|
Values:
|
|
|
|
- BLUETOOTH_LE: Bluetooth Low Energy (beacons)
|
|
|
|
- WIFI: WiFi network connection
|
|
|
|
- ETHERNET: Wired network connection
|
|
|
|
- LORAWAN: Long-range low-power IoT network
|
|
|
|
- NFC: Near-field communication
|
|
|
|
- ZIGBEE: Zigbee mesh network
|
|
|
|
- CELLULAR: 4G/5G cellular connection
|
|
|
|
'
|
|
range: string
|
|
multivalued: true
|
|
examples:
|
|
- value: BLUETOOTH_LE
|
|
description: Beacon connectivity
|
|
- value: WIFI
|
|
description: Kiosk connectivity
|
|
power_source:
|
|
slot_uri: schema:fuelType
|
|
description: 'Power source for the device.
|
|
|
|
|
|
Values:
|
|
|
|
- BATTERY: Battery-powered
|
|
|
|
- MAINS: Mains electricity
|
|
|
|
- POE: Power over Ethernet
|
|
|
|
- SOLAR: Solar-powered
|
|
|
|
- USB: USB-powered
|
|
|
|
'
|
|
range: string
|
|
examples:
|
|
- value: BATTERY
|
|
description: Battery-powered beacon
|
|
- value: MAINS
|
|
description: Mains-powered kiosk
|
|
publishes_to:
|
|
slot_uri: dcat:endpointURL
|
|
description: 'URL where device data is published (dashboard, API).
|
|
|
|
|
|
DCAT: endpointURL for data publication endpoint.
|
|
|
|
|
|
For sensors, this may be a monitoring dashboard.
|
|
|
|
For beacons, this may be analytics platform.
|
|
|
|
'
|
|
range: uri
|
|
examples:
|
|
- value: https://dashboard.museum.nl/climate
|
|
description: Climate monitoring dashboard
|
|
- value: https://analytics.museum.nl/beacons
|
|
description: Beacon analytics platform
|
|
has_or_had_api_endpoint:
|
|
slot_uri: dcat:endpointURL
|
|
description: 'API endpoint for programmatic access to device data.
|
|
|
|
|
|
DCAT: endpointURL for API access.
|
|
|
|
'
|
|
range: uri
|
|
examples:
|
|
- value: https://api.museum.nl/sensors/v1/
|
|
description: Sensor data API
|
|
data_format:
|
|
slot_uri: dcterms:format
|
|
description: 'Format of data produced by the device.
|
|
|
|
|
|
Dublin Core: format for data format.
|
|
|
|
|
|
Examples:
|
|
|
|
- "JSON"
|
|
|
|
- "SensorML"
|
|
|
|
- "CSV"
|
|
|
|
- "MQTT payload"
|
|
|
|
'
|
|
range: string
|
|
examples:
|
|
- value: JSON
|
|
description: JSON data format
|
|
update_frequency:
|
|
slot_uri: dcterms:accrualPeriodicity
|
|
description: 'How often the device sends data/updates.
|
|
|
|
|
|
Dublin Core: accrualPeriodicity for frequency.
|
|
|
|
|
|
Examples:
|
|
|
|
- "Every 5 minutes"
|
|
|
|
- "On proximity trigger"
|
|
|
|
- "Hourly"
|
|
|
|
- "Real-time"
|
|
|
|
'
|
|
range: string
|
|
examples:
|
|
- value: Every 5 minutes
|
|
description: Climate sensor update frequency
|
|
- value: On proximity trigger
|
|
description: Beacon trigger frequency
|
|
installed_at_place:
|
|
slot_uri: schema:location
|
|
description: 'CustodianPlace where this device is installed.
|
|
|
|
|
|
Links to CustodianPlace for precise location.
|
|
|
|
|
|
Schema.org: location for physical location.
|
|
|
|
'
|
|
range: CustodianPlace
|
|
examples:
|
|
- value: https://nde.nl/ontology/hc/place/rijksmuseum-gallery-of-honour
|
|
description: Gallery location
|
|
installation_date:
|
|
slot_uri: schema:dateCreated
|
|
description: 'Date when the device was installed.
|
|
|
|
|
|
Schema.org: dateCreated for installation date.
|
|
|
|
'
|
|
range: date
|
|
examples:
|
|
- value: '2023-06-15'
|
|
description: Installation date
|
|
decommission_date:
|
|
slot_uri: schema:expires
|
|
description: 'Date when the device was or will be decommissioned.
|
|
|
|
|
|
NULL if still operational.
|
|
|
|
|
|
Schema.org: expires for end date.
|
|
|
|
'
|
|
range: date
|
|
examples:
|
|
- value: '2028-12-31'
|
|
description: Planned decommission date
|
|
temporal_extent:
|
|
slot_uri: crm:P4_has_time-span
|
|
description: 'Temporal period during which this device is operational.
|
|
|
|
|
|
CIDOC-CRM: P4_has_time-span for fuzzy temporal boundaries.
|
|
|
|
|
|
For temporary exhibition devices, captures exhibition dates.
|
|
|
|
'
|
|
range: TimeSpan
|
|
examples:
|
|
- value:
|
|
begin_of_the_begin: '2023-06-15'
|
|
description: Device operational since June 2023
|
|
operational_status:
|
|
slot_uri: schema:status
|
|
description: 'Current operational status of the device.
|
|
|
|
|
|
Values:
|
|
|
|
- ACTIVE: Currently operational
|
|
|
|
- MAINTENANCE: Under maintenance
|
|
|
|
- OFFLINE: Not currently functional
|
|
|
|
- DECOMMISSIONED: Permanently retired
|
|
|
|
- PLANNED: Not yet installed
|
|
|
|
|
|
Schema.org: status for current status.
|
|
|
|
'
|
|
range: string
|
|
examples:
|
|
- value: ACTIVE
|
|
description: Device is operational
|
|
- value: MAINTENANCE
|
|
description: Device under maintenance
|
|
maintenance_schedule:
|
|
slot_uri: schema:maintenanceSchedule
|
|
description: 'Maintenance schedule for the device.
|
|
|
|
|
|
Examples:
|
|
|
|
- "Monthly battery check"
|
|
|
|
- "Quarterly calibration"
|
|
|
|
- "Annual hardware inspection"
|
|
|
|
'
|
|
range: string
|
|
examples:
|
|
- value: Monthly battery check
|
|
description: Beacon maintenance
|
|
was_derived_from:
|
|
slot_uri: prov:wasDerivedFrom
|
|
description: 'CustodianObservation(s) documenting this device.
|
|
|
|
|
|
PROV-O: wasDerivedFrom for observation provenance.
|
|
|
|
'
|
|
range: CustodianObservation
|
|
multivalued: true
|
|
required: false
|
|
was_generated_by:
|
|
slot_uri: prov:wasGeneratedBy
|
|
description: 'ReconstructionActivity that generated this device record.
|
|
|
|
|
|
PROV-O: wasGeneratedBy for generation activity.
|
|
|
|
'
|
|
range: ReconstructionActivity
|
|
required: false
|
|
refers_to_custodian:
|
|
slot_uri: dcterms:references
|
|
description: 'The Custodian hub that operates this IoT device (REQUIRED).
|
|
|
|
|
|
Links the IoT device to the custodian that owns/operates it.
|
|
|
|
|
|
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
|
|
specificity_annotation:
|
|
range: SpecificityAnnotation
|
|
inlined: true
|
|
template_specificity:
|
|
range: TemplateSpecificityScores
|
|
inlined: true
|
|
comments:
|
|
- Models physical devices with digital connectivity (beacons, kiosks, sensors)
|
|
- SOSA/SSN ontology alignment for semantic sensor data
|
|
- Bridges physical and digital presence of heritage custodians
|
|
- Supports environmental monitoring, visitor experience, analytics use cases
|
|
- Temporal validity tracks installation and decommission dates
|
|
- Links to CustodianPlace for location context
|
|
see_also:
|
|
- https://www.w3.org/TR/vocab-ssn/
|
|
- https://www.w3.org/TR/vocab-sosa/
|
|
- https://schema.org/Thing
|
|
examples:
|
|
- value:
|
|
device_id: https://nde.nl/ontology/hc/iot/rijksmuseum-beacon-gallery-honour
|
|
device_name: Gallery of Honour Beacon Network
|
|
device_type: IOT_BEACON
|
|
device_model: Estimote Proximity Beacon
|
|
device_manufacturer: Estimote
|
|
device_count: 24
|
|
coverage_area: Gallery of Honour (main wing)
|
|
purpose: Proximity triggers for mobile app content near masterpieces
|
|
connectivity_type:
|
|
- BLUETOOTH_LE
|
|
power_source: BATTERY
|
|
publishes_to: https://analytics.rijksmuseum.nl/beacons
|
|
installation_date: '2019-03-01'
|
|
operational_status: ACTIVE
|
|
maintenance_schedule: Monthly battery check
|
|
refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
|
|
description: Beacon network in Rijksmuseum Gallery of Honour
|
|
- value:
|
|
device_id: https://nde.nl/ontology/hc/iot/rijksmuseum-climate-monitoring
|
|
device_name: Conservation Climate Monitoring System
|
|
device_type: IOT_SENSOR
|
|
device_model: Sensirion SHT45
|
|
device_manufacturer: Sensirion
|
|
device_count: 150
|
|
coverage_area: All galleries and storage areas
|
|
purpose: Temperature and humidity monitoring for preservation
|
|
connectivity_type:
|
|
- WIFI
|
|
- LORAWAN
|
|
power_source: BATTERY
|
|
publishes_to: https://dashboard.rijksmuseum.nl/climate
|
|
api_endpoint: https://api.rijksmuseum.nl/climate/v1/
|
|
data_format: JSON
|
|
update_frequency: Every 5 minutes
|
|
installation_date: '2020-01-15'
|
|
operational_status: ACTIVE
|
|
maintenance_schedule: Quarterly calibration
|
|
refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
|
|
description: Climate monitoring sensor network at Rijksmuseum
|
|
- value:
|
|
device_id: https://nde.nl/ontology/hc/iot/rijksmuseum-entrance-kiosk
|
|
device_name: Main Entrance Information Kiosks
|
|
device_type: IOT_KIOSK
|
|
device_model: Samsung Kiosk 24 Touch
|
|
device_manufacturer: Samsung
|
|
device_count: 4
|
|
coverage_area: Main entrance lobby
|
|
purpose: Self-service collection search and wayfinding for visitors
|
|
technical_specifications: 24-inch touchscreen, 1920x1080 resolution, wheelchair accessible
|
|
connectivity_type:
|
|
- ETHERNET
|
|
power_source: MAINS
|
|
installation_date: '2021-09-01'
|
|
operational_status: ACTIVE
|
|
maintenance_schedule: Weekly software updates, monthly hardware inspection
|
|
refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
|
|
description: Information kiosks at Rijksmuseum entrance
|