334 lines
13 KiB
YAML
334 lines
13 KiB
YAML
# Person - Person Hub Class
|
|
# =============================================================================
|
|
# An abstract hub class for individual persons in the Heritage Custodian ontology.
|
|
# Serves as the central connection point for all PersonObservation entities.
|
|
#
|
|
# DESIGN RATIONALE:
|
|
# - Hub pattern: Person contains minimal data, acts as connection point
|
|
# - PersonObservation entities attach via refers_to_person
|
|
# - Enables linking same person across multiple custodians/roles/sources
|
|
# - Parallel architecture to Custodian hub
|
|
#
|
|
# CIDOC-CRM ALIGNMENT:
|
|
# - Person → crm:E21_Person (individual human)
|
|
# - E21_Person is subclass of E39_Actor (shared with Custodian)
|
|
# - Key properties:
|
|
# - P48_has_preferred_identifier → person_id
|
|
# - P11i_participated_in → Event (via participated_in_events)
|
|
#
|
|
# PICO ALIGNMENT:
|
|
# - Person hub → pico:Person (abstract identity)
|
|
# - PersonObservation → pico:PersonObservation (evidence-based data)
|
|
# - The hub/observation split is the core PICO pattern
|
|
# =============================================================================
|
|
|
|
id: https://nde.nl/ontology/hc/class/Person
|
|
name: Person
|
|
title: Person Hub Class
|
|
|
|
prefixes:
|
|
linkml: https://w3id.org/linkml/
|
|
hc: https://nde.nl/ontology/hc/
|
|
crm: http://www.cidoc-crm.org/cidoc-crm/
|
|
prov: http://www.w3.org/ns/prov#
|
|
schema: http://schema.org/
|
|
pico: https://personsincontext.org/model#
|
|
foaf: http://xmlns.com/foaf/0.1/
|
|
dcterms: http://purl.org/dc/terms/
|
|
skos: http://www.w3.org/2004/02/skos/core#
|
|
|
|
default_prefix: hc
|
|
|
|
imports:
|
|
- linkml:types
|
|
# Slot imports
|
|
- ../slots/person_id
|
|
- ../slots/preferred_label
|
|
- ../slots/participated_in_events
|
|
- ../slots/has_person_observation
|
|
- ../slots/created
|
|
- ../slots/modified
|
|
# Class imports
|
|
- ./Event
|
|
|
|
classes:
|
|
Person:
|
|
class_uri: crm:E21_Person
|
|
description: |
|
|
An abstract hub class that serves as the central connection point for all
|
|
information about an individual person. The Person itself contains minimal
|
|
information - essentially just its persistent identifier (person_id) and
|
|
preferred name - and acts as a node to which all observations attach.
|
|
|
|
This hub pattern allows multiple observations from different sources to be
|
|
connected to a single logical person without asserting which observation
|
|
is "correct" or "primary".
|
|
|
|
**HUB ARCHITECTURE**:
|
|
|
|
```
|
|
PersonObservation ──refers_to_person──> Person ──participated_in_events──> Event
|
|
│ ↑
|
|
│ │
|
|
(source: LinkedIn 2024) (source: Annual Report 2020)
|
|
│ │
|
|
└───────────────────────────────────┘
|
|
Multiple observations → Single hub
|
|
```
|
|
|
|
- The Person hub is identified by: https://nde.nl/ontology/hc/person/{person-slug}
|
|
- All PersonObservations refer to the hub via refers_to_person
|
|
- The hub persists while observations and interpretations evolve
|
|
|
|
**DISTINCTION FROM PersonObservation**:
|
|
|
|
| Aspect | Person (Hub) | PersonObservation |
|
|
|--------|--------------|-------------------|
|
|
| **Purpose** | Abstract identity | Evidence-based data |
|
|
| **Contains** | Minimal: ID, preferred name | Rich: role, affiliation, dates |
|
|
| **Temporal** | Timeless identity | Point-in-time snapshot |
|
|
| **Source** | Canonical | From specific source |
|
|
| **Count** | One per person | Many per person |
|
|
|
|
**USE CASES**:
|
|
|
|
1. **Cross-Custodian Career Tracking**:
|
|
Person worked at Rijksmuseum (observation 1), then at Van Gogh Museum (observation 2).
|
|
Both observations link to same Person hub.
|
|
|
|
2. **Source Reconciliation**:
|
|
LinkedIn says "Director", annual report says "General Director".
|
|
Both are valid observations of the same Person.
|
|
|
|
3. **Event Participation**:
|
|
Person participated in merger event, relocation event, etc.
|
|
Events link to Person hub, not individual observations.
|
|
|
|
**PICO ALIGNMENT**:
|
|
|
|
The PiCo (Persons in Context) ontology establishes this hub/observation pattern:
|
|
- `pico:Person`: The abstract identity (hub) - this class
|
|
- `pico:PersonObservation`: Evidence-based data about a person
|
|
|
|
Key relationships:
|
|
- PersonObservation → Person via pico:observationOf (refers_to_person)
|
|
- Person → PersonObservation via pico:hasObservation (inverse)
|
|
|
|
**CIDOC-CRM ALIGNMENT**:
|
|
|
|
Maps to crm:E21_Person which is defined as:
|
|
"This class comprises real persons who live or are assumed to have lived."
|
|
|
|
E21_Person is a subclass of:
|
|
- E39_Actor (shared superclass with organizations)
|
|
- E20_Biological_Object
|
|
|
|
Key relationships:
|
|
- P48_has_preferred_identifier → person_id
|
|
- P11i_participated_in → Event (via participated_in_events)
|
|
|
|
**RELATIONSHIP TO Custodian**:
|
|
|
|
Person and Custodian are parallel hub classes, both subclasses of crm:E39_Actor:
|
|
|
|
```
|
|
crm:E39_Actor
|
|
├── crm:E21_Person (Person hub)
|
|
│ └── PersonObservation refers to Person
|
|
└── crm:E74_Group (Custodian hub)
|
|
└── CustodianObservation refers to Custodian
|
|
```
|
|
|
|
A Custodian can BE a Person (private collector), but typically:
|
|
- Person = individual human
|
|
- Custodian = organization/group/institution
|
|
|
|
**EXAMPLE - Director with Multiple Roles**:
|
|
|
|
```yaml
|
|
Person:
|
|
person_id: "https://nde.nl/ontology/hc/person/taco-dibbits"
|
|
preferred_name: "Taco Dibbits"
|
|
participated_in_events:
|
|
- "https://nde.nl/ontology/hc/event/dibbits-appointed-director-2020"
|
|
|
|
# Observations from different sources:
|
|
PersonObservation: # From LinkedIn
|
|
person_name: "Taco Dibbits"
|
|
role_title: "General Director"
|
|
unit_affiliation: "Executive Board"
|
|
refers_to_person: "https://nde.nl/ontology/hc/person/taco-dibbits"
|
|
observation_source: "LinkedIn profile, 2025-01-15"
|
|
|
|
PersonObservation: # From annual report
|
|
person_name: "T.J.S. Dibbits"
|
|
role_title: "Algemeen Directeur"
|
|
refers_to_person: "https://nde.nl/ontology/hc/person/taco-dibbits"
|
|
observation_source: "Rijksmuseum Jaarverslag 2023"
|
|
```
|
|
|
|
**EXAMPLE - Person Across Multiple Institutions**:
|
|
|
|
```yaml
|
|
Person:
|
|
person_id: "https://nde.nl/ontology/hc/person/maria-garcia"
|
|
preferred_name: "Maria Garcia"
|
|
participated_in_events:
|
|
- "https://nde.nl/ontology/hc/event/garcia-curator-appointment-2015"
|
|
- "https://nde.nl/ontology/hc/event/garcia-director-appointment-2022"
|
|
|
|
PersonObservation: # Earlier role
|
|
role_title: "Curator of European Art"
|
|
unit_affiliation: "Rijksmuseum"
|
|
role_start_date: "2015-03-01"
|
|
role_end_date: "2021-12-31"
|
|
refers_to_person: "https://nde.nl/ontology/hc/person/maria-garcia"
|
|
|
|
PersonObservation: # Current role
|
|
role_title: "Director"
|
|
unit_affiliation: "Mauritshuis"
|
|
role_start_date: "2022-01-01"
|
|
refers_to_person: "https://nde.nl/ontology/hc/person/maria-garcia"
|
|
```
|
|
|
|
exact_mappings:
|
|
- crm:E21_Person
|
|
- pico:Person
|
|
- foaf:Person
|
|
|
|
close_mappings:
|
|
- schema:Person
|
|
- prov:Person
|
|
|
|
broad_mappings:
|
|
- crm:E39_Actor
|
|
- prov:Agent
|
|
- foaf:Agent
|
|
|
|
slots:
|
|
- person_id
|
|
- preferred_name
|
|
- has_person_observation
|
|
- participated_in_events
|
|
- created
|
|
- modified
|
|
|
|
slot_usage:
|
|
person_id:
|
|
slot_uri: dcterms:identifier
|
|
description: |
|
|
The persistent identifier for this Person hub.
|
|
Format: https://nde.nl/ontology/hc/person/{person-slug}
|
|
Example: https://nde.nl/ontology/hc/person/taco-dibbits
|
|
range: uriorcurie
|
|
required: true
|
|
identifier: true
|
|
pattern: "^https://nde\\.nl/ontology/hc/person/[a-z0-9-]+$"
|
|
|
|
preferred_name:
|
|
slot_uri: skos:prefLabel
|
|
description: |
|
|
The preferred name for this person - the canonical form used for display.
|
|
|
|
This is the PREFERRED name, not necessarily the full legal name.
|
|
Other name forms appear in PersonObservation entries.
|
|
|
|
**EXAMPLES**:
|
|
- "Taco Dibbits" (preferred)
|
|
- NOT: "Taco Jacobus Sergio Dibbits" (full legal)
|
|
- NOT: "T.J.S. Dibbits" (formal abbreviation)
|
|
range: string
|
|
required: false
|
|
|
|
participated_in_events:
|
|
description: |
|
|
Events in which this person participated.
|
|
|
|
This enables bidirectional navigation:
|
|
- Event → Person: "Who participated in this event?"
|
|
- Person → Event: "What events did this person participate in?"
|
|
|
|
**EXAMPLES**:
|
|
- Appointment events (hired, promoted)
|
|
- Organizational events (merger where person was involved)
|
|
- Career milestones (retirement, award)
|
|
range: Event
|
|
multivalued: true
|
|
required: false
|
|
|
|
has_person_observation:
|
|
slot_uri: pico:hasObservation
|
|
description: |
|
|
All PersonObservation entities that refer to this Person hub.
|
|
|
|
This is the inverse of `refers_to_person` and enables bidirectional navigation:
|
|
- PersonObservation → Person via `refers_to_person`
|
|
- Person → PersonObservation via `has_person_observation`
|
|
|
|
**NAVIGATION PATTERN**:
|
|
```
|
|
Person ──has_person_observation──> PersonObservation[1..n]
|
|
<──refers_to_person────────
|
|
```
|
|
|
|
**USE CASES**:
|
|
- Retrieve all observations about a person
|
|
- Find all sources that mention this person
|
|
- Track career across multiple institutions
|
|
|
|
**NOTE**: This slot is populated automatically via the inverse relationship.
|
|
When a PersonObservation sets `refers_to_person`, this slot is updated.
|
|
range: PersonObservation
|
|
multivalued: true
|
|
required: false
|
|
inlined: false
|
|
|
|
comments:
|
|
- "Person is the hub class for individual humans in the HC ontology"
|
|
- "PersonObservation entities attach to Person via refers_to_person"
|
|
- "Parallel architecture to Custodian hub class"
|
|
- "Enables linking same person across multiple institutions and sources"
|
|
- "preferred_name is minimal - rich data lives in PersonObservation"
|
|
- "participated_in_events links person to life/career events"
|
|
|
|
examples:
|
|
- value:
|
|
person_id: "https://nde.nl/ontology/hc/person/taco-dibbits"
|
|
preferred_name: "Taco Dibbits"
|
|
participated_in_events:
|
|
- "https://nde.nl/ontology/hc/event/dibbits-appointed-director-2020"
|
|
has_person_observation:
|
|
- "https://nde.nl/ontology/hc/observation/dibbits-linkedin-2025"
|
|
- "https://nde.nl/ontology/hc/observation/dibbits-rijksmuseum-annual-report-2024"
|
|
description: "Director of Rijksmuseum as Person hub with multiple observations"
|
|
|
|
- value:
|
|
person_id: "https://nde.nl/ontology/hc/person/jan-de-vries-1985"
|
|
preferred_name: "Jan de Vries"
|
|
description: "Person with disambiguator (birth year)"
|
|
|
|
- value:
|
|
person_id: "https://nde.nl/ontology/hc/person/maria-garcia"
|
|
preferred_name: "Maria Garcia"
|
|
has_person_observation:
|
|
- "https://nde.nl/ontology/hc/observation/garcia-rijksmuseum-2015"
|
|
- "https://nde.nl/ontology/hc/observation/garcia-mauritshuis-2022"
|
|
participated_in_events:
|
|
- "https://nde.nl/ontology/hc/event/garcia-curator-appointment-2015"
|
|
- "https://nde.nl/ontology/hc/event/garcia-director-appointment-2022"
|
|
description: "Person with career spanning multiple institutions - observations from each role"
|
|
|
|
# Local slot definition for preferred_name (if not already globally defined for Person)
|
|
# This ensures Person has a name slot even if the global slot has different semantics
|
|
slots:
|
|
preferred_name:
|
|
slot_uri: skos:prefLabel
|
|
description: |
|
|
The preferred (canonical) name for this entity.
|
|
Used for display purposes and as the primary label.
|
|
range: string
|
|
required: false
|
|
exact_mappings:
|
|
- skos:prefLabel
|
|
- foaf:name
|
|
- schema:name
|