glam/schemas/20251121/linkml/modules/classes/PersonObservation.yaml
kempersc 4319f38c05 Add archived slots for audience size, audience type, and capacity metrics
- Created new YAML files for audience size and audience type slots, defining their properties and annotations.
- Added archived capacity slots including cubic meters, linear meters, item count, and descriptions, with appropriate URIs and ranges.
- Introduced a template specificity slot for context-aware RAG filtering.
- Consolidated capacity-related slots into a unified structure, including has_or_had_capacity, capacity_type, and capacity_value, with detailed descriptions and examples.
2026-01-17 18:53:23 +01:00

334 lines
14 KiB
YAML

id: https://nde.nl/ontology/hc/class/PersonObservation
name: PersonObservation
title: Person Observation (Staff Role Context)
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
pico: https://personsincontext.org/model#
pnv: https://w3id.org/pnv#
crm: http://www.cidoc-crm.org/cidoc-crm/
foaf: http://xmlns.com/foaf/0.1/
prov: http://www.w3.org/ns/prov#
dcterms: http://purl.org/dc/terms/
sdo: https://schema.org/
imports:
- linkml:types
- ../slots/id
- ../slots/person_name
- ../slots/has_person_name
# REMOVED - migrated to has_or_had_date_of_birth (Rule 53)
# - ../slots/birth_date
- ../slots/has_or_had_date_of_birth
- ./BirthDate
# REMOVED - migrated to has_or_had_place_of_birth (Rule 53)
# - ../slots/birth_place
- ../slots/has_or_had_place_of_birth
- ./BirthPlace
- ../slots/death_place
- ../slots/date_of_death
- ../slots/deceased
- ../slots/has_age
- ../slots/occupation
- ../slots/religion
- ../slots/gender_identity
- ../slots/pronoun
- ../slots/staff_role
- ../slots/role_title
# REMOVED: unit_affiliation - migrated to is_or_was_affiliated_with (Rule 53)
# - ../slots/unit_affiliation
- ../slots/is_or_was_affiliated_with
- ./OrganizationUnit
- ../slots/role_start_date
- ../slots/role_end_date
- ../slots/observation_source
- ../slots/has_or_had_provenance # was: has_or_had_observation_source_document - migrated per Rule 55 (2026-01-16)
- ../slots/is_or_was_affected_by_event
- ../slots/contact_email
- ../slots/expertise_area
- ../slots/refers_to_person
- ../slots/has_or_had_web_claim
- ../slots/linkedin_profile_path
- ../slots/linkedin_profile_url
- ../slots/extraction_metadata
- ../slots/created
- ../slots/modified
- ./PersonWebClaim
- ./PersonName
- ./ExtractionMetadata
- ./Person
- ../slots/specificity_annotation
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
- ./OrganizationalChangeEvent
- ./OrganizationalStructure
- ./SpecificityAnnotation
- ./StaffRole
- ./TemplateSpecificityScore # was: TemplateSpecificityScores - migrated per Rule 53 (2026-01-17)
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
- ./TimeSpan
classes:
PersonObservation:
class_uri: pico:PersonObservation
description: "An observation of a person serving in a staff role at a heritage custodian institution,\nas documented in\
\ a specific source at a specific point in time.\n\n**PiCo Pattern Adaptation**:\nThe PiCo (Persons in Context) ontology\
\ distinguishes between:\n- **PersonObservation**: Data about a person as found in a source (evidence-based)\n- **PersonReconstruction**:\
\ Aggregated identity from multiple observations (inferred)\n\nFor heritage custodian staff tracking, we adapt this\
\ pattern:\n- **PersonObservation**: Staff role as documented in institutional sources\n (annual reports, org charts,\
\ staff directories, archival records)\n- Focus on ROLES and AFFILIATIONS rather than biographical details\n- Temporal\
\ validity tracks employment period in specific position\n\n**Key Distinction from General Person Data**:\nThis class\
\ models INSTITUTIONAL ROLES, not complete biographical data:\n- Emphasis: Role, title, unit affiliation, employment\
\ dates\n- NOT: Full biographical reconstruction (birth, death, family, etc.)\n- Sources: Institutional records (not\
\ vital records, census, etc.)\n- PiCo: `pico:PersonObservation` (primary - person data from sources)\n- Schema.org:\
\ `schema:Person` (for person identity)\n- Schema.org: `schema:Role` (for organizational role)\n- CIDOC-CRM: `crm:E21_Person`\
\ (person as cultural heritage actor)\n- PROV-O: `prov:Agent` (person as responsible agent)\n- FOAF: `foaf:Person` (person\
\ in social network)\n\n**Hub Architecture Integration**:\n- PersonObservation refers to Person hub via `refers_to_person`\
\ (PICO pattern)\n- PersonObservation refers to OrganizationUnit via `is_or_was_affiliated_with`\n- OrganizationalStructure\
\ refers back via `staff_members` (bidirectional)\n- PersonObservation affected by OrganizationalChangeEvent via `affected_by_event`\n\
- Person hub links to Event via `participated_in_events`\n- Temporal alignment: employment dates vs. organizational\
\ unit validity\n\n**Use Cases**:\n1. **Staff directories**: Document current and historical staff roles\n2. **Organizational\
\ provenance**: Track who managed departments/collections\n3. **Workforce history**: Analyze staffing patterns over\
\ time\n4. **Expertise tracking**: Find conservators, curators by specialization\n5. **Reorganization impact**: Track\
\ staff transitions during structural changes\n\n**Example - Conservation Staff**:\n\n```yaml\nPersonObservation:\n\
\ person_name: \"Dr. Jane Smith\"\n staff_role: CONSERVATOR\n role_title: \"Senior Paintings Conservator\"\n is_or_was_affiliated_with:\
\ \".../org-unit/rm-conservation-division\"\n role_start_date: \"2013-03-01\"\n role_end_date: null # Still employed\n\
\ observation_source:\n source_type: \"Staff directory\"\n source_uri: \"https://rijksmuseum.nl/staff/jane-smith\"\
\n observation_date: \"2024-11-22\"\n```\n\n**Example - Staff Through Organizational Change**:\n\n```yaml\n# Before\
\ merger (2013-02-28)\nPersonObservation:\n person_name: \"Dr. Jane Smith\"\n staff_role: CONSERVATOR\n role_title:\
\ \"Head, Paintings Conservation Department\"\n is_or_was_affiliated_with: \".../org-unit/rm-paintings-conservation\"\n role_start_date:\
\ \"2010-01-01\"\n role_end_date: \"2013-02-28\"\n\n# After merger (2013-03-01)\nPersonObservation:\n person_name:\
\ \"Dr. Jane Smith\"\n staff_role: CONSERVATOR\n role_title: \"Deputy Director, Conservation Division\"\n is_or_was_affiliated_with:\
\ \".../org-unit/rm-conservation-division\"\n role_start_date: \"2013-03-01\"\n role_end_date: null\n affected_by_event:\
\ \".../event/rm-conservation-merger-2013\"\n```\n"
exact_mappings:
- pico:PersonObservation
close_mappings:
- schema:Person
- schema:Role
- crm:E21_Person
- foaf:Person
- prov:Agent
slots:
- is_or_was_affected_by_event
- has_age
# REMOVED: birth_date - migrated to has_or_had_date_of_birth (Rule 53)
- has_or_had_date_of_birth
# REMOVED: birth_place - migrated to has_or_had_place_of_birth (Rule 53)
- has_or_had_place_of_birth
- contact_email
- created
- date_of_death
- death_place
- deceased
- expertise_area
- extraction_metadata
- gender_identity
- has_person_name
- id
- linkedin_profile_path
- linkedin_profile_url
- modified
- observation_source
- has_or_had_provenance # was: has_or_had_observation_source_document - migrated per Rule 55 (2026-01-16)
- occupation
- person_name
- pronoun
- refers_to_person
- religion
- role_end_date
- role_start_date
- role_title
- specificity_annotation
- staff_role
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
# REMOVED: unit_affiliation - migrated to is_or_was_affiliated_with (Rule 53)
- is_or_was_affiliated_with # was: unit_affiliation
- has_or_had_web_claim
slot_usage:
id:
range: uriorcurie
required: true
identifier: true
pattern: ^https://nde\.nl/ontology/hc/person-obs/[a-z0-9-]+/[a-z0-9-]+/[a-z0-9-]+$
person_name:
range: string
required: true
has_person_name:
range: PersonName
required: false
inlined: true
refers_to_person:
range: Person
required: false
comments:
- Required is false initially to allow PersonObservation without hub linkage
- Production data SHOULD always have this link for full PICO compliance
- 'Inverse relationship: Person.has_person_observation (implemented v0.9.8)'
has_or_had_date_of_birth:
description: >-
Birth date of the person using structured BirthDate class.
MIGRATED from birth_date slot (Rule 53).
Supports EDTF notation for uncertain/incomplete dates and
tracks provenance for inferred dates per Rule 45.
range: BirthDate
inlined: true
required: false
examples:
- value: |
birth_edtf: "1970-08-15"
is_inferred: false
confidence: HIGH
description: Full date known
- value: |
birth_edtf: "197X"
is_inferred: true
confidence: LOW
description: Decade inferred from career start
has_or_had_place_of_birth:
description: >-
Birth place of the person using structured BirthPlace class.
MIGRATED from birth_place slot (Rule 53).
Supports historical vs. modern place names and links to
GeoNames/Wikidata for geographic resolution.
range: BirthPlace
inlined: true
required: false
examples:
- value: |
place_name: Amsterdam
country_code: NL
geonames_id: 2759794
description: Birth place with geographic identifiers
- value: |
place_name: Batavia
modern_place_name: Jakarta
country_code: ID
description: Historical place name
death_place:
range: string
required: false
date_of_death:
range: TimeSpan
required: false
deceased:
range: boolean
required: false
has_age:
range: string
required: false
occupation:
range: string
multivalued: true
required: false
religion:
range: string
required: false
gender_identity:
range: string
required: false
pronoun:
range: string
required: false
staff_role:
range: StaffRole
required: true
role_title:
range: string
required: false
is_or_was_affiliated_with: # was: unit_affiliation - migrated per Rule 53
range: OrganizationUnit
required: false
description: |
The organizational unit this person is/was affiliated with.
MIGRATED from unit_affiliation per slot_fixes.yaml (Rule 53, 2026-01-15).
role_start_date:
range: date
required: false
role_end_date:
range: date
required: false
observation_source:
range: string
required: false
description: Simple text reference to source (use has_or_had_provenance for structured data)
has_or_had_provenance: # was: has_or_had_observation_source_document - migrated per Rule 55 (2026-01-16)
range: SourceDocument
required: false
inlined: true
is_or_was_affected_by_event:
range: OrganizationalChangeEvent
required: false
contact_email:
range: string
required: false
pattern: ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
expertise_area:
range: string
multivalued: true
required: false
has_or_had_web_claim:
range: PersonWebClaim
multivalued: true
required: false
inlined: true
inlined_as_list: true
linkedin_profile_path:
range: string
required: false
linkedin_profile_url:
range: uri
required: false
extraction_metadata:
range: ExtractionMetadata
inlined: true
required: false
created:
range: datetime
modified:
range: datetime
comments:
- PiCo PersonObservation pattern adapted for institutional staff role tracking
- Focus on ROLES and AFFILIATIONS within heritage organizations
- NOT general biographical reconstruction (PiCo PersonReconstruction is separate concept)
- refers_to_person links observation to Person hub (core PICO pattern)
- Multiple observations from different sources can refer to same Person hub
- Temporal validity enables tracking staff through organizational changes
- 'Bidirectional links: staff → unit (is_or_was_affiliated_with), unit → staff (staff_members)'
- Person hub → Event via participated_in_events enables career event tracking
- 'Rule 26 compliance: web_claims slot enables verifiable provenance for person data'
- LinkedIn data stored separately in person/entity/ files (Rule 12, Rule 20)
examples:
- value: 'id: https://nde.nl/ontology/hc/person-obs/nl-nh-ams-m-rm/jane-smith/conservator-2013
person_name: Dr. Jane Smith
refers_to_person: https://nde.nl/ontology/hc/person/jane-smith
staff_role: CONSERVATOR
role_title: Deputy Director, Conservation Division
is_or_was_affiliated_with: https://nde.nl/ontology/hc/org-unit/rm-conservation-division
role_start_date: ''2013-03-01''
role_end_date: null
affected_by_event: https://nde.nl/ontology/hc/event/rm-conservation-merger-2013
'
description: Conservator promoted during department merger, linked to Person hub
- value: "id: https://nde.nl/ontology/hc/person-obs/nl-nh-ams-m-rm/taco-dibbits/director-2016\nperson_name: Taco Dibbits\n\
refers_to_person: https://nde.nl/ontology/hc/person/taco-dibbits\nstaff_role: DIRECTOR\nrole_title: General Director\n\
role_start_date: '2016-09-01'\nrole_end_date: null\nlinkedin_profile_url: https://www.linkedin.com/in/taco-dibbits\n\
linkedin_profile_path: data/custodian/person/entity/taco-dibbits_20250115T103000Z.json\nhas_or_had_web_claim:\n- person_claim_type:\
\ full_name\n person_claim_value: Taco Dibbits\n source_url: https://www.rijksmuseum.nl/en/about-us/organisation\n\
\ person_xpath: /html/body/main/section[2]/div[1]/h2\n retrieved_on: '2025-01-15T10:30:00Z'\n retrieval_agent:\
\ firecrawl\n person_xpath_match_score: 1.0\n- person_claim_type: role_title\n person_claim_value: General Director\n\
\ source_url: https://www.rijksmuseum.nl/en/about-us/organisation\n person_xpath: /html/body/main/section[2]/div[1]/p[1]\n\
\ retrieved_on: '2025-01-15T10:30:00Z'\n retrieval_agent: firecrawl\n person_xpath_match_score: 1.0\n"
description: Museum director with Person hub link and full web claim provenance (Rule 26 compliant)