All checks were successful
Deploy Frontend / build-and-deploy (push) Successful in 3m57s
- Remove inline slot definitions from 144 class files - Create 7 new centralized slot files in modules/slots/: - custodian_type_broader.yaml - custodian_type_narrower.yaml - custodian_type_related.yaml - definition.yaml - finding_aid_access_restriction.yaml - finding_aid_description.yaml - finding_aid_temporal_coverage.yaml - Add centralize_inline_slots.py automation script - Update manifest with new timestamp Rule 48: Class files must NOT define inline slots - all slots must be imported from modules/slots/ directory. Note: Pre-existing IdentifierFormat duplicate class definition (in Standard.yaml and IdentifierFormat.yaml) not addressed in this commit - requires separate schema refactor.
234 lines
6.5 KiB
YAML
234 lines
6.5 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
|