glam/schemas/20251121/linkml/modules/classes/StaffRole.yaml
kempersc 3da90b940e
All checks were successful
Deploy Frontend / build-and-deploy (push) Successful in 2m4s
feat(schema): complete multiple slot_fixes.yaml migrations
Session 2026-01-19: Completed remaining migrations per Rules 53/56/60.

Major migrations:
1. claim_type → has_or_had_type + ClaimType/ClaimTypes (60+ concrete types in 11 categories)
2. circumstances_of_death → is_deceased + DeceasedStatus + CauseOfDeath
3. claims_count → has_or_had_quantity + Quantity (with based_on_claim for provenance)
4. classification_status → has_or_had_type + ClassificationStatusType

Created files:
- ClaimType.yaml, ClaimTypes.yaml (abstract base + 60+ concrete subclasses)
- DeceasedStatus.yaml, CauseOfDeath.yaml, CauseOfDeathTypeEnum.yaml
- ClassificationStatus.yaml, ClassificationStatusType.yaml, ClassificationStatusTypes.yaml
- CITESAppendix.yaml, City.yaml, CertaintyLevel.yaml
- is_deceased.yaml, is_or_was_caused_by.yaml, based_on_claim.yaml

Archived slots:
- claim_type, circumstances_of_death, claims_count, classification_status

Added Rule 60 to AGENTS.md: No Migration Deferral - agents MUST execute all migrations.

All 527 slot_fixes.yaml entries now complete (100%).
2026-01-19 13:05:53 +01:00

233 lines
7.5 KiB
YAML

id: https://nde.nl/ontology/hc/class/StaffRole
name: staff_role_class
title: Staff Role Base Class
prefixes:
linkml: https://w3id.org/linkml/
schema: http://schema.org/
org: http://www.w3.org/ns/org#
prov: http://www.w3.org/ns/prov#
dcterms: http://purl.org/dc/terms/
pico: https://personsincontext.org/model#
wd: http://www.wikidata.org/entity/
imports:
- linkml:types
- ../metadata
- ../slots/description
- ../slots/martyred
- ../slots/deceased
- ../slots/date_of_death
# REMOVED 2026-01-19: ../slots/circumstances_of_death - migrated to is_deceased with DeceasedStatus
- ../slots/is_deceased
- ./DeceasedStatus
- ./CauseOfDeath
- ../enums/CauseOfDeathTypeEnum
- ../slots/has_or_had_domain # was: typical_domain - migrated per Rule 53 (2026-01-15)
- ./Domain # for has_or_had_domain range
- ../slots/temporal_extent
- ./TimeSpan
- ../slots/common_variant
- ../slots/requires_qualification
- ../slots/role_category
- ../slots/role_id
- ../slots/role_name
- ../slots/role_name_local
- ../slots/specificity_annotation
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
# REMOVED 2026-01-14: ../slots/typical_responsibility - migrated to has_or_had_responsibility with Responsibility
- ../slots/has_or_had_responsibility
- ./Responsibility
- ./SpecificityAnnotation
- ./TemplateSpecificityScore # was: TemplateSpecificityScores - migrated per Rule 53 (2026-01-17)
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
- ../enums/RoleCategoryEnum
classes:
StaffRole:
class_uri: org:Role
abstract: true
description: 'Abstract base class for official staff role/job title classifications in heritage institutions.
**CRITICAL: FORMAL TITLE vs DE FACTO WORK**
These classes represent OFFICIAL JOB APPELLATIONS/TITLES - the formal designation
assigned to a position by the institution. This is the title that appears on:
- Employment contracts
- Business cards
- Organizational charts
- HR systems
- Official correspondence
**The ACTUAL DE FACTO WORK performed may differ or extend beyond these classifications.**
| Aspect | Official Title (This Class) | De Facto Work (PersonObservation) |
|--------|----------------------------|-----------------------------------|
| **Nature** | Formal job appellation | Actual tasks and responsibilities |
| **Scope** | Narrow, defined by HR | Often broader, cross-functional |
| **Stability** | Changes with promotion/reassignment | Evolves with projects and needs |
| **Documentation** | Contract, org chart | Work logs, project records |
**Examples of Title vs Reality**:
- **Title**: "Curator" → **Reality**: Also does collections management, grant writing, public speaking
- **Title**: "Archivist" → **Reality**: Also trains volunteers, manages digitization, writes blog posts
- **Title**: "IT Specialist" → **Reality**: Also manages digital preservation, trains staff, procures equipment
- **Title**: "Librarian" → **Reality**: Also curates exhibitions, teaches workshops, manages social media
**Multi-Role Handling**:
Staff may hold multiple official roles simultaneously:
- A person may be both "Curator" AND "Department Head"
- A person may be "Researcher" during 50% appointment AND "Educator" for 50%
- Roles may overlap in time with different temporal extents
Each role is captured as a separate PersonObservation record with its own temporal bounds.
- org:Role - W3C Organization Ontology role concept
- schema:Role - Schema.org role (for structured values)
- schema:roleName - The name of the role
- pico:PersonObservation - PiCo pattern for role observations
**Subclasses**:
Specific role types inherit from this base class:
- Curatorial: Curator, CollectionsManager
- Conservation: Conservator
- Archival: Archivist, RecordsManager
- Library: Librarian
- Digital: DigitalPreservationSpecialist, DigitizationSpecialist, DataManager, etc.
- Education: Educator, PublicEngagementSpecialist
- Governance: Chairperson, ViceChairperson, Secretary, Treasurer, BoardMember
- Leadership: Director, DeputyDirector, DepartmentHead
- Research: Researcher, ResearcherInResidence, Historian, Genealogist, OralHistorian
- Technical: FacilitiesManager, ITSpecialist, FrontendDeveloper, BackendDeveloper, etc.
- Support: SecurityGuard, Janitor, Cleaner, Receptionist, TourGuide, etc.
- Creative: ArtistInResidence
- External: Consultant, LegalConsultant, Lawyer, Volunteer, NewsletterEditor, EventCoordinator
'
exact_mappings:
- org:Role
- schema:Role
close_mappings:
- pico:PersonObservation
- schema:Occupation
related_mappings:
- schema:JobPosting
- schema:EmployeeRole
slots:
# REMOVED 2026-01-19: circumstances_of_death - migrated to is_deceased with DeceasedStatus
- is_deceased
- common_variant
- date_of_death
- deceased
- description
- martyred
- requires_qualification
- role_category
- role_id
- role_name
- role_name_local
- specificity_annotation
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
- temporal_extent
- has_or_had_domain # was: typical_domain - migrated per Rule 53 (2026-01-15)
# REMOVED 2026-01-14: typical_responsibility - migrated to has_or_had_responsibility with Responsibility
- has_or_had_responsibility
slot_usage:
role_id:
identifier: true
required: true
role_name:
required: true
role_name_local:
required: false
role_category:
required: false
deceased:
required: false
martyred:
required: false
date_of_death:
required: false
# REMOVED 2026-01-19: circumstances_of_death - migrated to is_deceased
is_deceased:
required: false
range: DeceasedStatus
inlined: true
description: |
Structured death information using DeceasedStatus class.
Replaces simple circumstances_of_death string.
Captures cause (CauseOfDeath), date (TimeSpan), and narrative.
**Example - Gaza Heritage Worker**:
```yaml
is_deceased:
is_or_was_caused_by:
has_or_had_type: CONFLICT
has_or_had_description: |
Killed in Israeli airstrike on his home in Gaza City.
temporal_extent:
begin_of_the_begin: "2023-11-19T00:00:00Z"
end_of_the_end: "2023-11-19T23:59:59Z"
```
comments:
- Abstract base class - use specific subclasses (Curator, Archivist, etc.)
- Represents OFFICIAL JOB TITLES, not de facto work performed
- Actual work may differ or extend beyond formal title classification
- A person may hold multiple roles simultaneously
- Each role observation has independent temporal extent
- Links to PersonObservation via role_type slot
- deceased/martyred slots track vital status of staff member holding this role
- martyred flag specifically for information workers killed due to conflict or persecution
- date_of_death uses TimeSpan for fuzzy temporal bounds when exact date unknown
see_also:
- https://www.w3.org/TR/vocab-org/#class-role
- https://schema.org/Role
- https://github.com/FICLIT/PiCo