All checks were successful
Deploy Frontend / build-and-deploy (push) Successful in 2m4s
Session 2026-01-19: Completed remaining migrations per Rules 53/56/60. Major migrations: 1. claim_type → has_or_had_type + ClaimType/ClaimTypes (60+ concrete types in 11 categories) 2. circumstances_of_death → is_deceased + DeceasedStatus + CauseOfDeath 3. claims_count → has_or_had_quantity + Quantity (with based_on_claim for provenance) 4. classification_status → has_or_had_type + ClassificationStatusType Created files: - ClaimType.yaml, ClaimTypes.yaml (abstract base + 60+ concrete subclasses) - DeceasedStatus.yaml, CauseOfDeath.yaml, CauseOfDeathTypeEnum.yaml - ClassificationStatus.yaml, ClassificationStatusType.yaml, ClassificationStatusTypes.yaml - CITESAppendix.yaml, City.yaml, CertaintyLevel.yaml - is_deceased.yaml, is_or_was_caused_by.yaml, based_on_claim.yaml Archived slots: - claim_type, circumstances_of_death, claims_count, classification_status Added Rule 60 to AGENTS.md: No Migration Deferral - agents MUST execute all migrations. All 527 slot_fixes.yaml entries now complete (100%).
238 lines
11 KiB
YAML
238 lines
11 KiB
YAML
id: https://nde.nl/ontology/hc/class/VideoChapter
|
|
name: video_chapter_class
|
|
title: Video Chapter Class
|
|
imports:
|
|
- linkml:types
|
|
- ./VideoTimeSegment
|
|
- ../slots/specificity_annotation
|
|
- ./SpecificityAnnotation
|
|
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
|
- ./TemplateSpecificityScore # was: TemplateSpecificityScores - migrated per Rule 53 (2026-01-17)
|
|
|
|
- ./TemplateSpecificityType
|
|
|
|
- ./TemplateSpecificityTypes
|
|
- ./AutoGeneration # Added for is_or_was_created_through migration (2026-01-15)
|
|
- ../enums/ChapterSourceEnum
|
|
- ../slots/is_or_was_created_through # MIGRATED: was ../slots/auto_generated (2026-01-15)
|
|
- ../slots/chapter_description
|
|
- ../slots/chapter_end_seconds
|
|
- ../slots/chapter_end_time
|
|
- ../slots/chapter_id
|
|
- ../slots/chapter_index
|
|
- ../slots/chapter_source
|
|
- ../slots/chapter_start_seconds
|
|
- ../slots/chapter_start_time
|
|
# REMOVED 2026-01-18: ../slots/chapter_thumbnail_url - migrated to has_or_had_thumbnail + Thumbnail (Rule 53)
|
|
# REMOVED 2026-01-19: ../slots/chapter_thumbnail_timestamp - migrated to Thumbnail.has_or_had_time_interval (Rule 53)
|
|
- ../slots/has_or_had_thumbnail # was: chapter_thumbnail_url - migrated per Rule 53 (2026-01-18)
|
|
- ./Thumbnail # Updated 2026-01-19: now includes derives_or_derived_from and has_or_had_time_interval
|
|
- ./Video # Added 2026-01-19: for Thumbnail.derives_or_derived_from
|
|
- ./TimeInterval # Added 2026-01-19: for Thumbnail.has_or_had_time_interval
|
|
- ../slots/has_or_had_label # was: chapter_title - migrated per Rule 53/56 (2026-01-18)
|
|
- ./Label
|
|
- ../slots/nesting_level
|
|
- ../slots/parent_chapter_id
|
|
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/
|
|
oa: http://www.w3.org/ns/oa#
|
|
ma: http://www.w3.org/ns/ma-ont#
|
|
wd: http://www.wikidata.org/entity/
|
|
default_prefix: hc
|
|
classes:
|
|
VideoChapter:
|
|
class_uri: schema:Clip
|
|
abstract: false
|
|
description: "A named chapter or section within a video, defined by temporal boundaries.\n\n**DEFINITION**:\n\nVideoChapter\
|
|
\ represents a titled segment of video content, typically used for\nnavigation and content organization. Chapters appear\
|
|
\ in video player interfaces\n(YouTube chapters, Vimeo chapters) allowing viewers to jump to specific sections.\n\n\
|
|
**PLATFORM SUPPORT**:\n\n| Platform | Chapter Support | Auto-Generated | Custom Thumbnails |\n|----------|-----------------|----------------|-------------------|\n\
|
|
| YouTube | Yes (2020+) | Yes | No (keyframe) |\n| Vimeo | Yes | No | Yes |\n| Facebook | Limited | No | No |\n| Wistia\
|
|
\ | Yes | No | Yes |\n\n**YOUTUBE CHAPTER REQUIREMENTS**:\n\nFor YouTube to recognize chapters:\n- First chapter MUST\
|
|
\ start at 0:00\n- Minimum 3 chapters required\n- Each chapter must be at least 10 seconds\n- Timestamps in description\
|
|
\ in `MM:SS` or `HH:MM:SS` format\n\n**HERITAGE INSTITUTION USE CASES**:\n\n| Content Type | Chapter Examples |\n|--------------|------------------|\n\
|
|
| Virtual tour | \"Main Hall\", \"Dutch Masters\", \"Gift Shop\" |\n| Conservation | \"Assessment\", \"Cleaning\", \"\
|
|
Retouching\", \"Varnishing\" |\n| Interview | \"Introduction\", \"Early Career\", \"Major Works\", \"Legacy\" |\n| Exhibition\
|
|
\ | \"Curator Introduction\", \"Theme 1\", \"Theme 2\", \"Conclusion\" |\n| Lecture | \"Overview\", \"Case Study 1\"\
|
|
, \"Case Study 2\", \"Q&A\" |\n\n**AUTO-GENERATED VS MANUAL CHAPTERS**:\n\n| Source | Characteristics | Quality |\n\
|
|
|--------|-----------------|---------|\n| Manual (creator) | Semantic, meaningful titles | High |\n| YouTube AI | Scene-based,\
|
|
\ generic titles | Variable |\n| Third-party tools | Transcript-based, keyword titles | Medium |\n\nThe `auto_generated`\
|
|
\ flag distinguishes these sources.\n\n**RELATIONSHIP TO VideoTimeSegment**:\n\nVideoChapter USES VideoTimeSegment for\
|
|
\ temporal boundaries rather than\nextending it. This composition pattern allows:\n- Reuse of segment validation (start\
|
|
\ < end)\n- Consistent time representation across schema\n- Separation of structural (chapter) and temporal (segment)\
|
|
\ concerns\n\n**MEDIA FRAGMENTS URI**:\n\nChapters can be addressed via W3C Media Fragments:\n```\nhttps://youtube.com/watch?v=ABC123#t=120,300\n\
|
|
```\nCorresponds to chapter starting at 2:00, ending at 5:00.\n\n**NESTED CHAPTERS**:\n\nSome platforms support hierarchical\
|
|
\ chapters (parent/child).\nUse `parent_chapter_id` for nested structure:\n\n```\nChapter 1: Dutch Golden Age\n └─\
|
|
\ 1.1: Rembrandt\n └─ 1.2: Vermeer\nChapter 2: Modern Art\n```\n"
|
|
exact_mappings:
|
|
- schema:Clip
|
|
close_mappings:
|
|
- ma:MediaFragment
|
|
- crm:E52_Time-Span
|
|
related_mappings:
|
|
- wikidata:Q1454986
|
|
slots:
|
|
- is_or_was_created_through # MIGRATED: was auto_generated (2026-01-15)
|
|
- chapter_description
|
|
- chapter_end_seconds
|
|
- chapter_end_time
|
|
- chapter_id
|
|
- chapter_index
|
|
- chapter_source
|
|
- chapter_start_seconds
|
|
- chapter_start_time
|
|
# REMOVED 2026-01-19: chapter_thumbnail_timestamp - migrated to Thumbnail.has_or_had_time_interval (Rule 53)
|
|
- has_or_had_thumbnail # was: chapter_thumbnail_url - migrated per Rule 53 (2026-01-18)
|
|
- has_or_had_label # was: chapter_title - migrated per Rule 53/56 (2026-01-18)
|
|
- nesting_level
|
|
- parent_chapter_id
|
|
- specificity_annotation
|
|
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
|
slot_usage:
|
|
chapter_id:
|
|
range: string
|
|
required: true
|
|
examples:
|
|
- value: ABC123_chapter_0
|
|
description: First chapter of video ABC123
|
|
- value: 550e8400-e29b-41d4-a716-446655440000
|
|
description: UUID-based chapter ID
|
|
has_or_had_label: # was: chapter_title - migrated per Rule 53/56 (2026-01-18)
|
|
description: |
|
|
MIGRATED from chapter_title per slot_fixes.yaml (Rule 53/56, 2026-01-18).
|
|
Title of the chapter as displayed to viewers.
|
|
Uses Label class for structured chapter titles with optional language tagging.
|
|
range: Label
|
|
inlined: true
|
|
required: true
|
|
examples:
|
|
- value:
|
|
has_or_had_label: De Nachtwacht (The Night Watch)
|
|
language: nl
|
|
description: Chapter about specific artwork
|
|
- value:
|
|
has_or_had_label: "Curator Interview: Conservation Process"
|
|
language: en
|
|
description: Interview segment chapter
|
|
chapter_index:
|
|
range: integer
|
|
required: true
|
|
minimum_value: 0
|
|
examples:
|
|
- value: 0
|
|
description: First chapter
|
|
- value: 5
|
|
description: Sixth chapter (zero-indexed)
|
|
chapter_description:
|
|
range: string
|
|
required: false
|
|
examples:
|
|
- value: Dr. Dibbits discusses the restoration of Rembrandt's masterpiece, including the controversial 2019 operation.
|
|
description: Detailed chapter description
|
|
chapter_start_seconds:
|
|
range: float
|
|
required: true
|
|
minimum_value: 0.0
|
|
examples:
|
|
- value: 0.0
|
|
description: First chapter starts at video beginning
|
|
- value: 120.5
|
|
description: Chapter starts at 2:00.5
|
|
chapter_end_seconds:
|
|
range: float
|
|
required: false
|
|
minimum_value: 0.0
|
|
examples:
|
|
- value: 120.0
|
|
description: Chapter ends at 2:00
|
|
chapter_start_time:
|
|
range: string
|
|
required: false
|
|
pattern: ^PT(\d+H)?(\d+M)?(\d+(\.\d+)?S)?$
|
|
examples:
|
|
- value: PT0S
|
|
description: Start of video
|
|
- value: PT10M30S
|
|
description: 10 minutes 30 seconds
|
|
chapter_end_time:
|
|
range: string
|
|
required: false
|
|
pattern: ^PT(\d+H)?(\d+M)?(\d+(\.\d+)?S)?$
|
|
examples:
|
|
- value: PT5M0S
|
|
description: 5 minutes
|
|
is_or_was_created_through: # MIGRATED: was is_auto_generated (2026-01-15)
|
|
description: Whether this chapter was auto-generated by AI/platform algorithms
|
|
range: boolean
|
|
required: false
|
|
examples:
|
|
- value: false
|
|
description: Manual creator-defined chapter
|
|
- value: true
|
|
description: YouTube AI auto-generated
|
|
chapter_source:
|
|
range: ChapterSourceEnum
|
|
required: false
|
|
examples:
|
|
- value: MANUAL
|
|
description: Creator manually added chapters
|
|
has_or_had_thumbnail: # was: chapter_thumbnail_url - migrated per Rule 53 (2026-01-18)
|
|
description: |
|
|
MIGRATED from chapter_thumbnail_url per slot_fixes.yaml (Rule 53, 2026-01-18).
|
|
UPDATED 2026-01-19: chapter_thumbnail_timestamp now captured via Thumbnail.has_or_had_time_interval.
|
|
|
|
Thumbnail image for this chapter, used for preview in video players.
|
|
Uses Thumbnail class for structured representation with:
|
|
- URL of the thumbnail image
|
|
- derives_or_derived_from: source Video reference
|
|
- has_or_had_time_interval: frame timestamp as TimeInterval
|
|
|
|
**Platform Behavior**:
|
|
- YouTube: Auto-selects keyframe from chapter start
|
|
- Vimeo: Allows custom chapter thumbnails
|
|
range: Thumbnail
|
|
inlined: true
|
|
required: false
|
|
examples:
|
|
- value:
|
|
has_or_had_url: "https://i.ytimg.com/vi/ABC123/hq1.jpg"
|
|
description: Simple thumbnail with URL only
|
|
- value:
|
|
has_or_had_url: "https://i.ytimg.com/vi/ABC123/hq1.jpg"
|
|
derives_or_derived_from:
|
|
has_or_had_url: "https://www.youtube.com/watch?v=ABC123"
|
|
has_or_had_time_interval:
|
|
duration_value: "PT2M2.5S"
|
|
duration_description: "Frame at 2:02.5 (was chapter_thumbnail_timestamp: 122.5)"
|
|
description: Thumbnail with source video and timestamp (replaces chapter_thumbnail_timestamp)
|
|
# REMOVED 2026-01-19: chapter_thumbnail_timestamp - migrated to Thumbnail.has_or_had_time_interval (Rule 53)
|
|
parent_chapter_id:
|
|
range: string
|
|
required: false
|
|
examples:
|
|
- value: ABC123_chapter_0
|
|
description: This is a sub-chapter of chapter 0
|
|
nesting_level:
|
|
range: integer
|
|
required: false
|
|
minimum_value: 0
|
|
examples:
|
|
- value: 0
|
|
description: Top-level chapter
|
|
- value: 1
|
|
description: Sub-chapter
|
|
comments:
|
|
- Models video chapters for navigation (YouTube chapters, etc.)
|
|
- Supports both manual and auto-generated chapters
|
|
- Temporal boundaries via composition with VideoTimeSegment pattern
|
|
- Hierarchical chapters supported via parent_chapter_id
|
|
- Schema.org Clip alignment for semantic web compatibility
|
|
see_also:
|
|
- https://support.google.com/youtube/answer/9884579
|
|
- https://schema.org/Clip
|
|
- https://www.w3.org/TR/media-frags/
|