Representation Pattern

In NIEM, multiple representations of a concept are typically handled via abstract elements and substitution groups. This allows for replacement of the abstract element in an instance with one or more of the substitutions.

Abstract element nc:PersonHairColorAbstract has multiple substitutions, allowing for free-text or code value representations.

In cases where the concept not only has multiple representations but also additional properties describing the concept, a new type is needed to bundle the representations and additional properties together. This is the representation pattern.

  • Type nc:DateType contains…
    • An abstract date representation element
    • Additional date-related properties

The major difference between the two examples is that there are other date-related properties in addition to the multiple date representations; hair color has multiple representations only.


The table below shows an example outlining the difference between abstract elements + substitutions versus the representation pattern.

  • Multiple representations are handled the same in both cases - an abstract element with multiple substitutions.
  • The representation pattern adds additional content and a type to bundle it with the abstract element.
Pattern Abstract Element + Substitutions Representation Pattern
Type n/a nc:DateType
--Multiple representations nc:PersonHairColorAbstract
  • substitutions:
  • nc:PersonHairColorText
  • j:PersonHairColorCode
  • substitutions:
  • nc:Date
  • nc:DateTime
  • nc:ZuluDateTime
  • ...
--Additional Content n/a
  • nc:DateAccuracyAbstract
  • nc:DateMarginOfErrorDuration

Just because an abstract element is contained in a type does not mean it follows the representation pattern. Element nc:PersonHairColorAbstract is used in type nc:PersonType, but hair color is simply a property of a person, not a full representation of a person.