- Removed obsolete slots: `has_or_had_custodian_observation`, `provider`, and `specificity_annotation`. - Updated `has_or_had_score` slot to use `SpecificityScore` class and modified its description and examples. - Added new slots: `end_seconds`, `end_time`, `has_archive_path`, `has_or_had_custodian_name`, `protocol_name`, and `protocol_version`. - Introduced a script `check_annotation_types.py` to validate the presence and structure of `custodian_types` in YAML files. - Added a script `update_specificity.py` to automate updates related to `SpecificityAnnotation` to `SpecificityScore`.
225 lines
12 KiB
YAML
225 lines
12 KiB
YAML
id: https://nde.nl/ontology/hc/class/social-media-profile
|
|
name: social_media_profile_class
|
|
title: SocialMediaProfile Class
|
|
imports:
|
|
- linkml:types
|
|
- ../slots/cover_image_url
|
|
- ../slots/created_date
|
|
- ../slots/has_or_had_engagement_metric
|
|
- ../slots/has_or_had_score
|
|
- ../slots/is_or_was_categorized_as
|
|
- ../slots/is_or_was_derived_from
|
|
- ../slots/is_or_was_generated_by
|
|
- ../slots/is_primary_digital_presence
|
|
- ../slots/language
|
|
- ../slots/metrics_observed_date
|
|
- ../slots/platform_name
|
|
- ../slots/platform_type
|
|
- ../slots/post_count
|
|
- ../slots/profile_description
|
|
- ../slots/profile_image_url
|
|
- ../slots/refers_to_custodian
|
|
- ../slots/social_media_profile_id
|
|
- ../slots/temporal_extent
|
|
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 \n3. 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** \u2192 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** \u2192 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 \u2192 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 has_or_had_identifier: \"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 has_or_had_identifier: \"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:
|
|
- cover_image_url
|
|
- created_date
|
|
- has_or_had_engagement_metric
|
|
- is_primary_digital_presence
|
|
- language
|
|
- metrics_observed_date
|
|
- platform_name
|
|
- platform_type
|
|
- post_count
|
|
- profile_description
|
|
- profile_image_url
|
|
- refers_to_custodian
|
|
- social_media_profile_id
|
|
- has_or_had_score
|
|
- temporal_extent
|
|
- is_or_was_derived_from
|
|
- is_or_was_generated_by
|
|
slot_usage:
|
|
social_media_profile_id:
|
|
range: uriorcurie
|
|
required: true
|
|
identifier: true
|
|
examples:
|
|
- value: https://nde.nl/ontology/hc/social-media/rijksmuseum-instagram
|
|
platform_type:
|
|
range: uriorcurie
|
|
required: true
|
|
examples:
|
|
- value: INSTAGRAM
|
|
- value: FACEBOOK
|
|
platform_name:
|
|
range: string
|
|
required: false
|
|
examples:
|
|
- value: Instagram
|
|
- value: Mastodon (glammr.us)
|
|
profile_description:
|
|
range: string
|
|
required: false
|
|
examples:
|
|
- value: The museum of the Netherlands. Open daily 9-17h.
|
|
is_primary_digital_presence:
|
|
range: boolean
|
|
required: false
|
|
ifabsent: 'false'
|
|
examples:
|
|
- value: false
|
|
- value: true
|
|
post_count:
|
|
range: integer
|
|
required: false
|
|
examples:
|
|
- value: 2500
|
|
has_or_had_engagement_metric:
|
|
range: EngagementMetric
|
|
inlined: true
|
|
multivalued: true
|
|
examples:
|
|
- value:
|
|
has_or_had_type: Engagement Rate
|
|
has_or_had_value: 2.5
|
|
has_or_had_unit: '%'
|
|
metrics_observed_date:
|
|
range: datetime
|
|
required: false
|
|
examples:
|
|
- value: '2025-11-29T12:00:00Z'
|
|
profile_image_url:
|
|
range: uri
|
|
required: false
|
|
examples:
|
|
- value: https://instagram.com/p/rijksmuseum/avatar.jpg
|
|
cover_image_url:
|
|
range: uri
|
|
required: false
|
|
examples:
|
|
- value: https://facebook.com/rijksmuseum/cover.jpg
|
|
created_date:
|
|
range: date
|
|
required: false
|
|
examples:
|
|
- value: '2012-03-15'
|
|
temporal_extent:
|
|
range: TimeSpan
|
|
inlined: true
|
|
required: false
|
|
examples:
|
|
- value:
|
|
begin_of_the_begin: '2012-03-15'
|
|
- value:
|
|
begin_of_the_begin: '2012-03-15'
|
|
end_of_the_end: '2024-06-01'
|
|
language:
|
|
range: string
|
|
required: false
|
|
examples:
|
|
- value: nl
|
|
- value: en
|
|
is_or_was_derived_from:
|
|
range: CustodianObservation
|
|
multivalued: true
|
|
required: false
|
|
is_or_was_generated_by:
|
|
range: ReconstructionActivity
|
|
required: false
|
|
refers_to_custodian:
|
|
range: Custodian
|
|
required: true
|
|
examples:
|
|
- value: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
|
|
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
|
|
post_count: 3500
|
|
has_or_had_engagement_metric:
|
|
- has_or_had_type: Engagement Rate
|
|
has_or_had_value: 2.5
|
|
has_or_had_unit: '%'
|
|
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
|
|
- 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
|
|
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
|
|
- value:
|
|
social_media_profile_id: https://nde.nl/ontology/hc/social-media/rijksmuseum-x
|
|
platform_type: X_TWITTER
|
|
account_name: rijksmuseum
|
|
profile_url: https://x.com/rijksmuseum
|
|
is_primary_digital_presence: false
|
|
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
|
|
annotations:
|
|
specificity_score: 0.1
|
|
specificity_rationale: Generic utility class/slot created during migration
|
|
custodian_types: "['*']"
|