- 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.
18 KiB
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
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
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
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
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_todate for dissolved units - Create new unit with
valid_fromdate 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-preservationhttps://nde.nl/ontology/hc/org-unit/rijks-conservation-labhttps://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:
- Check official org chart designation
- Consider staff count (Division > Department > Team)
- Consider scope (broad mandate vs. specific function)
- When in doubt, use DEPARTMENT or UNIT
parent_unit (Optional)
Definition: Parent unit in organizational hierarchy
Usage:
- Omit for top-level units
- Reference by
idANDunit_namefor clarity - Can nest to any depth (3-4 levels typical)
Example:
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:
# 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)
nullfor 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:
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):
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):
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
# 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
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
# 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_unitspecified, parent must exist - If
valid_tospecified, must be aftervalid_from - If
staff_count= 0, should be GROUP type parent_unit.idshould 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:
- Identify top-level units (no parent)
- Map unit types (Division, Department, Team)
- Document parent-child relationships
- Extract staff counts from HR data
- 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
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)
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