Metadata Element Renaming

Metadata element renaming affects object types, property types, and API-specific property types. In r7.3, much of the metadata in erwin DM was renamed. These name changes fall into two categories:

  • Consistent naming and better representation of the model data. For example, the property type For was renamed to For_Character_Type.
  • Replacement of space characters with underscores in all metadata element names. Prior to erwin DM r7.3, both object type and property type names accessed using the API contained spaces, but when saving to XML format, those same names used underscores. To remove this inconsistency, all space characters within such names have been replaced by underscores.

Overall, this change is transparent and will not affect your day-to-day work. Awareness of this change, however, is important if you use the API and the new ODBC interface, and have some familiarity with the pre-r7.3 metadata names. Existing API applications and scripts must be updated to account for any new metadata names before use with erwin DM. To assist you with this updating process, the following CSV files are provided with the erwin DM installation in the <Program Files>\erwin\Data Modeler r9\metadata changes:

Renamed Metadata (SCAPI).csv

Provides a list of the full set of changed metadata names. It is a two column CSV file that contains the old name, new name pairs.

Renamed Metadata (XML).csv

Provides the subset of metadata names that appear as changed in XML files.

Note: Not included in this file are those metadata names where the only change was the replacement of space characters with underscores, since erwin DM's XML format already uses underscores in object type names and property type names.

Renamed SCAPI Properties.csv

Provides a list of the API-only property names that were renamed.

Metadata Organization

The metadata includes object and property classes, object aggregations, and property associations.

Object classes

Define the type of objects that may occur within a model such as an entity class, an attribute class, or a relationship class.

Property classes

Define the type of properties an object may have such as the Name property, Comment property, or Parent_Domain_Ref property.

Object aggregations

Identify an ownership relationship between classes of objects, such as a model that owns entities, or entities that own attributes, and so on.

Property associations

Define property usage by object classes. For example, the metadata includes property associations for every object class that has the Name property.

The following diagram shows the organization of the metadata:

Metamodel Elements

erwin DM organizes data as a group of linked model sets. The model sets are arranged in a tree-like hierarchy with a single model set at the top.

The top model set contains the bulk of the modeling data. The API uses the abbreviation EMX to identify the top model set.

The EMX model set owns a secondary model set, abbreviated as EM2, which contains user interface settings and user options for erwin DM services such as Forward Engineering, Complete Compare, and so on.

The API clients access the model data by constructing a session and connecting it to a model set using the Session component.

A model set contains several levels of data. It contains the data the application manipulates, such as entity instances, attribute instances, relationship instances, and so on.

The model set also contains metadata, a description of the objects and properties that may occur within the application's data.

Metadata Tags

Each metadata object may include one or more tags. A tag is a metadata object property that conveys certain descriptive meta information, such as if an object class is logical, physical, valid for a specific target DBMS, and so on.

Note: A tag on an object aggregation overrides the identical tag set on the associated owned object class. A tag on a property association overrides the identical tag set on the associated property class.

The following table lists some of the EMX metadata tags:

Tag Name

Datatype

Description

tag_Bit_Field_Values

tag_Bit_Field_Values_2

String

Describes valid values for a bit field property. A combination of values from the description list can be used as a value for the property.

The descriptions are grouped as follows:

{<value>|<string equivalent>|<internal>}

DBMS_Brands_And_Versions

Integer, vector

Defines conditions when an object or property class is available for physical modeling with the specific DBMS. Assumes that the tag_Is_Physical has a TRUE value.

Absence of the tag indicates that the class is available for all DBMS targets, but only if tag_Is_Physical has a TRUE value.

A NULL value for the tag indicates that the class is not available for any DBMS.

DBMS brand IDs are described in the next table.

DBMS_Is_Represented

Integer, vector

Defines conditions when an object or property class represents a concept in the specific DBMS. Assumes that the DBMS_Brands_And_Versions tag is valid for the class.

Absence of the tag indicates that the class is available for all DBMS targets, but only if the DBMS_Brands_And_Versions tag is valid for the class.

A NULL value for the tag indicates that the class is not available for any DBMS.

DBMS brand IDs are described in the next table.

DBMS_Is_Top_Level_Object

Integer, vector

Defines conditions when an object class is considered top level, such as when it has a CREATE or DROP statement associated with it for the specific DBMS. Assumes that the DBMS_Is_Represented tag is valid for the class.

Absence of the tag indicates that the class is available for all DBMS targets, if the DBMS_Is_Represented tag is valid for the class.

A NULL value for the tag indicates that the class is not a top level object for any DBMS.

DBMS brand IDs are described in the next table.

tag_Enum_Values

tag_Enum_Values_10

String

Describes valid values for an enumerated property. Only one value from the description list can be used as a value for the property.

The descriptions are grouped as follows:

{<value>|<string equivalent>|<internal>}

tag_Is_Font_Or_Color

Boolean

TRUE for classes responsible for model data visualization.

tag_Is_For_Data_Movement

Boolean

TRUE for an object or property class that is available for dimensional and data warehouse modeling.

tag_Is_Graphic_Data

Boolean

TRUE for classes responsible for model data visualization.

tag_Is_Logical

Boolean

TRUE for an object or property class that is available for logical modeling.

tag_Is_Physical

Boolean

TRUE for an object or property class that is available for physical modeling.

tag_Holds_User_Settings

Boolean

TRUE for classes responsible for storing options for erwin DM features.

DBMS specific tags, such as DBMS_Brands_And_Versions, DBMS_Is_Represented, and DBMS_Is_Top_Level_Object, are vectors and organize data in groups of triplets as described below:

First element

Specifies the DBMS brand ID.

Second element

Specifies the minimum version level for the DBMS, multiplied by 1000.

Third element

Specifies the maximum version level for the DBMS, multiplied by 1000; 999000 indicates the absence of a maximum level.

For example, consider the property Oracle_Index_Partition_Type. It contains a DBMS-specific tag, DBMS_Brands_And_Versions. This tag contains three elements specific for this property: 1075858979, 8000, 999000. The first element, the DBMS brand ID, is for Oracle, which is 1075858979. The second element, the minimum version level for this DBMS, multiplied by 1000, is 8000. This means the minimum DBMS version level for this DBMS, which is Oracle, is 8.0. The third element, the maximum version level for this DBMS, is 999000, which means there is no maximum version level for this DBMS.

The following table lists DBMS brand IDs:

DBMS Brand

DBMS Brand ID

Apache Avro

1075859205

Azure Synapse

1075859211

Apache Cassandra

1075859199

Couchbase

1075859202

Db2 for i

1075859019

Db2 for LUW

1075858977

Db2 for z/OS

1075858978

Hive

1075859187

Informix

1075859006

JSON

1075859208

MongoDB

1075859196

MariaDB

1075859190

MySQL

1075859129

Netezza

1075918978

ODBC/Generic

1075859009

Oracle

1075858979

PostgreSQL

1075918977

Progress

1075859010

Redshift

1075918979

SAS

1075859013

SQL Server

1075859016

SAP ASE

1075859017

SAP IQ

1075859130

Snowflake

1075859193

Teradata

1075859018

Abstract Metadata Objects

The metadata organization makes use of generalizations with the ability to derive a specialized object class from an abstract object class using generalization association. Specialized classes can then be marked as abstract, and then they can be used as a source for further specializations.

Only instances of the concrete, non-abstract object classes may occur within the application's data. erwin DM uses the generalization mechanism to flatten metadata by replicating aggregations, associations, and tags from the abstract object classes in the concrete object classes.

Metamodel Classes

A unique metadata class identifies what type of metadata a model set contains.

EMX Class Model Set

Contains the bulk of model data such as entities and attributes. The class name is EMX and the class identifier is the value defined in the Application Environment component, category Application, property EMX_Metadata_Class.

EM2 Class Model Set

Stores additional data such as user interface settings and user options for erwin DM services such as Forward Engineering and Complete Compare. The class name is EM2 and the class identifier is the value defined in the Application Environment component, category Application, property EM2_Metadata_Class.