glam/schemas/20251121/linkml/modules/classes/StaffRole.yaml
kempersc 69a22e2b5a Refactor and expand LinkML slot definitions
- Deleted the `rights_statement_url` slot definition as it is no longer needed.
- Added multiple new slots including `has_legal_basis`, `has_statement`, `impose`, `pose_condition`, and `reviewed_through` with detailed descriptions and ontology alignments.
- Updated existing slots to improve clarity and consistency, including renaming `close_mappings` to `related_mappings` in several definitions.
- Enhanced the `require` slot with additional aliases for better usability.
- Improved documentation and comments across all slot definitions to clarify their purpose and usage.
2026-02-08 23:37:44 +01:00

120 lines
7.1 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
- ../enums/CauseOfDeathTypeEnum
- ../enums/RoleCategoryEnum
- ../metadata
- ../slots/20260202_matang/has_description
- ../slots/20260202_matang/has_domain
- ../slots/20260202_matang/responsible_for
- ../slots/20260202_matang/has_score
- ../slots/20260202_matang/has_type
- ../slots/20260202_matang/include
- ../slots/20260202_matang/new/is_deceased
- ../slots/20260202_matang/new/martyred
- ../slots/20260202_matang/require
- ../slots/20260202_matang/new/role_category
- ../slots/20260202_matang/new/role_id
- ../slots/20260202_matang/new/role_name
- ../slots/20260202_matang/new/role_name_local
- ../slots/20260202_matang/temporal_extent
classes:
StaffRole:
class_uri: org:Role
abstract: true
description: "Abstract base class for official staff role/job title classifications in heritage institutions.\n\n**CRITICAL: FORMAL TITLE vs DE FACTO WORK**\n\nThese classes represent OFFICIAL JOB APPELLATIONS/TITLES - the formal designation\nassigned to a position by the institution. This is the title that appears on:\n- Employment contracts\n- Business cards\n- Organizational charts\n- HR systems\n- Official correspondence\n\n**The ACTUAL DE FACTO WORK performed may differ or extend beyond these classifications.**\n\n| Aspect | Official Title (This Class) | De Facto Work (PersonObservation) |\n|--------|----------------------------|-----------------------------------|\n| **Nature** | Formal job appellation | Actual tasks and responsibilities |\n| **Scope** | Narrow, defined by HR | Often broader, cross-functional |\n| **Stability** | Changes with promotion/reassignment | Evolves with projects and needs |\n| **Documentation** | Contract, org chart | Work logs, project records |\n\n\
**Examples of Title vs Reality**:\n\n- **Title**: \"Curator\" \u2192 **Reality**: Also does collections management, grant writing, public speaking\n- **Title**: \"Archivist\" \u2192 **Reality**: Also trains volunteers, manages digitization, writes blog posts\n- **Title**: \"IT Specialist\" \u2192 **Reality**: Also manages digital preservation, trains staff, procures equipment\n- **Title**: \"Librarian\" \u2192 **Reality**: Also curates exhibitions, teaches workshops, manages social media\n\n**Multi-Role Handling**:\n\nStaff may hold multiple official roles simultaneously:\n- A person may be both \"Curator\" AND \"Department Head\"\n- A person may be \"Researcher\" during 50% appointment AND \"Educator\" for 50%\n- Roles may overlap in time with different temporal extents\n\nEach role is captured as a separate PersonObservation record with its own temporal bounds.\n\n- org:Role - W3C Organization Ontology role concept\n- schema:Role - Schema.org role (for structured values)\n- schema:roleName\
\ - The name of the role\n- pico:PersonObservation - PiCo pattern for role observations\n\n**Subclasses**:\n\nSpecific role types inherit from this base class:\n- Curatorial: Curator, CollectionsManager\n- Conservation: Conservator\n- Archival: Archivist, RecordsManager\n- Library: Librarian\n- Digital: DigitalPreservationSpecialist, DigitizationSpecialist, DataManager, etc.\n- Education: Educator, PublicEngagementSpecialist\n- Governance: Chairperson, ViceChairperson, Secretary, Treasurer, BoardMember\n- Leadership: Director, DeputyDirector, DepartmentHead\n- Research: Researcher, ResearcherInResidence, Historian, Genealogist, OralHistorian\n- Technical: FacilitiesManager, ITSpecialist, FrontendDeveloper, BackendDeveloper, etc.\n- Support: SecurityGuard, Janitor, Cleaner, Receptionist, TourGuide, etc.\n- Creative: ArtistInResidence\n- External: Consultant, LegalConsultant, Lawyer, Volunteer, NewsletterEditor, EventCoordinator\n"
exact_mappings:
- org:Role
- schema:Role
close_mappings:
- pico:PersonObservation
- schema:Occupation
related_mappings:
- schema:JobPosting
- schema:EmployeeRole
slots:
- is_deceased
- has_type
- include
- has_description
- martyred
- requires_qualification
- role_category
- role_id
- role_name
- role_name_local
- has_score
- temporal_extent
- has_domain
- responsible_for
slot_usage:
role_id:
identifier: true
required: true
role_name:
required: true
role_name_local:
required: false
role_category:
required: false
martyred:
required: false
is_deceased:
required: false
# range: string # uriorcurie
# range: DeceasedStatus
inlined: false # Fixed invalid inline for primitive type
description: "Structured death information using DeceasedStatus class.\nReplaces simple circumstances_of_death string.\nCaptures cause (CauseOfDeath), date (TimeSpan), and narrative.\n\n**Example - Gaza Heritage Worker**:\n```yaml\nis_deceased:\n caused_by:\n has_type: CONFLICT\n has_description: |\n Killed in Israeli airstrike on his home in Gaza City.\n temporal_extent:\n begin_of_the_begin: \"2023-11-19T00:00:00Z\"\n end_of_the_end: \"2023-11-19T23:59:59Z\"\n```\n"
has_type:
required: false
# range: string # uriorcurie
# range: VariantType
multivalued: true
inlined: false # Fixed invalid inline for primitive type
inlined_as_list: false # Fixed invalid inline for primitive type
examples:
- value:
has_label: Keeper
has_type: SynonymVariant
has_description: British English alternative for Curator
- value:
has_label: Conservateur
has_type: TranslationVariant
has_language: fr
include:
required: false
# range: string # uriorcurie
# range: VariantType
multivalued: true
inlined: false # Fixed invalid inline for primitive type
inlined_as_list: false # Fixed invalid inline for primitive type
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
- is_deceased with DeceasedStatus tracks vital status of staff member holding this role
- martyred flag specifically for information workers killed due to conflict or persecution
- DeceasedStatus.temporal_extent 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
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: "['*']"