glam/ORGANIZATIONAL_STRUCTURE_EXAMPLES.md
kempersc 2761857b0d Add scripts for converting OWL/Turtle ontology to Mermaid and PlantUML diagrams
- Implemented `owl_to_mermaid.py` to convert OWL/Turtle files into Mermaid class diagrams.
- Implemented `owl_to_plantuml.py` to convert OWL/Turtle files into PlantUML class diagrams.
- Added two new PlantUML files for custodian multi-aspect diagrams.
2025-11-22 23:01:13 +01:00

750 lines
18 KiB
Markdown

# OrganizationalStructure Examples and Best Practices
**Version**: 0.4.0
**Date**: 2025-11-22
**Schema Module**: `schemas/20251121/linkml/modules/classes/OrganizationalStructure.yaml`
---
## Overview
This document provides comprehensive examples and guidance for modeling organizational structures in heritage custodian institutions. The `OrganizationalStructure` class captures **informal operational units** (departments, teams, divisions) that are NOT formally registered legal entities.
---
## Key Concepts
### Formal vs. Informal Structure
**CRITICAL DISTINCTION**:
| Aspect | GovernanceStructure | OrganizationalStructure |
|--------|---------------------|-------------------------|
| **Scope** | FORMAL legal structure | INFORMAL operational units |
| **Source** | Legal registration documents | Organizational charts, internal policy |
| **Examples** | "Agency under Ministry OCW" | "Digital Preservation Team" |
| **Location** | On `CustodianLegalStatus` | On `Custodian` |
| **Ontology** | `org:OrganizationalUnit` (formal) | `org:OrganizationalUnit` (informal) |
| **Changes** | Requires legal reorganization | Can change without legal process |
**Rule**: If the unit appears in legal registration documents (articles of incorporation, statutes, government orders), use `GovernanceStructure`. If it's an internal operational division, use `OrganizationalStructure`.
---
## Unit Types (OrganizationalUnitTypeEnum)
### 1. DEPARTMENT
**Definition**: Major organizational division with broad mandate
**Examples**:
- Collections Department
- Conservation Department
- Education and Outreach Department
- Research and Documentation Department
- IT Department
**Typical Characteristics**:
- 10-50+ staff
- Formal budget allocation
- Department head/director
- Permanent structure
---
### 2. TEAM
**Definition**: Smaller functional group within a department
**Examples**:
- Digital Preservation Team
- Metadata Management Team
- Cataloging Team
- Acquisitions Team
- Web Development Team
**Typical Characteristics**:
- 3-12 staff
- Specific functional focus
- Team leader
- May be temporary or project-based
---
### 3. DIVISION
**Definition**: Large-scale organizational segment (larger than department)
**Examples**:
- Collections Care Division
- Public Services Division
- Operations Division
- Collections Division
**Typical Characteristics**:
- 30-100+ staff
- Multiple departments underneath
- Division director (senior management)
- Strategic organizational level
---
### 4. GROUP
**Definition**: Cross-functional working group or committee
**Examples**:
- Metadata Standards Working Group
- Digital Preservation Steering Group
- Acquisitions Committee
- DEIA Advisory Group
**Typical Characteristics**:
- 0 staff (cross-functional membership)
- Time-limited or ongoing
- No dedicated budget
- Advisory or coordination role
---
### 5. PROGRAM
**Definition**: Specific programmatic unit with defined goals
**Examples**:
- Fellowship Program
- School Programs
- Digitization Program
- Community Engagement Program
- Artist-in-Residence Program
**Typical Characteristics**:
- 2-10 staff
- Grant-funded or special allocation
- Time-limited (but may be renewed)
- Specific deliverables
---
### 6. SERVICE
**Definition**: Service-oriented unit providing direct services
**Examples**:
- Reading Room Services
- Reference Services
- Technical Services
- Visitor Services
- Research Services
**Typical Characteristics**:
- 4-15 staff
- Public-facing
- Service hours/availability
- Contact points (phone, email)
---
### 7. LAB
**Definition**: Technical or scientific unit with specialized facilities
**Examples**:
- Conservation Lab
- Digitization Lab
- Photography Lab
- Research Lab
- Audio Restoration Lab
**Typical Characteristics**:
- 3-15 staff
- Specialized equipment
- Technical expertise
- Project-based work
---
### 8. OFFICE
**Definition**: Administrative or support unit
**Examples**:
- Office of the Director
- Communications Office
- HR Office
- Finance Office
- Legal Office
**Typical Characteristics**:
- 2-10 staff
- Administrative functions
- Support role
- Internal focus
---
### 9. UNIT
**Definition**: Generic organizational unit (use when type unclear)
**Examples**:
- Planning Unit
- Quality Assurance Unit
- Coordination Unit
**Typical Characteristics**:
- Variable size
- Ambiguous structure
- Use sparingly (prefer specific types)
---
## Organizational Patterns
### Pattern 1: Hierarchical Nested Structure
**Use Case**: Large national institutions with formal divisions, departments, and teams
```yaml
organizational_structure:
# Level 1: Division
- id: "...org-unit/collections-care-division"
unit_name: "Collections Care Division"
unit_type: "DIVISION"
staff_count: 45
# Level 2: Department under Division
- id: "...org-unit/conservation-dept"
unit_name: "Conservation Department"
unit_type: "DEPARTMENT"
parent_unit:
id: "...org-unit/collections-care-division"
unit_name: "Collections Care Division"
staff_count: 18
# Level 3: Lab under Department (3 levels deep!)
- id: "...org-unit/paper-conservation-lab"
unit_name: "Paper Conservation Lab"
unit_type: "LAB"
parent_unit:
id: "...org-unit/conservation-dept"
unit_name: "Conservation Department"
staff_count: 6
```
**Depth**: Can nest to any level (3-4 levels typical for large institutions)
---
### Pattern 2: Flat Structure (Small Institutions)
**Use Case**: Small archives, regional museums with limited staff
```yaml
organizational_structure:
# No parent units - all top-level
- id: "...org-unit/archival-services"
unit_name: "Archival Services"
unit_type: "DEPARTMENT"
staff_count: 8
- id: "...org-unit/public-services"
unit_name: "Public Services"
unit_type: "SERVICE"
staff_count: 4
- id: "...org-unit/digitization-team"
unit_name: "Digitization Team"
unit_type: "TEAM"
staff_count: 3
```
**Characteristics**: Simple structure, no nesting, 5-15 total staff
---
### Pattern 3: Matrix Structure (Cross-functional Groups)
**Use Case**: Universities, research institutions with working groups
```yaml
organizational_structure:
# Functional department
- id: "...org-unit/digital-scholarship"
unit_name: "Digital Scholarship Division"
unit_type: "DIVISION"
staff_count: 25
# Team within department
- id: "...org-unit/research-data-team"
unit_name: "Research Data Management Team"
unit_type: "TEAM"
parent_unit:
id: "...org-unit/digital-scholarship"
staff_count: 10
# Cross-functional group (no parent!)
- id: "...org-unit/metadata-standards-group"
unit_name: "Metadata Standards Working Group"
unit_type: "GROUP"
staff_count: 0 # Cross-functional, no dedicated staff
# Note: No parent_unit - reports to multiple departments
```
**Key**: Working groups often have NO parent unit and NO dedicated staff
---
### Pattern 4: Temporal Reorganization
**Use Case**: Mergers, restructurings, name changes
```yaml
organizational_structure:
# Old unit (dissolved 2013)
- id: "...org-unit/restoration-dept-old"
unit_name: "Restoration Department"
unit_type: "DEPARTMENT"
staff_count: 12
valid_from: "1885-07-13"
valid_to: "2013-03-31" # ← Dissolved
# New unit (replacement, expanded scope)
- id: "...org-unit/conservation-research"
unit_name: "Conservation and Research Department"
unit_type: "DEPARTMENT"
staff_count: 28
valid_from: "2013-04-01" # ← Successor unit
```
**Tracking Changes**:
- Use `valid_to` date for dissolved units
- Create new unit with `valid_from` date matching successor
- Document relationship in external change event model (future enhancement)
---
## Field Usage Guidelines
### id (Required)
**Format**: `https://nde.nl/ontology/hc/org-unit/{custodian-code}-{unit-slug}`
**Examples**:
- `https://nde.nl/ontology/hc/org-unit/na-digital-preservation`
- `https://nde.nl/ontology/hc/org-unit/rijks-conservation-lab`
- `https://nde.nl/ontology/hc/org-unit/ubu-special-collections`
**Rules**:
- Use lowercase, hyphen-separated
- Include custodian abbreviation for uniqueness
- Descriptive but concise
---
### unit_name (Required)
**Definition**: Full name of organizational unit
**Best Practices**:
- Use official name from org chart
- Preserve language (don't translate)
- Include full designation ("Department", "Team", "Division")
**Examples**:
- ✅ "Digital Preservation Department" (full, clear)
- ✅ "Département des Manuscrits" (French, official name)
- ❌ "Digital Preservation" (incomplete, what kind of unit?)
- ❌ "DigPres Dept" (abbreviation, not official)
---
### unit_type (Required)
**Definition**: Type from OrganizationalUnitTypeEnum
**Selection Guide**:
1. Check official org chart designation
2. Consider staff count (Division > Department > Team)
3. Consider scope (broad mandate vs. specific function)
4. When in doubt, use DEPARTMENT or UNIT
---
### parent_unit (Optional)
**Definition**: Parent unit in organizational hierarchy
**Usage**:
- Omit for top-level units
- Reference by `id` AND `unit_name` for clarity
- Can nest to any depth (3-4 levels typical)
**Example**:
```yaml
parent_unit:
id: "https://nde.nl/ontology/hc/org-unit/na-collections-care"
unit_name: "Collections Care Division"
```
---
### staff_count (Optional)
**Definition**: Number of staff (FTE) in this unit
**Best Practices**:
- Use approximate count if exact unknown
- Full-Time Equivalent (FTE), not headcount
- Omit if unknown (don't guess)
- Cross-functional groups: use 0 (no dedicated staff)
**Examples**:
- Division: 30-100 FTE
- Department: 10-50 FTE
- Team: 3-12 FTE
- Group: 0 FTE (cross-functional)
---
### contact_point (Optional)
**Definition**: Contact information for unit
**Formats**:
- Email: `digipres@nationalarchives.nl`
- URL: `https://www.bnf.fr/fr/departement-des-manuscrits`
- Phone: `+31 70 331 5400` (less common)
**Best Practices**:
- Prefer functional email (not personal)
- Include if unit has public-facing role
- Omit for internal-only units
---
### valid_from / valid_to (Optional)
**Definition**: Temporal validity of organizational unit
**Use Cases**:
- Track founding date of unit
- Track reorganizations, mergers, dissolutions
- Model historical organizational structure
**Examples**:
```yaml
# Active unit
valid_from: "2010-01-01"
valid_to: null
# Dissolved unit
valid_from: "1885-07-13"
valid_to: "2013-03-31"
```
**Best Practices**:
- Use ISO 8601 date format (YYYY-MM-DD)
- `null` for active units (no end date)
- Document reason for dissolution in external documentation
---
### refers_to_custodian (Required)
**Definition**: Links organizational unit back to custodian hub
**Purpose**: Hub architecture - every unit must reference its custodian
**Example**:
```yaml
refers_to_custodian:
hc_id: "https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804"
```
**Rules**:
- Always required (schema validation)
- Must match custodian's `hc_id`
- One unit → one custodian (no shared units across institutions)
---
## Domain-Specific Examples
### National Archives
**Typical Structure**:
- 4-6 Divisions (Collections, Public Services, Digital, Operations)
- 10-20 Departments
- 20-40 Teams
- 100-500 total staff
**Key Units**:
- Digital Preservation Department
- Conservation Department
- Public Services Division
- Acquisitions Team
- Metadata Management Team
**Example**: See `organizational_structure_examples.yaml` - Example 1
---
### Art Museums
**Typical Structure**:
- 3-5 Divisions (Collections, Conservation, Education, Operations)
- 8-15 Departments
- 15-30 Teams
- 50-300 total staff
**Key Units**:
- Conservation Lab (paintings, objects, textiles)
- Collections Division (curatorial departments by medium)
- Education and Outreach Department
- Exhibition Design Team
**Example**: See `organizational_structure_examples.yaml` - Example 2 (Rijksmuseum)
---
### University Libraries
**Typical Structure**:
- 3-4 Divisions (Collections, Digital Services, Public Services)
- 6-12 Departments
- 10-25 Teams
- 30-150 total staff
**Key Units**:
- Special Collections Department
- Digital Scholarship Division
- Research Data Management Team
- Metadata Standards Working Group
- Reference Services
**Example**: See `organizational_structure_examples.yaml` - Example 3
---
### Regional Archives (Small)
**Typical Structure**:
- 2-3 Departments (flat structure)
- 2-5 Teams
- 5-20 total staff
**Key Units**:
- Archival Services
- Public Services
- Digitization Team
**Example**: See `organizational_structure_examples.yaml` - Example 4
---
## Integration with Other Schema Components
### Relationship to GovernanceStructure
**GovernanceStructure** (on `CustodianLegalStatus`):
```yaml
CustodianLegalStatus:
legal_name: "Stichting Nationaal Archief"
legal_form: "9220" # ISO 20275: Foundation
governance_structure:
structure_type: "hierarchical"
governance_body: "Supervisory Board, Management Board"
organizational_hierarchy: "Reports to Ministry of OCW"
```
**OrganizationalStructure** (on `Custodian`):
```yaml
Custodian:
organizational_structure:
- unit_name: "Digital Preservation Department"
unit_type: "DEPARTMENT"
# Operational unit, not in legal docs
```
**Key**: GovernanceStructure = legal docs; OrganizationalStructure = org chart
---
### Relationship to PiCo (Person Observations)
**Future Enhancement**: Link staff roles to organizational units
```yaml
# PiCo PersonObservation (future)
- person_name: "Dr. Jane Smith"
role: "Head of Digital Preservation"
affiliation:
id: "https://nde.nl/ontology/hc/org-unit/na-digital-preservation"
unit_name: "Digital Preservation Department"
valid_from: "2018-01-01"
```
**Use Case**: Track who leads which units over time
---
### Relationship to CustodianCollection
**Potential Link**: Collections managed by specific units
```yaml
CustodianCollection:
collection_name: "Manuscripts Collection"
custodian_department:
id: "https://nde.nl/ontology/hc/org-unit/bnf-manuscripts"
unit_name: "Département des Manuscrits"
```
**Use Case**: Document which department curates which collection
---
## Validation Rules
### Schema Validation
```bash
# Validate organizational structure examples
linkml-validate \
-s schemas/20251121/linkml/01_custodian_name_modular.yaml \
schemas/20251121/examples/organizational_structure_examples.yaml
```
### Data Quality Checks
**Required Fields**:
-`id` - Unique identifier
-`unit_name` - Full unit name
-`unit_type` - From OrganizationalUnitTypeEnum
-`refers_to_custodian` - Link back to custodian
**Logical Consistency**:
- If `parent_unit` specified, parent must exist
- If `valid_to` specified, must be after `valid_from`
- If `staff_count` = 0, should be GROUP type
- `parent_unit.id` should reference another unit in same custodian
**Completeness**:
- Top-level units (no parent) should have `unit_type` = DIVISION or DEPARTMENT
- Leaf units (no children) often TEAM, LAB, or SERVICE
- Large institutions should have 3+ levels (Division → Department → Team)
---
## Migration from Existing Data
### From Organizational Charts
**Process**:
1. Identify top-level units (no parent)
2. Map unit types (Division, Department, Team)
3. Document parent-child relationships
4. Extract staff counts from HR data
5. Add temporal validity if known
**Tools**: Manual data entry or scraping from institutional websites
---
### From Legal Documents
**WARNING**: Legal documents describe GovernanceStructure, NOT OrganizationalStructure
**Example**:
- Articles of incorporation: "Board of Directors, Executive Committee" → GovernanceStructure
- Org chart: "Digital Preservation Team" → OrganizationalStructure
**Rule**: Never use OrganizationalStructure for units from legal registration
---
## Query Examples
### SPARQL: Find all departments in an institution
```sparql
PREFIX hc: <https://nde.nl/ontology/hc/>
PREFIX org: <http://www.w3.org/ns/org#>
SELECT ?unit ?unitName
WHERE {
?custodian hc:hc_id "https://nde.nl/ontology/hc/nl-zh-haa-a-na" .
?custodian org:hasUnit ?unit .
?unit hc:unit_name ?unitName .
?unit hc:unit_type "DEPARTMENT" .
}
```
---
### SPARQL: Find organizational hierarchy (nested units)
```sparql
PREFIX hc: <https://nde.nl/ontology/hc/>
PREFIX org: <http://www.w3.org/ns/org#>
SELECT ?division ?dept ?team
WHERE {
?custodian hc:hc_id "https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804" .
# Top-level division
?custodian org:hasUnit ?division .
?division hc:unit_type "DIVISION" .
# Department under division
?custodian org:hasUnit ?dept .
?dept org:unitOf ?division .
?dept hc:unit_type "DEPARTMENT" .
# Team under department
?custodian org:hasUnit ?team .
?team org:unitOf ?dept .
?team hc:unit_type "TEAM" .
}
```
---
## Future Enhancements
### Phase 1 (Implemented) ✅
- Basic OrganizationalStructure class
- 9 unit types (DEPARTMENT, TEAM, etc.)
- Hierarchical nesting via parent_unit
- Temporal validity (valid_from/to)
### Phase 2 (Planned)
- **Change events**: Track mergers, reorganizations, dissolutions
- **Staff roles**: Link to PiCo person observations
- **Reporting lines**: Explicit manager relationships
- **Budget data**: Financial allocation per unit
### Phase 3 (Future)
- **Inter-unit collaboration**: Cross-functional project teams
- **Location mapping**: Map units to physical buildings/floors
- **Workflow modeling**: Process flows between units
- **KPIs and metrics**: Performance tracking per unit
---
## References
### Schema Files
- **OrganizationalStructure class**: `schemas/20251121/linkml/modules/classes/OrganizationalStructure.yaml`
- **Custodian class**: `schemas/20251121/linkml/modules/classes/Custodian.yaml`
- **Enum**: `schemas/20251121/linkml/modules/enums/OrganizationalUnitTypeEnum.yaml`
- **Test instances**: `schemas/20251121/examples/organizational_structure_examples.yaml`
### Documentation
- **Session summary**: `ORGANIZATIONAL_STRUCTURE_ADDITION_20251122.md`
- **Schema modules**: `docs/SCHEMA_MODULES.md`
- **W3C ORG ontology**: `data/ontology/org.rdf`
### Ontology Alignment
- **W3C ORG**: `org:OrganizationalUnit`, `org:hasUnit`, `org:unitOf`
- **PROV-O**: `prov:qualifiedAttribution` (links unit to custodian)
---
## Changelog
### Version 0.4.0 (2025-11-22)
- ✅ Initial OrganizationalStructure class implementation
- ✅ 9 unit types defined
- ✅ Hierarchical nesting via parent_unit
- ✅ Temporal validity tracking
- ✅ 5 comprehensive test instances
- ✅ Documentation complete
---
**Status**: ✅ Complete
**Next Steps**: Validate test instances, create additional examples for edge cases