Incorporate External Standards into NIEM? Not Exactly
I received e-mail asking about my ideas for incorporating external structures like IEEE 1512 or Cursor on Target (Cot) into NIEM. I think my response may be of general interest:
I am not a believer in the “incorporation of external structures like 1512 or Cot in NIEM.” The cost of merging the maintenance and update process of multiple separate standards related organizations would be too high. The resulting governance process would induce such brittleness that progress would simply stop. I am, however, a believer in using external standards in the IEPD process and in the use of external standards on their own when and wherever they make sense. Developing a brand new NIEM structure to replace a well-defined standard that is already in use is ludicrous. And I believe that the NIEM management team agrees with me when I say that.
There are actually four cases to consider that involve the use of external standards:
1. The external standard meets the mission of an IEPD on its own. In this case just use it. Document it as the content of the exchange and do not spend time trying to “NIEMify” its content. (Examples are CAP1.1 and perhaps some of 1512).
2. The external standard is used to “wrap” NIEM content (likely case for EDXL-DE and Cot). In this case again the standard is simply used to wrap a NIEM IEP (as defined in an IEPD for content). There is no need to add the external standard elements into the internal content IEPD process. The content IEPD should define how the external standard(s) could be used as a wrapping for transport, but that is different than defining the content itself and should be encapsulated in an entirely separate section of the IEPD from the content definition.
3. The external standard contains components that need to be used in an IEPD in combination with NIEM components (GML, KML, and perhaps 1512 are examples). It would seem that we could simply add the appropriate namespace origin and mix them into our exchange schema with the content from a NIEM extension schema. The problem here is that representations of these components are almost guaranteed to violate NIEM Naming and Design Rules (NDR). For example: Even a simple type such as xsd:string must be converted to a nc:TextType, which is in turn a niem-xsd:string that acts as a proxy for the XSD type but adds an optional set of attributes to the string. So, even a simpleType from schema becomes a complexType in NIEM. Luckily, there is an out in the NDR called the adapter. An adapter is a simple, single element wrapper that is used in NIEM to contain the external component. It is defined in the NIEM NDR as follows: “An adapter type is a NIEM conformant type that adapts external components for use within NIEM. An adapter type creates a new class of object that embodies a single concept composed of external components. A NIEM conformant schema defines an adapter type.” It basically adds the attributes at the adapter level that are needed for NIEM conformance without fussing with the representations and naming issues of its contained content. An adapter can contain:
a) an entire external schema (assuming it wraps the root element type)
b) a complex component element type from a schema
c) a single type from the schema.
The use of adapters is described in section 7-7 of the NIEM NDR. Serious users of NIEM should read the NDR in its entirety. The final point on this discussion is very simple. You do not incorporate an external structure into NIEM, but you can define a NIEM conformant adapter in your IEPD as a container for that external structure that will allow you to import the external structure “as-is.”
4. The NIEM is not complete and needs extension. There are concepts that are needed in NIEM that may exist in external standards already. In this case the concepts (but not the standards themselves) actually do need to be “incorporated” into NIEM. So, how do we bring in the concept without creating a duplication of the external standard? We could “coordinate” with the external standards organization(s), each of which have their own representation for the concept. This is indeed a hard task, and creates brittleness in and out of NIEM. It can be done to some extent, but it is not a good idea to put it into any form of formal governance. The cost is just too high. Luckily, NIEM already provides a workable solution: the use of Abstract Elements with Multiple Representations already exists for dates and units of measure. This is extended to the use of external namespaces for code lists. Why not do the exact same thing for concepts that originate in an external standard?
a) Bring in the concept. Name and define it in accordance with NIEM NDR.
b) Identify the Concept as an abstract element with multiple representations.
c) Identify one of the representations as the one in the external standard using the external standard’s namespace. The NDR may require that it be wrapped in a single element Adapter.
d) Identify a NIEM compliant and/or other standard representations as appropriate.
This avoids the duplication of concept and organizes multiple representations of the concept in a manner that that both controls those representations and makes translation between representations easier to accomplish. Yet it does not induce “coupling” between NIEM and other standards organizations. The separation remains clear and clean.
Note: Items 1, 2, and 3 on this list are already in place as how you should work with NIEM. I put them in this message as a way of organizing the different issues that may be in play. Number 4 is new. It is a combination of my recent completion of the on-line Practical Implementer’s course for NIEM and discussions with FEMA’s Emergency management domain lead and a couple of Georgia Tech Research Institute (GTRI) representatives at the recent NIEM Business Architecture Council meeting in Baltimore. I have also had off-line discussion with FEMA technical representatives and members of the OASIS Emergency Management Technical Committee.
A final note: Although they do conform to the NDR, not everyone likes adapters. They add one more tag to an already deep chain of tags in a NIEM compliant schema. They allow the use of non-NIEM content (although it is content that is recognized by NIEM). My take is that adapters make cooperation between NIEM and the external standards bodies possible without the intense combined governance that could have a negative impact on progress on all sides.