glam/schemas/20251121/linkml/modules/classes/SocialMediaContent.yaml
kempersc 47663e7c79 Refactor schema definitions and slots for improved temporal modeling and publisher representation
- Migrated `published_at` to `is_or_was_published_at` with structured `PublicationEvent` class for enhanced temporal accuracy.
- Introduced `has_or_had_publisher` slot to replace the string-based `publisher` slot, allowing for detailed publisher information.
- Added new slots: `deduction_percentage`, `regulatory_body`, `expiration_date`, and `jurisdiction` to support tax scheme documentation.
- Archived outdated slots: `published_by` and `publisher`, ensuring compliance with updated naming conventions and ontology alignment.
- Updated `Database` types to `DatabaseSystem` for consistency in technological infrastructure classification.
- Broadened range types for slots `allows_or_allowed` and `includes_or_included` from `string` to `uriorcurie` to resolve OWL ambiguities.
- Enhanced documentation and examples across various classes and slots to clarify usage and improve understanding.
2026-01-17 21:10:50 +01:00

238 lines
10 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/SocialMediaContent
name: social_media_content_class
title: Social Media Content Base Class
imports:
- linkml:types
- ./SocialMediaProfile
- ./SocialMediaPlatformType
- ./TimeSpan
- ./WebObservation
- ../slots/language
- ../slots/has_or_had_api_endpoint
- ../slots/has_api_version
- ../slots/content_category
- ../slots/content_id
- ../slots/content_url
- ../slots/description
- ../slots/is_official_content
- ../slots/platform_type
- ../slots/posted_by_profile
# - ../slots/published_at # ARCHIVED 2026-01-17 - migrated per Rule 53/56
- ../slots/is_or_was_published_at # was: published_at - migrated per Rule 53/56 (2026-01-17)
- ./PublicationEvent # for is_or_was_published_at range
- ./TimeSpan # for PublicationEvent.temporal_extent
- ../slots/retrieval_timestamp
- ../slots/specificity_annotation
- ../slots/is_or_was_categorized_as # was: tag - migrated per Rule 53/56 (2026-01-16)
- ./Tag
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
- ../slots/has_or_had_url # was: thumbnail_url - migrated per Rule 53 (2026-01-15)
- ../slots/has_or_had_label # was: title - migrated per Rule 53
- ../slots/was_last_updated_at # was: updated_at - migrated per Rule 53
- ./SpecificityAnnotation
- ./TemplateSpecificityScore # was: TemplateSpecificityScores - migrated per Rule 53 (2026-01-17)
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
foaf: http://xmlns.com/foaf/0.1/
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#
as: https://www.w3.org/ns/activitystreams#
default_prefix: hc
classes:
SocialMediaContent:
class_uri: as:Object
abstract: true
description: "Abstract base class for all social media content items.\n\n**DEFINITION**:\n\nSocialMediaContent represents\
\ discrete pieces of content published on social media\nplatforms. This includes videos, images, text posts, stories,\
\ and other content types.\nEach content item is posted by a SocialMediaProfile (the channel/account).\n\n**CRITICAL:\
\ CONTENT vs PROFILE vs PLATFORM**:\n\n| Class | Represents | Example | Cardinality |\n|-------|------------|---------|-------------|\n\
| SocialMediaPlatformType | Platform category | YouTube | ~25 types |\n| SocialMediaProfile | Account/channel | @rijksmuseum\
\ | Thousands |\n| **SocialMediaContent** | Individual content | A video, post | Millions |\n\n**ACTIVITY STREAMS 2.0\
\ ALIGNMENT**:\n\nMaps to `as:Object` from W3C Activity Streams 2.0 vocabulary:\n- as:Object is the base type for content\
\ in social media\n- Subclasses map to as:Video, as:Image, as:Note, etc.\n- Enables federation with ActivityPub-based\
\ platforms (Mastodon, PeerTube)\n\n**HERITAGE INSTITUTION CONTEXT**:\n\nSocial media content from heritage institutions\
\ includes:\n\n1. **Official content** (posted by the institution):\n - Collection highlights\n - Exhibition announcements\n\
\ - Educational videos\n - Behind-the-scenes content\n - Event recordings\n\n2. **Third-party content** (about\
\ the institution):\n - Visitor videos/photos\n - News coverage\n - Academic discussions\n - Review content\n\
\n3. **User-generated content** (mentions):\n - Tagged posts\n - Check-ins\n - Comments/discussions\n\n**PROVENANCE\
\ TRACKING**:\n\nContent items are OBSERVATIONAL data retrieved via:\n- Platform APIs (YouTube Data API, Twitter API,\
\ etc.)\n- Web scraping (when API unavailable)\n- Manual archival\n\nEach content record includes:\n- `retrieval_timestamp`:\
\ When content was fetched\n- `api_endpoint`: Which API/method was used\n- `metrics_observed_date`: When engagement\
\ metrics were recorded\n\n**TEMPORAL CONSIDERATIONS**:\n\nContent has multiple temporal dimensions:\n- `is_or_was_published_at`:\
\\ When originally posted\\n- `was_last_updated_at`: Last modification by author\\n- `retrieval_timestamp`: When we fetched it\\n\\
- `metrics_observed_date`: When metrics (views, likes) were recorded\n\nEngagement metrics change constantly; always\
\ record observation timestamp.\n\n**SUBCLASSES**:\n\n- VideoPost: YouTube, TikTok, Vimeo videos\n- ImagePost: Instagram,\
\ Pinterest posts (future)\n- TextPost: Twitter/X, Mastodon posts (future)\n- StoryPost: Instagram/Facebook stories\
\ (future)\n"
exact_mappings:
- as:Object
close_mappings:
- schema:CreativeWork
- crm:E73_Information_Object
related_mappings:
- schema:SocialMediaPosting
- dcterms:BibliographicResource
slots:
- has_or_had_api_endpoint
- has_api_version
- content_category
- content_id
- content_url
- description
- is_official_content
- language
- platform_type
- posted_by_profile
- is_or_was_published_at # was: published_at - migrated per Rule 53/56 (2026-01-17)
- retrieval_timestamp
- specificity_annotation
- is_or_was_categorized_as # was: tag - migrated per Rule 53/56 (2026-01-16)
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
- has_or_had_url # was: thumbnail_url - migrated per Rule 53 (2026-01-15)
- has_or_had_label # was: title
- was_last_updated_at # was: updated_at - migrated per Rule 53
slot_usage:
content_id:
range: string
required: true
identifier: true
examples:
- value: FbIoC-Owy-M
description: YouTube video ID
content_url:
range: uri
required: true
pattern: ^https?://
examples:
- value: https://www.youtube.com/watch?v=FbIoC-Owy-M
description: YouTube video URL
platform_type:
range: SocialMediaPlatformType
required: true
examples:
- value: YouTube
description: Content from YouTube platform
posted_by_profile:
range: SocialMediaProfile
required: false
examples:
- value: https://nde.nl/ontology/hc/social-media/nationaal-onderduikmuseum-youtube
description: Museum's YouTube channel profile
has_or_had_label: # was: title
range: string
required: false
examples:
- value: De Vrijheidsroute (aflevering 3) Zevenaar, Duiven, Westervoort
description: YouTube video title
description:
range: string
required: false
examples:
- value: De videoreeks De Vrijheidsroute is gebaseerd op de gelijknamige fietsroute...
description: YouTube video description
is_or_was_published_at: # was: published_at - migrated per Rule 53/56 (2026-01-17)
range: PublicationEvent
required: true
inlined: true
description: |
Publication event with temporal extent. For precise timestamps,
set all four TimeSpan boundaries to the same instant.
examples:
- value:
temporal_extent:
begin_of_the_begin: '2025-07-30T18:05:15Z'
end_of_the_begin: '2025-07-30T18:05:15Z'
begin_of_the_end: '2025-07-30T18:05:15Z'
end_of_the_end: '2025-07-30T18:05:15Z'
description: Published July 30, 2025 (precise timestamp)
was_last_updated_at: # was: updated_at - migrated per Rule 53
range: datetime
required: false
examples:
- value: '2025-08-01T10:30:00Z'
description: Last edited August 1, 2025
language:
range: string
required: false
examples:
- value: nl
description: Dutch language content
# was: tag - migrated per Rule 53/56 (2026-01-16)
is_or_was_categorized_as:
range: Tag
multivalued: true
inlined_as_list: true
required: false
description: |
Tags, hashtags, or keywords associated with the content.
MIGRATED from tag slot per slot_fixes.yaml (Rule 53/56, 2026-01-16).
examples:
- value:
- tag_value: "80 jaar vrijheid"
is_hashtag: false
tag_platform: YouTube
- tag_value: "wo2"
is_hashtag: false
tag_platform: YouTube
- tag_value: "vrijheidsroute"
is_hashtag: false
tag_platform: YouTube
description: YouTube video tags (migrated to structured Tag format)
has_or_had_url: # was: thumbnail_url - migrated per Rule 53 (2026-01-15)
range: uri
required: false
description: |
Thumbnail URL for this social media content.
MIGRATED from thumbnail_url slot per slot_fixes.yaml (Rule 53, 2026-01-15).
examples:
- value: https://i.ytimg.com/vi/FbIoC-Owy-M/hqdefault.jpg
description: YouTube video thumbnail
is_official_content:
range: boolean
required: false
ifabsent: 'true'
examples:
- value: true
description: Posted by official museum channel
content_category:
range: string
required: false
examples:
- value: '22'
description: YouTube category ID for People & Blogs
retrieval_timestamp:
range: datetime
required: true
examples:
- value: '2025-12-01T23:16:22.294232+00:00'
description: Retrieved December 1, 2025
has_or_had_api_endpoint:
range: string
required: false
examples:
- value: https://www.googleapis.com/youtube/v3
description: YouTube Data API v3
has_api_version:
range: string
required: false
examples:
- value: v3
description: YouTube API version 3
comments:
- Abstract base class - use specific subclasses (VideoPost, ImagePost, etc.)
- Represents individual CONTENT items, not profiles or platforms
- Activity Streams 2.0 alignment enables ActivityPub federation
- Metrics are observational - always include retrieval_timestamp
- Supports both official institutional content and third-party coverage
see_also:
- https://www.w3.org/ns/activitystreams#Object
- https://schema.org/CreativeWork
- https://schema.org/SocialMediaPosting