Person Identity Classes: - PersonName: Full name modeling with components (given_name, surname_prefix, base_surname, patronym, initials) following Dutch naming conventions - PersonConnection: Professional network connections with heritage relevance scoring - ConnectionNetwork: Network-level analysis and statistics LinkedIn Profile Schema: - LinkedInProfile: Complete professional profile structure - WorkExperience: Employment history with heritage institution detection - EducationCredential: Academic background and qualifications - LanguageProficiency: Language skills with ISO 639-1 codes Supporting Classes: - ExtractionMetadata: Provenance tracking for extracted profile data - HeritageRelevance: GLAMORCUBESFIXPHDNT type scoring and classification Slots (17 person-related slots): - Name components: given_name, base_surname, surname_prefix, patronym, initials - Identity: age, birth_date, birth_place, death_place, gender_identity, pronouns - Professional: occupation, religion - References: literal_name, name_specification, has_person_name, extraction_metadata Enums: - HeritageTypeEnum: GLAMORCUBESFIXPHDNT type codes for heritage relevance
319 lines
10 KiB
YAML
319 lines
10 KiB
YAML
# Person Connection Class
|
|
# Single network connection entry from LinkedIn connection lists
|
|
|
|
id: https://nde.nl/ontology/hc/class/PersonConnection
|
|
name: person_connection_class
|
|
title: Person Connection 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/
|
|
dct: http://purl.org/dc/terms/
|
|
|
|
imports:
|
|
- linkml:types
|
|
- ../metadata
|
|
- ../enums/HeritageTypeEnum
|
|
|
|
default_range: string
|
|
|
|
classes:
|
|
|
|
PersonConnection:
|
|
class_uri: schema:Person
|
|
description: |
|
|
A single connection entry from a person's LinkedIn network.
|
|
|
|
Represents one person in another person's connection list, including
|
|
their relationship degree, professional headline, and heritage sector
|
|
classification.
|
|
|
|
**Relationship to ConnectionNetwork**:
|
|
- ConnectionNetwork contains an array of PersonConnection entries
|
|
- Each PersonConnection represents one network connection
|
|
- connection_id links back to the target profile
|
|
|
|
**Connection Degrees**:
|
|
- 1st: Direct connection (mutual connection)
|
|
- 2nd: Connected through one mutual connection
|
|
- 3rd+: Connected through two or more people
|
|
|
|
**Name Types** (per AGENTS.md Rule 17):
|
|
- full: Complete first and last name visible
|
|
- abbreviated: Contains single initial (e.g., "Amy B.", "S. Buse")
|
|
- anonymous: Privacy-hidden profile ("LinkedIn Member")
|
|
|
|
**Example JSON Structure**:
|
|
```json
|
|
{
|
|
"connection_id": "giovannafossati_conn_0000_maddalena_ghiotto",
|
|
"name": "Maddalena Ghiotto",
|
|
"name_type": "full",
|
|
"degree": "2nd",
|
|
"headline": "Archiving nerd in the digital era.",
|
|
"location": "Utrecht, Netherlands",
|
|
"organization": "National Archive",
|
|
"heritage_relevant": true,
|
|
"heritage_type": "D"
|
|
}
|
|
```
|
|
|
|
exact_mappings:
|
|
- schema:Person
|
|
close_mappings:
|
|
- foaf:Person
|
|
related_mappings:
|
|
- schema:knows
|
|
|
|
slots:
|
|
- connection_id
|
|
- connection_name
|
|
- name_type
|
|
- connection_degree
|
|
- connection_headline
|
|
- connection_location
|
|
- connection_organization
|
|
- connection_heritage_relevant
|
|
- connection_heritage_type
|
|
- connection_linkedin_url
|
|
- mutual_connections_text
|
|
|
|
slot_usage:
|
|
connection_id:
|
|
description: |
|
|
Unique identifier for this connection entry.
|
|
Format: {target_slug}_conn_{index:04d}_{name_slug}
|
|
|
|
The connection_id enables:
|
|
- Deduplication across connection lists
|
|
- Linking to full profile if extracted later
|
|
- Tracking same person across multiple target profiles
|
|
slot_uri: dct:identifier
|
|
range: string
|
|
required: true
|
|
pattern: "^[a-z0-9-]+_conn_[0-9]{4}_[a-z0-9_]+$"
|
|
examples:
|
|
- value: "giovannafossati_conn_0042_amy_b"
|
|
description: "Connection #42 from Giovanna Fossati's network"
|
|
- value: "rijksmuseum_staff_0001_jan_van_berg"
|
|
description: "Staff member from Rijksmuseum"
|
|
|
|
connection_name:
|
|
description: |
|
|
Name of the connected person as displayed on LinkedIn.
|
|
May be abbreviated ("Amy B.") or anonymous ("LinkedIn Member")
|
|
depending on privacy settings.
|
|
slot_uri: schema:name
|
|
range: string
|
|
required: true
|
|
examples:
|
|
- value: "Maddalena Ghiotto"
|
|
description: "Full name visible"
|
|
- value: "Amy B."
|
|
description: "Abbreviated last name"
|
|
- value: "LinkedIn Member"
|
|
description: "Anonymous/privacy-protected"
|
|
|
|
name_type:
|
|
description: |
|
|
Classification of the name visibility level.
|
|
|
|
Per AGENTS.md Rule 17:
|
|
- full: Complete first and last name
|
|
- abbreviated: Contains single initial (e.g., "Amy B.")
|
|
- anonymous: Privacy-hidden profile ("LinkedIn Member")
|
|
slot_uri: hc:nameType
|
|
range: NameTypeEnum
|
|
required: true
|
|
examples:
|
|
- value: "full"
|
|
description: "Complete name visible"
|
|
- value: "abbreviated"
|
|
description: "Partial name (privacy setting)"
|
|
|
|
connection_degree:
|
|
description: |
|
|
LinkedIn connection degree relative to the viewer.
|
|
|
|
**Important**: The degree is relative to the VIEWER (person conducting
|
|
the search), NOT the target profile being analyzed. See AGENTS.md Rule 17.
|
|
|
|
Values:
|
|
- 1st: Direct mutual connection
|
|
- 2nd: One person between viewer and connection
|
|
- 3rd+: Two or more people between
|
|
slot_uri: hc:connectionDegree
|
|
range: ConnectionDegreeEnum
|
|
required: true
|
|
examples:
|
|
- value: "2nd"
|
|
description: "Second-degree connection"
|
|
|
|
connection_headline:
|
|
description: |
|
|
Professional headline/tagline from the connection's profile.
|
|
Contains current job title and/or professional identity.
|
|
slot_uri: schema:jobTitle
|
|
range: string
|
|
examples:
|
|
- value: "Archiving nerd in the digital era."
|
|
- value: "Senior Curator at Rijksmuseum"
|
|
- value: "PhD candidate Critical audiovisual heritage"
|
|
|
|
connection_location:
|
|
description: |
|
|
Location as displayed on the connection's profile.
|
|
Format varies: "City, Region, Country" or "Country" only.
|
|
slot_uri: schema:homeLocation
|
|
range: string
|
|
examples:
|
|
- value: "Utrecht, Utrecht, Netherlands"
|
|
- value: "Netherlands"
|
|
- value: "Amsterdam, North Holland, Netherlands"
|
|
|
|
connection_organization:
|
|
description: |
|
|
Primary organization extracted from headline (when identifiable).
|
|
May be absent if headline doesn't clearly indicate organization.
|
|
slot_uri: schema:memberOf
|
|
range: string
|
|
examples:
|
|
- value: "Vrije Universiteit Amsterdam"
|
|
- value: "Digital Infrastructure department of the KNAW Humanities Cluster"
|
|
|
|
connection_heritage_relevant:
|
|
description: |
|
|
Whether this connection is professionally relevant to heritage sectors.
|
|
Determined by analyzing headline for heritage-related keywords.
|
|
slot_uri: hc:heritageRelevant
|
|
range: boolean
|
|
required: true
|
|
examples:
|
|
- value: true
|
|
description: "Works in museum, archive, library, etc."
|
|
- value: false
|
|
description: "No apparent heritage sector connection"
|
|
|
|
connection_heritage_type:
|
|
description: |
|
|
Single-letter heritage type code if heritage_relevant is true.
|
|
Uses GLAMORCUBESFIXPHDNT taxonomy (G,L,A,M,O,R,C,U,B,E,S,F,I,X,P,H,D,N,T).
|
|
slot_uri: hc:heritageType
|
|
range: HeritageTypeEnum
|
|
examples:
|
|
- value: "A"
|
|
description: "Archive sector"
|
|
- value: "M"
|
|
description: "Museum sector"
|
|
- value: "D"
|
|
description: "Digital heritage"
|
|
|
|
connection_linkedin_url:
|
|
description: |
|
|
LinkedIn profile URL for this connection (if extractable).
|
|
May be absent for privacy-restricted or abbreviated name profiles.
|
|
slot_uri: schema:url
|
|
range: uri
|
|
pattern: "^https://www\\.linkedin\\.com/in/[a-z0-9-]+/?$"
|
|
examples:
|
|
- value: "https://www.linkedin.com/in/maddalena-ghiotto-12345"
|
|
|
|
mutual_connections_text:
|
|
description: |
|
|
Raw mutual connections text from LinkedIn.
|
|
Format: "X mutual connections" or "Name and X others"
|
|
Preserved for network analysis.
|
|
slot_uri: schema:description
|
|
range: string
|
|
examples:
|
|
- value: "Thomas van Maaren, Bob Coret, and 4 other mutual connections"
|
|
- value: "12 mutual connections"
|
|
|
|
comments:
|
|
- "Inlined in ConnectionNetwork.connections[] as multivalued list"
|
|
- "connection_id enables deduplication across multiple connection lists"
|
|
- "name_type classification per AGENTS.md Rule 17"
|
|
- "connection_degree is relative to VIEWER, not target profile"
|
|
|
|
see_also:
|
|
- "https://schema.org/Person"
|
|
- "https://schema.org/knows"
|
|
|
|
enums:
|
|
NameTypeEnum:
|
|
description: |
|
|
Classification of name visibility level in LinkedIn data.
|
|
Per AGENTS.md Rule 17.
|
|
permissible_values:
|
|
full:
|
|
description: "Complete first and last name visible"
|
|
meaning: schema:Text
|
|
abbreviated:
|
|
description: "Contains single initial (e.g., 'Amy B.', 'S. Buse')"
|
|
meaning: schema:Text
|
|
anonymous:
|
|
description: "Privacy-hidden profile ('LinkedIn Member')"
|
|
meaning: schema:Text
|
|
|
|
ConnectionDegreeEnum:
|
|
description: |
|
|
LinkedIn connection degree values.
|
|
Indicates network distance from the viewer.
|
|
permissible_values:
|
|
1st:
|
|
description: "Direct mutual connection"
|
|
meaning: schema:knows
|
|
2nd:
|
|
description: "Connected through one mutual connection"
|
|
meaning: schema:knows
|
|
3rd+:
|
|
description: "Connected through two or more people"
|
|
meaning: schema:knows
|
|
|
|
slots:
|
|
connection_id:
|
|
description: "Unique identifier for this connection entry"
|
|
range: string
|
|
|
|
connection_name:
|
|
description: "Name of the connected person"
|
|
range: string
|
|
|
|
name_type:
|
|
description: "Classification of name visibility level"
|
|
range: NameTypeEnum
|
|
|
|
connection_degree:
|
|
description: "LinkedIn connection degree (1st, 2nd, 3rd+)"
|
|
range: ConnectionDegreeEnum
|
|
|
|
connection_headline:
|
|
description: "Professional headline from connection's profile"
|
|
range: string
|
|
|
|
connection_location:
|
|
description: "Location from connection's profile"
|
|
range: string
|
|
|
|
connection_organization:
|
|
description: "Primary organization from headline"
|
|
range: string
|
|
|
|
connection_heritage_relevant:
|
|
description: "Whether connection is heritage-sector relevant"
|
|
range: boolean
|
|
|
|
connection_heritage_type:
|
|
description: "Heritage type code if heritage_relevant"
|
|
range: HeritageTypeEnum
|
|
|
|
connection_linkedin_url:
|
|
description: "LinkedIn profile URL for connection"
|
|
range: uri
|
|
|
|
mutual_connections_text:
|
|
description: "Raw mutual connections text"
|
|
range: string
|