Previous section.

Systems Management: Common Information Model (CIM)
Copyright © 1998 The Open Group


The Metaschema is a formal definition of the model. It defines the terms used to express the model and their usage and semantics. See also CIM Metaschema .

The Unified Modeling Language (UML) is used to define the structure of the metaschema. In the discussion that follows, italicized words refer to objects in Metaschema Structure . The reader is expected to be familiar with UML notation (see Unified Modeling Language (UML) Notation ) and with basic object-oriented concepts in the form of classes, properties, methods, operations, inheritance, associations, objects, cardinality and polymorphism.

Definition of the Metaschema

The elements of the model are Schemas, Classes, Properties, and Methods. The model also supports Indications and Associations as types of Classes, and References as types of Properties.

Property Data Types

Property data types are limited to the intrinsic data types, or arrays of such. Structured types are constructed by designing new classes. If the Property is an array property, the corresponding variant type is simply the array equivalent (fixed or variable length) of the variant for the underlying intrinsic type.

Intrinsic Data Types shows the intrinsic data types and their interpretation:

Intrinsic Data Type Interpretation
uint8 Unsigned 8-bit integer
sint8 Signed 8-bit integer
uint16 Unsigned 16-bit integer
sint16 Signed 16-bit integer
uint32 Unsigned 32-bit integer
sint32 Signed 32-bit integer
uint64 Unsigned 64-bit integer
sint64 Signed 64-bit integer
string UCS-2 string
Boolean Boolean
real32 IEEE 4-byte floating-point
real64 IEEE 8-byte floating-point
datetime A string containing a date-time
<classname>ref: Strongly typed reference
char16 16-bit UCS-2 character

Table: Intrinsic Data Types

Date, Time, and Interval Types

Date, datetime, interval and time property types are aliases for each other and use the same fixed string-based format:


For example, Wednesday, May 25, 1998, at 1:30:15 PM EDT would be represented as:


Values must be zero-padded so that the entire string is always the same 25-character length. Fields which are not significant must be replaced with asterisk characters.

Similarly, intervals use the same format, except that the interpretation of the fields is based on elapsed time. For example, an elapsed time of 1 day, 13 hours, 23 minutes, and 12 seconds would be:


A UTC offset of zero is always used for interval properties.

The string-based interval format is:


Indicating Additional Type Semantics with Qualifiers

Since counter and gauge types (as well as many others) are actually simple integers with specific semantics, they are not treated as separate intrinsic types. Instead, qualifiers must be used to indicate such semantics when properties are being declared (note the example below merely suggests how this may be done - the qualifiers names chosen should not be regarded as part of this standard):
class Acme_Example { [counter] uint32 NumberOfCycles; [gauge] uint32 MaxTemperature; [octetstring, ArrayType("Indexed")] uint8 IPAddress[10]; };

Implementers are permitted to introduce arbitrary qualifiers in this manner, for documentary purposes. The semantics are not enforced.

Supported Schema Modifications

The following is a list of supported schema modifications, the use of some of which will result in changes in application behavior. Changes are all subject to security restrictions; in particular, only the owner of the schema or someone authorized by the owner can make modifications to the schema.

  1. A Class can be added to or deleted from a schema.

  2. A Property can be added to or deleted from a class.

  3. A Class can be added as a subtype or supertype of an existing class.

  4. A Class can become an association as a result of the addition of an ASSOCIATION qualifier and two or more references.

  5. A Qualifier can be added to or deleted from any Named Element.

  6. The Override qualifier can be added to or removed from a property or reference.

  7. A Class can alias a property (or reference, if the class is a descendent of Association) using the Alias qualifier. Both inherited and immediate properties of the class may be aliased.

  8. A Method can be added to a class.

  9. A Method can override an inherited method.

  10. Methods can be deleted and the signature of a method can be changed.

  11. A Trigger may be added to or deleted from a class.

In defining an extension to the schema, the schema designer is expected to operate within the constraints of the classes defined in the Core schema. With respect to classification, any component of a system added to the schema must be defined as a subclass of an appropriate Core schema class. It is expected that the schema designer will address the following question to each of the Core schema classes:

"Is the class being added a subtype of this class?"

Having identified the Core schema class to be extended, the same question should be addressed with respect to each of the subclasses of the identified class. This process, which defines the super classes of the class to be defined, should be continued until the most detailed class is identified. The Core model is not a part of the metaschema, but is an important device for introducing uniformity across schemas intended to represent aspects of the managed environment.

Schema Versions

Certain modifications to a schema can cause failure in applications that operated against the schema prior to the modification. These modifications are:

Other alterations are considered to be interface preserving. Any use of the schema changes listed above implies the generation of a new major version of the schema (as defined by the VERSION qualifier described in Standard Qualifiers ).

Class Names

Fully qualified class names are in the form:
<schema name><class name>

An underscore is used as a delimiter between the <schema name> and the <class name>. The delimiter is not allowed to appear in the <schema name> though it is permitted in the <class name>.

The format of the fully qualified name is intended to allow the scope of class names to be limited to a schema, that is the schema name is assumed to be unique and the class name is only required to be unique within the schema. The isolation of the schema name using the underscore character allows user interfaces to conveniently strip off the schema where the schema is implied by the context.

Examples of fully qualified class names are:

CIM_ManagedSystemElement The root of the CIM managed system element hierarchy
CIM_ComputerSystem The object representing computer systems in the CIM schema
CIM_Component The association relating systems to their components
Win32_ComputerSystem The object representing computer systems in the Win32 schema


Qualifiers are values that provide additional information about classes, associations, indications, methods, method parameters, triggers, instances, properties or references. All qualifiers have a name, type, value, scope, flavor and default value. Qualifiers cannot be duplicated; there cannot be more than one qualifier of the same name for any given class, instance, or property.

The following sections describe meta, standard, optional and user-defined qualifiers. When any of these qualifiers are used in a model, they must be declared in the MOF file before being used. These declarations must abide by the details (name, applied to, type) specified in the tables below. It is not valid to change any of this information for the meta, standard and optional qualifiers. It is possible to change the default values. A default value is the assumed value for a qualifier when it is not explicitly specified for particular model elements.


The following table lists the qualifiers that are used to refine the definition of the metaconstructs in the model. These qualifiers are used to refine the actual usage of an object class or property declaration within the MOF syntax. These qualifiers are all mutually exclusive.

Qualifier Default Type Meaning
ASSOCIATION FALSE BOOLEAN The object class is defining an association.
INDICATION FALSE BOOLEAN The object class is defining an indication.

Table: Qualifiers for Metaconstructs

Standard Qualifiers

The following table is a list of standard qualifiers that all CIM-compliant implementations are required to handle. Any given object will not have all of the qualifiers listed. It is expected that additional qualifiers will be supplied by concrete classes to facilitate the provision of instances of the class and other operations on the class.

It is also important to recognize that not all of these qualifiers can be used together. First, as indicated in the table, not all qualifiers can be applied to all metamodel constructs. These limitations are identified in the "Applies To" column of the following table. Second, for a particular metamodel construct like associations, the use of the legal qualifiers may be further constrain because some qualifiers are mutually exclusive or the use of one qualifier implies some restrictions on the value of another qualifier, etc. These usage rules are documented in the "Meaning" column of the table. Third, legal qualifiers are not inherited by metamodel constructs. For example, the MAXLEN qualifier that applies to properties is not inherited by references.

The "Applies To" column in the table identifies the metamodel construct(s) that can use a particular qualifier. For the qualifiers like ASSOCIATION discussed in the previous section, there is an implied usage rule that the metaqualifier must also be present. For example, the implicit usage rule for the AGGREGATION qualifiers is that the ASSOCIATION qualifier must also be present.

Table: Standard Qualifiers

Qualifier Default Applies to Type Meaning
ABSTRACT FALSE Class BOOLEAN Indicates that the class is abstract and serves only as a base for new classes. It is not possible to create instances of such classes.
AGGREGATE FALSE Reference BOOLEAN Defines the "parent" component of an Aggregation association.

Usage Rule: The Aggregation and Aggregate qualifiers are used together - Aggregation qualifying the association, and Aggregate specifying the "parent" reference.

AGGREGATION FALSE Association Indicates that the association is an aggregation.  
ALIAS NULL Property,
STRING Establishes an alternate name for a property or method in the schema.
ARRAYTYPE "Bag" Property STRING Indicates the type of the qualified array. Valid values are "Bag", "Indexed" and "Ordered".

Usage Rule: The ArrayType qualifier should only be applied to properties that are arrays (defined using the square bracket syntax specified in MOF Syntax Grammar Description ).

DESCRIPTION NULL Any STRING Provides a description of a Named Element.
IN TRUE Parameter BOOLEAN Indicates that the associated parameter is used to pass values to a method.
KEY FALSE Property BOOLEAN Indicates that the property is a namespace-level key. If more than one property has the KEY qualifier, then all such properties collectively form the key (a compound key).

Usage Rule: be modified thereafter. It does not make sense to apply a default value to a KEY-qualified property.

Mapping strings for one or more management data providers or agents. See Mapping MIF Attributes and Mapping Generic Data to CIM Properties for more details.
MAX NULL Reference INT Indicates the maximum cardinality of the reference (i.e. the maximum number of values a given reference can have for each set of other reference values in the association). For example, if an association relates A instances to B instances, and there must be at most one A instance for each B instance, then the reference to A should have a Max(1) qualifier.
MAXLEN NULL Property INT Indicates the maximum length, in characters, of a string property. When overriding the default value, any unsigned integer value (uint32) can be specified. A value of NULL implies unlimited length.
MIN 0 Reference,
INT Indicates the minimum cardinality of the reference (i.e. the minimum number of values a given reference can have for each set of other reference values in the association). For example, if an association relates A instances to B instances, and there must be at least one A instance for each B instance, then the reference to A should have a Min(1) qualifier.
Indicates a correspondence between an object's property and other properties in the CIM Schema. Object properties are identified using the following syntax:
<schema name> "_" <class or
association name> "." <property name>
NONLOCAL NULL Reference STRING Indicates the location of an instance. Its value is:
<namespacetype>: \<namespacehandle>
OUT FALSE Parameter BOOLEAN Indicates that the associated parameter is used to return values from a method.
STRING Indicates that the property in the derived class intentionally overrides the property in the parent class. The value of this qualifier needs to identify the class and subordinate construct (property, method, or reference) that is being overridden. The format of the string to accomplish this is:
[<class>.]<subordinate construct>

If the class name is omitted, the Override applies to the subordinate construct in the parent class in the inheritance tree.

Usage Rule: The OVERRIDE qualifier can only refer toame metamodel for which it is specified.

PROPAGATED NULL Property STRING The propagated qualifier is a string-valued qualifier that contains the name of the key that is being propagated. Its use assumes the existence of only one weak qualifier on a reference that has the containing class as its target. The associated property must have the same value as the property named by the qualifier in the class on the other side of the weak association. The format of the string to accomplish this is:
[<class>.]<subordinate construct>

Usage Rule: When the PROPAGATED qualifier is used, the KEY qualifier must be specified with a value of TRUE.

READ TRUE Property BOOLEAN Indicates that the property is readable.
REQUIRED FALSE Property BOOLEAN Indicates that a non-NULL value is required for the property.
STRING Provides the minor revision number of the schema object.

Usage Rule: The VERSION qualifier must be present to supply the major version number when the REVISION qualifier is used.

STRING The name of the schema in which the feature is defined.
STRING Indicates the location of an instance. Its value is:
UNITS NULL Property STRING Provides units in which the associated property is expressed. For example a Size property might have Units("bytes"). The complete set of standard units is defined in Values for UNITS Qualifier .
Defines the set of permissible values for this property. The ValueMap can be used alone, or in combination with the Values qualifier. When used in combination with the Values qualifier, the location of the property value in the ValueMap array provides the location of the corresponding entry in the Values array.

ValueMap may only be used with string and integer values. The syntax for representing an integer value in the ValueMap array is:


The content, maximum number of digits and represented value are constrained by the type of the associated property. For example, uint8 may not be signed, must be less than four digits, and must represent a value less than 256.

Provides translation between an integer value and an associated string. If a ValueMap qualifier is not present, the Values array is indexed (zero relative) using the value in the associated property. If a ValueMap qualifier is present, the Values index is defined by the location of the property value in the ValueMap.
STRING Provides the major version number of the schema object. This is incremented when changes are made to the schema that alter the interface.
WEAK FALSE Reference BOOLEAN Indicates that the keys of the referenced class include the keys of the other participants in the association. This qualifier is used when the identity of the referenced class depends on the identity of the other participants in the association. No more than one reference to any given class can be weak. The other classes in the association must define a key. The keys of the other classes in the association are repeated in the referenced class and tagged with a propagated qualifier.
WRITE TRUE Property,
BOOLEAN Applies to properties. Indicates that the property is writable. If used alone and not in combination with READ, then the property is to be considered write-only.

Optional Qualifiers

The following table is a list of optional qualifiers. These address situations that are not common to all CIM-compliant implementations. Thus, CIM-compliant implementations can ignore optional qualifiers since they are not required to interpret or understand these qualifiers.

These optional qualifiers are defined to avoid deployment of random user-defined qualifiers for these recurring situations.

Table: Optional Qualifiers

Qualifier Default Applies to Type Meaning
DELETE FALSE Association
BOOLEAN For associations: Indicates that the qualified association must be deleted if any of the objects referenced in the association are deleted, AND the respective object referenced in the association is qualified with IFDELETED.
For references: Indicates that the referenced object must be deleted if the association containing the reference is deleted, AND qualified with IFDELETED, or if any of the objects referenced in the association are deleted AND the respective object referenced in the association is qualified with IFDELETED.
Usage Rule: Applications must to chase associations according to the modeled semantic and delete objects appropriately. Note that this usage rule must be verified when the CIM security model is defined.
BOOLEAN Indicates the property or class is expensive to compute.
BOOLEAN Indicates that all objects qualified by DELETE within the association must be deleted if the referenced object or the association, respectively, is deleted.
BOOLEAN Indicates that the association is defined only for internal purposes (for example, for definition of dependency semantics) and should not be displayed (for example, in maps).
BOOLEAN Indicates the property or class requires a large amount of storage space.
STRING Specific type assigned to a property.
Usage Rule: Must be used with the SYNTAXTYPE qualifier.
STRING Defines the format of the SYNTAX qualifier.
Usage Rule: Must be used with the SYNTAX qualifier.
STRING Indicates the circumstances under which a trigger is fired.
Usage Rule: The trigger types vary by metamodel construct. For classes and associations, the legal values are CREATE, DELETE, UPDATE and ACCESS. For properties and references, the legal values are: UPDATE and ACCESS. For methods, the legal values are BEFORE and AFTER. For indications, the legal values are THROWN.

User-Defined Qualifiers

The user can define any additional arbitrary named qualifiers. However, it is recommended that only defined qualifiers are used (as much as possible), and to only add them if there is no other way to accomplish a particular objective.

Mapping MIF Attributes

Mapping Management Information Format (MIF) attributes to CIM Properties can be accomplished using the MAPPINGSTRING qualifier. This qualifier provides a mechanism to specify the mapping from DMTF and vendor defined MIF groups to specific properties. This allows for mapping using either Domain or Recast Mapping.

Every MIF group contains a unique identification that is defined using the class string which is defined as follows:

defining body|specific name|version

where defining body is the creator and owner of the group, specific name is the unique name of the group and version is a three digit number that identifies the version of the group definition. In addition, each attribute has a unique numeric identifier starting with the number one.

The mapping qualifier can therefore be represented as a string that is formatted as follows:

MIF.defining body|specific name|version.attributeid

where MIF is a constant defining this as a MIF mapping followed by a dot. This then followed by the class string for the group this defines and optionally followed by a dot and the identifier of a unique attribute.

In the case of a Domain Mapping, all of the above information is required, and provides a way to map an individual MIF attribute to a particular CIM Property.

In the case of the recast mapping, a CIM class can be recast from a MIF group and only the MIF constant followed by the dot separator followed by the class string is required.

For example, a Domain Mapping of a DMTF MIF attribute to a CIM property could be as follows:

[MAPPINGSTRING("MIF.DMTF|ComponentID|001.4"),READ] SerialNumber = "";

The above declaration defines a mapping to the SerialNumber property from the DMTF Standard Component ID group's serial number attribute. Because the qualifiers of CIM are a superset of those found in MIF syntax, any qualifier may be overridden in the CIM definition.

To recast an entire MIF group into a CIM Object, the mapping string can be used to define entire Class. For example:

[MAPPINGSTRINGS {"MIF.DMTF|Software Signature|002"}] class MicroSoftWord : SoftwareSignature { ... }

Mapping Generic Data to CIM Properties

In addition to mapping MIF attributes, the MAPPINGSTRINGS qualifier can be used to map SNMP variables to CIM properties. Every standard SNMP variable has associated with it a variable name and a unique object identifier (OID) that is defined by a unique naming authority. This naming authority is a string. This string can either be a standards body (for example, "IETF"), a company name (for example, "Acme") for defining the mappings to a company's private MIB, or an appropriate management protocol (for example, "SNMP").

For the IETF case, the ASN.1 module name, not the RFC number, should be used as the MIB name. For example, instead of saying RFC1493, the string "BRIDGE-MIB" should be used). This is also true for the case of a company name being used as the naming authority. For the case of using a management protocol like SNMP, the SNMP OID can be used to identify the appropriate SNMP variable. This latter is especially important for mapping variables in private MIBs.

It should be noted that the concept of a naming authority for mapping data other than SNMP data into CIM properties could be derived from this requirement. As an example, this can be used to map attributes of other data stores (like directories) using an application-specific protocol (for example, LDAP).

The syntax for mapping MIF attributes as defined in Mapping MIF Attributes is as follows:

MIF.<defining_body | specific_name | version>.attributeid

The above MIF format can be reconciled with the more general syntax needed to map generic data to CIM properties by realizing that both forms can be represented as follows:



Here are two examples of the syntax. The first uses the MIB format and looks as follows:

[Description ("OperatingSystem's notion of the local date and time of day"), MappingStrings {"MIB.IETF | HOST-RESOURCES-MIB.hrSystemDate"}] datetime LocalDateTime;

The second example uses the OID format and looks as follows:

[Description ("OperatingSystem's notion of the local date and time of day"), MappingStrings {"OID.IETF | SNMP."}] datetime LocalDateTime;


Note the equivocation between "object" as instance and "object" as class; this is common usage in object-oriented documents, and reflects the fact that in many cases, operations and concepts may apply to or involve both classes and instances.

Associations should not be declared as subtypes of classes that are not associations. This feature may be disallowed by future versions of the CIM standard.

Why not acquire a nicely bound hard copy?
Click here to return to the publication details or order a copy of this publication.

Contents Next section Index