175 lines
5.7 KiB
YAML
175 lines
5.7 KiB
YAML
# UpdateFrequency - Structured frequency/periodicity for data updates
|
|
# Created per slot_fixes.yaml migration for: update_frequency
|
|
# Creation date: 2026-01-14
|
|
#
|
|
# REVISION FROM slot_fixes.yaml (lines 1893-1910):
|
|
# - label: has_or_had_frequency (slot)
|
|
# - label: UpdateFrequency (class) ← THIS FILE
|
|
# - link_branch 1: has_or_had_quantity → Quantity
|
|
# - link_branch 2: has_or_had_time_interval → TimeInterval
|
|
|
|
id: https://nde.nl/ontology/hc/classes/UpdateFrequency
|
|
name: UpdateFrequency
|
|
title: UpdateFrequency
|
|
|
|
prefixes:
|
|
linkml: https://w3id.org/linkml/
|
|
hc: https://nde.nl/ontology/hc/
|
|
dcterms: http://purl.org/dc/terms/
|
|
dcat: http://www.w3.org/ns/dcat#
|
|
schema: http://schema.org/
|
|
time: http://www.w3.org/2006/time#
|
|
|
|
imports:
|
|
- linkml:types
|
|
- ./Quantity
|
|
- ./TimeInterval
|
|
- ../slots/has_or_had_quantity
|
|
- ../slots/has_or_had_time_interval
|
|
|
|
default_range: string
|
|
|
|
classes:
|
|
UpdateFrequency:
|
|
description: >-
|
|
Structured representation of how often a device, system, or data source
|
|
sends updates or refreshes data.
|
|
|
|
**WHY A DEDICATED CLASS?**
|
|
|
|
Update frequency is more than a simple string - it has:
|
|
- **Quantity**: How many updates (e.g., "5" in "every 5 minutes")
|
|
- **Time Interval**: The period (e.g., "minutes" in "every 5 minutes")
|
|
- **Trigger-based**: Some updates are event-driven, not time-based
|
|
|
|
**SLOT_FIXES.YAML REVISION** (lines 1893-1910):
|
|
- Branch 1: has_or_had_quantity → Quantity (numeric value)
|
|
- Branch 2: has_or_had_time_interval → TimeInterval (duration)
|
|
|
|
**ONTOLOGY MAPPING**:
|
|
- class_uri: dcterms:Frequency (Dublin Core)
|
|
- Dublin Core `accrualPeriodicity` uses Frequency for collection update rates
|
|
|
|
**USE CASES**:
|
|
- IoT sensors: "Every 5 minutes", "Hourly", "Real-time"
|
|
- Data feeds: "Daily", "Weekly", "Monthly"
|
|
- Event-driven: "On proximity trigger", "On change"
|
|
|
|
**EXAMPLES**:
|
|
- Climate sensor: 5 updates per minute
|
|
- Beacon: On proximity trigger (no time interval)
|
|
- Database sync: Daily at midnight
|
|
|
|
class_uri: dcterms:Frequency
|
|
|
|
exact_mappings:
|
|
- dcterms:Frequency
|
|
- dcat:frequency
|
|
|
|
close_mappings:
|
|
- schema:Schedule
|
|
|
|
related_mappings:
|
|
- time:TemporalEntity
|
|
|
|
slots:
|
|
- has_or_had_quantity
|
|
- has_or_had_time_interval
|
|
|
|
attributes:
|
|
frequency_description:
|
|
range: string
|
|
description: >-
|
|
Human-readable description of the update frequency.
|
|
Examples: "Every 5 minutes", "Hourly", "Real-time", "On proximity trigger"
|
|
|
|
is_event_driven:
|
|
range: boolean
|
|
description: >-
|
|
True if updates are triggered by events rather than time intervals.
|
|
Examples: beacon proximity triggers, change detection, user actions.
|
|
ifabsent: "false"
|
|
|
|
trigger_type:
|
|
range: string
|
|
description: >-
|
|
Type of event that triggers updates (when is_event_driven is true).
|
|
Examples: "proximity", "change", "request", "threshold"
|
|
|
|
slot_usage:
|
|
has_or_had_quantity:
|
|
range: Quantity
|
|
inlined: true
|
|
description: >-
|
|
The numeric quantity component of the frequency.
|
|
For "every 5 minutes", this would be a Quantity with value 5.
|
|
examples:
|
|
- value: |
|
|
has_or_had_quantity:
|
|
numeric_value: 5
|
|
has_or_had_measurement_unit:
|
|
has_or_had_symbol: "updates"
|
|
description: 5 updates per interval
|
|
|
|
has_or_had_time_interval:
|
|
range: TimeInterval
|
|
inlined: true
|
|
description: >-
|
|
The time interval/period component of the frequency.
|
|
For "every 5 minutes", this would be a TimeInterval representing minutes.
|
|
examples:
|
|
- value: |
|
|
has_or_had_time_interval:
|
|
duration_value: "PT1M"
|
|
duration_description: "per minute"
|
|
description: Per-minute interval
|
|
|
|
annotations:
|
|
custodian_types: '["*"]'
|
|
custodian_types_rationale: >-
|
|
Update frequency applicable to all custodian types with IoT or data systems.
|
|
custodian_types_primary: "*"
|
|
specificity_score: 0.35
|
|
specificity_rationale: >-
|
|
Moderate specificity - relevant to custodians with digital/IoT infrastructure.
|
|
|
|
examples:
|
|
- value: |
|
|
UpdateFrequency:
|
|
frequency_description: "Every 5 minutes"
|
|
has_or_had_quantity:
|
|
numeric_value: 5
|
|
has_or_had_time_interval:
|
|
duration_value: "PT1M"
|
|
duration_description: "minute"
|
|
description: Climate sensor updating every 5 minutes.
|
|
|
|
- value: |
|
|
UpdateFrequency:
|
|
frequency_description: "Hourly"
|
|
has_or_had_quantity:
|
|
numeric_value: 1
|
|
has_or_had_time_interval:
|
|
duration_value: "PT1H"
|
|
duration_description: "hour"
|
|
description: Hourly update frequency.
|
|
|
|
- value: |
|
|
UpdateFrequency:
|
|
frequency_description: "On proximity trigger"
|
|
is_event_driven: true
|
|
trigger_type: "proximity"
|
|
description: Event-driven beacon updates (no time interval).
|
|
|
|
- value: |
|
|
UpdateFrequency:
|
|
frequency_description: "Real-time"
|
|
is_event_driven: true
|
|
trigger_type: "continuous"
|
|
description: Real-time streaming updates.
|
|
|
|
comments:
|
|
- Created from slot_fixes.yaml migration (2026-01-14)
|
|
- Replaces simple string update_frequency slot
|
|
- Supports both time-based and event-driven frequencies
|
|
- Uses Dublin Core Frequency class for semantic alignment
|