glam/schemas/20251121/linkml/modules/classes/VideoSubtitle.yaml
kempersc fcd1c21c63 Add aliases and enhance slot definitions across various modules
- Added new aliases for existing slots to improve clarity and usability, including:
  - has_deadline: has_embargo_end_date
  - has_extent: has_extent_text
  - has_fonds: has_fond
  - has_laboratory: conservation_lab
  - has_language: has_iso_code639_1, has_iso_code639_3
  - has_legal_basis: legal_basis
  - has_light_exposure: max_light_lux
  - has_measurement_unit: has_unit
  - has_note: has_custodian_observation
  - has_occupation: occupation
  - has_operating_hours: has_operating_hours
  - has_position: position
  - has_quantity: has_artwork_count, link_count
  - has_roadmap: review_date
  - has_skill: skill
  - has_speaker: speaker_label
  - has_specification: specification_url
  - has_statement: rights_statement_url, rights_statement
  - has_type: custodian_only
  - has_user_category: serves_visitors_only
  - hold_record_set: record_count
  - identified_by: has_index_number
  - in_period: has_period
  - in_place: has_place
  - in_series: has_series
  - measure: has_measurement
  - measured_on: measurement_date
  - organized_by: has_organizer
  - originate_from: has_origin
  - part_of: suborganization_of
  - published_on: has_publication_date
  - receive_investment: has_investment
  - related_to: connection_heritage_type
  - require: preservation_requirement
  - safeguarded_by: current_keeper, record_holder_note
  - state: states_or_stated
  - take_comission: takes_or_took_comission
  - take_place_at: takes_or_took_place_at
  - transmit_through: transmits_or_transmitted_through
  - warrant: warrants_or_warranted

- Introduced a new slot definition for evaluated_through to capture evaluation methodologies and review statuses.
2026-02-14 14:41:49 +01:00

176 lines
7.8 KiB
YAML

id: https://nde.nl/ontology/hc/class/VideoSubtitle
name: video_subtitle_class
title: Video Subtitle Class
imports:
- linkml:types
- ../enums/SubtitleFormatEnum
- ../enums/SubtitlePositionEnum
- ../slots/has_alignment
- ../slots/has_caption
- ../slots/has_format
- ../slots/identified_by
- ../slots/has_label
- ../slots/has_mean
- ../slots/has_quantity
- ../slots/has_score
- ../slots/has_segment
- ../slots/has_measurement_unit
- ../slots/has_music
- ../slots/has_sound
- ../slots/identify
- ../slots/created_through
- ../slots/has_raw_data
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
dcterms: http://purl.org/dc/terms/
prov: http://www.w3.org/ns/prov#
crm: http://www.cidoc-crm.org/cidoc-crm/
skos: http://www.w3.org/2004/02/skos/core#
ma: http://www.w3.org/ns/ma-ont#
rdfs: http://www.w3.org/2000/01/rdf-schema#
org: http://www.w3.org/ns/org#
xsd: http://www.w3.org/2001/XMLSchema#
default_prefix: hc
classes:
VideoSubtitle:
is_a: VideoTranscript
class_uri: hc:VideoSubtitle
abstract: false
description: "Time-coded caption/subtitle content for video.\n\n**DEFINITION**:\n\nVideoSubtitle represents caption/subtitle tracks that provide time-coded\ntext synchronized with video playback. It extends VideoTranscript because\nsubtitles contain complete transcription PLUS temporal synchronization.\n\n**INHERITANCE FROM VideoTranscript**:\n\nVideoSubtitle inherits all transcript capabilities:\n- `full_text`: Complete subtitle text concatenated\n- `segments`: Time-coded entries (REQUIRED for subtitles)\n- `includes_timestamps`: Always true for subtitles\n- `content_language`: Language of subtitle text\n- All provenance from VideoTextContent\n\nAnd adds subtitle-specific properties:\n- `has_format`: SRT, VTT, TTML, SBV, ASS\n- `is_closed_caption`: CC vs regular subtitles\n- `is_sdh`: Subtitles for Deaf/Hard-of-Hearing\n- `includes_sound_descriptions`: Non-speech audio descriptions\n\n**SCHEMA.ORG ALIGNMENT**:\n\nMaps to `schema:caption` property:\n> \"For downloadable machine\
\ formats (closed caption, subtitles etc.)\n> use the MediaObject.encodingFormat property.\"\n\n**SUBTITLE vs CAPTION vs TRANSCRIPT**:\n\n| Type | Time-coded | Purpose | Audience |\n|------|------------|---------|----------|\n| Transcript | Optional | Reading, search | Everyone |\n| Subtitle | Required | Language translation | Hearing viewers |\n| Caption (CC) | Required | Accessibility | Deaf/HoH viewers |\n| SDH | Required | Full accessibility | Deaf viewers, noisy environments |\n\n**SDH (Subtitles for Deaf/Hard-of-Hearing)**:\n\nSDH differs from regular subtitles by including:\n- Speaker identification: \"(John) Hello\"\n- Sound effects: \"[door slams]\", \"[music playing]\"\n- Music descriptions: \"\u266A upbeat jazz \u266A\"\n- Emotional cues: \"[laughing]\", \"[whispering]\"\n\n**SUBTITLE FORMATS**:\n\n| Format | Extension | Features | Use Case |\n|--------|-----------|----------|----------|\n| SRT | .srt | Simple, universal | Most video players |\n| VTT | .vtt | W3C standard,\
\ styling | HTML5 video, web |\n| TTML | .ttml/.dfxp | XML, rich styling | Broadcast, streaming |\n| SBV | .sbv | YouTube native | YouTube uploads |\n| ASS | .ass | Advanced styling | Anime, complex layouts |\n\n**SRT FORMAT EXAMPLE**:\n\n```\n1\n00:00:00,000 --> 00:00:03,500\nWelcome to the Rijksmuseum.\n\n2\n00:00:03,500 --> 00:00:08,200\nToday we'll explore the Night Watch gallery.\n```\n\n**VTT FORMAT EXAMPLE**:\n\n```\nWEBVTT\n\n00:00:00.000 --> 00:00:03.500\nWelcome to the Rijksmuseum.\n\n00:00:03.500 --> 00:00:08.200\nToday we'll explore the Night Watch gallery.\n```\n\n**HERITAGE INSTITUTION CONTEXT**:\n\nSubtitles are critical for heritage video accessibility:\n\n1. **Accessibility Compliance**: WCAG 2.1, Section 508\n2. **Multilingual Access**: Translate for international audiences\n3. **Silent Viewing**: Social media, public displays, quiet spaces\n4. **Search Discovery**: Subtitle text is indexed by platforms\n5. **Preservation**: Text outlasts video format obsolescence\n\
\n**YOUTUBE API INTEGRATION**:\n\nSubtitle tracks from YouTube API populate:\n- `has_format`: Typically VTT or SRT\n- `generation_method`: PLATFORM_PROVIDED or ASR_AUTOMATIC\n- `content_language`: From track language code\n- `created_through`: YouTube auto-caption flag\n\n**SEGMENTS ARE REQUIRED**:\n\nUnlike VideoTranscript where segments are optional, VideoSubtitle\nREQUIRES the `segments` slot to be populated with VideoTimeSegment\nentries that include start_seconds, end_seconds, and segment_text.\n"
close_mappings:
- schema:caption
- ma:CaptioningFormat
related_mappings:
- schema:transcript
slots:
- has_mean
- has_measurement_unit
- has_caption
- has_alignment
- has_quantity
- has_music
- has_sound
- identify
- created_through
- has_caption
- has_caption
- has_raw_data
- has_format
- has_score
- identified_by
- has_label
slot_usage:
has_segment:
required: true
identified_by:
ifabsent: 'true'
has_format:
range: SubtitleFormatEnum
required: true
examples:
- value: VTT
- value: SRT
has_raw_data:
# range: string
required: false
examples:
- value: 'WEBVTT
00:00:00.000 --> 00:00:03.500
Welcome to the museum.
'
has_caption:
range: boolean
required: false
ifabsent: 'false'
examples:
- value: true
has_caption:
range: boolean
required: false
ifabsent: 'false'
examples:
- value: true
has_sound:
range: boolean
required: false
ifabsent: 'false'
examples:
- value: true
has_music:
range: boolean
required: false
ifabsent: 'false'
examples:
- value: true
identify:
range: boolean
required: false
ifabsent: 'false'
examples:
- value: true
created_through:
range: boolean
required: false
ifabsent: 'false'
examples:
- value: true
has_label:
# range: string
required: false
deprecated: Use identified_by with TrackIdentifier range instead
examples:
- value: English (auto-generated)
identified_by:
range: TrackIdentifier
required: false
inlined: true
examples:
- value: '{"platform": "YouTube", "has_code": "en.3OWxR1w4QfE"}'
has_caption:
range: Caption
inlined: true
required: false
has_alignment:
range: Alignment
inlined: true
required: false
has_quantity:
range: integer
required: false
inlined: false # Fixed invalid inline for primitive type
examples:
- value:
has_measurement_unit:
has_label: entries
has_mean:
range: MeanValue
inlined: true
examples:
- value:
has_value: 3.2
has_measurement_unit:
has_label: seconds
comments:
- Time-coded caption/subtitle content
- Extends VideoTranscript - subtitles ARE transcripts plus time codes
- 'Supports multiple formats: SRT, VTT, TTML, SBV, ASS'
- 'Accessibility metadata: CC, SDH, sound/music descriptions'
- Critical for heritage video accessibility compliance
see_also:
- https://schema.org/caption
- 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/
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: "['*']"