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.