glam/schemas/20251121/linkml/modules/classes/VideoPost.yaml
kempersc d37a120ef2 Refactor schema definitions across multiple classes to improve clarity and consistency
- Removed unnecessary aliases and adjusted slot definitions in Timestamp, Topic, TopicType, TransferEvent, TransferPolicy, and others.
- Enhanced descriptions and added alternative language descriptions for TradeUnionArchiveRecordSetType and UnescoIchElement.
- Updated slot usage for various archive-related classes to use `equals_string` instead of `equals_expression`.
- Streamlined VideoChapter class by refining descriptions and restructuring slot usage for better navigation and organization.
- General cleanup of comments and annotations to ensure clarity and maintainability.
2026-02-16 11:17:33 +01:00

388 lines
13 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

id: https://nde.nl/ontology/hc/class/VideoPost
name: video_post_class
title: Video Post Class
imports:
- linkml:types
- ../slots/has_author
- ../slots/has_caption
- ../slots/commented_on
- ../slots/has_content
- ../slots/has_degree
- ../slots/identified_by
- ../slots/has_language
- ../slots/has_quantity
- ../slots/has_reply
- ../slots/has_resolution
- ../slots/has_score
- ../slots/has_status
- ../slots/has_time_interval
- ../slots/embedded_on
- ../slots/licensed_as
- ../slots/appropriate_for
- ../slots/appreciated
- ../slots/dismissed
- ../slots/updated_at
- ../slots/part_of
- ../slots/in_language
- ../slots/broadcast
- ../slots/observed_through
- ../slots/temporal_extent
- ../enums/LiveBroadcastStatusEnum
default_prefix: hc
classes:
VideoPost:
is_a: SocialMediaPost
class_uri: schema:VideoObject
alt_descriptions:
nl: Videopost op een sociaal mediaplatform (bijv. YouTube).
de: Videobeitrag auf einer Social-Media-Plattform (z. B. YouTube).
fr: Publication video sur une plateforme de medias sociaux (par ex. YouTube).
es: Publicacion de video en una plataforma de redes sociales (p. ej. YouTube).
ar: منشور فيديو على منصة تواصل اجتماعي (مثل يوتيوب).
id: Postingan video di platform media sosial (mis. YouTube).
zh: 社交媒体平台上的视频帖子(例如 YouTube
structured_aliases:
- {literal_form: videopost, in_language: nl}
- {literal_form: Video-Post, in_language: de}
- {literal_form: post video, in_language: fr}
- {literal_form: publicacion de video, in_language: es}
- {literal_form: منشور فيديو, in_language: ar}
- {literal_form: postingan video, in_language: id}
- {literal_form: 视频帖子, in_language: zh}
description: >-
Video post on a social media platform. Extends SocialMediaPost with
video-specific properties such as duration, resolution, caption tracks,
and observational metrics.
exact_mappings:
- schema:VideoObject
- as:Video
slots:
- has_caption
- part_of
- has_language
- has_status
- has_resolution
- has_degree
- dismissed
- has_time_interval
- embedded_on
- licensed_as
- appropriate_for
- has_quantity
- broadcast
- observed_through
- has_score
- identified_by
- commented_on
slot_usage:
has_time_interval:
range: TimeInterval
required: false
inlined: true
examples:
- value:
has_value: PT3M20S
# MIGRATED 2026-01-24: definition → has_resolution + Resolution (Rule 53)
has_resolution:
range: Resolution
required: false
inlined: true
examples:
- value:
resolution_class: hd
aspect_ratio: "16:9"
- value:
resolution_class: "4k"
- value:
resolution_class: sd
has_degree:
range: AspectRatio
inlined: true
required: false
examples:
- value:
has_degree: '16:9'
- value:
has_degree: '9:16'
# MIGRATED 2026-01-22: frame_rate → has_quantity + Quantity + has_unit + Unit (Rule 53)
# frame_rate:
# range: float
# required: false
# examples:
# - value: 30.0
# description: 30 frames per second
# MIGRATED 2026-01-22: caption_available → has_caption + Caption per slot_fixes.yaml feedback
has_caption:
range: Caption
multivalued: true
inlined: true
required: false
examples:
- value:
language: en
- value:
language: nl
caption_url: https://example.org/video/captions_nl.vtt
- value:
language:
# MIGRATED 2026-01-23: default_language, default_audio_language → has_language + Language + has_status + Status (Rule 53)
has_language:
range: Language
inlined: true
multivalued: true
required: false
examples:
- value:
language_code: "nl"
language_name: "Dutch"
- value:
language_code: "nl"
language_name: "Dutch"
- value:
language_code: "en"
language_name: "English"
has_status:
range: Status
inlined: true
multivalued: true
required: false
examples:
- value:
status_value: "nl"
- value:
status_value: "nl"
# has_available_caption_language REMOVED - migrated to has_language (Rule 53)
# has_available_caption_language:
# range: string
# multivalued: true
# required: false
# examples:
# - value:
# - nl
# - en
# - de
# description: Captions available in Dutch, English, German
has_quantity:
range: Quantity
inlined: true
inlined_as_list: true
multivalued: true
required: false
examples:
- value:
has_type: VIEW_COUNT
has_value: "1200000"
has_measurement_unit:
has_type: VIEW
has_symbol: views
temporal_extent:
begin_of_the_begin: "2025-12-01T23:16:22Z"
- value:
has_type: ENGAGEMENT_COUNT
has_value: "3500"
has_measurement_unit:
has_type: COMMENT
has_symbol: comments
temporal_extent:
begin_of_the_begin: "2025-12-01T23:16:22Z"
dismissed:
range: DismissalEvent
required: false
multivalued: true
inlined: true
examples:
- value:
has_quantity: 12
has_measurement_unit: dislike
# REMOVED 2026-01-18: comment_count - migrated to has_quantity + Quantity (Rule 53)
# comment_count:
# range: integer
# required: false
# minimum_value: 0
# examples:
# - value: 0
# description: No comments at observation time
# MIGRATED 2026-01-26: favorite_count → has_quantity + Quantity (Rule 53)
# favorite_count:
# range: integer
# required: false
# minimum_value: 0
observed_through:
range: datetime
required: false
examples:
- value: '2025-12-01T23:16:22.294232+00:00'
# MIGRATED from video_category_id (2026-01-14, Rule 53)
# video_category_id:
# range: string
# required: false
# examples:
# - value: '22'
# description: 'YouTube: People & Blogs'
# - value: '27'
# description: 'YouTube: Education'
identified_by:
range: VideoCategoryIdentifier
multivalued: true
required: false
inlined: true
examples:
- value: '{"has_code": "27", "category_name": "Education", "platform": "YouTube"}'
description: 'YouTube: Education category'
broadcast:
range: LiveBroadcastStatusEnum
required: false
examples:
- value: none
- value: live
licensed_as:
range: boolean
required: false
embedded_on:
range: boolean
required: false
appropriate_for:
range: boolean
required: false
# MIGRATED 2026-01-22: comments_fetched → retrieved_at + part_of_total + SourceCommentCount (Rule 53)
# comments_fetched:
# range: integer
# required: false
# minimum_value: 0
# examples:
# - value: 0
# description: No comments fetched
part_of:
range: SourceCommentCount
inlined: true
required: false
examples:
- value:
retrieved_at:
has_timestamp: '2025-12-01T23:16:22Z'
has_quantity: 100
commented_on: # was: video_comment - migrated per Rule 53 (2025-01-15)
range: VideoComment
multivalued: true
required: false
inlined: true
comments:
- Extends SocialMediaPost with video-specific properties
- Maps to as:Video and schema:VideoObject
- Metrics are observational - always include metrics_observed_at
- Caption availability signals but not content (see VideoSubtitle)
- YouTube is primary platform for heritage institution video content
see_also:
- https://www.w3.org/ns/activitystreams#Video
- https://schema.org/VideoObject
- https://developers.google.com/youtube/v3/docs/videos
VideoComment:
class_uri: schema:Comment
description: >-
A comment on a video post.
Models user-generated comments with author, text, timestamp,
and engagement metrics. Supports nested reply threads.
exact_mappings:
- schema:Comment
- as:Note
slots:
# MIGRATED 2026-01-18: comment_author → has_author + Author (Rule 53)
- has_author
# MIGRATED 2026-01-22: comment_author_channel_id → identified_by + DigitalPlatformUserIdentifier (Rule 53)
# NOTE: identified_by already present - used for both comment_id and comment_author_channel_id
# REMOVED 2026-01-18: comment_id - migrated to identified_by + Identifier (Rule 53)
- identified_by
# MIGRATED 2026-01-22: comment_like_count → appreciated + AppreciationEvent (Rule 53)
- appreciated
# REMOVED 2026-01-18: comment_published_at - migrated to temporal_extent + TimeSpan (Rule 53)
- temporal_extent
# MIGRATED 2026-01-22: comment_reply_count → has_reply + CommentReply (Rule 53)
- has_reply
# REMOVED 2026-01-18: comment_text - migrated to has_content + Content (Rule 53)
- has_content
# REMOVED 2026-01-18: comment_updated_at - migrated to was_last_updated_at + Timestamp (Rule 53)
- updated_at
- has_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
slot_usage:
# MIGRATED 2026-01-18: comment_id → identified_by + Identifier (Rule 53/56)
identified_by:
# range: string # uriorcurie
inlined: false # Fixed invalid inline for primitive type
required: true
examples:
- value: https://nde.nl/ontology/hc/video-comment/youtube/abc123
# REMOVED 2026-01-18: comment_author - migrated to has_author + Author (Rule 53)
# MIGRATED 2026-01-18: comment_author → has_author + Author (Rule 53)
# MIGRATED 2026-01-22: comment_author_channel_id is now captured via Author.identified_by (Rule 53)
has_author:
range: Author
inlined: true
required: true
examples:
- value:
has_name: "Visitor123"
- value:
has_name: "MuseumFan2024"
identified_by:
- identifier_scheme: youtube_channel_id
identifier_value: "UC1234..."
platform_type: "youtube"
# MIGRATED 2026-01-22: comment_author_channel_id → identified_by + DigitalPlatformUserIdentifier (Rule 53)
# NOTE: identified_by slot_usage updated above to handle BOTH comment_id AND comment_author_channel_id
# The Author class already has identified_by slot, so channel_id can be linked via:
# has_author:
# identified_by:
# - identifier_scheme: youtube_channel_id
# identifier_value: "UC1234..."
# platform_type: "youtube"
# MIGRATED 2026-01-18: comment_text → has_content + Content (Rule 53/56)
has_content:
# range: string
inlined: false # Fixed invalid inline for primitive type
required: true
examples:
- value:
has_description: "Great video about the collection!"
# MIGRATED 2026-01-18: comment_published_at → temporal_extent + TimeSpan (Rule 53/56)
temporal_extent:
range: TimeSpan
inlined: true
required: true
examples:
- value:
begin_of_the_begin: "2025-01-14T10:30:00Z"
# MIGRATED 2026-01-18: comment_updated_at → was_last_updated_at + Timestamp (Rule 53/56)
updated_at:
range: Timestamp
inlined: true
required: false
examples:
- value:
has_timestamp: "2025-01-15T10:30:00Z"
has_level: second
# MIGRATED 2026-01-22: comment_like_count → appreciated + AppreciationEvent (Rule 53)
appreciated:
range: AppreciationEvent
inlined: true
inlined_as_list: true
required: false
examples:
- value:
has_quantity: 100
has_measurement_unit: likes
temporal_extent:
begin_of_the_begin: "2025-01-15T10:30:00Z"
# MIGRATED 2026-01-22: comment_reply_count → has_reply + CommentReply (Rule 53)
has_reply:
range: CommentReply
inlined: true
inlined_as_list: true
required: false
examples:
- value:
has_quantity: 12
has_measurement_unit: replies
temporal_extent:
begin_of_the_begin: "2025-01-15T10:30:00Z"
has_score: