editing rules enforced by nci protege - NCIEVS/nci-protege5 GitHub Wiki
Rules for Editing
- Each concept must have one and only one NCI/PT Full-Syn
- Each concept must have one and only one Preferred_Name
- HD, AQ and PT are equivalent Full-Syn term types. (i.e. an NCI/AQ can take the place of an NCI/PT)
- NCI/PT value must match the Preferred_Name
- Properties (where all qualifiers are exactly the same) cannot be duplicated within a concept
- Roles cannot be duplicated within a concept
- Role groups cannot be duplicated within a concept
- Superclasses cannot be duplicated within a concept
- Associations cannot be duplicated within a concept
- The last superclass of a concept cannot be deleted
- A concept cannot be its own parent
- Cannot create a restriction pointed at a retired, pre-retired, or pre-merged class
- If concept has Def_Curator property present, only authorized users can create, modify or delete the DEFINITION
- If concept has Def_Curator property present, only authorized users can modify or delete the Def_Curator
- Def_Curators must exist in a configuration file. No "dummy" Def_Curators
- Each DEFINITION must have 1 review date, 1 review name, 0 or 1 attribution (attr), and 1 source
- Only single spaces allowed in a DEFINITION unless preceeded by !, ? or .
- No leading or trailing spaces allowed in properties
- Only single spaces allowed between tokens in properties (except for DEFINITION)
- Each FULL_SYN must have 1 value, 1 Term Type, 1 term source, 0 or 1 source code and 0 or 1 subsource name
- Special Characters
- Map all property values to allowed UTF-8 chars from map (note to self, map @ to " at ")
- No property can have control characters (below ascii 32)
- No property can have '!', '?', except definition/alt_definition which can have '!' and '?'.
- {The @ is currently problematic because Protege considers the things following it to be a language indicator}
- {TBD, by guideline? - Properties should not contain Greek characters in technical terms, e.g. alpha helix vs α-helix, they should be spelled out. Perhaps include both in different instances of the properties? The idea is that in a search, the user will stick to the characters found in the keyboard.}
Retire
- Pre-retired concepts are retired under the preretired_concepts bin
- Pre-retire process forces dependent classes to be fixed (children retreed, incoming roles re-pointed)
- Pre-retire concept must have a DesignNote and Editor_Note added explaining the retirement
- Only the lead editor may do the final retire on a concept
- Only the lead editor may edit retired concepts
- Roles in the retiring concept converted to annotation properties called OLD_ROLE
- Parents in the retiring concept converted to annotation properties called OLD_PARENT
- Associations in the retiring concept converted to annotation properties called OLD_ASSOCIATION
- (other OLD_ properties used temporarily to facilitate rollback, not needed in current P5 model?)
- Retired concepts will be treed under Retired Concept Current Year
- Retiring concept deprecated using owl:deprecatedClass
- Property Concept_Status with a Retired_Concept value added to the retiring concept
Merge
- copy PT/NCI from losing concept to surviving concept as a SY/NCI
- applies only to NCI source, the term type of other sources is copied as is - documentation edit guidelines
- copy all other properties, the editor needs to manually resolve
- Pre-merge retiring concepts are double-treed under premerged_concepts bin
- Pre-merge identifying properties (Merge_From, Merge_To) are added to the surviving and retiring concepts
- Pre-merge retiring concept must have a DesignNote and an Editor_Note added explaining the merge
- Only the lead editor may do the final merge on a concept
- Non-redundant roles and properties of the retiring concept are added to the surviving concept
- Non-redundant incoming roles pointed at the retiring concept are re-pointed at the surviving concept
- Roles in the retiring concept converted to annotation properties called OLD_ROLE
- Parents in the retiring concept converted to annotation properties called OLD_PARENT
- Associations in the retiring concept converted to annotation properties called OLD_ASSOCIATION
- (other OLD_ properties used temporarily to facilitate rollback, not needed in current P5 model?)
- Retired concepts will be treed under Retired Concept Current Year
- Retiring concept deprecated using owl:deprecatedClass
- Property Concept_Status with a Retired_Concept value added to the retiring concept
Copy/Clone and Split
- Copy everything to new concept - editors responsible for modifications to existing and new concepts
In all the complex edits above, including dual edit, check for 2+ NCI/PT full_syns and disallow with a notice at Save time.