glam/schemas/20251121/linkml/modules/classes/VideoTextContent.yaml
kempersc 174a420c08
All checks were successful
Deploy Frontend / build-and-deploy (push) Successful in 3m57s
refactor(schema): centralize 1515 inline slot definitions per Rule 48
- 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.
2026-01-11 22:02:14 +01:00

419 lines
13 KiB
YAML

id: https://nde.nl/ontology/hc/class/VideoTextContent
name: video_text_content_class
title: Video Text Content Class
imports:
- linkml:types
- ./VideoPost
- ../slots/character_count
- ../slots/content_language
- ../slots/content_title
- ../slots/generated_by
- ../slots/generation_method
- ../slots/generation_timestamp
- ../slots/is_verified
- ../slots/model_provider
- ../slots/model_version
- ../slots/overall_confidence
- ../slots/processing_duration_seconds
- ../slots/source_video
- ../slots/source_video_url
- ../slots/specificity_annotation
- ../slots/template_specificity
- ../slots/verification_date
- ../slots/verified_by
- ../slots/word_count
- ./SpecificityAnnotation
- ./TemplateSpecificityScores
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#
oa: http://www.w3.org/ns/oa#
default_prefix: hc
classes:
VideoTextContent:
class_uri: crm:E73_Information_Object
abstract: true
description: "Abstract base class for all textual/derived content from videos.\n\n**DEFINITION**:\n\nVideoTextContent\
\ is the abstract parent for all text that is extracted,\ntranscribed, or derived from video content. This includes:\n\
\n| Subclass | Source | Description |\n|----------|--------|-------------|\n| VideoTranscript | Audio | Full text transcription\
\ of spoken content |\n| VideoSubtitle | Audio | Time-coded caption entries (SRT/VTT) |\n| VideoAnnotation | Visual\
\ | CV/multimodal-derived descriptions |\n\n**PROVENANCE REQUIREMENTS**:\n\nAll video-derived text MUST include comprehensive\
\ provenance:\n\n1. **Source**: Which video was processed (`source_video`)\n2. **Method**: How was content generated\
\ (`generation_method`)\n3. **Agent**: Who/what generated it (`generated_by`)\n4. **Time**: When was it generated (`generation_timestamp`)\n\
5. **Version**: Tool/model version (`model_version`)\n6. **Quality**: Overall confidence (`overall_confidence`)\n\n\
**PROV-O ALIGNMENT**:\n\nMaps to W3C PROV-O for provenance tracking:\n\n```turtle\n:transcript a hc:VideoTranscript\
\ ;\n prov:wasGeneratedBy :asr_activity ;\n prov:wasAttributedTo :whisper_model ;\n prov:generatedAtTime \"\
2025-12-01T10:00:00Z\" ;\n prov:wasDerivedFrom :source_video .\n```\n\n**CIDOC-CRM E73_Information_Object**:\n\n\
- E73 is the base for all identifiable immaterial items\n- Includes texts, computer programs, songs, recipes\n- VideoTextContent\
\ are E73 instances derived from video (E73)\n\n**GENERATION METHODS**:\n\n| Method | Description | Typical Confidence\
\ |\n|--------|-------------|-------------------|\n| ASR_AUTOMATIC | Automatic speech recognition | 0.75-0.95 |\n| ASR_ENHANCED\
\ | ASR with post-processing | 0.85-0.98 |\n| MANUAL_TRANSCRIPTION | Human transcription | 0.98-1.0 |\n| MANUAL_CORRECTION\
\ | Human-corrected ASR | 0.95-1.0 |\n| CV_AUTOMATIC | Computer vision detection | 0.60-0.90 |\n| MULTIMODAL | Combined\
\ audio+visual AI | 0.70-0.95 |\n| OCR | Optical character recognition | 0.80-0.98 |\n| PLATFORM_PROVIDED | From YouTube/Vimeo\
\ API | 0.85-0.95 |\n\n**HERITAGE INSTITUTION CONTEXT**:\n\nVideo text content is critical for:\n- **Accessibility**:\
\ Deaf/HoH users need accurate captions\n- **Discovery**: Full-text search over video collections\n- **Preservation**:\
\ Text outlasts video format obsolescence\n- **Research**: Analyzing spoken content at scale\n- **Translation**: Multilingual\
\ access to heritage content\n\n**LANGUAGE SUPPORT**:\n\n- `content_language`: Primary language of text content\n- May\
\ differ from video's default_audio_language if translated\n- ISO 639-1 codes (e.g., \"nl\", \"en\", \"de\")\n"
exact_mappings:
- crm:E73_Information_Object
close_mappings:
- prov:Entity
related_mappings:
- schema:CreativeWork
- dcterms:Text
slots:
- character_count
- content_language
- content_title
- generated_by
- generation_method
- generation_timestamp
- is_verified
- model_provider
- model_version
- overall_confidence
- processing_duration_seconds
- source_video
- source_video_url
- specificity_annotation
- template_specificity
- verification_date
- verified_by
- word_count
slot_usage:
source_video:
slot_uri: prov:wasDerivedFrom
description: 'Reference to the VideoPost from which this content was derived.
PROV-O: wasDerivedFrom links derived content to source.
Links to the video''s unique identifier (post_id).
'
range: string
required: true
examples:
- value: FbIoC-Owy-M
description: YouTube video ID as source reference
source_video_url:
slot_uri: schema:url
description: 'URL of the source video.
Convenience field for direct video access.
Derived from source_video but stored for quick reference.
'
range: uri
required: false
examples:
- value: https://www.youtube.com/watch?v=FbIoC-Owy-M
description: Full YouTube video URL
content_language:
slot_uri: dcterms:language
description: 'Primary language of the text content.
Dublin Core: language for content language.
ISO 639-1 code. May differ from video''s audio language
if this is a translation or localization.
'
range: string
required: true
examples:
- value: nl
description: Dutch language content
- value: en
description: English translation
content_title:
slot_uri: dcterms:title
description: 'Title or label for this text content.
Dublin Core: title for content name.
Examples:
- "Rijksmuseum Tour - Full Transcript"
- "Dutch Subtitles - Auto-generated"
- "Scene Annotations - CV Model v2.1"
'
range: string
required: false
examples:
- value: De Vrijheidsroute Ep.3 - Dutch Transcript
description: Descriptive title for transcript
generated_by:
slot_uri: prov:wasAttributedTo
description: 'The agent (model, service, person) that generated this content.
PROV-O: wasAttributedTo identifies the responsible agent.
**Examples**:
- AI Models: "openai/whisper-large-v3", "google/speech-to-text"
- Services: "YouTube Auto-captions", "Rev.com"
- Human: "transcriber:jane.doe@museum.nl"
'
range: string
required: true
examples:
- value: openai/whisper-large-v3
description: OpenAI Whisper ASR model
- value: YouTube Auto-captions
description: Platform-provided captions
- value: manual:curator@rijksmuseum.nl
description: Human transcriber
generation_method:
slot_uri: prov:wasGeneratedBy
description: 'The method used to generate this content.
PROV-O: wasGeneratedBy for generation activity type.
See GenerationMethodEnum for standardized values.
'
range: GenerationMethodEnum
required: true
examples:
- value: ASR_AUTOMATIC
description: Automatic speech recognition
- value: MANUAL_TRANSCRIPTION
description: Human transcription
generation_timestamp:
slot_uri: prov:generatedAtTime
description: 'When this content was generated.
PROV-O: generatedAtTime for creation timestamp.
ISO 8601 datetime. Critical for versioning and reproducibility.
'
range: datetime
required: true
examples:
- value: '2025-12-01T10:30:00Z'
description: Generated December 1, 2025 at 10:30 UTC
model_version:
slot_uri: schema:softwareVersion
description: 'Version of the model or tool used for generation.
Schema.org: softwareVersion for version tracking.
Critical for reproducibility and quality assessment.
'
range: string
required: false
examples:
- value: large-v3
description: Whisper model version
- value: v2.3.1
description: Software version number
model_provider:
slot_uri: schema:provider
description: 'Provider or vendor of the generation model/service.
Schema.org: provider for service provider.
'
range: string
required: false
examples:
- value: OpenAI
description: Model provider
- value: Google Cloud
description: Cloud service provider
overall_confidence:
slot_uri: hc:overallConfidence
description: 'Overall confidence score for the generated content.
Range: 0.0 (no confidence) to 1.0 (complete certainty)
Aggregated from per-segment confidence scores or
provided by the generation model.
**Thresholds** (suggested):
- > 0.9: High quality, production-ready
- 0.75-0.9: Good, may have minor errors
- 0.6-0.75: Usable, should be reviewed
- < 0.6: Low quality, needs significant correction
'
range: float
required: false
minimum_value: 0.0
maximum_value: 1.0
examples:
- value: 0.92
description: High confidence ASR output
is_verified:
slot_uri: hc:isVerified
description: 'Whether content has been verified by a human.
- **true**: Human-reviewed and approved
- **false**: Not yet verified (default for AI-generated)
Critical for quality assurance in heritage contexts.
'
range: boolean
required: false
ifabsent: 'false'
examples:
- value: true
description: Human-verified transcript
verified_by:
slot_uri: prov:wasAttributedTo
description: 'Identity of the person who verified the content.
Only populated when is_verified = true.
'
range: string
required: false
examples:
- value: curator@rijksmuseum.nl
description: Staff member who verified
verification_date:
slot_uri: dcterms:dateAccepted
description: 'Date when content was verified.
Dublin Core: dateAccepted for approval date.
'
range: datetime
required: false
examples:
- value: '2025-12-02T15:00:00Z'
description: Verified December 2, 2025
processing_duration_seconds:
slot_uri: hc:processingDuration
description: 'Time taken to generate this content, in seconds.
Useful for performance monitoring and cost estimation.
'
range: float
required: false
minimum_value: 0.0
examples:
- value: 45.3
description: Processed in 45.3 seconds
word_count:
slot_uri: hc:wordCount
description: 'Total number of words in the text content.
Useful for content sizing and analysis.
'
range: integer
required: false
minimum_value: 0
examples:
- value: 1523
description: 1,523 words in transcript
character_count:
slot_uri: hc:characterCount
description: 'Total number of characters in the text content.
Includes spaces. Useful for storage estimation.
'
range: integer
required: false
minimum_value: 0
examples:
- value: 8742
description: 8,742 characters
specificity_annotation:
range: SpecificityAnnotation
inlined: true
template_specificity:
range: TemplateSpecificityScores
inlined: true
comments:
- Abstract base for all video-derived text content
- Comprehensive PROV-O provenance tracking
- Confidence scoring for AI-generated content
- Verification workflow support
- Critical for heritage accessibility and discovery
see_also:
- https://www.w3.org/TR/prov-o/
- http://www.cidoc-crm.org/cidoc-crm/E73_Information_Object
enums:
GenerationMethodEnum:
description: 'Methods for generating video-derived text content.
Standardized values for provenance tracking.
'
permissible_values:
ASR_AUTOMATIC:
description: Automatic speech recognition (raw output)
ASR_ENHANCED:
description: ASR with post-processing (punctuation, normalization)
MANUAL_TRANSCRIPTION:
description: Fully human-transcribed content
MANUAL_CORRECTION:
description: Human-corrected ASR output
CV_AUTOMATIC:
description: Computer vision detection (raw output)
CV_ENHANCED:
description: CV with post-processing or filtering
MULTIMODAL:
description: Combined audio+visual AI processing
OCR:
description: Optical character recognition from video frames
PLATFORM_PROVIDED:
description: Content from platform API (YouTube, Vimeo captions)
HYBRID:
description: Combination of automated and manual methods
UNKNOWN:
description: Generation method not recorded