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
Classes can have Methods ,
which represent the behavior relevant for
that Class. A Class may participate in Associations
by being the
target of one of the References owned by the Association. Classes also
have instances (not represented in
A Method is a declaration of a signature (that is, the method name, return type, parameters), and in the case of a concrete class, may imply an implementation.
A Trigger is a recognition of a state change, such as create, delete, update, or access of a Class instance; and update or access of a Property.
An Indication is an object created as a side effect of a Trigger. Because Indications are subtypes of Class, they can have Properties and Methods and be arranged in a type hierarchy.
An Association is a class that contains two or more References. It represents a relationship between two or more objects. Because of the way associations are defined, it is possible to establish a relationship between Classes without affecting any of the related Classes, that is, addition of an Association does not affect the interface of the related Classes. Associations have no other significance. Only Associations can have References. Associations can be a subclass of a non-association Class2. Any subclass of an Association is an Association.
References define the role each object plays in an Association. The reference represents the role name of a Class in the context of an Association. Associations support the provision of multiple relationship instances for a given object. For example, a system can be related to many system components.
Properties and Methods have reflexive associations that represent Property and Method overriding. A Method can override an inherited Method, which implies that any access to the inherited Method will result in the invocation of the implementation of the overriding Method. A similar interpretation implies the overriding of Properties.
Qualifiers are used to characterize Named Elements (for example, there are Qualifiers that define the type of a Property or the key of a Class). Qualifiers provide a mechanism that makes the metaschema extensible in a limited and controlled fashion. It is possible to add new types of Qualifier by the introduction of a new Qualifier name, thereby providing new types of metadata to processes that manage and manipulate classes, properties, and other elements of the metaschema. See below for details on the qualifiers provided.
It is legal for the class System to be related to Service by two independent Associations (Dependency and Hosted Services, each with roles System and Service). It would not be legal for Hosted Services to define another Reference Service to the Service class, since a single association would then contain two references called Service.
Revisiting the Container example: Card is a Subtype of PhysicalPackage. Therefore, Card can be used as a value for the Reference ContainingElement (that is, an instance of Card can be used as a substitute for an instance of PhysicalPackage).
A similar relationship can exist between Properties. For example, given that PhysicalPackage has a Name property (which is a simple alphanumeric string), Card Overrides Name to a name of alpha-only characters.
The same idea applies to Methods. A Method that overrides another Method
must support the same signature as the original Method and, most importantly,
must be substitutable for the original method in all cases.
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 |
-
-
yyyymmddhhmmss.mmmmmmsutc
where:
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:
-
-
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.
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:
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
-
-
<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 |
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.
Qualifier | Default | Type | Meaning |
---|---|---|---|
ASSOCIATION | FALSE | BOOLEAN | The object class is defining an association. |
INDICATION | FALSE | BOOLEAN | The object class is defining an indication. |
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.
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,
Reference, Method | 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
|
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. |
MAPPINGSTRINGS | NULL | Class,
Property, Association, Indication, Reference | STRING
ARRAY | Mapping strings for one or more management data providers or agents. See
|
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,
Property | 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. |
MODEL
CORRESPONDENCE | NULL | Property | STRING
ARRAY | Indicates a correspondence between an object's property and other
properties in the CIM Schema. Object properties are identified using
the following syntax:
|
NONLOCAL | NULL | Reference | STRING | Indicates the location of an instance. Its value is:
|
OUT | FALSE | Parameter | BOOLEAN | Indicates that the associated parameter is used to return values from a method. |
OVERRIDE | NULL | Property,
Method, Reference | 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:
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:
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. |
REVISION | NULL | Class,
Schema, Association, Indication | 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. |
SCHEMA | NULL | Property
Method | STRING | The name of the schema in which the feature is defined. |
SOURCE | NULL | Class
Association Indication | 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
|
VALUEMAP | NULL | Property | STRING
ARRAY | 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. |
VALUES | NULL | Property | STRING
ARRAY | 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. |
VERSION | NULL | Class,
Schema, Association, Indication | 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,
Reference | 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. |
These optional qualifiers are defined to avoid deployment of random user-defined qualifiers for these recurring situations.
Qualifier | Default | Applies to | Type | Meaning |
---|---|---|---|---|
DELETE | FALSE | Association
Reference | 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. |
EXPENSIVE | FALSE | Property
Reference Class Association Method | BOOLEAN | Indicates the property or class is expensive to compute. |
IFDELETED | FALSE | Association
Reference | BOOLEAN | Indicates that all objects qualified by DELETE within the association must be deleted if the referenced object or the association, respectively, is deleted. |
INVISIBLE | FALSE | Association
Property Method Reference class | 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). |
LARGE | FALSE | Property
Class | BOOLEAN | Indicates the property or class requires a large amount of storage space. |
SYNTAX | NULL | Property
Reference | STRING | Specific type assigned
to a property.
Usage Rule: Must be used with the SYNTAXTYPE qualifier. |
SYNTAXTYPE | NULL | Property
Reference | STRING | Defines the
format of the SYNTAX qualifier.
Usage Rule: Must be used with the SYNTAX qualifier. |
TRIGGERTYPE | NULL | Class
Property Method Association Indication Reference | 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. |
Every MIF group contains a unique identification that is defined
using the class string which is defined as follows:
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:
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:
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:
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
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:
where:
Here are two examples of the syntax. The first uses the MIB format and
looks as follows:
The second example uses the OID format and looks as follows:
Contents | Next section | Index |