- Added `range: string` to `connections_by_heritage_type` slot for better data representation. - Removed obsolete `data_source_whatsapp`, `data_tier`, `date_retrieved`, and `de` slots from the schema. - Updated `derived_from_observation` slot to support multiple values and changed range to `uriorcurie`. - Introduced new `DataSource` class to represent various data sources with detailed descriptions and examples. - Created `DataTierLevel` class to classify data quality tiers with standard codes and descriptions. - Archived removed slots and updated the manifest to reflect these changes. - Added new `was_retrieved_at` slot to track data retrieval timestamps, following RiC-O conventions.
385 lines
13 KiB
YAML
385 lines
13 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
|
|
- ../slots/digital_confidence
|
|
- ../slots/digital_indicator
|
|
- ../slots/digital_professional
|
|
- ../slots/education
|
|
- ../slots/enriched_date
|
|
- ../slots/enrichment_metadata_whatsapp
|
|
- ../slots/enrichment_method_whatsapp
|
|
- ../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:
|
|
- digital_professional
|
|
- 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:
|
|
digital_professional:
|
|
range: DigitalProfessionalAssessment
|
|
inlined: true
|
|
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:
|
|
- digital_confidence
|
|
- digital_indicator
|
|
- 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
|
|
digital_indicator:
|
|
range: string
|
|
multivalued: true
|
|
digital_confidence:
|
|
range: string
|
|
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
|