Design principles: Clone names

From HL7Wiki
Jump to navigation Jump to search

See the discussion page for discussion related to this page.

  • Semantics of class clones derived from the RIM backbone (upper portion of the RIM) should never be inferred from the clone name. They should only be inferred from the structural attributes of the clone and its situation in the model.
  • Semantics of clone names derived from the lower part of the RIM (blue classes) at present must be inferred from clone names as there are no structural attributes which may be used to communicate those semantics.

Details

The v3 design principle states that when it comes to the interpretation of RIM-derived models one should be able to derive the full computable semantics of the model without having to look at the names of cloned classes.

The fundamentals of this design principle are that the semantics of v3 instances should be fully expressed using the 'semantic' attributes (classCode, moodCode, typeCode, etc.) and constraints on them. (E.g. fixed values, constrained domains, etc.) The meaning of an instance is found by looking at the RIM definitions and vocabulary definitions. Clone names are used to help expose the semantics expressed by these attributes to the casual reader. It is the responsibility of modelers to ensure that the clone names selected correspond to the constraints chosen.

The challenge to this position is found in the "bottom" half of the RIM where there are few, if any, semantic attributes exist. For those classes, the source of semantics is limited to RIM definitions as there is no structural vocabulary. For some classes, specifically query parameters, different clones have different semantics, but there is no mechanism to distinguish the different meaning of each clone. At present the semantics must be inferred from the clone names.