glam/schemas/20251121/linkml/modules/classes/OrganizationalStructure.yaml
kempersc 626bd3a095 refactor(schemas): apply naming conventions to 261 class files
- Apply Rule 39: RiC-O style hasOrHad*/isOrWas* for temporal slots
- Apply Rule 43: Singular noun convention (keywords → keyword)
- Update slot references to match renamed slot files
- Maintain schema integrity across all class definitions
2026-01-10 15:36:33 +01:00

419 lines
21 KiB
YAML

id: https://nde.nl/ontology/hc/class/OrganizationalStructure
name: OrganizationalStructure
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
org: http://www.w3.org/ns/org#
prov: http://www.w3.org/ns/prov#
imports:
- linkml:types
- ./AuxiliaryPlace
- ./PersonObservation
- ./CustodianCollection
- ./Custodian
- ../enums/OrganizationalUnitTypeEnum
- ../slots/located_at
- ../slots/unit_name
- ../slots/unit_type
- ../slots/parent_unit
- ../slots/staff_count
- ../slots/has_or_had_staff_member
- ../slots/has_or_had_managed_collection
- ../slots/contact_point
- ../slots/valid_from
- ../slots/valid_to
- ../slots/refers_to_custodian
- ../slots/id
- ../slots/specificity_annotation
- ../slots/template_specificity
- ./SpecificityAnnotation
- ./TemplateSpecificityScores
classes:
OrganizationalStructure:
class_uri: org:OrganizationalUnit
description: "Informal organizational structure of a heritage custodian, representing\n\
operational departments, teams, divisions, or groups that are NOT formally\n\
registered as separate legal entities.\n\n**Distinction from GovernanceStructure**:\n\
- **GovernanceStructure**: Formal structure from legal registration \n (e.g.,\
\ \"National Archives is agency under Ministry OCW\")\n- **OrganizationalStructure**:\
\ Informal/operational units\n (e.g., \"Digital Preservation Team\", \"Public\
\ Services Department\")\n\n**W3C ORG Alignment**:\nMaps to `org:OrganizationalUnit`\
\ - \"An Organization such as a University \nSupport Unit which is part of some\
\ larger FormalOrganization and only has \nfull recognition within the context\
\ of that FormalOrganization, it is not \na Legal Entity in its own right.\"\
\n\n**Scope**:\n- Departments (Collections, Education, Research, IT)\n- Teams\
\ (Digital Preservation, Conservation, Cataloging)\n- Programs (Outreach programs,\
\ fellowship programs)\n- Working groups (Metadata standards group, acquisitions\
\ committee)\n- Service units (Reading room, reference desk, storage facilities)\n\
\n**NOT in Scope** (use GovernanceStructure instead):\n- Formal sub-organizations\
\ with legal registration\n- Legally recognized branches or subsidiaries\n-\
\ Governance bodies from articles of incorporation\n\n**Temporal Dynamics**:\n\
Organizational units can be created, renamed, merged, or dissolved\nindependently\
\ of the custodian's legal status. Track changes with\n`valid_from`/`valid_to`\
\ dates.\n\n**Example - National Archives**:\n```yaml\nCustodianLegalStatus:\n\
\ governance_structure: # FORMAL (from legal registration)\n structure_type:\
\ \"Government agency\"\n governance_body: \"Reports to Ministry of OCW\"\
\n\nCustodian:\n organizational_structure: # INFORMAL (operational)\n -\
\ unit_name: \"Digital Preservation Department\"\n unit_type: \"department\"\
\n description: \"Manages born-digital archives\"\n - unit_name: \"\
Public Services Team\"\n unit_type: \"team\"\n description: \"Reading\
\ room, reference services\"\n```\n"
slots:
- contact_point
- id
- located_at
- has_or_had_managed_collection
- parent_unit
- refers_to_custodian
- specificity_annotation
- staff_count
- has_or_had_staff_member
- template_specificity
- unit_name
- unit_type
- valid_from
- valid_to
slot_usage:
id:
identifier: true
required: true
description: Unique identifier for this organizational unit
examples:
- value: https://nde.nl/ontology/hc/org-unit/na-digital-preservation
description: URI for National Archives Digital Preservation Dept
unit_name:
required: true
range: string
description: |
Name of the organizational unit (department, team, division, group).
Examples:
- "Digital Preservation Department"
- "Collections Management Team"
- "Education and Outreach Division"
- "Conservation Lab"
examples:
- value: Digital Preservation Department
- value: Public Services Team
- value: Research and Documentation Division
unit_type:
range: OrganizationalUnitTypeEnum
description: |
Type of organizational unit.
Types:
- DEPARTMENT: Major organizational division (Collections, Education)
- TEAM: Smaller functional group within department
- DIVISION: Large-scale organizational segment
- GROUP: Cross-functional working group or committee
- PROGRAM: Specific programmatic unit (fellowship program, digitization project)
- SERVICE: Service-oriented unit (reading room, reference desk)
- LAB: Technical/scientific unit (conservation lab, digitization lab)
examples:
- value: DEPARTMENT
- value: TEAM
parent_unit:
range: OrganizationalStructure
description: |
Parent unit in organizational hierarchy.
Allows nested organizational structures.
Example:
- "Conservation Team" is parent_unit of "Paper Conservation Lab"
- "Collections Division" is parent_unit of "Acquisitions Department"
examples:
- value:
unit_name: Collections Division
description: Parent of Acquisitions Dept
staff_count:
range: integer
description: |
Number of staff (FTE) in this unit (approximate).
examples:
- value: 12
description: 12 FTE in Digital Preservation Dept
has_or_had_staff_member:
slot_uri: org:hasMember
range: PersonObservation
multivalued: true
inlined_as_list: true
description: |
Staff members (PersonObservation instances) affiliated with this organizational unit.
**W3C ORG Property**: `org:hasMember` - "Indicates a person who is a member of the subject Organization."
- Domain: org:Organization (OrganizationalStructure)
- Range: foaf:Agent (PersonObservation)
- Inverse: `org:memberOf` (PersonObservation.unit_affiliation)
**Bidirectional Relationship**:
- **Forward**: OrganizationalStructure → PersonObservation (staff_members)
- **Reverse**: PersonObservation → OrganizationalStructure (unit_affiliation)
- Enables queries from both directions:
- "Who works in this department?" (org unit → staff)
- "Which department does this person work for?" (staff → org unit)
**Temporal Consistency**:
Person's employment dates should align with organizational unit validity:
- PersonObservation.role_start_date >= OrganizationalStructure.valid_from
- PersonObservation.role_end_date <= OrganizationalStructure.valid_to (if unit dissolved)
**Use Cases**:
1. **Department staffing analysis**: "How many conservators in Conservation Division?"
2. **Expertise location**: "Which unit has manuscript conservation expertise?"
3. **Reorganization impact**: "Track staff before/after merger event"
4. **Contact directory**: "Find department head for Digital Services"
**Data Quality**:
- Complete staff rosters (all positions documented) = high-quality data
- Partial rosters (only senior staff) = acceptable for historical analysis
- Empty staff_members (no data) = indicates missing personnel records
**Example - Conservation Division**:
```yaml
OrganizationalStructure:
id: ".../org-unit/rm-conservation-division"
unit_name: "Conservation Division"
staff_count: 28 # Total FTE
has_or_had_staff_member:
- id: ".../person-obs/.../jane-smith/conservator-2013"
person_name: "Dr. Jane Smith"
staff_role: CONSERVATOR
role_title: "Deputy Director, Conservation Division"
- id: ".../person-obs/.../john-doe/conservator-2015"
person_name: "John Doe"
staff_role: CONSERVATOR
role_title: "Senior Objects Conservator"
```
**Example - Staff Through Organizational Change**:
```yaml
# Before merger (2013-02-28)
OrganizationalStructure:
id: ".../org-unit/rm-paintings-conservation"
unit_name: "Paintings Conservation Department"
valid_to: "2013-02-28"
has_or_had_staff_member:
- person_name: "Dr. Jane Smith"
role_end_date: "2013-02-28" # Ends with unit dissolution
# After merger (2013-03-01)
OrganizationalStructure:
id: ".../org-unit/rm-conservation-division"
unit_name: "Conservation Division"
valid_from: "2013-03-01"
has_or_had_staff_member:
- person_name: "Dr. Jane Smith"
role_start_date: "2013-03-01" # Starts with new unit
affected_by_event: ".../event/rm-conservation-merger-2013"
```
**Query Pattern (SPARQL)**:
```sparql
# Find all conservators in an institution
SELECT ?unitName ?personName ?roleTitle WHERE {
?custodian hc:organizational_structure ?unit .
?unit hc:unit_name ?unitName ;
hc:staff_members ?person .
?person hc:person_name ?personName ;
hc:staff_role "CONSERVATOR" ;
hc:role_title ?roleTitle .
}
```
examples:
- value:
- id: https://nde.nl/ontology/hc/person-obs/nl-na/john-doe/archivist-2015
person_name: John Doe
staff_role: ARCHIVIST
role_title: Digital Preservation Manager
description: Staff member in Digital Preservation Department
has_or_had_managed_collection:
slot_uri: org:hasUnit
range: CustodianCollection
multivalued: true
inlined_as_list: true
description: "Heritage collections managed by this organizational unit.\n\n\
**W3C ORG Pattern Extension**: \nW3C ORG's `org:hasUnit` typically models\
\ organizational hierarchy (organization → sub-unit).\nWe extend this conceptually\
\ to organizational unit → managed collections.\nRationale: Collections\
\ are \"units\" in the sense of organizational responsibilities.\n\n**Alternative\
\ Ontology Mappings**:\n- `crm:P50i_is_current_keeper_of` (CIDOC-CRM - inverse\
\ of P50_has_current_keeper)\n- `rico:isManagerOf` (RiC-O manages relationship)\n\
- `schema:isRelatedTo` (Schema.org general relationship)\n\n**Bidirectional\
\ Relationship**:\n- **Forward**: OrganizationalStructure → CustodianCollection\
\ (managed_collections)\n- **Reverse**: CustodianCollection → OrganizationalStructure\
\ (managing_unit)\n- Enables queries from both directions:\n - \"What collections\
\ does this department manage?\" (unit → collections)\n - \"Which department\
\ manages this collection?\" (collection → unit)\n\n**Temporal Consistency**:\n\
Collection custody dates should align with organizational unit validity:\n\
- CustodianCollection.valid_from >= OrganizationalStructure.valid_from\n\
- CustodianCollection.valid_to <= OrganizationalStructure.valid_to (if unit\
\ dissolved)\n\n**Use Cases**:\n1. **Collection Management Analysis**: \"\
What collections does Paintings Department manage?\"\n2. **Staffing + Collections\
\ Cross-Reference**: \"Find curators AND collections in a department\"\n\
3. **Organizational Change Impact**: \"Track which collections were affected\
\ by merger\"\n4. **Workload Analysis**: \"How many collections per department?\"\
\n\n**Data Quality**:\n- Complete collection inventory = high-quality data\n\
- Major collections only = acceptable for institutional overview\n- Empty\
\ managed_collections = unit has no collection management responsibilities\n\
\n**Example - Paintings Department**:\n```yaml\nOrganizationalStructure:\n\
\ id: \".../org-unit/rm-paintings-dept\"\n unit_name: \"Paintings Department\"\
\n unit_type: DEPARTMENT\n staff_count: 15\n staff_members:\n - \"\
.../person-obs/.../curator-dutch-paintings\"\n - \".../person-obs/.../curator-flemish-paintings\"\
\n managed_collections:\n - id: \".../collection/rm-dutch-paintings\"\
\n collection_name: \"Dutch Golden Age Paintings\"\n extent: \"\
1,200 objects\"\n - id: \".../collection/rm-flemish-paintings\"\n \
\ collection_name: \"Flemish Baroque Paintings\"\n extent: \"450\
\ objects\"\n```\n\n**Example - Organizational Change (Collection Custody\
\ Transfer)**:\n```yaml\n# Before merger (2013-02-28)\nOrganizationalStructure:\n\
\ id: \".../org-unit/rm-paintings-conservation\"\n unit_name: \"Paintings\
\ Conservation Department\"\n valid_to: \"2013-02-28\"\n managed_collections:\n\
\ - id: \".../collection/rm-paintings-in-conservation\"\n collection_name:\
\ \"Paintings Undergoing Conservation\"\n valid_to: \"2013-02-28\"\
\ # Custody period ends\n\n# After merger (2013-03-01)\nOrganizationalStructure:\n\
\ id: \".../org-unit/rm-conservation-division\"\n unit_name: \"Conservation\
\ Division\"\n valid_from: \"2013-03-01\"\n managed_collections:\n \
\ - id: \".../collection/rm-paintings-in-conservation\"\n collection_name:\
\ \"Paintings Undergoing Conservation\"\n valid_from: \"2013-03-01\"\
\ # Custody transferred to new unit\n - id: \".../collection/rm-objects-in-conservation\"\
\n collection_name: \"Objects Undergoing Conservation\"\n valid_from:\
\ \"2013-03-01\"\n# Collections consolidated under merged unit\n```\n\n\
**Query Pattern (SPARQL)**:\n```sparql\n# Find all collections + curators\
\ in a department\nPREFIX org: <http://www.w3.org/ns/org#>\nPREFIX hc: <https://nde.nl/ontology/hc/class/>\n\
PREFIX dcterms: <http://purl.org/dc/terms/>\nPREFIX schema: <http://schema.org/>\n\
\nSELECT ?collection_name ?extent ?curator_name ?role_title\nWHERE {\n \
\ <.../org-unit/rm-paintings-dept>\n org:hasUnit ?collection ;\n org:hasMember\
\ ?curator .\n \n ?collection dcterms:title ?collection_name ;\n \
\ dcterms:extent ?extent .\n \n ?curator hc:staff_role hc:CURATOR\
\ ;\n schema:name ?curator_name ;\n schema:jobTitle\
\ ?role_title .\n \n FILTER NOT EXISTS { ?curator schema:endDate ?end\
\ } # Still employed\n FILTER NOT EXISTS { ?collection time:hasEnd ?coll_end\
\ } # Active collection\n}\n```\n\n**Integration with PersonObservation**:\n\
Combining staff + collections enables queries like:\n- \"Which curator manages\
\ the Medieval Manuscripts collection?\"\n → CustodianCollection.managing_unit\
\ → staff_members (role = CURATOR)\n- \"What collections does Dr. Smith's\
\ department manage?\"\n → PersonObservation.unit_affiliation → managed_collections\n\
\n**Notes**:\n- Multivalued: Units typically manage multiple collections\
\ or sub-collections\n- Collections may transfer between units during reorganizations\n\
- Use temporal validity (valid_from/valid_to) to track custody history\n\
- Collections can be hierarchical: sub-collections inherit managing_unit\
\ from parent\n"
examples:
- value:
- id: https://nde.nl/ontology/hc/collection/rm-dutch-paintings
collection_name: Dutch Golden Age Paintings
extent: 1,200 objects
description: Collection managed by Paintings Department
located_at:
slot_uri: org:basedAt
range: AuxiliaryPlace
multivalued: true
inlined_as_list: true
description: "Physical location (AuxiliaryPlace) where this organizational\
\ unit operates.\n\n**W3C ORG Alignment**:\n\n`org:basedAt` - \"Indicates\
\ the site at which the Organization has its main \nadministrative/operational\
\ presence.\"\n\n**Optional Slot**:\n\nMany organizational units don't have\
\ fixed locations:\n- Strategic Planning Committee (meets virtually)\n-\
\ Research Fellowship Program (no physical space)\n\nOnly use when organizational\
\ unit has identifiable physical location.\n\n**Use Cases**:\n\n1. **Departments\
\ at Branch Locations**:\n - Conservation Team → located at Amersfoort\
\ Depot\n - Digitization Team → located at off-site facility\n\n2. **Teams\
\ Spanning Multiple Locations**:\n - IT Department → located at main building\
\ AND data center\n - Public Services → located at main reading room AND\
\ annex\n\n**Relationship to OrganizationBranch**:\n\nOrganizationalStructure.located_at\
\ provides OPTIONAL location link.\nOrganizationBranch.has_operational_unit\
\ provides hierarchical structure.\n\n```\nAuxiliaryPlace\n └── hosts_branch\
\ → OrganizationBranch\n └── has_operational_unit → OrganizationalStructure\n\
\nOrganizationalStructure\n └── located_at → AuxiliaryPlace (optional,\
\ direct link)\n```\n\n**Example**:\n```yaml\nOrganizationalStructure:\n\
\ unit_name: \"Conservation Division\"\n unit_type: DIVISION\n located_at:\n\
\ - place_name: \"Conservation Lab - Main Building\"\n - place_name:\
\ \"Climate-Controlled Storage - Depot\"\n```\n"
examples:
- value:
- place_name: Depot Amersfoort
auxiliary_place_type: STORAGE_FACILITY
description: Organizational unit located at off-site storage
contact_point:
range: string
description: |
Contact information for unit (email, phone, URL).
Can be structured as vCard in future versions.
examples:
- value: digitization@nationalarchives.nl
- value: https://nationalarchives.nl/services/reading-room
valid_from:
range: date
description: |
Date this organizational unit was established.
Tracks organizational restructuring over time.
examples:
- value: '2015-01-01'
description: Digital Preservation Dept founded 2015
valid_to:
range: date
description: |
Date this organizational unit was dissolved or merged.
NULL if still active.
examples:
- value: '2020-12-31'
description: Unit dissolved in 2020 reorganization
refers_to_custodian:
required: true
range: Custodian
slot_uri: prov:qualifiedAttribution
description: |
Links this organizational unit back to the custodian hub entity.
Every organizational unit MUST refer to exactly one custodian.
examples:
- value:
hc_id: https://nde.nl/ontology/hc/cust/national-archives
description: Unit belongs to National Archives
specificity_annotation:
range: SpecificityAnnotation
inlined: true
template_specificity:
range: TemplateSpecificityScores
inlined: true
comments:
- OrganizationalStructure models INFORMAL operational units
- GovernanceStructure models FORMAL legal structure
- Both use org:OrganizationalUnit but at different levels
- Units can be nested via parent_unit (hierarchical structure)
- Temporal validity tracks organizational changes
- NOT for legally registered sub-organizations (use CustodianLegalStatus)
- 'NEW: located_at links organizational units to AuxiliaryPlace locations (optional)'
- Enables tracking which departments/teams operate at which physical sites
examples:
- value:
id: https://nde.nl/ontology/hc/org-unit/na-digital-pres
unit_name: Digital Preservation Department
unit_type: DEPARTMENT
staff_count: 15
contact_point: digipres@nationalarchives.nl
valid_from: '2010-01-01'
refers_to_custodian:
hc_id: https://nde.nl/ontology/hc/cust/national-archives-nl
description: Digital preservation department example
- value:
id: https://nde.nl/ontology/hc/org-unit/rijks-conservation
unit_name: Conservation Lab
unit_type: LAB
parent_unit:
unit_name: Collections Care Division
staff_count: 8
valid_from: '1885-07-13'
refers_to_custodian:
hc_id: https://nde.nl/ontology/hc/cust/national-archives-nl
description: Digital preservation department example
- value:
id: https://nde.nl/ontology/hc/org-unit/rijks-conservation
unit_name: Conservation Lab
unit_type: LAB
parent_unit:
unit_name: Collections Care Division
description: Painting, paper, and textile conservation
staff_count: 8
valid_from: '1885-07-13'
refers_to_custodian:
hc_id: https://nde.nl/ontology/hc/cust/rijksmuseum
description: Museum conservation lab with parent division