glam/frontend/public/schemas/20251121/linkml/modules/classes/LinkedInProfile.yaml
kempersc 9342919c79 Add archived slot definitions for various attributes
- Introduced dual_class_role, emic_name, employer_linkedin_url, employer_name, employment_dates_raw, employment_end_date, employment_start_date, end_date, end_seconds, end_time, ended_at_time, endowment_draw, engagement_rate, enriched_date, enrichment_metadata_whatsapp, enrichment_method_whatsapp, exhibition_timespan, has_timespan, policy_effective_from, policy_effective_to, start_date, can_or_could_be_retrieved_from, documents_or_documented, has_or_had_contributor, has_or_had_drawer, has_or_had_email, has_or_had_endowment_draw, has_or_had_engagement_metric, has_or_had_metadata, has_or_had_summary, is_or_was_employed_by, and is_or_was_expired_at slots.
- Each slot includes detailed descriptions, ranges, and mappings to ensure compliance with ontology standards.
2026-01-26 17:32:24 +01:00

421 lines
15 KiB
YAML

id: https://nde.nl/ontology/hc/class/LinkedInProfile
name: linkedin_profile_class
title: LinkedIn Profile Class
version: 1.0.0
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
foaf: http://xmlns.com/foaf/0.1/
prov: http://www.w3.org/ns/prov#
dct: http://purl.org/dc/terms/
imports:
- linkml:types
- ../metadata
- ./ExtractionMetadata
- ./WorkExperience
- ./EducationCredential
- ./HeritageRelevance
- ./LanguageProficiency
- ../slots/has_or_had_about_text
- ../slots/has_or_had_provenance
- ./ProvenanceBlock
- ../slots/has_assessment_date
- ../slots/connections_text
- ../slots/has_or_had_source # was: data_source_whatsapp - migrated per Rule 53/56/57 (2026-01-23)
- ./DataSource
# MIGRATED 2026-01-25: digital_confidence → estimates_or_estimated + DigitalConfidence (Rule 53)
- ../slots/estimates_or_estimated
- ./DigitalConfidence
# MIGRATED 2026-01-25: digital_indicator → emphasizes_or_emphasized + DigitalProficiency (Rule 53)
- ../slots/emphasizes_or_emphasized
- ./DigitalProficiency
# - ../slots/digital_indicator # REMOVED
- ../slots/digital_professional
- ../slots/education
- ../slots/temporal_extent # was: enriched_date - migrated per Rule 53 (2026-01-26)
- ../slots/has_or_had_metadata
- ./EnrichmentMetadata
- ../slots/has_or_had_method
- ./EnrichmentMethod
- ../slots/experience
- ../slots/extraction_metadata
- ../slots/headline
- ../slots/heritage_relevance
- ../slots/has_or_had_language
- ../slots/languages_raw
- ../slots/likelihood_confidence
- ../slots/likelihood_factor
- ../slots/likelihood_level
- ../slots/likelihood_score
- ../slots/likely_whatsapp_proficient
- ../slots/max_likelihood_score
- ../slots/no_fabrication
- ../slots/profile_data
- ../slots/profile_image_url
- ../slots/profile_linkedin_url
- ../slots/profile_location
- ../slots/profile_name
- ../slots/skill
- ../slots/source_organization
- ../slots/specificity_annotation
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
- ../slots/has_or_had_likelihood_score # was: whatsapp_business_likelihood - migrated per Rule 53
- ./LikelihoodScore # for has_or_had_likelihood_score range
- ../slots/has_or_had_contact_details # was: whatsapp_enrichment - migrated per Rule 53 (2026-01-15)
- ./LinkedInProfile
- ./SpecificityAnnotation
- ./TemplateSpecificityScore # was: TemplateSpecificityScores - migrated per Rule 53 (2026-01-17)
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
- ../slots/has_assessment_date
default_range: string
classes:
LinkedInProfile:
class_uri: schema:ProfilePage
description: "Complete LinkedIn profile extraction for a person.\n\nModels the content of person entity JSON files stored\
\ at\n`data/custodian/person/entity/*.json`. This is the root class\nfor LinkedIn profile data extracted via Exa API\
\ or HTML parsing.\n\n**Relationship to PersonObservation**:\n- PersonObservation.linkedin_profile_path references the\
\ file containing\n this LinkedInProfile data\n- PersonObservation.linkedin_profile_url links to the source URL\n-\
\ This class models the CONTENT of that file\n\n**Relationship to SocialMediaProfile**:\n- SocialMediaProfile (in same\
\ schema) is for CUSTODIAN social media accounts\n (e.g., Rijksmuseum's Instagram, Nationaal Archief's Twitter)\n-\
\ LinkedInProfile is for PERSON LinkedIn profiles (staff members)\n- These are complementary, not overlapping classes\n\
\n**Data Flow**:\n```\nLinkedIn URL → Exa API → JSON file → LinkedInProfile (this class)\n \
\ ↑\nPersonObservation.linkedin_profile_path references this file\n```\n"
exact_mappings:
- schema:ProfilePage
close_mappings:
- foaf:PersonalProfileDocument
- schema:Person
slots:
- extraction_metadata
- heritage_relevance
- profile_data
- source_organization
- specificity_annotation
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
- has_or_had_contact_details # was: whatsapp_enrichment - migrated per Rule 53 (2026-01-15)
slot_usage:
extraction_metadata:
range: ExtractionMetadata
required: true
inlined: true
profile_data:
range: LinkedInProfileData
required: true
inlined: true
heritage_relevance:
range: HeritageRelevance
inlined: true
source_organization:
range: string
pattern: ^[a-z0-9-]+$
examples:
- value: the-dutch-inspectorate-of-education
description: Organization where person was discovered as staff
- value: rijksmuseum
description: Heritage institution employer
has_or_had_contact_details: # was: whatsapp_enrichment - migrated per Rule 53 (2026-01-15)
description: Contact details for this profile, including WhatsApp information if available. Uses RiC-O has_or_had pattern for temporal relationships.
range: WhatsAppProfile
inlined: true
comments:
- This is the root class for person entity JSON files
- PersonObservation.linkedin_profile_path references files containing this data
- See AGENTS.md Rule 20 for person entity file requirements
- See AGENTS.md Rule 27 for person-custodian data architecture
see_also:
- https://schema.org/ProfilePage
- https://nde.nl/ontology/hc/class/PersonObservation
- https://nde.nl/ontology/hc/class/SocialMediaProfile
LinkedInProfileData:
class_uri: schema:Person
description: 'Core profile data extracted from a LinkedIn profile.
Contains the person''s professional information including:
- Basic info (name, headline, location, connections)
- About/summary text
- Career history (experience array)
- Education history (education array)
- Skills and languages
- Profile image URL
**Note on Data Representation**:
- Raw strings are preserved for provenance (e.g., connections text)
- Nested objects use defined classes (WorkExperience, EducationCredential)
- Skills are simple strings (not structured objects)
- Languages may be raw strings or LanguageProficiency objects
'
exact_mappings:
- schema:Person
close_mappings:
- foaf:Person
slots:
- about_text
- connections_text
- education
- experience
- headline
- has_or_had_language
- languages_raw
- profile_image_url
- profile_linkedin_url
- profile_location
- profile_name
- skill
- specificity_annotation
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
slot_usage:
profile_name:
range: string
required: true
examples:
- value: Sander Hulleman
- value: Jan van der Berg
profile_linkedin_url:
range: uri
pattern: ^https://www\.linkedin\.com/in/[a-z0-9-]+/?$
examples:
- value: https://www.linkedin.com/in/sander-hulleman-5017b9105
headline:
range: string
examples:
- value: Stafadviseur PO
description: Dutch job title
- value: Senior Curator | Rijksmuseum
description: Title with organization
- value: Digital Archivist | Heritage Data Specialist
description: Multiple roles
profile_location:
range: string
examples:
- value: Arnhem, Gelderland, Netherlands
- value: Amsterdam, Netherlands
connections_text:
range: string
examples:
- value: 246 connections • 248 followers
- value: 500+ connections
has_or_had_about_text:
range: string
examples:
- value: Third year student at Stenden University...
experience:
range: WorkExperience
multivalued: true
inlined_as_list: true
education:
range: EducationCredential
multivalued: true
inlined_as_list: true
skill:
range: string
multivalued: true
examples:
- value:
- education
- teaching
- curriculum development
languages_raw:
range: string
multivalued: true
examples:
- value:
- English - Native or bilingual
- Dutch - Native or bilingual
has_or_had_language:
range: LanguageProficiency
multivalued: true
inlined_as_list: true
profile_image_url:
range: uri
pattern: ^https://media\.licdn\.com/.*$
examples:
- value: https://media.licdn.com/dms/image/v2/C4E03AQHoGyR6G0kphA/profile-displayphoto-shrink_200_200/...
comments:
- Inlined within LinkedInProfile as profile_data
- experience and education use inlined_as_list for JSON array representation
- languages_raw preserves original strings; languages has parsed objects
- profile_image_url must be CDN URL per AGENTS.md Rule 16
WhatsAppEnrichment:
class_uri: hc:WhatsAppEnrichment
description: 'WhatsApp business likelihood enrichment data.
Added by enrichment scripts to assess whether a person is likely
to use WhatsApp for professional/business communication.
**Assessment Factors**:
- Digital technology indicators in profile
- Role type (customer-facing, technical, etc.)
- Industry/sector norms
- Geographic region (WhatsApp prevalence varies)
'
slots:
# MIGRATED 2026-01-25: digital_professional → indicates_or_indicated (Rule 53)
- indicates_or_indicated
- enrichment_metadata_whatsapp
- specificity_annotation
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
- has_or_had_likelihood_score # was: whatsapp_business_likelihood - migrated per Rule 53
slot_usage:
# MIGRATED 2026-01-25: digital_professional → indicates_or_indicated (Rule 53)
indicates_or_indicated:
range: DigitalProfessionalAssessment
inlined: true
description: |
Indicates digital professional assessment.
Migrated from digital_professional.
has_or_had_likelihood_score: # was: whatsapp_business_likelihood - migrated per Rule 53
range: LikelihoodScore
inlined: true
description: |
WhatsApp business likelihood score.
MIGRATED from whatsapp_business_likelihood per slot_fixes.yaml (Rule 53, 2026-01-15).
enrichment_metadata_whatsapp:
range: WhatsAppEnrichmentMetadata
inlined: true
DigitalProfessionalAssessment:
class_uri: hc:DigitalProfessionalAssessment
description: 'Assessment of a person''s digital/technology proficiency.
'
slots:
# MIGRATED 2026-01-25: digital_confidence → estimates_or_estimated (Rule 53)
- estimates_or_estimated
# MIGRATED 2026-01-25: digital_indicator → emphasizes_or_emphasized (Rule 53)
- emphasizes_or_emphasized
- likely_whatsapp_proficient
- specificity_annotation
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
slot_usage:
likely_whatsapp_proficient:
range: boolean
# MIGRATED 2026-01-25: digital_indicator → emphasizes_or_emphasized + DigitalProficiency (Rule 53)
emphasizes_or_emphasized:
range: DigitalProficiency
inlined: true
multivalued: true
description: |
Digital proficiency indicators (skills/tools) emphasized in the profile.
Migrated from digital_indicator (string list).
examples:
- value:
has_or_had_label: "Python"
has_or_had_type: "PROGRAMMING_LANGUAGE"
description: Python skill indicator
# MIGRATED 2026-01-25: digital_confidence → estimates_or_estimated + DigitalConfidence (Rule 53)
estimates_or_estimated:
range: DigitalConfidence
inlined: true
required: false
description: |
Confidence estimation for digital proficiency.
Migrated from digital_confidence (string) to structured class.
examples:
- value:
has_or_had_score: 0.85
has_or_had_type: PROFICIENCY_INFERENCE
has_or_had_description: "High confidence inferred from technical skills"
description: High confidence estimation
WhatsAppLikelihood:
class_uri: hc:WhatsAppLikelihood
description: 'Likelihood score for WhatsApp business usage.
'
slots:
- assessment_date
- likelihood_confidence
- likelihood_factor
- likelihood_level
- likelihood_score
- max_likelihood_score
- specificity_annotation
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
slot_usage:
likelihood_score:
range: integer
minimum_value: 0
maximum_value: 100
max_likelihood_score:
range: integer
likelihood_level:
range: string
likelihood_confidence:
range: float
minimum_value: 0.0
maximum_value: 1.0
likelihood_factor:
range: string
multivalued: true
has_assessment_date:
range: datetime
WhatsAppEnrichmentMetadata:
class_uri: hc:WhatsAppEnrichmentMetadata
description: 'Metadata about the WhatsApp enrichment process.
'
slots:
- has_or_had_provenance
- has_or_had_source # was: data_source_whatsapp - migrated per Rule 53/56/57 (2026-01-23)
- enriched_date
- enrichment_method_whatsapp
- no_fabrication
- specificity_annotation
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
slot_usage:
enriched_date:
range: datetime
enrichment_method_whatsapp:
range: string
examples:
- value: linkedin_profile_analysis
has_or_had_source: # was: data_source_whatsapp - migrated per Rule 53/56/57 (2026-01-23)
range: DataSource
inlined: true
description: >-
Source of data for this enrichment.
Replaces data_source_whatsapp string with structured DataSource class.
examples:
- value:
has_or_had_label: LinkedIn Profile
has_or_had_short_code: LINKEDIN
has_or_had_description: Public LinkedIn profile data
description: LinkedIn as data source
no_fabrication:
range: boolean
has_or_had_provenance:
range: ProvenanceBlock
inlined: true
description: >-
Provenance information for the enrichment data.
Contains data source, extraction method, confidence score, and verification status.
examples:
- value:
data_source: "public_linkedin_profile"
extraction_date: "2025-01-14T12:00:00Z"
confidence_score: 0.95
note: "Verified production data from LinkedIn profile"
description: Real production enrichment data with provenance