- Apply Rule 39: RiC-O style hasOrHad*/isOrWas* for temporal slots - Apply Rule 43: Singular noun convention (keywords → keyword) - Update slot references to match renamed slot files - Maintain schema integrity across all class definitions
238 lines
7.6 KiB
YAML
238 lines
7.6 KiB
YAML
id: https://nde.nl/ontology/hc/class/LinkedInProfileData
|
|
name: linkedin_profile_data_class
|
|
title: LinkedIn Profile Data 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/
|
|
imports:
|
|
- linkml:types
|
|
- ./WorkExperience
|
|
- ./EducationCredential
|
|
- ./LanguageProficiency
|
|
- ./SpecificityAnnotation
|
|
- ./TemplateSpecificityScores
|
|
- ../slots/specificity_annotation
|
|
- ../slots/template_specificity
|
|
- ../slots/has_or_had_about_text
|
|
- ../slots/connections_text
|
|
- ../slots/education
|
|
- ../slots/experience
|
|
- ../slots/headline
|
|
- ../slots/has_or_had_language
|
|
- ../slots/languages_raw
|
|
- ../slots/profile_image_url
|
|
- ../slots/profile_linkedin_url
|
|
- ../slots/profile_location
|
|
- ../slots/profile_name
|
|
- ../slots/skill
|
|
default_range: string
|
|
|
|
classes:
|
|
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
|
|
- template_specificity
|
|
slot_usage:
|
|
profile_name:
|
|
description: |
|
|
Full name of the person as displayed on LinkedIn.
|
|
slot_uri: schema:name
|
|
range: string
|
|
required: true
|
|
examples:
|
|
- value: Sander Hulleman
|
|
- value: Jan van der Berg
|
|
profile_linkedin_url:
|
|
description: |
|
|
LinkedIn profile URL for this person.
|
|
Duplicated from extraction_metadata for convenience.
|
|
slot_uri: schema:url
|
|
range: uri
|
|
pattern: ^https://www\.linkedin\.com/in/[a-z0-9-]+/?$
|
|
examples:
|
|
- value: https://www.linkedin.com/in/sander-hulleman-5017b9105
|
|
headline:
|
|
description: |
|
|
Professional headline/tagline from LinkedIn.
|
|
Typically includes current job title and/or professional identity.
|
|
slot_uri: schema:jobTitle
|
|
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:
|
|
description: |
|
|
Location as displayed on LinkedIn profile.
|
|
Format varies: "City, Region, Country" or "City, Country"
|
|
slot_uri: schema:homeLocation
|
|
range: string
|
|
examples:
|
|
- value: Arnhem, Gelderland, Netherlands
|
|
- value: Amsterdam, Netherlands
|
|
connections_text:
|
|
description: |
|
|
Raw connections/followers text from LinkedIn.
|
|
Format: "X connections • Y followers"
|
|
Preserved as-is for provenance.
|
|
slot_uri: schema:description
|
|
range: string
|
|
examples:
|
|
- value: 246 connections • 248 followers
|
|
- value: 500+ connections
|
|
has_or_had_about_text:
|
|
description: |
|
|
About/summary section text from LinkedIn profile.
|
|
May be absent if person hasn't written a summary.
|
|
slot_uri: schema:description
|
|
range: string
|
|
examples:
|
|
- value: Third year student at Stenden University...
|
|
experience:
|
|
description: |
|
|
Work experience entries from LinkedIn.
|
|
Array of WorkExperience objects with job title, company, dates, location.
|
|
range: WorkExperience
|
|
multivalued: true
|
|
inlined_as_list: true
|
|
education:
|
|
description: |
|
|
Education entries from LinkedIn.
|
|
Array of EducationCredential objects with school, degree, years.
|
|
range: EducationCredential
|
|
multivalued: true
|
|
inlined_as_list: true
|
|
skill:
|
|
description: |
|
|
Skills listed on LinkedIn profile.
|
|
Simple string array (not structured objects).
|
|
slot_uri: schema:knowsAbout
|
|
range: string
|
|
multivalued: true
|
|
examples:
|
|
- value:
|
|
- education
|
|
- teaching
|
|
- curriculum development
|
|
languages_raw:
|
|
description: |
|
|
Raw language strings as extracted from LinkedIn.
|
|
Format: "Language - Proficiency level"
|
|
Use this when storing unprocessed data.
|
|
range: string
|
|
multivalued: true
|
|
examples:
|
|
- value:
|
|
- English - Native or bilingual
|
|
- Dutch - Native or bilingual
|
|
has_or_had_language:
|
|
description: |
|
|
Parsed language proficiency entries.
|
|
Array of LanguageProficiency objects with language name, code, level.
|
|
Use this when storing processed/structured data.
|
|
range: LanguageProficiency
|
|
multivalued: true
|
|
inlined_as_list: true
|
|
profile_image_url:
|
|
description: |
|
|
URL to the LinkedIn profile photo.
|
|
Should be the actual CDN URL (media.licdn.com), not overlay page.
|
|
See AGENTS.md Rule 16 for photo URL requirements.
|
|
slot_uri: schema:image
|
|
range: uri
|
|
pattern: ^https://media\.licdn\.com/.*$
|
|
examples:
|
|
- value: https://media.licdn.com/dms/image/v2/C4E03AQHoGyR6G0kphA/profile-displayphoto-shrink_200_200/...
|
|
specificity_annotation:
|
|
range: SpecificityAnnotation
|
|
inlined: true
|
|
template_specificity:
|
|
range: TemplateSpecificityScores
|
|
inlined: true
|
|
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
|
|
|
|
slots:
|
|
profile_name:
|
|
description: Full name of the person
|
|
range: string
|
|
profile_linkedin_url:
|
|
description: LinkedIn profile URL
|
|
range: uri
|
|
headline:
|
|
description: Professional headline/tagline
|
|
range: string
|
|
profile_location:
|
|
description: Location as displayed on profile
|
|
range: string
|
|
connections_text:
|
|
description: Raw connections/followers text
|
|
range: string
|
|
has_or_had_about_text:
|
|
description: About/summary section text
|
|
range: string
|
|
experience:
|
|
description: Work experience entries
|
|
range: WorkExperience
|
|
multivalued: true
|
|
education:
|
|
description: Education entries
|
|
range: EducationCredential
|
|
multivalued: true
|
|
skill:
|
|
description: Skills listed on profile
|
|
range: string
|
|
multivalued: true
|
|
languages_raw:
|
|
description: Raw language strings
|
|
range: string
|
|
multivalued: true
|
|
has_or_had_language:
|
|
description: Parsed language proficiency entries
|
|
range: LanguageProficiency
|
|
multivalued: true
|
|
profile_image_url:
|
|
description: Profile photo URL
|
|
range: uri
|