Should I develop my IEPD using GJXDM 3.0.3 or NIEM 2.0? (What are the pros/cons of each?)
By default the national community is highly encouraged to develop IEPDs using NIEM 2.0. In the case that the project is critical, under strict time constraints, and staff is well-educated and well-versed in GJXDM but has no exposure to the NIEM it would be a viable choice to instead develop IEPDs using GJXDM 3.0.3.
Although it is difficult to list pros and cons of each model it is worth mentioning that NIEM introduces new concepts that remedy shortcomings identified in the GJXDM. These concepts are called associations, roles, and metadata.
GJXDM 3.0.3 relies on element inclusion and referencing for representing relationships between objects. As the GJXDM has become more heavily used it has been determined that there are several issues with these methods of data association. In response NIEM introduced a new mechanism for data object associations, simply coined "associations". The new association concept closely resembles a relational model. NIEM associations accommodate n-ary associations whereas the GJXDM does not. Also, with the GJXDM it is not possible to apply metadata to a data association; the new NIEM association mechanism makes this possible.
[Reference articles #235 and #236 ]
GJXDM 3.0.3 was not designed with the concept of "roles" in mind; instead inheritance is used to apply role-specific properties to a base object. NIEM only uses inheritance in the seldom case that an object is truly a specialized type of the base object; therefore roles in the NIEM do not use inheritance. NIEM has adopted the idea that a role represents a certain function of a base object. The NIEM role mechanism allows a base object to take on several roles, the GJXDM does not easily accommodate this.
[Reference article #239]
GJXDM 3.0.3 relies on inheritance from the SuperType class for the distribution metadata information throughout the model. Because the NIEM has addressed this as misuse of inheritance it does not rely on inheritance from a base structure for the application of metadata throughout the model. NIEM introduces a new independent structure specifically for the application of metadata. NIEM makes it very simple to apply metadata to roles, associations, and basic properties. This structure allows sets of metadata to be extended and applied to only those objects requiring the extended set of metadata. Metadata properties can also be repeated (cardinality set to 0..*), this was not possible in the GJXDM. Metadata structures can be created and applied to multiple different objects; also an object may be related to multiple metadata structures.
[Reference article #238]