glam/schemas/20251121/linkml/modules/classes/SocialMediaProfile.yaml
kempersc 4319f38c05 Add archived slots for audience size, audience type, and capacity metrics
- Created new YAML files for audience size and audience type slots, defining their properties and annotations.
- Added archived capacity slots including cubic meters, linear meters, item count, and descriptions, with appropriate URIs and ranges.
- Introduced a template specificity slot for context-aware RAG filtering.
- Consolidated capacity-related slots into a unified structure, including has_or_had_capacity, capacity_type, and capacity_value, with detailed descriptions and examples.
2026-01-17 18:53:23 +01:00

394 lines
18 KiB
YAML

id: https://nde.nl/ontology/hc/class/social-media-profile
name: social_media_profile_class
title: SocialMediaProfile Class
imports:
- linkml:types
- ./Custodian
- ./DigitalPlatform
- ./AuxiliaryDigitalPlatform
- ./CustodianObservation
- ./ReconstructionActivity
- ./TimeSpan
- ./WebObservation
- ./PrimaryDigitalPresenceAssertion
- ./SocialMediaPlatformType
- ../slots/language
- ../slots/platform_type
- ../slots/platform_name
- ./ReconstructedEntity
- ../slots/has_or_had_account_name
- ../slots/has_or_had_account_status
- ../slots/has_or_had_associated_auxiliary_platform
- ../slots/has_or_had_associated_digital_platform
- ../slots/cover_image_url
- ../slots/created_date
- ../slots/engagement_rate
- ../slots/follower_count
- ../slots/following_count
- ../slots/is_primary_digital_presence
- ../slots/metrics_observed_date
- ../slots/post_count
- ../slots/has_or_had_primary_presence_assertion
- ../slots/profile_description
- ../slots/profile_image_url
- ../slots/profile_url
- ../slots/refers_to_custodian
- ../slots/social_media_profile_id
- ../slots/specificity_annotation
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
- ../slots/temporal_extent # was: valid_from + valid_to - migrated per Rule 53
# REMOVED 2026-01-14: valid_from + valid_to - migrated to temporal_extent (Rule 53)
# REMOVED 2026-01-15: verified - migrated to has_or_had_verification_status (Rule 53)
# - ../slots/verified
- ../slots/has_or_had_verification_status
- ./VerificationStatus
- ../slots/is_or_was_derived_from # was: was_derived_from - migrated per Rule 53
- ../slots/is_or_was_generated_by # was: was_generated_by - migrated per Rule 53
- ./SpecificityAnnotation
- ./TemplateSpecificityScore # was: TemplateSpecificityScores - migrated per Rule 53 (2026-01-17)
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
- ../slots/has_or_had_account_identifier
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#
wd: http://www.wikidata.org/entity/
default_prefix: hc
classes:
SocialMediaProfile:
is_a: ReconstructedEntity
class_uri: foaf:OnlineAccount
description: "Represents a social media account or profile maintained by a heritage custodian.\n\n**FOAF ONTOLOGY ALIGNMENT**:\n\
\nMaps to `foaf:OnlineAccount` - \"An online account.\"\n\nKey FOAF properties used:\n- `foaf:accountName` - Username/handle\
\ on the platform\n- `foaf:accountServiceHomepage` - Homepage of the service provider (e.g., https://twitter.com)\n\
- `foaf:account` - Inverse property linking Agent to OnlineAccount\n\n**RELATIONSHIP TO DIGITAL PLATFORM HIERARCHY**:\n\
\nSocial media profiles exist in a three-tier digital presence model:\n\n```\n1. DigitalPlatform (PRIMARY digital presence)\n\
\ - Main website, primary API, flagship platform\n - Example: rijksmuseum.nl\n - Links to Custodian via refers_to_custodian\n\
\ \n2. AuxiliaryDigitalPlatform (SECONDARY digital properties)\n - Project sites, exhibition microsites, specialized\
\ tools\n - Example: Rijksstudio, Night Watch Experience\n - Links to DigitalPlatform via is_auxiliary_of\n \n\
3. SocialMediaProfile (THIRD-PARTY presence) - THIS CLASS\n - Accounts on external social media services\n - Example:\
\ @rijksmuseum on Instagram, Facebook, X\n - Links to BOTH Custodian AND optionally DigitalPlatform/AuxiliaryDigitalPlatform\n\
```\n\n**WHY SOCIAL MEDIA IS DISTINCT FROM AUXILIARY PLATFORMS**:\n\nUnlike AuxiliaryDigitalPlatform (owned/operated\
\ digital properties), social media profiles:\n- Are hosted on THIRD-PARTY platforms (not custodian-controlled)\n- Have\
\ standardized URL patterns per platform\n- Provide follower/engagement metrics\n- Subject to platform terms of service\n\
- Can be verified/authenticated by platform\n\n**RELATIONSHIP TO CUSTODIAN vs DIGITAL PLATFORM**:\n\nSocial media profiles\
\ can link to:\n\n1. **Custodian directly** (`refers_to_custodian`):\n - When social media is the PRIMARY or ONLY\
\ digital presence\n - Example: Small local heritage society with Facebook page as main presence\n \n2. **DigitalPlatform**\
\ (`associated_digital_platform`):\n - When social media SUPPORTS the main website\n - Example: Rijksmuseum Instagram\
\ supports rijksmuseum.nl\n \n3. **AuxiliaryDigitalPlatform** (`associated_auxiliary_platform`):\n - When social\
\ media is for a SPECIFIC project/exhibition\n - Example: Instagram account for a temporary exhibition\n\n**DECISION\
\ RULES**:\n\n\"Is social media this custodian's MAIN way to profile itself online?\"\n\n- **YES** → Link SocialMediaProfile\
\ directly to Custodian\n - is_primary_digital_presence: true\n - associated_digital_platform: null\n - Example:\
\ Local heritage group with only Facebook\n \n- **NO** → Link SocialMediaProfile to DigitalPlatform/AuxiliaryDigitalPlatform\n\
\ - is_primary_digital_presence: false\n - associated_digital_platform: (main website)\n - Example: Museum Instagram\
\ supporting main website\n\n**TEMPORAL VALIDITY**:\n\nSocial media profiles have lifecycles:\n- Account creation date\n\
- Account deactivation/deletion date\n- Platform migration (e.g., Twitter → X)\n- Account suspension/recovery\n\n**METRICS\
\ AND ANALYTICS**:\n\nSocial media profiles can track:\n- Follower/subscriber count\n- Post count\n- Engagement metrics\n\
- Verification status\n\nThese metrics are OBSERVATIONAL and should be timestamped.\n\n**Example - Museum with Social\
\ Media Supporting Website**:\n```yaml\nCustodian:\n hc_id: \"https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804\"\n\
\ preferred_label: \"Rijksmuseum\"\n \n digital_platform:\n - platform_name: \"Rijksmuseum Website\"\n homepage_web_address:\
\ \"https://www.rijksmuseum.nl/\"\n \n social_media_profiles:\n - platform_type: INSTAGRAM\n account_name:\
\ \"rijksmuseum\"\n profile_url: \"https://www.instagram.com/rijksmuseum/\"\n is_primary_digital_presence:\
\ false # Website is primary\n associated_digital_platform: \".../platform/rijksmuseum-website\"\n follower_count:\
\ 1200000\n verified: true\n \n - platform_type: X_TWITTER\n account_name: \"rijksmuseum\"\n profile_url:\
\ \"https://x.com/rijksmuseum\"\n is_primary_digital_presence: false\n associated_digital_platform: \".../platform/rijksmuseum-website\"\
\n```\n\n**Example - Local Society with Social Media as Primary Presence**:\n```yaml\nCustodian:\n hc_id: \"https://nde.nl/ontology/hc/nl-fr-123-s-hvn\"\
\n preferred_label: \"Historische Vereniging Nijeveen\"\n \n digital_platform: null # No formal website\n \n social_media_profiles:\n\
\ - platform_type: FACEBOOK\n account_name: \"HistorischeVerenigingNijeveen\"\n profile_url: \"https://www.facebook.com/HistorischeVerenigingNijeveen\"\
\n is_primary_digital_presence: true # Facebook IS their main presence\n associated_digital_platform: null\n\
\ follower_count: 450\n```\n"
exact_mappings:
- foaf:OnlineAccount
close_mappings:
- schema:ContactPoint
- schema:SocialMediaPosting
- crm:E73_Information_Object
related_mappings:
- foaf:account
- schema:sameAs
- dcterms:identifier
slots:
- has_or_had_account_identifier
- has_or_had_account_name
- has_or_had_account_status
- has_or_had_associated_auxiliary_platform
- has_or_had_associated_digital_platform
- cover_image_url
- created_date
- engagement_rate
- follower_count
- following_count
- is_primary_digital_presence
- language
- metrics_observed_date
- platform_name
- platform_type
- post_count
- has_or_had_primary_presence_assertion
- profile_description
- profile_image_url
- profile_url
- refers_to_custodian
- social_media_profile_id
- specificity_annotation
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
- temporal_extent # was: valid_from + valid_to - migrated per Rule 53
# REMOVED: verified - migrated to has_or_had_verification_status (Rule 53)
- has_or_had_verification_status # was: verified
- is_or_was_derived_from # was: was_derived_from - migrated per Rule 53
- is_or_was_generated_by # was: was_generated_by - migrated per Rule 53
slot_usage:
social_media_profile_id:
range: uriorcurie
required: true
identifier: true
examples:
- value: https://nde.nl/ontology/hc/social-media/rijksmuseum-instagram
description: Rijksmuseum Instagram profile ID
platform_type:
range: SocialMediaPlatformType
required: true
examples:
- value: INSTAGRAM
description: Instagram platform
- value: FACEBOOK
description: Facebook platform
platform_name:
range: string
required: false
examples:
- value: Instagram
description: Instagram platform name
- value: Mastodon (glammr.us)
description: Mastodon instance specification
has_or_had_account_name:
range: string
required: true
examples:
- value: rijksmuseum
description: Rijksmuseum username
has_or_had_account_identifier:
range: string
required: false
examples:
- value: '123456789'
description: Twitter user ID
profile_url:
range: uri
required: true
pattern: ^https?://
examples:
- value: https://www.instagram.com/rijksmuseum
description: Rijksmuseum Instagram URL
profile_description:
range: string
required: false
examples:
- value: The museum of the Netherlands. Open daily 9-17h.
description: Rijksmuseum Instagram bio
is_primary_digital_presence:
range: boolean
required: false
ifabsent: 'false'
examples:
- value: false
description: Instagram supports main website
- value: true
description: Facebook IS the main digital presence
has_or_had_primary_presence_assertion:
range: PrimaryDigitalPresenceAssertion
multivalued: true
inlined_as_list: true
required: false
has_or_had_verification_status: # was: verified - migrated per Rule 53
description: |
Platform verification status (e.g., verified checkmark).
MIGRATED from verified boolean to structured VerificationStatus class.
range: VerificationStatus
inlined: true
required: false
examples:
- value:
status: VERIFIED
verified_date: "2024-06-15T00:00:00Z"
description: Verified account with blue checkmark
follower_count:
range: integer
required: false
examples:
- value: 1200000
description: 1.2M Instagram followers
following_count:
range: integer
required: false
examples:
- value: 250
description: Following 250 accounts
post_count:
range: integer
required: false
examples:
- value: 2500
description: 2,500 posts
engagement_rate:
range: float
required: false
examples:
- value: 2.5
description: 2.5% engagement rate
metrics_observed_date:
range: datetime
required: false
examples:
- value: '2025-11-29T12:00:00Z'
description: Metrics observed November 29, 2025
profile_image_url:
range: uri
required: false
examples:
- value: https://instagram.com/p/rijksmuseum/avatar.jpg
description: Profile image URL
cover_image_url:
range: uri
required: false
examples:
- value: https://facebook.com/rijksmuseum/cover.jpg
description: Facebook cover image
has_or_had_associated_digital_platform:
range: DigitalPlatform
required: false
examples:
- value: https://nde.nl/ontology/hc/platform/rijksmuseum-website
description: Linked to main Rijksmuseum website
has_or_had_associated_auxiliary_platform:
range: AuxiliaryDigitalPlatform
required: false
examples:
- value: https://nde.nl/ontology/hc/aux-platform/night-watch-exhibition
description: Instagram for Night Watch exhibition
created_date:
range: date
required: false
examples:
- value: '2012-03-15'
description: Account created March 2012
temporal_extent: # was: valid_from + valid_to - migrated per Rule 53
description: |
Validity period using CIDOC-CRM TimeSpan.
MIGRATED from valid_from + valid_to per slot_fixes.yaml (Rule 53).
range: TimeSpan
inlined: true
required: false
examples:
- value:
begin_of_the_begin: '2012-03-15'
description: Active from March 2012
- value:
begin_of_the_begin: '2012-03-15'
end_of_the_end: '2024-06-01'
description: Account active March 2012 to June 2024
has_or_had_account_status:
range: string
required: false
examples:
- value: ACTIVE
description: Account is actively maintained
- value: MIGRATED
description: Moved to new platform
language:
range: string
required: false
examples:
- value: nl
description: Dutch language profile
- value: en
description: English language profile
is_or_was_derived_from: # was: was_derived_from - migrated per Rule 53
range: CustodianObservation
multivalued: true
required: false
is_or_was_generated_by: # was: was_generated_by - migrated per Rule 53
range: ReconstructionActivity
required: false
refers_to_custodian:
range: Custodian
required: true
examples:
- value: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
description: Rijksmuseum custodian hub
comments:
- SocialMediaProfile models THIRD-PARTY social media accounts
- Distinct from DigitalPlatform (owned websites) and AuxiliaryDigitalPlatform (owned project sites)
- FOAF foaf:OnlineAccount as primary ontology alignment
- Supports both 'social media as primary presence' and 'social media supporting website' patterns
- Metrics (followers, posts) are observational and require timestamp
- Platform-specific subclasses (FacebookProfile, InstagramProfile, etc.) can extend this base class
- Links to Custodian via foaf:account pattern
see_also:
- http://xmlns.com/foaf/0.1/OnlineAccount
- http://xmlns.com/foaf/0.1/account
- https://schema.org/ContactPoint
- https://schema.org/sameAs
examples:
- value:
social_media_profile_id: https://nde.nl/ontology/hc/social-media/rijksmuseum-instagram
platform_type: INSTAGRAM
account_name: rijksmuseum
profile_url: https://www.instagram.com/rijksmuseum
profile_description: 'The museum of the Netherlands. Open daily 9-17h. #Rijksmuseum'
is_primary_digital_presence: false
has_or_had_verification_status: # was: verified: true
status: VERIFIED
follower_count: 1200000
post_count: 3500
engagement_rate: 2.5
metrics_observed_date: '2025-11-29T12:00:00Z'
associated_digital_platform: https://nde.nl/ontology/hc/platform/rijksmuseum-website
account_status: ACTIVE
language: en
refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
description: Rijksmuseum Instagram (supports main website)
- value:
social_media_profile_id: https://nde.nl/ontology/hc/social-media/hvn-facebook
platform_type: FACEBOOK
account_name: HistorischeVerenigingNijeveen
profile_url: https://www.facebook.com/HistorischeVerenigingNijeveen
profile_description: Historische Vereniging Nijeveen - preserving local heritage since 1985
is_primary_digital_presence: true
has_or_had_verification_status: # was: verified: false
status: UNVERIFIED
follower_count: 450
post_count: 320
metrics_observed_date: '2025-11-29T10:00:00Z'
associated_digital_platform: null
account_status: ACTIVE
language: nl
refers_to_custodian: https://nde.nl/ontology/hc/nl-dr-nvn-s-hvn
description: Local heritage society with Facebook as primary presence
- value:
social_media_profile_id: https://nde.nl/ontology/hc/social-media/rijksmuseum-x
platform_type: X_TWITTER
account_name: rijksmuseum
has_or_had_account_identifier: '20137141'
profile_url: https://x.com/rijksmuseum
is_primary_digital_presence: false
has_or_had_verification_status: # was: verified: true - migrated per Rule 53
status: VERIFIED
follower_count: 350000
following_count: 150
post_count: 12500
metrics_observed_date: '2025-11-29T12:00:00Z'
associated_digital_platform: https://nde.nl/ontology/hc/platform/rijksmuseum-website
created_date: '2009-02-05'
account_status: ACTIVE
language: en
refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
description: Rijksmuseum X/Twitter profile