# Rule: Capitalization Consistency for LinkML Names ## Purpose Ensure naming is consistent across LinkML classes, slots, enums, and their files, with special care for acronyms (for example: `GLAM`, `GHC`, `GHCID`, `GLEIF`). ## Mandatory Requirements 1. **Class names** - Use `PascalCase`. - Preserve canonical acronym casing. - Example: `GHCIdentifier`, not `GhcidIdentifier`. 2. **Slot names** - Use project slot naming convention consistently. - If acronym appears in a slot, keep its canonical uppercase form. - Example: `has_GHCID_history` (if acronymed slot is required), not `has_ghcid_history`. 3. **Enum names** - Use `PascalCase` with `Enum` suffix where applicable. - Preserve acronym casing in enum identifiers and permissible values. - Example: `GLAMTypeEnum`. 4. **File names must match primary term exactly** - Class file name must match class name (case-sensitive) plus `.yaml`. - Enum file name must match enum name (case-sensitive) plus `.yaml`. - Slot file name must match slot name (case-sensitive) plus `.yaml`. 5. **No mixed acronym variants in same schema branch** - Do not mix forms like `Ghcid`, `GHCID`, and `ghcid` for the same concept. - Pick canonical form once and use it everywhere. ## Refactoring Rule When normalizing capitalization: - Update term declaration (`name`, class/slot/enum key). - Update file name to match. - Update all imports and references transitively. - Do not leave aliases as operational identifiers; keep aliases only for lexical metadata. ## Validation Checklist - [ ] Class, slot, enum declarations use canonical casing. - [ ] File names exactly match declaration names. - [ ] Acronyms are consistent across declarations and references. - [ ] Imports and references resolve after renaming.