- 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
419 lines
21 KiB
YAML
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
|