What is the National Information Exchange Model (NIEM) External Adapter Type?

A NIEM external adapter type is a complex type that has the following qualities:

 

1. It is a special form of NIEM-conformant type. It may be used as the type of any

NIEM-conformant element.

2. An adapter type should compose a single semantic entity. That is, the subparts of the type should appear together because they form the definition for some concept, not simply as a way of wrapping a block of external content.

3. An adapter type should be documented, as should any NIEM-conformant type.

4. It contains content from an external namespace, including:

a. Attributes from an external namespace

b. Attribute groups from an external namespace

c. A single XSD sequence containing zero or more of:

i. Elements from an external namespace

ii. Model Groups from an external namespace. These are named groups of elements defined schemas.

iii. External container elements, from a NIEM-conformant namespace. These are used when an external type must be used.

5. It must extend the "ComplexObjectType" from the NIEM structures namespace

6. It may not directly reference any other complex or simple types. Such types should be accessed via an external container element.

7. It may not directly reference other NIEM content. Apart from the

"ComplexObjectType", all content of an external adapter type should be external.

8. The content it references may be from more than one external namespace.

9. Each referenced external component must be individually documented, describing the meaning of the external component

 

Additional annotations may be introduced as the NDR is developed.

An example of the simple case shows an adapter type directly referring to an external element:

 

<complexType name="PointType">

  <annotation>

    <documentation>

      SUMMARY OF TYPE GOES HERE

    </documentation>

  </annotation>

  <complexContent>

    <extension base="s:ComplexObjectType">

      <sequence>

        <element ref="gml:Point">

          <annotation>

            <documentation>

               DESCRIPTION OF EXTERNAL ELEMENT GOES HERE

            </documentation>

           </annotation>

         </element>

        </sequence>

      </extension>

     </complexContent>

</complexType>

 

An alternate case occurs when types from an external standard need to be used, instead of elements.