289 lines
No EOL
9.4 KiB
YAML
289 lines
No EOL
9.4 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
|
|
- ../slots/has_text
|
|
- ../slots/emphasize
|
|
- ../slots/estimate
|
|
- ../slots/assessed_as
|
|
- ../slots/has_contact_details
|
|
- ../slots/has_description
|
|
- ../slots/has_language
|
|
- ../slots/has_metadata
|
|
- ../slots/has_method
|
|
- ../slots/has_provenance
|
|
- ../slots/has_score
|
|
- ../slots/has_source
|
|
- ../slots/has_title
|
|
- ../slots/indicate
|
|
- ../slots/assessed_on
|
|
- ../slots/has_raw_data
|
|
- ../slots/has_confidence_measure
|
|
- ../slots/proficient_in
|
|
- ../slots/maximum_of_maximum
|
|
- ../slots/fabricate
|
|
- ../slots/has_content
|
|
- ../slots/has_image
|
|
- ../slots/has_url
|
|
- ../slots/refer_to
|
|
- ../slots/has_name
|
|
- ../slots/has_skill
|
|
- ../slots/employed_by
|
|
- ../slots/temporal_extent
|
|
# 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 \u2192 Exa API \u2192 JSON file \u2192 LinkedInProfile (this class)\n \u2191\nPersonObservation.linkedin_profile_path\
|
|
\ references this file\n```\n"
|
|
exact_mappings:
|
|
- schema:ProfilePage
|
|
close_mappings:
|
|
- foaf:PersonalProfileDocument
|
|
- schema:Person
|
|
slots:
|
|
- has_provenance
|
|
- assessed_as
|
|
- has_content
|
|
- employed_by
|
|
- has_score
|
|
- has_contact_details
|
|
slot_usage:
|
|
has_provenance:
|
|
# range: string
|
|
required: true
|
|
inlined: false # Fixed invalid inline for primitive type
|
|
has_content:
|
|
range: LinkedInProfileData
|
|
required: true
|
|
inlined: true
|
|
assessed_as:
|
|
range: HeritageRelevanceAssessment
|
|
inlined: true
|
|
employed_by:
|
|
# range: string
|
|
pattern: ^[a-z0-9-]+$
|
|
examples:
|
|
- value: the-dutch-inspectorate-of-education
|
|
- value: rijksmuseum
|
|
has_contact_details:
|
|
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
|
|
annotations:
|
|
specificity_score: 0.1
|
|
specificity_rationale: Generic utility class/slot created during migration
|
|
custodian_types: "['*']"
|
|
LinkedInProfileData:
|
|
class_uri: schema:Person
|
|
description: 'Core profile data extracted from a LinkedIn profile.
|
|
Contains the person''s professional information including:
|
|
- Basic info (name, has_title, 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:
|
|
- has_text
|
|
- indicate
|
|
- has_title
|
|
- has_language
|
|
- has_raw_data
|
|
- has_image
|
|
- has_url
|
|
- refer_to
|
|
- has_name
|
|
- has_skill
|
|
- has_score
|
|
slot_usage:
|
|
has_name:
|
|
# range: string
|
|
required: true
|
|
examples:
|
|
- value: Sander Hulleman
|
|
- value: Jan van der Berg
|
|
has_url:
|
|
range: uri
|
|
pattern: ^https://www\.linkedin\.com/in/[a-z0-9-]+/?$
|
|
examples:
|
|
- value: https://www.linkedin.com/in/sander-hulleman-5017b9105
|
|
has_title:
|
|
# range: string
|
|
examples:
|
|
- value: Stafadviseur PO
|
|
- value: Senior Curator | Rijksmuseum
|
|
- value: Digital Archivist | Heritage Data Specialist
|
|
refer_to:
|
|
# range: string
|
|
examples:
|
|
- value: Arnhem, Gelderland, Netherlands
|
|
- value: Amsterdam, Netherlands
|
|
has_text:
|
|
# range: string
|
|
examples:
|
|
- value: "246 connections \u2022 248 followers"
|
|
- value: 500+ connections
|
|
has_description:
|
|
# range: string
|
|
inlined: false # Fixed invalid inline for primitive type
|
|
examples:
|
|
- value:
|
|
description_text: Experienced curator with a focus on...
|
|
has_raw_data:
|
|
# range: string
|
|
multivalued: true
|
|
examples:
|
|
- value:
|
|
- English - Native or bilingual
|
|
- Dutch - Native or bilingual
|
|
has_language:
|
|
# range: string
|
|
multivalued: true
|
|
inlined_as_list: false # Fixed invalid inline for primitive type
|
|
has_image:
|
|
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:
|
|
- indicate
|
|
- has_score
|
|
slot_usage:
|
|
indicate:
|
|
range: DigitalProfessionalAssessment
|
|
inlined: true
|
|
DigitalProfessionalAssessment:
|
|
class_uri: hc:DigitalProfessionalAssessment
|
|
description: 'Assessment of a person''s digital/technology proficiency.
|
|
'
|
|
slots:
|
|
- estimate
|
|
- emphasize
|
|
- proficient_in
|
|
- has_score
|
|
slot_usage:
|
|
proficient_in:
|
|
range: boolean
|
|
emphasize:
|
|
range: DigitalProficiency
|
|
inlined: true
|
|
multivalued: true
|
|
examples:
|
|
- value:
|
|
has_label: Python
|
|
has_type: PROGRAMMING_LANGUAGE
|
|
estimate:
|
|
range: DigitalConfidence
|
|
inlined: true
|
|
required: false
|
|
examples:
|
|
- value:
|
|
has_score: 0.85
|
|
has_type: PROFICIENCY_INFERENCE
|
|
has_description: High confidence inferred from technical skills
|
|
WhatsAppLikelihood:
|
|
class_uri: hc:WhatsAppLikelihood
|
|
description: 'Likelihood score for WhatsApp business usage.
|
|
'
|
|
slots:
|
|
- assessed_on
|
|
- has_confidence_measure
|
|
- has_confidence_measure
|
|
- has_confidence_measure
|
|
- has_confidence_measure
|
|
- maximum_of_maximum
|
|
- has_score
|
|
slot_usage:
|
|
has_confidence_measure:
|
|
range: integer
|
|
minimum_value: 0
|
|
maximum_value: 100
|
|
maximum_of_maximum:
|
|
range: integer
|
|
has_confidence_measure:
|
|
# range: string
|
|
has_confidence_measure:
|
|
range: float
|
|
minimum_value: 0.0
|
|
maximum_value: 1.0
|
|
has_confidence_measure:
|
|
# range: string
|
|
multivalued: true
|
|
assessed_on:
|
|
range: TimeSpan
|
|
inlined: true
|
|
examples:
|
|
- value:
|
|
start_of_the_start: '2024-01-01T12:00:00Z'
|
|
WhatsAppEnrichmentMetadata:
|
|
class_uri: hc:WhatsAppEnrichmentMetadata
|
|
description: 'Metadata about the WhatsApp enrichment process.
|
|
'
|
|
slots:
|
|
- has_provenance
|
|
- has_source
|
|
- fabricate
|
|
- has_score
|
|
slot_usage:
|
|
has_source:
|
|
range: DataSource
|
|
inlined: true
|
|
examples:
|
|
- value:
|
|
has_label: LinkedIn Profile
|
|
has_code: LINKEDIN
|
|
has_description: Public LinkedIn profile data
|
|
fabricate:
|
|
range: boolean
|
|
has_provenance:
|
|
# range: string
|
|
inlined: false # Fixed invalid inline for primitive type
|
|
examples:
|
|
- value:
|
|
extraction_date: '2025-01-14T12:00:00Z'
|
|
note: Verified production data from LinkedIn profile |