(file) Return to cim_spec_v22.html CVS log (file) (dir) Up to [Pegasus] / dmtfdocs

File: [Pegasus] / dmtfdocs / cim_spec_v22.html (download) / (as text)
Revision: 1.1, Wed Sep 5 23:20:22 2001 UTC (22 years, 8 months ago) by karl
Branch: MAIN
CVS Tags: HEAD
Import

<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1252">
<META NAME="Generator" CONTENT="Microsoft Word 97">
<TITLE> 1 INTRODUCTION AND OVERVIEW</TITLE>
</HEAD>
<BODY BGCOLOR="#ffffff" TEXT="#000000" LINK="#0000ff">

<B><FONT SIZE=5><P ALIGN="CENTER"><A NAME="_Toc373214099">Distributed Management Task Force, Inc.</P>
<P ALIGN="CENTER"></P><DIR>
<DIR>

</FONT><FONT SIZE=2><P><IMG SRC="Image1.gif" WIDTH=488 HEIGHT=599></P>
</FONT><FONT SIZE=6><P ALIGN="CENTER">Common Information Model (CIM) Specification</P></DIR>
</DIR>

</FONT><P ALIGN="CENTER">Version 2.2</P>
<P ALIGN="CENTER">June 14, 1999</P>
<P ALIGN="CENTER"></P>
<P ALIGN="CENTER"><A NAME="_Toc347019662"><A NAME="_Toc347155412"><A NAME="_Toc347156221"><A NAME="_Toc347182227"><A NAME="_Toc347188854"><A NAME="_Toc347242374"><A NAME="_Toc347246350"><A NAME="_Toc347412084"><A NAME="_Toc347456050"><A NAME="_Toc347540172"><A NAME="_Toc348066057"><A NAME="_Toc348153486"><A NAME="_Toc348669713"><A NAME="_Toc349032900"><A NAME="_Toc349055852"><A NAME="_Toc349064762"></P><DIR>
<DIR>

</B><FONT SIZE=3><P ALIGN="CENTER">Technical inquiries and editorial comments should be directed in writing to:</P><DIR>
<DIR>
<DIR>
<DIR>
<DIR>
<DIR>

<P>Distributed Management Task Force, Inc. (DMTF)</P>
</FONT><FONT SIZE=2><P>c/o </FONT><A HREF="http://www.mkinc.com/"><FONT SIZE=2>MacKenzie Kesselring, Inc.</FONT></A><FONT SIZE=2><BR>
200 SW Market Street, Suite 450<BR>
Portland, OR 97201<BR>
(503) 294-0739<BR>
(503) 225-0765 (fax)<BR>
</P></DIR>
</DIR>
</DIR>
</DIR>
</DIR>
</DIR>

</FONT><FONT SIZE=3><P ALIGN="CENTER">email: <B>dmtf-info@dmtf.org</P>
</B><P>Additional electronic copies of this specification can be obtained free of charge from the  Internet at:</P>
<B><P ALIGN="CENTER">ftp://ftp.dmtf.org</P>
</B><P ALIGN="CENTER">or</P>
<P ALIGN="CENTER">from the World Wide Web at:</P>
<B><P ALIGN="CENTER">http://www.dmtf.org</P>
</B><P>Additional hardcopies can be obtained for a fee by contacting the DMTF at the address listed above.</P>
<P ALIGN="CENTER">IMPORTANT INFORMATION AND DISCLAIMERS</P>
</FONT><FONT SIZE=1><P>1. THIS SPECIFICATION (WHICH SHALL INCORPORATE ANY REVISIONS, UPDATES, AND MODIFICATIONS HERETO) IS FURNISHED FOR INFORMATIONAL PURPOSES ONLY. INTEL CORPORATION, MICROSOFT CORPORATION, DIGITAL EQUIPMENT CORPORATION, HEWLETT-PACKARD COMPANY, INTERNATIONAL BUSINESS MACHINES CORPORATION, NOVELL INC., SUN MICROSYSTEMS, INC., COMPAQ COMPUTER CORPORATION, DELL COMPUTER CORP., SYMANTEC, THE SANTA CRUZ OPERATION, NEC TECHNOLOGIES, INC., OR ANY OTHER DMTF MEMBER MAKE NO WARRANTIES WITH REGARD THERETO, AND IN PARTICULAR DO NOT WARRANT OR REPRESENT THAT THIS SPECIFICATION OR ANY PRODUCTS MADE IN CONFORMANCE WITH IT WILL WORK IN THE INTENDED MANNER OR BE COMPATIBLE WITH OTHER PRODUCTS IN NETWORK SYSTEMS. NOR DO THEY ASSUME RESPONSIBILITY FOR ANY ERRORS THAT THE SPECIFICATION MAY CONTAIN OR HAVE ANY LIABILITIES OR OBLIGATIONS FOR DAMAGES INCLUDING, BUT NOT LIMITED TO, SPECIAL, INCIDENTAL, INDIRECT, PUNITIVE, OR CONSEQUENTIAL DAMAGES WHETHER ARISING FROM OR IN CONNECTION WITH THE USE OF THIS SPECIFICATION IN ANY WAY. CORPORATIONS MAY FOLLOW OR DEVIATE FROM THIS SPECIFICATION AT ANY TIME.</P>
<P>2. NO REPRESENTATIONS OR WARRANTIES ARE MADE THAT ANY PRODUCT BASED IN WHOLE OR IN PART ON THE ABOVE SPECIFICATION WILL BE FREE FROM DEFECTS OR SAFE FOR USE FOR ITS INTENDED PURPOSE. ANY PERSON MAKING, USING OR SELLING SUCH PRODUCT DOES SO AT HIS OWN RISK.</P>
<P>3. THE USER OF THIS SPECIFICATION HEREBY EXPRESSLY ACKNOWLEDGES THAT THE SPECIFICATION IS PROVIDED AS IS, AND THAT THE DMTF, NEITHER INDIVIDUALLY NOR COLLECTIVELY, MAKE ANY REPRESENTATIONS, EXTEND ANY WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, ORAL OR WRITTEN, INCLUDING ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, OR WARRANTY OR REPRESENTATION THAT THE SPECIFICATION OR ANY PRODUCT OR TECHNOLOGY UTILIZING ANY ASPECT OF THE SPECIFICATION WILL BE FREE FROM ANY CLAIMS OF INFRINGEMENT OF INTELLECTUAL PROPERTY, INCLUDING PATENTS, COPYRIGHT AND TRADE SECRETS OF ANY THIRD PARTY, OR ASSUMES ANY OTHER RESPONSIBILITIES WHATSOEVER WITH RESPECT TO THE SPECIFICATION OR SUCH PRODUCTS. IN NO EVENT WILL DMTF MEMBERS BE LIABLE FOR ANY LOSSES, DAMAGES INCLUDING, WITHOUT LIMITATION, THOSE DAMAGES DESCRIBED IN SECTION 1 ABOVE, COSTS, JUDGMENTS, OR EXPENSES ARISING FROM THE USE OR LICENSING OF THE SPECIFICATION HEREUNDER.</P></DIR>
</DIR>

</FONT><B><FONT SIZE=5><P ALIGN="CENTER">Abstract</P><DIR>
<DIR>

</B></FONT><FONT SIZE=3><P>The DMTF Common Information Model (CIM) is an approach to the management of systems and networks that applies the basic structuring and conceptualization techniques of the object-oriented paradigm. The approach uses a uniform modeling formalism that—together with the basic repertoire of object-oriented constructs—supports the cooperative development of an object-oriented schema across multiple organizations. </P>
<P>A management schema is provided to establish a common conceptual framework at the level of a fundamental typology—both with respect to classification and association, and with respect to a basic set of classes intended to establish a common framework for a description of the managed environment. The management schema is divided into these conceptual layers:</P></DIR>
</DIR>


<UL>

<UL>
<LI>Core model—an information model that captures notions that are applicable to all areas of management.</LI>
<LI>Common model—an information model that captures notions that are common to particular management areas, but independent of a particular technology or implementation. The common areas are systems, applications, databases, networks and devices. The information model is specific enough to provide a basis for the development of management applications. This model provides a set of base classes for extension into the area of technology-specific schemas. The Core and Common models together are expressed as the CIM schema.</LI>
<LI>Extension schemas—represent technology-specific extensions of the Common model.  These schemas are specific to environments, such as operating systems (for example, UNIX<B><SUP>†</B></SUP> or Microsoft Windows<B><SUP>†</B></SUP>).</LI></UL>
</UL>

</FONT><B><FONT SIZE=4><P>Participants</P><DIR>
<DIR>

</B></FONT><FONT SIZE=3><P>This list shows the names of the companies that participated in the Distributed Management Task Force - CIM Sub-Committee whose contributions made this document possible. </P></DIR>
</DIR>


<UL>

<UL>
<LI>Compaq Computer Corporation</LI>
<LI>Computer Associates Intl., Inc</LI>
<LI>Hewlett-Packard Company</LI>
<LI>Intel Corporation </LI>
<LI>Microsoft Corporation</LI>
<LI>Novell, Inc.</LI>
<LI>Sun Microsystems, Inc.</LI>
<LI>Tivoli Systems, Inc.</LI></UL>
</UL>

</FONT><FONT SIZE=2><P>&nbsp;</P>
</FONT><B><FONT SIZE=4><P>Change History</P></B></FONT>
<P ALIGN="CENTER"><CENTER><TABLE BORDER CELLSPACING=1 BORDERCOLOR="#000000" CELLPADDING=7 WIDTH=552>
<TR><TD WIDTH="17%" VALIGN="TOP">
<FONT SIZE=1><P>Version 1</FONT></TD>
<TD WIDTH="30%" VALIGN="TOP">
<FONT SIZE=1><P>Wednesday, April 09, 1997</FONT></TD>
<TD WIDTH="52%" VALIGN="TOP">
<FONT SIZE=1><P>First Public Release</FONT></TD>
</TR>
<TR><TD WIDTH="17%" VALIGN="TOP">
<FONT SIZE=1><P>Version 1.1</FONT></TD>
<TD WIDTH="30%" VALIGN="TOP">
<FONT SIZE=1><P>Thursday, October 23, 1997</FONT></TD>
<TD WIDTH="52%" VALIGN="TOP">
<FONT SIZE=1><P>Output after Working Groups input</FONT></TD>
</TR>
<TR><TD WIDTH="17%" VALIGN="TOP">
<FONT SIZE=1><P>Version 1.2a</FONT></TD>
<TD WIDTH="30%" VALIGN="TOP">
<FONT SIZE=1><P>Monday, November 03, 1997</FONT></TD>
<TD WIDTH="52%" VALIGN="TOP">
<FONT SIZE=1><P>Naming</FONT></TD>
</TR>
<TR><TD WIDTH="17%" VALIGN="TOP">
<FONT SIZE=1><P>Version 1.2b</FONT></TD>
<TD WIDTH="30%" VALIGN="TOP">
<FONT SIZE=1><P>Monday, November 17, 1997</FONT></TD>
<TD WIDTH="52%" VALIGN="TOP">
<FONT SIZE=1><P>Remove reference qualifier</FONT></TD>
</TR>
<TR><TD WIDTH="17%" VALIGN="TOP">
<FONT SIZE=1><P>Version 2.0a</FONT></TD>
<TD WIDTH="30%" VALIGN="TOP">
<FONT SIZE=1><P>Thursday, December 11, 1997</FONT></TD>
<TD WIDTH="52%" VALIGN="TOP">
<FONT SIZE=1><P>Apply pending changes and new metaschema</FONT></TD>
</TR>
<TR><TD WIDTH="17%" VALIGN="TOP">
<FONT SIZE=1><P>Version 2.0d</FONT></TD>
<TD WIDTH="30%" VALIGN="TOP">
<FONT SIZE=1><P>Thursday, December 11, 1997</FONT></TD>
<TD WIDTH="52%" VALIGN="TOP">
<FONT SIZE=1><P>Output of 12/9/1997 TDC, Dallas</FONT></TD>
</TR>
<TR><TD WIDTH="17%" VALIGN="TOP">
<FONT SIZE=1><P>Version 2.0f</FONT></TD>
<TD WIDTH="30%" VALIGN="TOP">
<FONT SIZE=1><P>Monday, February 16, 1998</FONT></TD>
<TD WIDTH="52%" VALIGN="TOP">
<FONT SIZE=1><P>Output of 2/3/1998 TDC, Austin</FONT></TD>
</TR>
<TR><TD WIDTH="17%" VALIGN="TOP">
<FONT SIZE=1><P>Version 2.0g</FONT></TD>
<TD WIDTH="30%" VALIGN="TOP">
<FONT SIZE=1><P>Thursday, February 26, 1998</FONT></TD>
<TD WIDTH="52%" VALIGN="TOP">
<FONT SIZE=1><P>Apply approved change requests and final edits submitted through 2/26/1998.</FONT></TD>
</TR>
<TR><TD WIDTH="17%" VALIGN="TOP">
<FONT SIZE=1><P>Version 2.2</FONT></TD>
<TD WIDTH="30%" VALIGN="TOP">
<FONT SIZE=1><P>Tuesday, June 14, 1999</FONT></TD>
<TD WIDTH="52%" VALIGN="TOP">
<FONT SIZE=1><P>Incorporate Errata and approved change requests through 1999-06-08</FONT></TD>
</TR>
</TABLE>
</CENTER></P>

<FONT SIZE=2>
<P>&nbsp;</P>
</FONT><B><FONT SIZE=4><P>Contents</A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></P><DIR>

</FONT><FONT FACE="Arial"><P>1&#9;Introduction and Overview&#9;</B></FONT><A HREF="#_Toc453584947">*</A></DIR>

<B><FONT SIZE=2><P>1.1&#9;CIM Management Schema&#9;</B></FONT><A HREF="#_Toc453584948">*</A></P><DIR>

<FONT SIZE=2><P>1.1.1&#9;Core Model&#9;</FONT><A HREF="#_Toc453584949">*</A></P>
<FONT SIZE=2><P>1.1.2&#9;Common Model&#9;</FONT><A HREF="#_Toc453584950">*</A></P>
<FONT SIZE=2><P>1.1.3&#9;Extension Schema&#9;</FONT><A HREF="#_Toc453584951">*</A></P></DIR>

<B><FONT SIZE=2><P>1.2&#9;CIM Implementations&#9;</B></FONT><A HREF="#_Toc453584952">*</A></P><DIR>

<FONT SIZE=2><P>1.2.1&#9;CIM Implementation Conformance&#9;</FONT><A HREF="#_Toc453584953">*</A></P></DIR>

<B><FONT FACE="Arial"><P>2&#9;Meta Schema&#9;</B></FONT><A HREF="#_Toc453584954">*</A></P>
<B><FONT SIZE=2><P>2.1&#9;Definition of the Meta Schema&#9;</B></FONT><A HREF="#_Toc453584955">*</A></P>
<B><FONT SIZE=2><P>2.2&#9;Property Data Types&#9;</B></FONT><A HREF="#_Toc453584956">*</A></P><DIR>

<FONT SIZE=2><P>2.2.1&#9;Date, Time, and Interval Types&#9;</FONT><A HREF="#_Toc453584957">*</A></P>
<FONT SIZE=2><P>2.2.2&#9;Indicating Additional Type Semantics with Qualifiers&#9;</FONT><A HREF="#_Toc453584958">*</A></P></DIR>

<B><FONT SIZE=2><P>2.3&#9;Supported Schema Modifications&#9;</B></FONT><A HREF="#_Toc453584959">*</A></P><DIR>

<FONT SIZE=2><P>2.3.1&#9;Schema Versions&#9;</FONT><A HREF="#_Toc453584960">*</A></P></DIR>

<B><FONT SIZE=2><P>2.4&#9;Class Names&#9;</B></FONT><A HREF="#_Toc453584961">*</A></P>
<B><FONT SIZE=2><P>2.5&#9;Qualifiers&#9;</B></FONT><A HREF="#_Toc453584962">*</A></P><DIR>

<FONT SIZE=2><P>2.5.1&#9;Meta Qualifiers&#9;</FONT><A HREF="#_Toc453584963">*</A></P>
<FONT SIZE=2><P>2.5.2&#9;Standard Qualifiers&#9;</FONT><A HREF="#_Toc453584964">*</A></P>
<FONT SIZE=2><P>2.5.3&#9;Optional Qualifiers&#9;</FONT><A HREF="#_Toc453584965">*</A></P>
<FONT SIZE=2><P>2.5.4&#9;User-defined Qualifiers&#9;</FONT><A HREF="#_Toc453584966">*</A></P>
<FONT SIZE=2><P>2.5.5&#9;Mapping MIF Attributes&#9;</FONT><A HREF="#_Toc453584967">*</A></P>
<FONT SIZE=2><P>2.5.6&#9;Mapping Generic Data to CIM Properties&#9;</FONT><A HREF="#_Toc453584968">*</A></P></DIR>

<B><FONT FACE="Arial"><P>3&#9;Managed Object Format&#9;</B></FONT><A HREF="#_Toc453584969">*</A></P>
<B><FONT SIZE=2><P>3.1&#9;MOF usage&#9;</B></FONT><A HREF="#_Toc453584970">*</A></P>
<B><FONT SIZE=2><P>3.2&#9;Class Declarations&#9;</B></FONT><A HREF="#_Toc453584971">*</A></P>
<B><FONT SIZE=2><P>3.3&#9;Instance Declarations&#9;</B></FONT><A HREF="#_Toc453584972">*</A></P>
<B><FONT FACE="Arial"><P>4&#9;MOF Components&#9;</B></FONT><A HREF="#_Toc453584973">*</A></P>
<B><FONT SIZE=2><P>4.1&#9;Keywords&#9;</B></FONT><A HREF="#_Toc453584974">*</A></P>
<B><FONT SIZE=2><P>4.2&#9;Comments&#9;</B></FONT><A HREF="#_Toc453584975">*</A></P>
<B><FONT SIZE=2><P>4.3&#9;Validation Context&#9;</B></FONT><A HREF="#_Toc453584976">*</A></P>
<B><FONT SIZE=2><P>4.4&#9;Naming of Schema Elements&#9;</B></FONT><A HREF="#_Toc453584977">*</A></P>
<B><FONT SIZE=2><P>4.5&#9;Class Declarations&#9;</B></FONT><A HREF="#_Toc453584978">*</A></P><DIR>

<FONT SIZE=2><P>4.5.1&#9;Declaring a Class&#9;</FONT><A HREF="#_Toc453584979">*</A></P>
<FONT SIZE=2><P>4.5.2&#9;Subclasses&#9;</FONT><A HREF="#_Toc453584980">*</A></P>
<FONT SIZE=2><P>4.5.3&#9;Default Property Values&#9;</FONT><A HREF="#_Toc453584981">*</A></P>
<FONT SIZE=2><P>4.5.4&#9;Class and Property Qualifiers&#9;</FONT><A HREF="#_Toc453584982">*</A></P>
<FONT SIZE=2><P>4.5.5&#9;Key Properties&#9;</FONT><A HREF="#_Toc453584983">*</A></P></DIR>

<B><FONT SIZE=2><P>4.6&#9;Association Declarations&#9;</B></FONT><A HREF="#_Toc453584984">*</A></P><DIR>

<FONT SIZE=2><P>4.6.1&#9;Declaring an Association&#9;</FONT><A HREF="#_Toc453584985">*</A></P>
<FONT SIZE=2><P>4.6.2&#9;Subassociations&#9;</FONT><A HREF="#_Toc453584986">*</A></P>
<FONT SIZE=2><P>4.6.3&#9;Key References and Properties&#9;</FONT><A HREF="#_Toc453584987">*</A></P>
<FONT SIZE=2><P>4.6.4&#9;Object References&#9;</FONT><A HREF="#_Toc453584988">*</A></P></DIR>

<B><FONT SIZE=2><P>4.7&#9;Qualifier Declarations&#9;</B></FONT><A HREF="#_Toc453584989">*</A></P>
<B><FONT SIZE=2><P>4.8&#9;Instance Declarations&#9;</B></FONT><A HREF="#_Toc453584990">*</A></P><DIR>

<FONT SIZE=2><P>4.8.1&#9;Instance Aliasing&#9;</FONT><A HREF="#_Toc453584991">*</A></P>
<FONT SIZE=2><P>4.8.2&#9;Arrays&#9;</FONT><A HREF="#_Toc453584992">*</A></P></DIR>

<B><FONT SIZE=2><P>4.9&#9;Method Declarations&#9;</B></FONT><A HREF="#_Toc453584993">*</A></P>
<B><FONT SIZE=2><P>4.10&#9;Compiler Directives&#9;</B></FONT><A HREF="#_Toc453584994">*</A></P>
<B><FONT SIZE=2><P>4.11&#9;Value Constants&#9;</B></FONT><A HREF="#_Toc453584995">*</A></P><DIR>

<FONT SIZE=2><P>4.11.1&#9;String Constants&#9;</FONT><A HREF="#_Toc453584996">*</A></P>
<FONT SIZE=2><P>4.11.2&#9;Character Constants&#9;</FONT><A HREF="#_Toc453584997">*</A></P>
<FONT SIZE=2><P>4.11.3&#9;Integral Constants&#9;</FONT><A HREF="#_Toc453584998">*</A></P>
<FONT SIZE=2><P>4.11.4&#9;Floating-Point Constants&#9;</FONT><A HREF="#_Toc453584999">*</A></P>
<FONT SIZE=2><P>4.11.5&#9;Object Ref Constants&#9;</FONT><A HREF="#_Toc453585000">*</A></P>
<FONT SIZE=2><P>4.11.6&#9;NULL&#9;</FONT><A HREF="#_Toc453585001">*</A></P></DIR>

<B><FONT SIZE=2><P>4.12&#9;Initializers&#9;</B></FONT><A HREF="#_Toc453585002">*</A></P><DIR>

<FONT SIZE=2><P>4.12.1&#9;Initializing Arrays&#9;</FONT><A HREF="#_Toc453585003">*</A></P>
<FONT SIZE=2><P>4.12.2&#9;Initializing References Using Aliases&#9;</FONT><A HREF="#_Toc453585004">*</A></P></DIR>

<B><FONT FACE="Arial"><P>5&#9;Naming&#9;&#9;</B></FONT><A HREF="#_Toc453585005">*</A></P>
<B><FONT SIZE=2><P>5.1&#9;Background&#9;</B></FONT><A HREF="#_Toc453585006">*</A></P><DIR>

<FONT SIZE=2><P>5.1.1&#9;Management Tool Responsibility for an Export Operation&#9;</FONT><A HREF="#_Toc453585007">*</A></P>
<FONT SIZE=2><P>5.1.2&#9;Management Tool Responsibility for an Import Operation&#9;</FONT><A HREF="#_Toc453585008">*</A></P></DIR>

<B><FONT SIZE=2><P>5.2&#9;Weak Associations: Supporting Key Propagation&#9;</B></FONT><A HREF="#_Toc453585009">*</A></P><DIR>

<FONT SIZE=2><P>5.2.1&#9;Referencing Weak Objects&#9;</FONT><A HREF="#_Toc453585010">*</A></P></DIR>

<B><FONT SIZE=2><P>5.3&#9;Naming CIM Objects&#9;</B></FONT><A HREF="#_Toc453585011">*</A></P><DIR>

<FONT SIZE=2><P>5.3.1&#9;Namespace Path&#9;</FONT><A HREF="#_Toc453585012">*</A></P>
<FONT SIZE=2><P>5.3.2&#9;Model Path&#9;</FONT><A HREF="#_Toc453585013">*</A></P>
<FONT SIZE=2><P>5.3.3&#9;Specifying the Object Name&#9;</FONT><A HREF="#_Toc453585014">*</A></P></DIR>

<B><FONT SIZE=2><P>5.4&#9;Specifying Object Names in MOF Files&#9;</B></FONT><A HREF="#_Toc453585015">*</A></P><DIR>

<FONT SIZE=2><P>5.4.1&#9;Synchronizing Namespaces&#9;</FONT><A HREF="#_Toc453585016">*</A></P>
<FONT SIZE=2><P>5.4.2&#9;Building References Between Management Systems&#9;</FONT><A HREF="#_Toc453585017">*</A></P></DIR>

<B><FONT FACE="Arial"><P>6&#9;Mapping Existing Models Into CIM&#9;</B></FONT><A HREF="#_Toc453585018">*</A></P>
<B><FONT SIZE=2><P>6.1&#9;Technique Mapping&#9;</B></FONT><A HREF="#_Toc453585019">*</A></P>
<B><FONT SIZE=2><P>6.2&#9;Recast Mapping&#9;</B></FONT><A HREF="#_Toc453585020">*</A></P>
<B><FONT SIZE=2><P>6.3&#9;Domain Mapping&#9;</B></FONT><A HREF="#_Toc453585021">*</A></P>
<B><FONT SIZE=2><P>6.4&#9;Mapping Scratch Pads&#9;</B></FONT><A HREF="#_Toc453585022">*</A></P>
<B><FONT FACE="Arial"><P>7&#9;Repository Perspective&#9;</B></FONT><A HREF="#_Toc453585023">*</A></P>
<B><FONT SIZE=2><P>7.1&#9;DMTF MIF Mapping Strategies&#9;</B></FONT><A HREF="#_Toc453585024">*</A></P>
<B><FONT SIZE=2><P>7.2&#9;Recording Mapping Decisions&#9;</B></FONT><A HREF="#_Toc453585025">*</A></P>
<B><FONT FACE="Arial"><P>Appendix A&#9;MOF Syntax Grammar Description&#9;</B></FONT><A HREF="#_Toc453585026">*</A></P>
<B><FONT FACE="Arial"><P>Appendix B&#9;CIM META SCHEMA&#9;</B></FONT><A HREF="#_Toc453585027">*</A></P>
<B><FONT FACE="Arial"><P>Appendix C&#9;Values for UNITS Qualifier&#9;</B></FONT><A HREF="#_Toc453585028">*</A></P>
<B><FONT FACE="Arial"><P>Appendix D&#9;UML Notation&#9;</B></FONT><A HREF="#_Toc453585029">*</A></P>
<B><FONT FACE="Arial"><P>Appendix E&#9;Glossary&#9;</B></FONT><A HREF="#_Toc453585030">*</A></P>
<B><FONT FACE="Arial"><P>Appendix F&#9;Unicode Usage&#9;</B></FONT><A HREF="#_Toc453585031">*</A></P>
<B><FONT SIZE=2><P>F.1&#9;MOF Text&#9;</B></FONT><A HREF="#_Toc453585032">*</A></P>
<B><FONT SIZE=2><P>F.2&#9;Quoted Strings&#9;</B></FONT><A HREF="#_Toc453585033">*</A></P>
<B><FONT FACE="Arial"><P>Appendix G&#9;Guidelines&#9;</B></FONT><A HREF="#_Toc453585034">*</A></P>
<B><FONT SIZE=2><P>G.1&#9;Mapping of Octet Strings&#9;</B></FONT><A HREF="#_Toc453585035">*</A></P>
<B><FONT SIZE=2><P>G.2&#9;SQL Reserved Words&#9;</B></FONT><A HREF="#_Toc453585036">*</A></P>
<B><FONT FACE="Arial"><P>Appendix H&#9;References&#9;</B></FONT><A HREF="#_Toc453585037">*</A></P>
<FONT SIZE=3></P>
</FONT><B><FONT SIZE=4><P>&nbsp;</P>
<P>Table of Figures</P><DIR>

</B></FONT><FONT SIZE=2><P>Figure 1-1 Four Ways to Use CIM&#9;</FONT><A HREF="#_Toc453585038">*</A>
<FONT SIZE=2><P>Figure 2-1 Meta Schema Structure&#9;</FONT><A HREF="#_Toc453585039">*</A></P>
<FONT SIZE=2><P>Figure 2-2 Reference Naming&#9;</FONT><A HREF="#_Toc453585040">*</A></P>
<FONT SIZE=2><P>Figure 2-3 References, Ranges, and Domains&#9;</FONT><A HREF="#_Toc453585041">*</A></P>
<FONT SIZE=2><P>Figure 2-4 References, Ranges, Domains and Inheritance&#9;</FONT><A HREF="#_Toc453585042">*</A></P>
<FONT SIZE=2><P>Figure 5-1 Definitions of instances and classes&#9;</FONT><A HREF="#_Toc453585043">*</A></P>
<FONT SIZE=2><P>Figure 5-2 Exporting to MOF&#9;</FONT><A HREF="#_Toc453585044">*</A></P>
<FONT SIZE=2><P>Figure 5-3 Information Exchange&#9;</FONT><A HREF="#_Toc453585045">*</A></P>
<FONT SIZE=2><P>Figure 5-4 Example of Weak Association&#9;</FONT><A HREF="#_Toc453585046">*</A></P>
<FONT SIZE=2><P>Figure 5-5 Object Naming&#9;</FONT><A HREF="#_Toc453585047">*</A></P>
<FONT SIZE=2><P>Figure 5-6 Namespaces&#9;</FONT><A HREF="#_Toc453585048">*</A></P>
<FONT SIZE=2><P>Figure 5-7 Namespace Path&#9;</FONT><A HREF="#_Toc453585049">*</A></P>
<FONT SIZE=2><P>Figure 5-8 Pragma Example&#9;</FONT><A HREF="#_Toc453585050">*</A></P>
<FONT SIZE=2><P>Figure 5-9 Namespace Path Example&#9;</FONT><A HREF="#_Toc453585051">*</A></P>
<FONT SIZE=2><P>Figure 5-10 References Between Management Systems&#9;</FONT><A HREF="#_Toc453585052">*</A></P>
<FONT SIZE=2><P>Figure 5-11 Example of Nonlocal Qualifier&#9;</FONT><A HREF="#_Toc453585053">*</A></P>
<FONT SIZE=2><P>Figure 6-1 Technique Mapping Example&#9;</FONT><A HREF="#_Toc453585054">*</A></P>
<FONT SIZE=2><P>Figure 6-2 MIF Technique Mapping Example&#9;</FONT><A HREF="#_Toc453585055">*</A></P>
<FONT SIZE=2><P>Figure 6-3 Recast mapping&#9;</FONT><A HREF="#_Toc453585056">*</A></P>
<FONT SIZE=2><P>Figure 7-1 Repository Partitions&#9;</FONT><A HREF="#_Toc453585057">*</A></P>
<FONT SIZE=2><P>Figure 7-2 Homogeneous and Heterogeneous Export&#9;</FONT><A HREF="#_Toc453585058">*</A></P>
<FONT SIZE=2><P>Figure 7-3 Scratch Pads and Mapping&#9;</FONT><A HREF="#_Toc453585059">*</A></P>
<FONT SIZE=3></DIR>
</P><DIR>
<DIR>

<P></A></P></DIR>
</DIR>

<OL>

</FONT><B><FONT SIZE=5><LI></LI>
<LI><A NAME="_Toc373214113"><A NAME="_Toc404410862"><A NAME="_Toc406249659"><A NAME="_Ref411740004"><A NAME="_Ref411740019"><A NAME="_Ref412220530"><A NAME="_Ref412637562"><A NAME="_Ref453583325"><A NAME="_Toc453584947">Introduction and Overview</A></A></A></A></A></A></A></LI>
</B></FONT><FONT SIZE=3><P>This section describes the many ways in which the Common Information Model (CIM) can be used. It provides a context in which the details described in the later chapters can be understood.</P>
<P>Ideally, information used to perform tasks is organized or structured to allow disparate groups of people to use it. This can be accomplished by developing a model or representation of the details required by people working within a particular domain. Such an approach can be referred to as an information model. An information model requires a set of legal statement types or syntax to capture the representation, and a collection of actual expressions necessary to manage common aspects of the domain (in this case, complex computer systems). Because of the focus on common aspects, the DMTF refers to this information model as CIM, the Common Information Model.</P>
<P>This document describes an object-oriented meta model based on the Unified Modeling Language (UML). This model includes expressions for common elements that must be clearly presented to management applications (for example, object classes, properties, methods and associations).  This document does not describe specific CIM implementations, APIs, or communication protocols – those topics will be addressed in a future version of the specification. For information on the current core and common schemas developed using this meta model, contact the Distributed Management Task Force.</P>
<OL>

<LI><A NAME="_Toc406249660"><A NAME="_Toc453584948"></FONT><B><FONT SIZE=4>CIM Management Schema</A></A></LI></OL>
</OL>
<DIR>
<DIR>

</B></FONT><FONT SIZE=3><P>Management schemas are the building blocks for management platforms and management applications, such as device configuration, performance management, and change management. CIM is structured in such a way that the managed environment can be seen as a collection of interrelated systems, each of which is composed of a number of discrete elements. </P>
<P>CIM supplies a set of classes with properties and associations that provide a well-understood conceptual framework within which it is possible to organize the available information about the managed environment. It is assumed that CIM will be clearly understood by any programmer required to write code that will operate against the object schema, or by any schema designer intending to make new information available within the managed environment.</P>
<P>CIM itself is structured into these distinct layers:</P></DIR>
</DIR>


<UL>

<UL>
<LI>Core model—an information model that captures notions that are applicable to all areas of management.</LI>
<LI>Common model—an information model that captures notions that are common to particular management areas, but independent of a particular technology or implementation. The common areas are systems, applications, networks and devices. The information model is specific enough to provide a basis for the development of management applications. This schema provides a set of base classes for extension into the area of technology-specific schemas. The Core and Common models together are referred to in this document as the CIM schema.</LI>
<LI>Extension schemas—represent technology-specific extensions of the Common model. These schemas are specific to environments, such as operating systems (for example, UNIX or Microsoft Windows).</LI></UL>
</UL>

<OL>
<OL>
<OL>

<LI><A NAME="_Toc406249661"><A NAME="_Toc453584949"></FONT><B><I>Core Model</A></A></LI>
</B></I><FONT SIZE=3><P>The Core model is a small set of classes, associations and properties that provide a basic vocabulary for analyzing and describing managed systems. The Core model represents a starting point for the analyst in determining how to extend the common schema.  While it is possible that additional classes will be added to the Core model over time, major re-interpretations of the Core model classes are not anticipated.</P>
<LI><A NAME="_Toc406249662"><A NAME="_Toc453584950"></FONT><B><I>Common Model</A></A></LI>
</B></I><FONT SIZE=3><P>The Common model is a basic set of classes that define various technology-independent areas. The areas are systems, applications, networks and devices. The classes, properties, associations and methods in the Common model are intended to provide a view of the area that is detailed enough to use as a basis for program design and, in some cases, implementation. Extensions are added below the Common model in platform-specific additions that supply concrete classes and implementations of the Common model classes. As the Common model is extended, it will offer a broader range of information.</P>
<LI><A NAME="_Toc406249663"><A NAME="_Toc453584951"></FONT><B><I>Extension Schema</A></A></LI></OL>
</OL>
</OL>
<DIR>
<DIR>

</B></I><FONT SIZE=3><P>The Extension schemas are technology-specific extensions to the Common model. It is expected that the Common model will evolve as a result of the promotion of objects and properties defined in the Extension schemas.</P></DIR>
</DIR>

<OL>
<OL>

<LI><A NAME="_Toc406249664"><A NAME="_Toc453584952"></FONT><B><FONT SIZE=4>CIM Implementations</A></A></LI>
</B></FONT><FONT SIZE=3><P>CIM is a conceptual model that is not bound to a particular implementation. This allows it to be used to exchange management information in a variety of ways; four of these ways are illustrated in Figure 1-1.  It is possible to use these ways in combination within a management application.</P>
<P ALIGN="CENTER"><IMG SRC="Image2.gif" WIDTH=644 HEIGHT=433></P>
</FONT><I><FONT SIZE=2><P ALIGN="CENTER"><A NAME="_Ref412943503"><A NAME="_Toc453585038">Figure -1</A> Four Ways to Use CIM</A></P>
</I></FONT><FONT SIZE=3><P>As a repository (see the Repository Perspective section for more detail), the constructs defined in the model are stored in a database. These constructs are not instances of the object, relationship, and so on; but rather are definitions for someone to use in establishing objects and relationships. The meta model used by CIM is stored in a repository that becomes a representation of the meta model. This is accomplished by mapping the meta-model constructs into the physical schema of the targeted repository, then populating the repository with the classes and properties expressed in the Core model, Common model and Extension schemas.</P>
<P>For an application DBMS, the CIM is mapped into the physical schema of a targeted DBMS (for example, relational). The information stored in the database consists of actual instances of the constructs. Applications can exchange information when they have access to a common DBMS and the mapping occurs in a predictable way.</P>
<P>For application objects, the CIM is used to create a set of application objects in a particular language. Applications can exchange information when they can bind to the application objects.</P>
<P>For exchange parameters, the CIM—expressed in some agreed-to syntax—is a neutral form used to exchange management information by way of a standard set of object APIs. The exchange can be accomplished via a direct set of API calls, or it can be accomplished by exchange-oriented APIs which can create the appropriate object in the local implementation technology.</P>
<P>&nbsp;</P>
<OL>

<LI><A NAME="_Toc406249665"><A NAME="_Toc453584953"></FONT><B><I>CIM Implementation Conformance</A></A></LI></OL>
</OL>
</OL>
<DIR>
<DIR>

</B></I><FONT SIZE=3><P>The ability to exchange information between management applications is fundamental to CIM.  The current mechanism for exchanging management information is the Management Object Format (MOF).  At the present time, no programming interfaces or protocols are defined by (and hence cannot be considered as) an exchange mechanism.  Therefore, a CIM-capable system must be able to import and export properly formed MOF constructs.  How the import and export operations are performed is an implementation detail for the CIM-capable system.</P>
<P>Objects instantiated in the MOF must, at a minimum, include all key properties and all properties marked as required.  Required properties have the REQUIRED qualifier present and set to TRUE.</P>

</FONT><FONT FACE="Courier" SIZE=1><P>&nbsp;</P></DIR>
</DIR>

<OL>

</FONT><B><FONT SIZE=5><LI></LI>
<LI><A NAME="_Ref412211604"><A NAME="_Toc453584954">Meta Schema</A></A></A></A></LI>
</B></FONT><FONT SIZE=3><P>The Meta Schema is a formal definition of the model. It defines the terms used to express the model and its usage and semantics (see Appendix B).</P>
<P>The Unified Modeling Language (UML) is used to define the structure of the meta schema. In the discussion that follows, italicized words refer to objects in the figure. The reader is expected to be familiar with UML notation (see http://www.rational.com/uml) and with basic object-oriented concepts in the form of classes, properties, methods, operations, inheritance, associations, objects, cardinality and polymorphism. </P>
<OL>

<LI><A NAME="_Toc404410863"><A NAME="_Toc453584955"></FONT><B><FONT SIZE=4>Definition of the Meta Schema</A></A></LI></OL>
</OL>
<DIR>
<DIR>

</B></FONT><FONT SIZE=3><P>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. </P>
<P>A <I>Schema</I> is a group of classes with a single owner. Schemas are used for administration and class naming. Class names must be unique within their owning schemas.</P>
<P>A <I>Class</I> is a collection of instances that support the same type: that is, the same properties and methods. </P>
<P>Classes can be arranged in a generalization hierarchy that represents subtype relationships between Classes. The generalization hierarchy is a rooted, directed graph and does not support multiple inheritance.</P>
<P>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 Figure 2-1).</P>
<P>A <I>Property</I> is a value used to characterize instances of a Class. A Property can be thought of as a pair of Get and Set functions that, when applied to an object, return state and set state, respectively.</P>
<P>A <I>Method</I> is a declaration of a signature (that is, the method name, return type and parameters), and, in the case of a concrete Class, may imply an implementation.</P>
<P>A <I>Trigger</I> 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.</P>
<P>An <I>Indication</I> is an object created as a result of a Trigger. Because Indications are subtypes of Class, they can have Properties and Methods, and be arranged in a type hierarchy. </P>
<P>An <I>Association</I> 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. An Association cannot be a subclass of a non-association Class. Any subclass of an Association is an Association.</P>
<I><P>References</I> 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.</P>
<P>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.</P>
<I><P>Qualifiers</I> are used to characterize Named Elements (for example, there are Qualifiers that define the characteristics of a Property or the key of a Class). Qualifiers provide a mechanism that makes the meta schema extensible in a limited and controlled fashion. It is possible to add new types of Qualifiers by the introduction of a new Qualifier name, thereby providing new types of meta data to processes that manage and manipulate classes, properties and other elements of the meta schema. See below for details on the qualifiers provided. </P>
<P ALIGN="CENTER"><IMG SRC="Image3.gif" WIDTH=575 HEIGHT=314><A NAME="_Ref411727235"><A NAME="_Ref411727344"><A NAME="_Ref411728652"></P>
</FONT><I><FONT SIZE=2><P ALIGN="CENTER"><A NAME="_Ref412888727"><A NAME="_Toc453585039">Figure -1</A> Meta Schema Structure</A></P>
</I></FONT><FONT SIZE=3><P></A></A></A>Figure 2-1 provides an overview of the structure of the meta schema.  The complete meta schema is defined by the MOF found in Appendix B.  The rules defining the meta schema are:</P><DIR>
<DIR>

<P>1.&#9;Every meta construct is expressed as a descendent of a Named Element. </P>
<P>2.&#9;A Named Element has zero or more Characteristics. A Characteristic is a Qualifier that characterizes a Named Element.</P>
<P>3.&#9;A Named Element can trigger zero or more Indications. </P>
<P>4.&#9;A Schema is a Named Element and can contain zero or more classes. A Class must belong to only one schema.</P>
<P>5.&#9;A Qualifier Type (not shown in Figure 2-1) is a Named Element and must be used to supply a type for a Qualifier (that is, a Qualifier must have a Qualifier Type). A Qualifier Type can be used to type zero or more Qualifiers. </P>
<P>6.&#9;A Qualifier is a Named Element and has a Name, a Type (intrinsic data type), a Value of this type, a Scope, a Flavor and a default Value.  The type of the Qualifier Value must agree with the type of the Qualifier Type.</P>
<P>7.&#9;A Property is a Named Element and has only one Domain: the Class that owns the Property. </P>
<P>8.&#9;A Property can have an Override relationship with another Property from a different class. The Domain of the overridden Property must be a supertype of the Domain of the overriding Property.  </P>
<P>9.&#9;The Class referenced by the Range association (Figure 2-5) of an overriding Reference must be the same as, or a subtype of, the Class referenced by the Range associations of the Reference being overridden.</P>
<P>10.&#9;The Domain of a Reference must be an Association.</P>
<P>11.&#9;A Class is a type of Named Element. A Class can have instances (not shown on the diagram) and is the Domain for zero or more Properties. A Class is the Domain for zero or more Methods. </P>
<P>12.&#9;A Class can have zero or one supertype, and zero or more subtypes. </P>
<P>13.&#9;An Association is a type of Class.  Associations are classes with an Association qualifier. </P>
<P>14.&#9;An Association must have two or more References. </P>
<P>15.&#9;An Association cannot inherit from a non-association Class. </P>
<P>16.&#9;Any subclass of an Association is an association.&#9;</P>
<P>17.&#9;A Method is a Named Element and has only one Domain: the Class that owns the Method. </P>
<P>18.&#9;A Method can have an Override relationship with another Method from a different Class. The Domain of the overridden Method must be a superclass of the Domain of the overriding Method.</P>
<P>19.&#9;A Trigger is an operation that is invoked on any state change, such as object creation, deletion, modification or access, or on property modification or access. Qualifiers, Qualifier Types and Schemas may not have triggers. The changes that invoke a trigger are specified as a Qualifier.</P>
<P>20.&#9;An Indication is a type of Class and has an association with zero or more Named Triggers that can create instances of the Indication.</P>
<P>21.&#9;Every meta-schema object is a descendent of a Named Element and, as such, has a Name. All names are case-insensitive. The rules applicable to Name vary, depending on the creation type of the object. </P><DIR>
<DIR>

<P>A&#9;Fully-qualified Class Names (that is, the Class name prefixed by the schema name) are unique within the schema. (See the discussion of schemas later in this section).</P>
<P>B&#9;Fully-qualified Association and Indication Names are unique within the schema (implied by the fact that Associations and Indications are subtypes of Class).</P>
<P>C&#9;Implicitly-defined Qualifier Names are unique within the scope of the characterized object (that is, a Named Element may not have two Characteristics with the same Name). Explicitly-defined Qualifier Names are unique within the defining Schema. An implicitly-defined Qualifier must agree in type, scope and flavor with any explicitly-defined Qualifier of the same name.</P>
<P>D&#9;Trigger names must be unique within the Property, Class or Method to which the Trigger applies.</P>
<P>E&#9;Method and Property names must be unique within the Domain Class. A Class can inherit more than one Property or Method with the same name. Property and Method names can be qualified using the name of the declaring Class. </P>
<P>F&#9;Reference Names must be unique within the scope of their defining Association. Reference Names obey the same rules as Property Names. Note that Reference names are not required to be unique within the scope of the related Class. In such a scope, the Reference provides the name of the Class within the context defined by the Association.</P>
<P>&nbsp;</P></DIR>
</DIR>
</DIR>
</DIR>

<P ALIGN="CENTER"><IMG SRC="Image4.gif" WIDTH=484 HEIGHT=164></P>
</FONT><I><FONT SIZE=2><P ALIGN="CENTER"><A NAME="_Toc453585040">Figure -2 Reference Naming</A></P><DIR>
<DIR>
<DIR>
<DIR>

</I></FONT><FONT SIZE=3><P>It is legal for the class System to be related to Service by two independent Associations (<I>Dependency </I>and<I> Hosted Services,</I> each with roles <I>System</I> and <I>Service</I>).  It would not be legal for <I>Hosted Services</I> to define another Reference <I>Service </I>to the Service class, since a single association would then contain two references called <I>Service.</P></DIR>
</DIR>

</I><P>22.&#9;Qualifiers are Characteristics of Named Elements. A Qualifier has a Name (inherited from Named Element) and a Value. The Value is used to define the characteristics of the Named Element. For example, a Class might have a Qualifier with the Name &quot;Description,&quot; the Value of which is the description for the Class. A Property might have a Qualifier with the Name &quot;Units,&quot; which has Values such as &quot;Bytes&quot; or &quot;KiloBytes.&quot; The Value can be thought of as a variant (that is, a value plus a type). </P></DIR>
</DIR>
</DIR>
</DIR>

<OL START=23>

<OL>

<LI>Association and Indication are types of Class; as such, they can be the Domain for Methods, Properties and References (that is, Associations and Indications can have Properties and Methods in the same way as a Class does).  Associations and Indications can have instances. The instance of an Association has a set of references that relate one or more objects. An instance of an Indication represents the occurrence of an event, and is created because of that occurrence—usually a Trigger. Indications are not required to have keys. Typically, Indications are very short-lived objects used to communicate information to an event consumer.</LI>
<LI>A Reference has a range that represents the type of the Reference. For example, in the model of PhysicalElements and PhysicalPackages, there are two References: ContainedElement, which has PhysicalElement as its range and Container as its domain, and ContainingElement, which has PhysicalPackage as its range and Container as its domain.</LI></OL>
</OL>
<DIR>
<DIR>

<P ALIGN="CENTER"><IMG SRC="Image5.gif" WIDTH=424 HEIGHT=152></P>
</FONT><I><FONT SIZE=2><P ALIGN="CENTER"><A NAME="_Toc399646930"><A NAME="_Ref413577345"><A NAME="_Toc453585041">Figure -3</A> References, Ranges, and Domains</A></A></P><DIR>
<DIR>

</I></FONT><FONT SIZE=3><P>25.&#9;A Class has a subtype-supertype association that represents substitutability relationships between the Named Elements involved in the relationship. The association implies that any instance of a subtype can be substituted for any instance of the supertype in an expression, without invalidating the expression. </P>
<P>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).</P></DIR>
</DIR>

<P ALIGN="CENTER"><IMG SRC="Image6.gif" WIDTH=496 HEIGHT=188></P>
</FONT><I><FONT SIZE=2><P ALIGN="CENTER"><A NAME="_Toc399646931"><A NAME="_Ref413577396"><A NAME="_Toc453585042">Figure -5</A> References, Ranges, Domains and Inheritance</A></A></P><DIR>
<DIR>

</I></FONT><FONT SIZE=3><P>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. </P>
<P>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. </P>
<P>26.&#9;The Override relationship is used to indicate the substitution relationship between a property or method of a subclass and the overridden property or method inherited from the superclass. This is the opposite of the C++ convention in which the superclass property or method is specified as virtual, with overriding occurring thereafter as a side effect of declaring a feature with the same signature as the inherited virtual feature. </P>
<P><A NAME="_Toc368546708"><A NAME="_Toc372427643"><A NAME="_Toc373214114">27.&#9;The number of references in an Association class defines the arity of the Association. An Association containing two references is a binary Association.  An Association containing three references is a ternary association. Unary Associations (Associations containing one reference) are not meaningful. Arrays of references are not allowed.  When an association is sub-classed, its arity cannot change.</P>
<P>28.&#9;Schemas provide a mechanism that allows ownership of portions of the overall model by individuals and organizations who are responsible for managing the evolution of the schema. In any given installation, all classes are mutually visible, regardless of schema ownership. Schemas have a universally unique name. The schema name is considered part of the class name. The full class name (that is, class name plus owning schema name) is unique within the namespace and is referred to as the fully-qualified name (see Section 2.4).</P></DIR>
</DIR>
</DIR>
</DIR>

<OL>
<OL>

<LI><A NAME="_Toc404410864"><A NAME="_Ref412210962"><A NAME="_Ref412617881"><A NAME="_Ref412617959"><A NAME="_Toc453584956"></FONT><B><FONT SIZE=4>Property Data Types</A></A></A></A></A></LI>
</B></FONT><FONT SIZE=3><P>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. </P>
<P>This table contains the intrinsic data types and their interpretation:</P></FONT>
<P ALIGN="LEFT"><TABLE BORDER CELLSPACING=1 BORDERCOLOR="#000000" CELLPADDING=2 WIDTH=426>
<TR><TD WIDTH="51%" VALIGN="TOP">
<B><FONT SIZE=1><P ALIGN="CENTER">INTRINSIC DATA TYPE</B></FONT></TD>
<TD WIDTH="49%" VALIGN="TOP"><DIR>

<B><FONT SIZE=1><P>INTERPRETATION</DIR>
</B></FONT></TD>
</TR>
<TR><TD WIDTH="51%" VALIGN="TOP" HEIGHT=24>
<FONT SIZE=1><P ALIGN="CENTER">uint8</FONT></TD>
<TD WIDTH="49%" VALIGN="TOP" HEIGHT=24><DIR>

<FONT SIZE=1><P>Unsigned 8-bit integer </DIR>
</FONT></TD>
</TR>
<TR><TD WIDTH="51%" VALIGN="TOP" HEIGHT=24>
<FONT SIZE=1><P ALIGN="CENTER">sint8</FONT></TD>
<TD WIDTH="49%" VALIGN="TOP" HEIGHT=24><DIR>

<FONT SIZE=1><P>Signed 8-bit integer </DIR>
</FONT></TD>
</TR>
<TR><TD WIDTH="51%" VALIGN="TOP" HEIGHT=24>
<FONT SIZE=1><P ALIGN="CENTER">uint16</FONT></TD>
<TD WIDTH="49%" VALIGN="TOP" HEIGHT=24><DIR>

<FONT SIZE=1><P>Unsigned 16-bit integer </DIR>
</FONT></TD>
</TR>
<TR><TD WIDTH="51%" VALIGN="TOP" HEIGHT=24>
<FONT SIZE=1><P ALIGN="CENTER">sint16</FONT></TD>
<TD WIDTH="49%" VALIGN="TOP" HEIGHT=24><DIR>

<FONT SIZE=1><P>Signed 16-bit integer </DIR>
</FONT></TD>
</TR>
<TR><TD WIDTH="51%" VALIGN="TOP" HEIGHT=24>
<FONT SIZE=1><P ALIGN="CENTER">uint32</FONT></TD>
<TD WIDTH="49%" VALIGN="TOP" HEIGHT=24><DIR>

<FONT SIZE=1><P>Unsigned 32-bit integer</DIR>
</FONT></TD>
</TR>
<TR><TD WIDTH="51%" VALIGN="TOP" HEIGHT=24>
<FONT SIZE=1><P ALIGN="CENTER">sint32</FONT></TD>
<TD WIDTH="49%" VALIGN="TOP" HEIGHT=24><DIR>

<FONT SIZE=1><P>Signed 32-bit integer</DIR>
</FONT></TD>
</TR>
<TR><TD WIDTH="51%" VALIGN="TOP" HEIGHT=24>
<FONT SIZE=1><P ALIGN="CENTER">uint64</FONT></TD>
<TD WIDTH="49%" VALIGN="TOP" HEIGHT=24><DIR>

<FONT SIZE=1><P>Unsigned 64-bit integer </DIR>
</FONT></TD>
</TR>
<TR><TD WIDTH="51%" VALIGN="TOP" HEIGHT=24>
<FONT SIZE=1><P ALIGN="CENTER">sint64</FONT></TD>
<TD WIDTH="49%" VALIGN="TOP" HEIGHT=24><DIR>

<FONT SIZE=1><P>Signed 64-bit integer </DIR>
</FONT></TD>
</TR>
<TR><TD WIDTH="51%" VALIGN="TOP" HEIGHT=24>
<FONT SIZE=1><P ALIGN="CENTER">string</FONT></TD>
<TD WIDTH="49%" VALIGN="TOP" HEIGHT=24><DIR>

<FONT SIZE=1><P>UCS-2 string </DIR>
</FONT></TD>
</TR>
<TR><TD WIDTH="51%" VALIGN="TOP" HEIGHT=24>
<FONT SIZE=1><P ALIGN="CENTER">boolean</FONT></TD>
<TD WIDTH="49%" VALIGN="TOP" HEIGHT=24><DIR>

<FONT SIZE=1><P>Boolean </DIR>
</FONT></TD>
</TR>
<TR><TD WIDTH="51%" VALIGN="TOP" HEIGHT=24>
<FONT SIZE=1><P ALIGN="CENTER">real32</FONT></TD>
<TD WIDTH="49%" VALIGN="TOP" HEIGHT=24><DIR>

<FONT SIZE=1><P>IEEE 4-byte floating-point </DIR>
</FONT></TD>
</TR>
<TR><TD WIDTH="51%" VALIGN="TOP" HEIGHT=24>
<FONT SIZE=1><P ALIGN="CENTER">real64</FONT></TD>
<TD WIDTH="49%" VALIGN="TOP" HEIGHT=24><DIR>

<FONT SIZE=1><P>IEEE 8-byte floating-point </DIR>
</FONT></TD>
</TR>
<TR><TD WIDTH="51%" VALIGN="TOP" HEIGHT=24>
<FONT SIZE=1><P ALIGN="CENTER">datetime</FONT></TD>
<TD WIDTH="49%" VALIGN="TOP" HEIGHT=24><DIR>

<FONT SIZE=1><P>A string containing a date-time</DIR>
</FONT></TD>
</TR>
<TR><TD WIDTH="51%" VALIGN="TOP" HEIGHT=24>
<FONT SIZE=1><P ALIGN="CENTER">&lt;classname&gt; ref</FONT></TD>
<TD WIDTH="49%" VALIGN="TOP" HEIGHT=24><DIR>

<FONT SIZE=1><P>Strongly typed reference </DIR>
</FONT></TD>
</TR>
<TR><TD WIDTH="51%" VALIGN="TOP" HEIGHT=24>
<FONT SIZE=1><P ALIGN="CENTER">char16</FONT></TD>
<TD WIDTH="49%" VALIGN="TOP" HEIGHT=24><DIR>

<FONT SIZE=1><P>16-bit UCS-2 character </DIR>
</FONT></TD>
</TR>
</TABLE>
</P>

<OL>

<FONT SIZE=1><LI><A NAME="_Toc404410865"><A NAME="_Toc453584957"></FONT><B><I>Date, Time, and Interval Types</A></A></LI></OL>
</OL>
</OL>
<DIR>
<DIR>

</B></I><FONT SIZE=3><P>Date<I>, </I>datetime<I>, </I>interval and time<I> </I>property types are aliases for each other and use the same fixed string-based format:</P><DIR>

</FONT><FONT FACE="Courier New" SIZE=1><P>yyyymmddhhmmss.mmmmmmsutc</P></DIR>

</FONT><FONT SIZE=3><P>where </P></DIR>
</DIR>


<UL>

<UL>
<LI>yyyy<I> </I>is a 4 digit year</LI>
<LI>mm<I> </I>is the month </LI>
<LI>dd<I> </I>is the day</LI>
<LI>hh<I> </I>is the hour (24-hour clock)</LI>
<LI>mm<I> </I>is the minute</LI>
<LI>ss<I> </I>is the second</LI>
<LI>mmmmmm<I> </I>is the number of microseconds</LI>
<LI>s<I> </I>is a "+" or "-", indicating the sign of the UTC (Universal Coordinated Time; for all intents and purposes the same as Greenwich Mean Time) correction field, or a &quot;:&quot;.  In this case, the value is interpreted as a time interval, and yyyymm are interpreted as days.</LI>
<LI>utc<I> </I>is the offset from UTC in minutes (using the sign indicated by <I>s</I>). It is ignored for a time interval.</LI></UL>
</UL>
<DIR>
<DIR>

<P>For example, Monday, May 25, 1998, at 1:30:15 PM EST would be represented as:</P><DIR>

</FONT><FONT FACE="Courier New" SIZE=1><P>19980525133015.0000000-300</P></DIR>

</FONT><FONT SIZE=3><P>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.</P>
<P>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:</P><DIR>

</FONT><FONT FACE="Courier New" SIZE=1><P>00000001132312.000000:000</P></DIR>

</FONT><FONT SIZE=3><P>A UTC offset of zero is always used for interval<I> </I>properties.</P>
<P>The string-based interval format is:</P><DIR>

</FONT><FONT FACE="Courier New" SIZE=1><P>ddddddddhhmmss.mmmmmm:000</P></DIR>
</DIR>
</DIR>

<OL>
<OL>
<OL>

<LI><A NAME="_Toc404410866"><A NAME="_Toc453584958"></FONT><B><I>Indicating Additional Type Semantics with Qualifiers</A></A></LI></OL>
</OL>
</OL>
<DIR>
<DIR>

</B></I><FONT SIZE=3><P>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 qualifier names chosen are not part of this standard):</P><DIR>

</FONT><FONT FACE="Courier New" SIZE=1><P>class Acme_Example<BR>
{<BR>
        [counter]  <BR>
    uint32 NumberOfCycles;<BR>
        [gauge] <BR>
    uint32 MaxTemperature;</P>
<P>        [octetstring, ArrayType("Indexed")] <BR>
    uint8 IPAddress[10];</P>
<P>};</P></DIR>

</FONT><FONT SIZE=3><P>Implementers are permitted, for documentation purposes, to introduce arbitrary qualifiers in this manner. The semantics are not enforced.</P></DIR>
</DIR>

<OL>
<OL>

<LI><A NAME="_Toc368546710"><A NAME="_Toc373214115"><A NAME="_Toc404410867"><A NAME="_Toc453584959"></A></A></A></FONT><B><FONT SIZE=4>Supported Schema Modifications</A></A></A></A></LI></OL>
</OL>
<DIR>
<DIR>

</B></FONT><FONT SIZE=3><P>This is a list of supported schema modifications, some of which, when used, 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.</P></DIR>
</DIR>

<OL>

<OL>

<LI>A class can be added to or deleted from a schema.</LI>
<LI>A property can be added to or deleted from a class.</LI>
<LI>A class can be added as a subtype or supertype of an existing class. </LI>
<LI>A class can become an association as a result of the addition of an Association qualifier, plus two or more references.</LI>
<LI>A qualifier can be added to or deleted from any Named Element.</LI>
<LI>The Override qualifier can be added to or removed from a property or reference.</LI>
<LI>A class can alias a property (or reference, if the class is a descendent of an association), using the Alias qualifier. Both inherited and immediate properties of the class may be aliased.</LI>
<LI>A method can be added to a class.</LI>
<LI>A method can override an inherited method.</LI>
<LI>Methods can be deleted, and the signature of a method can be changed.</LI>
<LI>A trigger may be added to or deleted from a class.</LI></OL>
</OL>
<DIR>
<DIR>

<P><A NAME="_Toc372427645"><A NAME="_Toc373214116"><A NAME="_Toc368546711">In defining an extension to a schema, the schema designer is expected to operate within the constraints of the classes defined in the Core model. With respect to classification, it is recommended that any added component of a system be defined as a subclass of an appropriate Core model class. It is expected that the schema designer will address the following question to each of the Core model classes: &quot;Is the class being added a subtype of this class?&quot; Having identified the Core model 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 superclasses 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 meta schema, but is an important device for introducing uniformity across schemas intended to represent aspects of the managed environment.</P></DIR>
</DIR>

<OL>
<OL>
<OL>

<LI><A NAME="_Toc404410868"><A NAME="_Toc453584960"></FONT><B><I>Schema Versions</A></A></A></A></LI></OL>
</OL>
</OL>
<DIR>
<DIR>

</B></I><FONT SIZE=3><P>Certain modifications to a schema can cause failure in applications that operated against the schema prior to the modification. These modifications are:</P></DIR>
</DIR>

<OL>

<OL>

<LI>Deletion of classes, properties, or methods.</LI>
<LI>Movements of a class anywhere other than down a hierarchy.</LI>
<LI>Alteration of property type or method signature.</LI>
<LI>Altering a reference range to anything other than the original specification.</LI></OL>
</OL>
<DIR>
<DIR>

<P>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 Section 2.5.2).</P></DIR>
</DIR>

<OL>
<OL>

<LI><A NAME="_Toc404410869"><A NAME="_Ref406302721"><A NAME="_Ref406302733"><A NAME="_Ref412631016"><A NAME="_Toc453584961"></FONT><B><FONT SIZE=4>Class Names</A></A></A></A></A></LI></OL>
</OL>
<DIR>
<DIR>

</B></FONT><FONT SIZE=3><P>Fully-qualified class names are in the form &lt;schema name&gt;_&lt;class name&gt;.  An underscore is used as a delimiter between the &lt;schema name&gt; and the &lt;class name&gt;. The delimiter is not allowed to appear in the &lt;schema name&gt; although it is permitted in the &lt;class name&gt;.</P>
<P>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 when the schema is implied by the context.</P>
<P>Examples of fully-qualified class names:</P></DIR>
</DIR>


<UL>

<UL>
<LI>CIM_ManagedSystemElement: the root of the CIM managed system element hierarchy.</LI>
<LI>CIM_ComputerSystem: the object representing computer systems in the CIM schema.</LI>
<LI>CIM_SystemComponent: the association relating systems to their components.</LI>
<LI>Win32_ComputerSystem: the object representing computer systems in the Win32 schema.</LI></UL>
</UL>

<OL>
<OL>

<LI><A NAME="_Toc373214117"><A NAME="_Toc404410870"><A NAME="_Toc453584962"></FONT><B><FONT SIZE=4>Qualifiers</A></A></A></A></LI>
</B></FONT><FONT SIZE=3><P>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. </P>
<P>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.</P>
<OL>

<LI><A NAME="_Toc404410871"><A NAME="_Toc453584963"></FONT><B><I>Meta Qualifiers</A></A></LI>
</B></I><FONT SIZE=3><P>This table lists the qualifiers that are used to refine the definition of the meta constructs 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.</P></FONT>
<P ALIGN="RIGHT"><TABLE BORDER CELLSPACING=1 BORDERCOLOR="#000000" CELLPADDING=7 WIDTH=511>
<TR><TD WIDTH="20%" VALIGN="TOP">
<B><FONT SIZE=1><P>QUALIFIER</B></FONT></TD>
<TD WIDTH="18%" VALIGN="TOP">
<B><FONT SIZE=1><P>DEFAULT</B></FONT></TD>
<TD WIDTH="15%" VALIGN="TOP">
<B><FONT SIZE=1><P>TYPE</B></FONT></TD>
<TD WIDTH="48%" VALIGN="TOP">
<B><FONT SIZE=1><P>MEANING</B></FONT></TD>
</TR>
<TR><TD WIDTH="20%" VALIGN="TOP">
<FONT SIZE=1><P>ASSOCIATION</FONT></TD>
<TD WIDTH="18%" VALIGN="TOP">
<FONT SIZE=1><P>FALSE</FONT></TD>
<TD WIDTH="15%" VALIGN="TOP">
<FONT SIZE=1><P>BOOLEAN</FONT></TD>
<TD WIDTH="48%" VALIGN="TOP">
<FONT SIZE=1><P>The object class is defining an association.</FONT></TD>
</TR>
<TR><TD WIDTH="20%" VALIGN="TOP">
<FONT SIZE=1><P>INDICATION</FONT></TD>
<TD WIDTH="18%" VALIGN="TOP">
<FONT SIZE=1><P>FALSE</FONT></TD>
<TD WIDTH="15%" VALIGN="TOP">
<FONT SIZE=1><P>BOOLEAN</FONT></TD>
<TD WIDTH="48%" VALIGN="TOP">
<FONT SIZE=1><P>The object class is defining an indication.</FONT></TD>
</TR>
</TABLE>
</P>

<FONT SIZE=2><LI><A NAME="_Toc373214118"><A NAME="_Toc375540906"><A NAME="_Toc404410872"><A NAME="_Ref412635657"><A NAME="_Ref412635666"><A NAME="_Ref453580382"><A NAME="_Toc453584964"></FONT><B><I>Standard Qualifiers</A></A></A></A></A></A></A></LI>
</B></I><FONT SIZE=3><P>This 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 extension classes to facilitate the provision of instances of the class and other operations on the class.</P>
<P>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 meta-model constructs. These limitations are identified in the &quot;Applies To&quot; column. Second, for a particular meta-model construct like associations, the use of the legal qualifiers may be further constrained because some qualifiers are mutually exclusive or the use of one qualifier implies some restrictions on the value of another qualifier, and so on. These usage rules are documented in the &quot;Meaning&quot; column of the table. Third, legal qualifiers are not inherited by meta-model constructs. For example, the MAXLEN qualifier that applies to properties is not inherited by references. </P>
<P>The &quot;Applies To&quot; column in the table identifies the meta-model construct(s) that can use a particular qualifier. For qualifiers like ASSOCIATION (discussed in the previous section), there is an implied usage rule that the meta qualifier must also be present. For example, the implicit usage rule for the AGGREGATION qualifiers is that the ASSOCIATION qualifier must also be present. </P></FONT>
<P ALIGN="RIGHT"><TABLE BORDER CELLSPACING=1 CELLPADDING=7 WIDTH=576>
<TR><TD WIDTH="23%" VALIGN="TOP">
<B><FONT SIZE=1><P>QUALIFIER</B></FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<B><FONT SIZE=1><P>DEFAULT</B></FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<B><FONT SIZE=1><P>APPLIES TO</B></FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<B><FONT SIZE=1><P>TYPE</B></FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<B><FONT SIZE=1><P>MEANING</B></FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>ABSTRACT</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>FALSE</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Class, Association, Indication</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>BOOLEAN</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>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.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>AGGREGATE</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>FALSE</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Reference</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>BOOLEAN</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Defines the "parent" component of an Aggregation association.<B>Usage Rule:</B> The Aggregation and Aggregate qualifiers are used together – Aggregation qualifying the association, and Aggregate specifying the "parent" reference.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>AGGREGATION</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>FALSE</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Association</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>BOOLEAN</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Indicates that the association is an aggregation.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>ALIAS</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property, Reference, Method</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>STRING</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Establishes an alternate name for a property or method in the schema.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>ARRAYTYPE</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>"Bag"</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property, Parameter</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>STRING</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Indicates the type of the qualified array. Valid values are "Bag", "Indexed" and "Ordered".<B>Usage rule:</B> The ArrayType qualifier should only be applied to properties and method parameters that are arrays (defined using the square bracket syntax specified in Appendix A).</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>BITMAP</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property, Method, Parameter</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>STRING ARRAY</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Indicates which bit positions are significant in a bit map. The position of a specific value in the BitMap array defines an index that is used in selecting a string literal from the BitValues array.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>BITVALUES</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property, Method, Parameter</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>STRING ARRAY</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Provides translation between a bit position value and an associated string. See the description for the BitMap qualifier.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>COUNTER</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>FALSE</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property, Method, Parameter</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>BOOLEAN</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Applicable only to unsigned integer types.Represents a non-negative integer which monotonically increases until it reaches a maximum value of 2^n-1, when it wraps around and starts increasing again from zero. N can be 8, 16, 32 or 64 depending on the datatype of the object to which the qualifier is applied.Counters have no defined "initial" value, and thus, a single value of a Counter has (in general) no information content</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>DESCRIPTION</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Any</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>STRING</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Provides a description of a Named Element.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>DISPLAYNAME</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Any</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>STRING</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Defines a name that will be displayed on UI instead of the actual name of the element.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>GAUGE</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>FALSE</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property, Method, Parameter</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>BOOLEAN</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Applicable only to unsigned integer types.Represents a non-negative integer, which may increase or decrease, but shall never exceed a maximum value. The maximum value can not be greater than 2^n - 1. N can be 8, 16, 32 or 64 depending on the datatype of the object to which the qualifier is applied.The value of a Gauge has its maximum value whenever the information being modeled is greater or equal to that maximum value; if the information being modeled subsequently decreases below the maximum value, the Gauge also decreases.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>IN</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>TRUE</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Parameter</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>BOOLEAN</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Indicates that the associated parameter is used to pass values to a method.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>KEY</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>FALSE</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property, Reference</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>BOOLEAN</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Indicates that the property is part of the namespace handle (see Section 5.3.1.2 for information about namespace handles).  If more than one property has the KEY qualifier, then all such properties collectively form the key (a compound key). </P>
<B><P>Usage Rule:</B> Keys are written once at object instantiation and must not be modified thereafter.  It does not make sense to apply a default value to a KEY-qualified property.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>MAPPINGSTRINGS</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Class, Property,<BR>
Association,<BR>
Indication,<BR>
Reference</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>STRING ARRAY</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Mapping strings for one or more management data providers or agents. See Section 2.5.5 and 2.5.6 for more details.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>MAX</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Reference</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>INT</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>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. </FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>MAXLEN</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property, Method, Parameter</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>INT</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Indicates the maximum length, in characters, of a string data item. When overriding the default value, any unsigned integer value (uint32) can be specified. A value of NULL implies unlimited length.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>MAXVALUE</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property, Method, Parameter</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>INT</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Maximum value of this object.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>MIN</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>0</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Reference </FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>INT</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>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.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>MINVALUE</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property, Method, Parameter</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>INT</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Minimum value of this object.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>MODEL CORRESPONDENCE</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>STRING ARRAY</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Indicates a correspondence between an object’s property and other properties in the CIM Schema.  Object properties are identified using the following syntax:</P>
<P>&lt;schema name&gt; "_" &lt;class or association name&gt; "." &lt;property name&gt;</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>NONLOCAL</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Reference</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>STRING</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Indicates the location of an instance. Its value is &lt;namespacetype&gt;://&lt;namespacehandle&gt;&nbsp;<B>Usage Rule:</B> Cannot be used with the NonLocalType qualifier.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>NONLOCALTYPE</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>&nbsp;Reference</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>STRING</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Indicates the type of location of an instance. Its value is &lt;namespacetype&gt;&nbsp;&nbsp;<B>Usage Rule:</B> Cannot be used with the NonLocal qualifier.&nbsp;&nbsp;</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>NULLVALUE</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>STRING</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Defines a value the presence of which indicates that the associated property is NULL – that is that the property cannot be considered as having a valid or meaningful value.<BR>
The conventions and restrictions used for defining null values are the same as those applicable to the ValueMap qualifier.<BR>
Note this qualifier cannot be overridden as it seems unreasonable to permit a subclass to return a different null value to that of the superclass.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>OUT</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>FALSE</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Parameter</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>BOOLEAN</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Indicates that the associated parameter is used to return values from a method.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>OVERRIDE</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property, Method,<BR>
Reference</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>STRING</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Indicates that the property, method, or reference in the derived class overrides the similar construct (of the same name) in the parent class in the inheritance tree, or in the specified parent class. The value of this qualifier MAY identify the parent class whose subordinate construct (property, method, or reference) is overridden. The format of the string to accomplish this is:[&lt;class&gt;.]&lt;subordinate construct&gt;If the class name is omitted, the Override applies to the subordinate construct in the parent class in the inheritance tree.<B>Usage Rule: </B>The Override qualifier can only refer to constructs based on the same meta model. Also, it is not allowed to change a construct's name or signature when overriding.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>PROPAGATED</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>STRING</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>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:</P>
<P> [&lt;class&gt;.]&lt;subordinate construct&gt;</P>
<B><P>Usage Rule: </B>When the PROPAGATED qualifier is used, the KEY qualifier must be specified with a value of TRUE.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>READ</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>TRUE</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>BOOLEAN</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Indicates that the property is readable. </FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>REQUIRED</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>FALSE</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>BOOLEAN</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Indicates that a non-NULL value is required for the property.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>REVISION</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Class, <BR>
Association, <BR>
Indication, Schema</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>STRING</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Provides the minor revision number of the schema object.</P>
<B><P>Usage Rule:</B> The VERSION qualifier must be present to supply the major version number when the REVISION qualifier is used.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>SCHEMA</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property, Method </FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>STRING</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>The name of the schema in which the feature is defined.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>SOURCE</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Class, Association, Indication, Reference</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>STRING</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Indicates the location of an instance. Its value is &lt;namespacetype&gt;://&lt;namespacehandle&gt;<BR>
<B>Usage Rule:</B> Cannot be used with the SourceType&nbsp; qualifier.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>SOURCETYPE</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Class, Association, Indication, Reference</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>STRING</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Indicates the type of location of an instance. Its value is &lt;namespacetype&gt;&nbsp;&nbsp;Usage Rule: Cannot be used with the Source qualifier.&nbsp;&nbsp;</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>STATIC</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>FALSE</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property, Method</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>BOOLEAN</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>For methods indicates that the method is a class method that does not depend on any per-instance data.For properties, indicates that the property is a class variable rather than an instance variable.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>TERMINAL</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>FALSE</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Class</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>BOOLEAN</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Indicate that the class can have no subclasses. If such a subclass is declared the compiler will generate an error.<BR>
Note this qualifier cannot coexist with the Abstract qualifier. If both are specified the compiler generates an error.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>UNITS</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property, Method, Parameter</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>STRING</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Provides units in which the associated data item is expressed. For example, a Size data item might have Units ("bytes"). The complete set of standard units is defined in Appendix C.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>VALUEMAP</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property, Method, Parameter</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>STRING ARRAY</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Defines the set of permissible values for this property, method return type or method parameter. 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 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:[+|-]digit[*digit]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.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>VALUES</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property, Method, Parameter</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>STRING  ARRAY</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>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, method return type or method parameter. If a ValueMap qualifier is present, the Values index is defined by the location of the property value in the ValueMap.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>VERSION</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Class, Schema,<BR>
Association,<BR>
Indication</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>STRING</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Provides the major version number of the schema object. This is incremented when changes are made to the schema that alter the interface. </FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>WEAK</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>FALSE</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Reference</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>BOOLEAN</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>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. </FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>WRITE</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>FALSE</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>BOOLEAN</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Indicates whether write access is allowed for a property by any "consumers" of that property's data. This qualifier does not address the initial assignment of a property value, nor its maintenance by its "provider". It describes the maximal level of access that is allowed, and does not address whether security and authorization restrictions may actually prevent writing of the data. A value of true indicates that the property is readable and writable by "consumers", given appropriate administrative authorization. A value of false indicates that the property is only readable by "consumers", regardless of authorization.</FONT></TD>
</TR>
</TABLE>
</P>

<FONT SIZE=2><LI><A NAME="_Toc368546712"><A NAME="_Toc375540907"><A NAME="_Toc373214119"><A NAME="_Toc404410873"><A NAME="_Toc453584965"></FONT><B><I>Optional Qualifiers</A></LI>
</B></I><FONT SIZE=3><P>The optional qualifiers listed in this table 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 are provided in the specification to avoid random user-defined qualifiers for these recurring situations.</P>
</FONT>
<P ALIGN="RIGHT"><TABLE BORDER CELLSPACING=1 CELLPADDING=7 WIDTH=576>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>&nbsp;</P>
<P>&nbsp;</P>
<B><P>Qualifer</B></FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<B><FONT SIZE=1><P>Default</B></FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<B><FONT SIZE=1><P>Applies To</B></FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<B><FONT SIZE=1><P>Type</B></FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<B><FONT SIZE=1><P>Meaning</B></FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>DELETE</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>FALSE</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Association, Reference</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>BOOLEAN</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<B><FONT SIZE=1><P>For associations</B>: 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. </P>
<B><P>For references</B>: 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. </P>
<B><P>Usage Rule</B>: Applications must to chase associations according to the modeled semantic and delete objects appropriately.  <I>Note: This usage rule must be verified when the CIM security model is defined.</I></FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>EXPENSIVE</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>FALSE</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property, Reference, Class, Association, Method</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>BOOLEAN</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Indicates the property or class is expensive to compute.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>IFDELETED</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>FALSE</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Association, Reference</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>BOOLEAN</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Indicates that all objects qualified by DELETE within the association must be deleted if the referenced object or the association, respectively, is deleted. </FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>INVISIBLE</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>FALSE</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Association, Property, Method, Reference, Class</P>
</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>BOOLEAN</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>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).</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>LARGE</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>FALSE</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property,  Class</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>BOOLEAN</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Indicates the property or class requires a large amount of storage space.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>PROVIDER</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Any</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>STRING</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>An implementation specific handle to the instrumentation that populates those elements in the schemas which refer to dynamic data.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>SYNTAX</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property, Reference, Method, Parameter</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>STRING</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Specific type assigned to a data item. <B>Usage Rule:</B> Must be used with the SyntaxType qualifier.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>SYNTAXTYPE</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property, Reference, Method, Parameter</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>STRING</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Defines the format of the SYNTAX qualifier.</P>
<B><P>Usage Rule:</B> Must be used with the SYNTAX qualifier.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>TRIGGERTYPE</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Class, Property, Method, Association,<BR>
Indication,<BR>
Reference</P>
</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>STRING</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Indicates the circumstances under which a trigger is fired.</P>
<B><P>Usage Rule:</B> The trigger types vary by meta-model 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.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>UNKNOWN<BR>
VALUES</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>STRING ARRAY</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Defines a set of values the presence of which indicates that the value of the associated property is unknown – that is that the property cannot be considered as having a valid or meaningful value.<BR>
The conventions and restrictions used for defining unknown values are the same as those applicable to the ValueMap qualifier.<BR>
Note this qualifier cannot be overridden as it seems unreasonable to permit a subclass to treat as a known value a value that is treated as unknown by some superclass.</FONT></TD>
</TR>
<TR><TD WIDTH="23%" VALIGN="TOP">
<FONT SIZE=1><P>UNSUPPORTEDVALUES</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P>Property</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=1><P>STRING ARRAY</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=1><P>Defines a set of values the presence of which indicates that the value of the associated property is unsupported – that is that the property cannot be considered as having a valid or meaningful value.<BR>
The conventions and restrictions used for defining unsupported values are the same as those applicable to the ValueMap qualifier.<BR>
Note this qualifier cannot be overridden as it seems unreasonable to permit a subclass to treat as a supported value a value that is treated as unknown by some superclass.</FONT></TD>
</TR>
</TABLE>
</P>

<FONT SIZE=2><LI><A NAME="_Toc453584966"></FONT><B><I>User-defined Qualifiers</A></A></A></A></A></LI>
</B></I><FONT SIZE=3><P>The user can define any additional arbitrary named qualifiers. However, it is recommended that only defined qualifiers be used, and that the list of qualifiers be extended only if there is no other way to accomplish a particular objective.</P>
<LI><A NAME="_Toc375540908"><A NAME="_Toc404410874"><A NAME="_Ref406325584"><A NAME="_Ref406325634"><A NAME="_Ref412636290"><A NAME="_Ref453579073"><A NAME="_Ref453579102"><A NAME="_Ref453579768"><A NAME="_Ref453582913"><A NAME="_Toc453584967"></FONT><B><I>Mapping MIF Attributes</A></A></A></A></A></A></A></A></A></A></LI>
</B></I><FONT SIZE=3><P>Mapping Management Information Format (MIF) attributes to CIM Properties can be accomplished using the MAPPINGSTRINGS 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.</P>
<P>Every MIF group contains a unique identification that is defined using the class string, which is defined as follows:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>defining body|specific name|version</P>
</FONT><FONT SIZE=3><P>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.</P>
<P>Therefore, the mapping qualifier can be represented as a string that is formatted as follows:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>MIF.defining body|specific name|version.attributeid</P>
</FONT><FONT SIZE=3><P>where MIF is a constant defining this as a MIF mapping followed by a dot. This is then followed by the class string for the group this defines, and optionally followed by a dot and the identifier of a unique attribute.</P>
<P>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.</P>
<P>For example, a Domain Mapping of a DMTF MIF attribute to a CIM property would be as follows:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P> &#9;[MAPPINGSTRINGS{"MIF.DMTF|ComponentID|001.4"},READ]<BR>
    SerialNumber = "";</P>
</FONT><FONT SIZE=3><P>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.</P>
<P>To recast an entire MIF group into a CIM Object, the mapping string can be used to define an entire Class. For example:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>    [MAPPINGSTRINGS {"MIF.DMTF|Software Signature|002"}]<BR>
class MicroSoftWord : SoftwareSignature<BR>
{<BR>
   ...<BR>
}</P>
<LI><A NAME="_Ref453579127"><A NAME="_Toc453584968"></FONT><B><I>Mapping Generic Data to CIM Properties</A></A></LI></OL>
</OL>
</OL>
<DIR>
<DIR>

</B></I><FONT SIZE=3><P>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 name</P>
<P>standards body (e.g., "IETF"), a company name (e.g., "Acme") for defining the mappings to a company?s private MIB, and/or an appropriate management protocol (e.g., "SNMP"). For the IETF case, the ASN.1 module name, not the RFC number, should be used as the MIB name (e.g., 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.</P>
<P>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 (e.g., directories) using an application-specific protocol (e.g., LDAP).</P>
<P>The syntax for mapping MIF attributes as defined in Section 2.5.5 is as follows:</P><DIR>

</FONT><FONT FACE="Courier New" SIZE=1><P>" MIF.&lt;defining_body | specific_name | version&gt;.attributeid"</P></DIR>

<P><BR>
</FONT><FONT SIZE=3>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:</P><DIR>

</FONT><FONT FACE="Courier New" SIZE=1><P>" &lt;Format&gt;.&lt;Scoping_Name&gt;.&lt;Content&gt; "</P></DIR>

</FONT><FONT SIZE=3><P>where:</P>
<P>"Format" defines the format of the entry. It has the following values:</P><DIR>
<DIR>

<P>"MIF" means that the rest of the string is interpreted as MIF data</P>
<P>"MIB" means that the rest of the string is interpreted as a variable name of a MIB</P>
<P>"OID" means that the rest of the string is interpreted as an OID that is defined by a particular protocol to represent a variable name</P></DIR>
</DIR>

<P>"Scoping_Name" defines the format used to uniquely identify the entry. It has the following values:</P><DIR>
<DIR>

<P>"defining_body | specific_name | version" is used for MIF mappings</P>
<P>"Naming_Authority | MIB_Name" is used for MIB mappings</P>
<P>"Naming_Authority | Protocol_Name" is used for protocol mappings that use OIDs to represent a variable name</P></DIR>
</DIR>

<P>"Content" defines the value of the entry. It has the following values:</P><DIR>
<DIR>

<P>"attributeid" is used for MIF mappings</P>
<P>"Variable_Name" is used for MIB mappings</P>
<P>"OID" is used for protocol mappings</P></DIR>
</DIR>

<P>Here are two examples of the syntax. The first uses the MIB format and looks as follows:</P><DIR>

</FONT><FONT FACE="Courier New" SIZE=1><P>    [Description(    "OperatingSystem's notion of the local date and time of day"),    MappingStrings {"MIB.IETF | HOST-RESOURCES-MIB.hrSystemDate"}]datetime LocalDateTime;</P></DIR>

</FONT><FONT SIZE=3><P>The second example uses the OID format and looks as follows:</P><DIR>

</FONT><FONT FACE="Courier New" SIZE=1><P>    [Description(    "OperatingSystem's notion of the local date and time of day"),    MappingStrings {"OID.IETF | SNMP.1.3.6.1.2.1.25.1.2"}]datetime LocalDateTime;</P></DIR>
</DIR>
</DIR>

<OL>

</FONT><B><FONT SIZE=5><LI></LI>
<LI><A NAME="_Toc404410875"><A NAME="_Toc453584969">Managed Object Format</A></A></LI>
</B></FONT><FONT SIZE=3><P>The management information is described in a language based on Interface Definition Language (IDL) [3] called the Managed Object Format (MOF). This document uses the term MOF specification to refer to a collection of management information described in a manner conformant to the MOF syntax.</P>
<P>Elements of MOF syntax are introduced on a case-by-case basis with examples. In addition, a complete description of the MOF syntax is provided in Appendix A.</P>
<P>Note: All grammars defined in this specification use the notation defined in [7]; any exceptions are stated with the grammar.</P>
<P>The MOF syntax is a way to describe object definitions in textual form. It establishes the syntax for writing definitions. The main components of a MOF specification are textual descriptions of classes, associations, properties, references, methods and instance declarations and their associated qualifiers. Comments are permitted.</P>
<P>In addition to serving the need for specifying the managed objects, a MOF specification can be processed using a compiler. To assist the process of compilation, a MOF specification consists of a series of compiler directives. </P>
<P>A MOF file can be encoded in either Unicode or UTF-8.</P>
<OL>

<LI><A NAME="_Toc381332525"><A NAME="_Toc382055158"></FONT><B><FONT SIZE=4>&#9;<A NAME="_Toc404410876"><A NAME="_Toc453584970">MOF usage</A></A></A></A></LI>
</B></FONT><FONT SIZE=3><P>The managed object descriptions in a MOF specification can be validated against an active namespace (See Section 5). Such validation is typically implemented in an entity acting in the role of a Server. This section describes the behavior of an implementation when introducing a MOF specification into a namespace. Typically, such a process validates both the syntactic correctness of a MOF specification, as well as the semantic correctness of such a specification against a particular Implementation. A MOF specification can be validated for the syntactic correctness alone, in a component such as a MOF compiler.</P>
<LI><A NAME="_Toc381332526"><A NAME="_Toc382055159"></FONT><B><FONT SIZE=4>&#9;<A NAME="_Toc404410877"><A NAME="_Toc453584971">Class Declarations</A></A></A></A></LI>
</B></FONT><FONT SIZE=3><P>A class declaration is treated as an instruction to create a new class. It is a local matter as to whether the process of introducing a MOF specification into a namespace is allowed to add classes or modify classes. </P>
<P><A NAME="_Toc381332527"><A NAME="_Toc382055160">Any class referenced in the specification of a class or reference specification must exist at the time of the specification (that is, forward references are not allowed).</P>
</FONT><B><FONT SIZE=4><LI>&#9;<A NAME="_Toc404410878"><A NAME="_Toc453584972">Instance Declarations</A></A></A></A></LI></OL>

</B></FONT><FONT SIZE=3><P>Classes <B>must</B> be defined before they are used to declare instances. However, if a class definition is already resident within the namespace, that class declaration need not appear in a MOF specification that introduces the instances of that class. </P>
<P>Any instance declaration is treated as an instruction to create a new instance where the object's key values do not already exist, or an instruction to modify an existing instance where an object with identical key values already exists. </P>
<LI><A NAME="_Ref371399494"><A NAME="_Toc381332528"><A NAME="_Toc382055161"><A NAME="_Toc404410879"></LI>
</FONT><B><FONT SIZE=5><LI><A NAME="_Toc453584973">MOF Components</A></A></A></A></LI>
<OL>

<LI><A NAME="_Toc381332529"><A NAME="_Toc382055162"><A NAME="_Ref373496088"><A NAME="_Ref373496106"></FONT><FONT SIZE=4>&#9;<A NAME="_Toc404410880"><A NAME="_Toc453584974">Keywords</A></A></A></A></LI>
</B></FONT><FONT SIZE=3><P>All keywords in the MOF syntax are case-insensitive.</P>
<LI><A NAME="_Toc381332531"><A NAME="_Toc382055164"></A></A></A></FONT><B><FONT SIZE=4>&#9;<A NAME="_Toc404410882"><A NAME="_Toc453584975">Comments</A></A></A></A></LI>
</B></FONT><FONT SIZE=3><P>Comments can appear anywhere in MOF syntax and are indicated by either a leading double slash "//", or a pair of matching "/*" and "*/" sequences. </P>
<P>A "//" comment is terminated by carriage return, line feed or by the end of the MOF specification (whichever comes first).</P>
<P>For example:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>  // This is a comment</P>
</FONT><FONT SIZE=3><P>A "/*" comment is terminated by the next "*/" sequence or by the end of the MOF specification (whichever comes first). Comments are not recognized by the meta model and as such, will not be preserved across compilations.  In other words, the output of a MOF compilation is not required to include any comments.</P>
<LI><A NAME="_Ref371319196"><A NAME="_Toc381332532"><A NAME="_Toc382055165"></FONT><B><FONT SIZE=4>&#9;<A NAME="_Toc404410883"><A NAME="_Toc453584976">Validation Context</A></A></A></A></A></LI>
</B></FONT><FONT SIZE=3><P>Semantic validation of a MOF specification involves an explicit or implied namespace context. This is defined as the namespace against which the objects in the MOF specification are validated and the namespace in which they are created. Multiple namespaces typically indicate the presence of multiple management spaces or multiple devices.</P>
<LI><A NAME="_Ref374854798"><A NAME="_Toc381332533"><A NAME="_Toc382055166"></FONT><B><FONT SIZE=4>&#9;<A NAME="_Toc404410884"><A NAME="_Toc453584977">Naming of Schema Elements</A></A></A></A></A></LI>
</B></FONT><FONT SIZE=3><P>This section describes the rules for naming of schema elements; this applies to classes, properties, qualifiers, methods and namespaces. </P>
<P>CIM is a conceptual model that is not bound to a particular implementation. This allows it to be used to exchange management information in a variety of ways, examples of which are described in Section 1. Some implementations may use case-sensitive technologies, while others may use case-insensitive technologies. The naming rules defined in this section are chosen to allow efficient implementation in either environment, and to enable the effective exchange of management information between all compliant implementations.</P>
<P>All names are case-insensitive, in that two schema item names are identical if they differ only in case. This is mandated so that scripting technologies that are case-insensitive can leverage CIM technology. (Note, however, that string values assigned to properties and qualifiers are not covered by this rule, and must be treated in a case-sensitive manner).</P>
<P>The case of a name is set by its defining occurrence and must be preserved by all implementations. This is mandated so that implementations can be built using case-sensitive technologies such as Java and object databases. (This also allows names to be consistently displayed using the same user-friendly mixed-case format).</P>
<P>For example, an implementation, if asked to create class 'Disk', must reject the request if there is already a class 'DISK' in the current schema. Otherwise, when returning the name of the class 'Disk', it must return the name in mixed case as it was originally specified.</P>
<P>CIM does not currently require support for any particular query language. It is assumed that implementations will specify which query languages are supported by the implementation and will adhere to the case conventions that prevail in the specified language. That is, if the query language is case-insensitive, statements in the language will behave in a case-insensitive manner.</P>
<P>For the full rules for schema names see Appendix F, Unicode Usage.</P>
<LI><A NAME="_Toc381332534"><A NAME="_Toc382055167"></FONT><B><FONT SIZE=4>&#9;<A NAME="_Toc404410885"><A NAME="_Toc453584978">Class Declarations</A></A></A></A></LI>
</B></FONT><FONT SIZE=3><P>A class is an object describing a grouping of data items that are conceptually related and thought of as modeling an object. Class definitions provide a type system for instance construction.</P>
<OL>

<LI><A NAME="_Toc381332536"><A NAME="_Toc382055169"><A NAME="_Toc404410886"><A NAME="_Toc453584979"></FONT><B><I>Declaring a Class</A></A></A></A></LI></OL>
</OL>
</OL>
<DIR>
<DIR>

</B></I><FONT SIZE=3><P>A class is declared by specifying these components:</P></DIR>
</DIR>

<OL>

<OL>

<LI>The qualifiers of the class. This may be empty, or a list of qualifier name/value bindings separated by commas "," and enclosed with square brackets ("[" and "]").</LI>
<LI>The class name.</LI>
<LI>The name of the class from which this class is derived (if any).</LI>
<LI>The class properties, which define the data members of the class. A property may also have an optional qualifier list, expressed in the same way as the class qualifier list. In addition, a property has a data type, and (optionally) a default (initializer) value.</LI>
<LI>The methods supported by the class. A method may have an optional qualifier list. A method has a signature consisting of its return type, plus its parameters and their type and usage.</LI></OL>
</OL>
<DIR>
<DIR>

<P>This sample shows how to declare a class:</P><DIR>

</FONT><FONT FACE="Courier New" SIZE=1><P> &#9;&#9;[abstract]<BR>
class Win32_LogicalDisk<BR>
{<BR>
&#9;&#9;[read] <BR>
    string DriveLetter;<BR>
&#9;&#9;[read, Units("KiloBytes")] <BR>
    sint32 RawCapacity = 0;<BR>
 &#9;&#9;[write] <BR>
    string VolumeLabel;</P>
<P>&#9;&#9;[Dangerous]<BR>
    boolean Format([in] boolean FastFormat);<BR>
};</P></DIR>
</DIR>
</DIR>

<OL>
<OL>
<OL>

<LI><A NAME="_Toc381332537"><A NAME="_Toc382055170"><A NAME="_Toc404410887"><A NAME="_Toc453584980"></FONT><B><I>Subclasses</A></A></A></A></LI>
</B></I><FONT SIZE=3><P>To indicate that a class is a subclass of another class, the derived class is declared by using a colon followed by the superclass name.</P>
<P>For example, if the class Acme_Disk_v1 is derived from the class CIM_Media:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>class Acme_Disk_v1 : CIM_Media<BR>
{<BR>
    // Body of class definition here ...<BR>
};</P>
</FONT><FONT SIZE=3><P>The terms Base class, superclass and supertype are used interchangeably, as are Derived<I> </I>class, subclass and subtype.</P>
<P>The superclass declaration <B>must</B> appear at a prior point in the MOF specification or already be a registered class definition in the namespace in which the derived class is defined.</P>
<LI><A NAME="_Toc381332538"><A NAME="_Toc382055171"><A NAME="_Toc404410888"><A NAME="_Toc453584981"></FONT><B><I>Default Property Values</A></A></A></A></LI>
</B></I><FONT SIZE=3><P>Any properties in a class definition can have default initializers. For example:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>class Acme_Disk_v1 : CIM_Media<BR>
{<BR>
    string Manufacturer = "Acme";<BR>
    string ModelNumber  = "123-AAL";<BR>
};</P>
</FONT><FONT SIZE=3><P>When new instances of the class are declared, then any such property is automatically assigned its default value unless the instance declaration explicitly assigns a value to the property.</P>
<LI><A NAME="_Ref374864890"><A NAME="_Toc381332539"><A NAME="_Toc382055172"><A NAME="_Toc404410889"><A NAME="_Toc453584982"></FONT><B><I>Class and Property Qualifiers</A></A></A></A></A></LI>
</B></I><FONT SIZE=3><P>Qualifiers are meta data about a property, method, method parameter, class, or instance and are not part of the definition itself.  For example, a qualifier is used to indicate whether a property value is modifiable (using the WRITE<I> </I>qualifier). Qualifiers always precede the declaration to which they apply.</P>
<P>Certain qualifiers are well known and cannot be redefined (see the description of the meta schema). Apart from these, arbitrary qualifiers may be used.</P>
<P>Qualifier declarations include an explicit type indicator, which must be one of the intrinsic types. A qualifier with an array-based parameter is assumed to have a type, which is a variable-length homogeneous array of one of the intrinsic types. Note that in the case of boolean arrays, each element in the array is either TRUE or FALSE.</P>
<P>Examples:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>Write(true)&#9;&#9;&#9;&#9;// boolean</P>
<P>profile { true, false, true }       // boolean []</P>
<P>description("A string")             // string</P>
<P>info { "this", "a", "bag", "is" }&#9;// string []</P>
<P>id(12)                              // uint32</P>
<P>idlist { 21, 22, 40, 43 }           // uint32 []</P>
<P>apple(3.14)                         // real32</P>
<P>oranges { -1.23E+02, 2.1 }          // real32 []</P>
</FONT><FONT SIZE=3><P>Qualifiers are applied to a class by preceding the class declaration with a qualifier list, comma-separated, and enclosed within square brackets. Qualifiers are applied to a property or method in a similar fashion.</P>
<P>For example:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>class CIM_Process:CIM_LogicalElement<BR>
{<BR>
     uint32 Priority;<BR>
 &#9;&#9;[Write(true)]<BR>
     string Handle;<BR>
};</P>
</FONT><FONT SIZE=3><P>When specifying a boolean qualifier in a class or property declaration, the name of the qualifier can be used without also specifying a value. From the previous example:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>class CIM_Process:CIM_LogicalElement<BR>
{<BR>
&#9;uint32 Priority;<BR>
&#9;&#9;[Write] // Equivalent declaration to Write (True)<BR>
&#9;string Handle;<BR>
};</P>
</FONT><FONT SIZE=3><P>If only the qualifier name is listed for a boolean qualifier, it is implicitly set to TRUE. In contrast, when a qualifier is not specified at all for a class or property, the default value for the qualifier is assumed. Using another example:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>    [Association,<BR>
    Aggregation]    // Specifies the Aggregation qualifier to be True<BR>
class CIM_SystemDevice: CIM_SystemComponent<BR>
{<BR>
        [Override ("GroupComponent"),<BR>
        Aggregate]  // Specifies the Aggregate qualifier to be True<BR>
    CIM_ComputerSystem Ref GroupComponent;<BR>
        [Override ("PartComponent"),<BR>
        Weak] // Defines the Weak qualifier to be True<BR>
    CIM_LogicalDevice Ref PartComponent;<BR>
};<BR>
[Association]    // Since the Aggregation qualifier is not specified,<BR>
                 // its default value, False, is set<BR>
class Acme_Dependency: CIM_Dependency<BR>
{<BR>
        [Override ("Antecedent")]    // Since the Aggregate and Weak<BR>
                                     // qualifiers are not used, their <BR>
                                     // default values, False, are assumed<BR>
    Acme_SpecialSoftware Ref Antecedent;<BR>
        [Override ("Dependent")]<BR>
    Acme_Device Ref Dependent;<BR>
};</P>
</FONT><FONT SIZE=3><P>Qualifiers can be transmitted automatically from classes to derived classes, or from classes to instances, subject to certain rules. The rules behind how the transmission occurs are attached to each qualifier and encapsulated in the concept of the qualifier flavor. For example, a qualifier may be designated in the base class as automatically transmitted to all of its derived classes, or it may be designated as belonging specifically to that class and not transmittable. In addition, the qualifier flavor can be used to control whether or not derived classes can override the qualifier value, or whether it must be fixed for an entire class hierarchy. This aspect of qualifier flavor is referred to as override permissions.</P>
<P>Qualifier flavors are indicated by an optional clause after the qualifier and preceded by a colon. They consist of some combination of the key words EnableOverride, DisableOverride, ToSubclass and Restricted, indicating the applicable propagation and override rules. For example:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>class CIM_Process:CIM_LogicalElement<BR>
{<BR>
    uint32 Priority;<BR>
        [Write(true):DisableOverride ToSubclass]<BR>
    string Handle;<BR>
};</P>
</FONT><FONT SIZE=3><P>In this example, Handle is designated as writable for the Process class and for every subclass of this class.</P>
<P>The recognized flavor types are:</P></FONT>
<P ALIGN="CENTER"><CENTER><TABLE BORDER CELLSPACING=1 CELLPADDING=7 WIDTH=498>
<TR><TD WIDTH="20%" VALIGN="TOP">
<B><FONT SIZE=1><P><A NAME="_Ref374856420"><A NAME="_Toc381332540"><A NAME="_Toc382055173">PARAMETER</B></FONT></TD>
<TD WIDTH="64%" VALIGN="TOP">
<B><FONT SIZE=1><P>Interpretation</B></FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<B><FONT SIZE=1><P ALIGN="CENTER">Default</B></FONT></TD>
</TR>
<TR><TD WIDTH="20%" VALIGN="TOP">
<FONT SIZE=1><P>EnableOverride</FONT></TD>
<TD WIDTH="64%" VALIGN="TOP">
<FONT SIZE=1><P>The qualifier is overridable.</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">yes</FONT></TD>
</TR>
<TR><TD WIDTH="20%" VALIGN="TOP">
<FONT SIZE=1><P>DisableOverride</FONT></TD>
<TD WIDTH="64%" VALIGN="TOP">
<FONT SIZE=1><P>The qualifier cannot be overriden.</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">no</FONT></TD>
</TR>
<TR><TD WIDTH="20%" VALIGN="TOP">
<FONT SIZE=1><P>ToSubclass</FONT></TD>
<TD WIDTH="64%" VALIGN="TOP">
<FONT SIZE=1><P>The qualifier is inherited by any subclass.</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">yes</FONT></TD>
</TR>
<TR><TD WIDTH="20%" VALIGN="TOP">
<FONT SIZE=1><P>Restricted</FONT></TD>
<TD WIDTH="64%" VALIGN="TOP">
<FONT SIZE=1><P>The qualifier applies only to the class in which it is declared.</FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">no</FONT></TD>
</TR>
<TR><TD WIDTH="20%" VALIGN="TOP">
<FONT SIZE=1><P>Translatable</FONT></TD>
<TD WIDTH="64%" VALIGN="TOP">
<FONT SIZE=1><P>Indicates the value of the qualifier can be specified in multiple locales (language and country combination).  When Translatable(yes) is specified for a qualifier, it is legal to create implicit qualifiers of the form : </P><DIR>
<DIR>

<P>label_ll_cc</P></DIR>
</DIR>

<P>where &quot; label&quot; is the name of the qualifier with Translatable(yes), and ll and cc are the language code and country code designation, respectively, for the translated string.  In other words, a label_ll_cc  qualifier is a clone, or derivative, of the &quot;label&quot; qualifier with a postfix to capture the translated value's locale. The locale of the original value (that is, the value specified using the qualifier with a name of &quot;label&quot;) is determined by the locale pragma. </P>
<P>When a label_ll_cc qualifier is implicitly defined, the values for the other flavor parameters are assumed to be the same as for the &quot;label&quot; qualifier. When a label_ll_cc qualifier is defined explicitly, the values for the other flavor parameters must also be the same.  A &quot;yes&quot; for this parameter is only valid for string-type qualifiers.</P>
<P>Example: if an English description is translated into Mexican Spanish the actual name of the qualifier is: DESCRIPTION_es_MX. </FONT></TD>
<TD WIDTH="16%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">no</FONT></TD>
</TR>
</TABLE>
</CENTER></P>

<FONT SIZE=1><LI><A NAME="_Toc404410890"><A NAME="_Ref453580338"><A NAME="_Toc453584983"></FONT><B><I>Key Properties</A></A></A></A></A></A></LI></OL>
</OL>
</OL>
<DIR>
<DIR>

</B></I><FONT SIZE=3><P>Instances of a class require some mechanism through which the instances can be distinguished within a single namespace. Designating one or more properties with the reserved qualifier "key" provides instance identification. </P>
<P>For example, this class has one property (Volume) which serves as its' key:</P><DIR>

</FONT><FONT FACE="Courier New" SIZE=1><P>class Acme_Drive<BR>
{<BR>
&#9;&#9;[key] <BR>
 &#9;string Volume;<BR>
 &#9;string FileSystem;<BR>
 &#9;sint32 Capacity;<BR>
};</P></DIR>

</FONT><FONT SIZE=3><P>In this example, instances of Drive<I> </I>are distinguished using the Volume<I> </I>property, which acts as the key<I> </I>for the class.</P>
<P>Compound keys are supported and are designated by marking each of the required properties with the key<I> </I>qualifier.</P>
<P>If a new subclass is defined from a superclass, and the superclass has key properties (including those inherited from other classes), the new subclass <B>cannot</B> define any additional key properties. New key properties in the subclass can be introduced only if all classes in the inheritance chain of the new subclass are keyless.</P>
<P>If any reference to the class has the Weak qualifier, the properties that are qualified as Key in the other classes in the association are propagated to the referenced class. The key properties are duplicated in the referenced class using the name of the property, prefixed by the name of the original declaring class. For example:</P><DIR>

</FONT><FONT FACE="Courier New" SIZE=1><P>class CIM_System:CIM_LogicalElement<BR>
{<BR>
        [Key]<BR>
    string Name;<BR>
};</P>

<P>class CIM_LogicalDevice: CIM_LogicalElement<BR>
{<BR>
     [Key]<BR>
    string DeviceID;<BR>
        [Key, Propagated("CIM_System.Name")]<BR>
    string SystemName;<BR>
};<BR>
    [Association]<BR>
class CIM_SystemDevice: CIM_SystemComponent<BR>
{<BR>
        [Override ("GroupComponent"), Aggregate, Min(1), Max(1)]<BR>
    CIM_System Ref GroupComponent;<BR>
        [Override ("PartComponent"), Weak]<BR>
    CIM_LogicalDevice Ref PartComponent;<BR>
};</P></DIR>
</DIR>
</DIR>

<OL>
<OL>

<LI><A NAME="_Toc453584984"></FONT><B><FONT SIZE=4>Association Declarations</A></LI>
</B></FONT><FONT SIZE=3><P>An association is a special kind of a class describing a link between other classes. As such, they also provide a type system for instance constructions. Associations are just like other classes with a few additional semantics explained below.</P>
<OL>

<LI><A NAME="_Toc453584985"></FONT><B><I>Declaring an Association</A></LI></OL>
</OL>
</OL>
<DIR>
<DIR>

</B></I><FONT SIZE=3><P>An association is declared by specifying these components:</P></DIR>
</DIR>

<OL>

<OL>

<LI>The qualifiers of the association (at least the ASSOCIATION qualifier, if it doesn't have a supertype). Further qualifiers may be specified as a list of qualifier/name bindings separated by commas ",". The entire qualifier list is enclosed in square brackets ("[" and "]").</LI>
<LI>. The association name.</LI>
<LI> The name of the association from which this association is derived (if any).</LI>
<LI>The association references which define pointers to other objects linked by this association. References may also have qualifier lists, expressed in the same way as the association qualifier list. Especially the qualifiers to specify cardinalities of references are important to be mentioned (see2.5.2. "Standard Qualifiers"). In addition, a reference has a data type, and (optionally) a default (initializer) value.</LI>
<LI>Additional association properties which define further data members of this association. They are defined in the same way as for ordinary classes.</LI>
<LI>The methods supported by the association. They are defined in the same way as for ordinary classes.</LI></OL>
</OL>
<DIR>
<DIR>

<P>The following example shows how to declare an association (assuming given classes CIM_A and CIM_B):</P><DIR>

</FONT><FONT FACE="Courier New" SIZE=1><P>&nbsp;&nbsp;&nbsp; [Association]<BR>
class CIM_LinkBetweenAandB : CIM_Dependency<BR>
{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Override ("Antecedent")]<BR>
&nbsp;&nbsp;&nbsp; CIM_A Ref Antecedent;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Override ("Dependent")]<BR>
&nbsp;&nbsp;&nbsp; CIM_B Ref Dependent;<BR>
};</P></DIR>
</DIR>
</DIR>

<OL>
<OL>
<OL>

<LI><A NAME="_Toc453584986"></FONT><B><I>Subassociations</A></LI>
</B></I><FONT SIZE=3><P>To indicate that an association is a subassociation of another association, the same notation as for ordinary classes is used, i.e. the derived association is declared by using a colon followed by the superassociation name. (An example is provided above.) </P>
<LI><A NAME="_Toc453584987"></FONT><B><I>Key References and Properties</A></LI>
</B></I><FONT SIZE=3><P>Instances of an association also require some mechanism through which the instances can be distinguished, implied by the fact that they are just a special kind of a class. Designating one ore more references/properties with the reserved KEY qualifier provides instance identification.</P>
<P>A reference/property of an association is (part of) the association key if the KEY qualifier is applied.</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>&nbsp;&nbsp;&nbsp; [Association, Aggregation]<BR>
class CIM_Component<BR>
{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Aggregate, Key]<BR>
&nbsp;&nbsp;&nbsp; CIM_ManagedSystemElement Ref GroupComponent;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Key]<BR>
&nbsp;&nbsp;&nbsp; CIM_ManagedSystemElement Ref PartComponent;<BR>
};</P>
</FONT><FONT SIZE=3><P>In principle, the key definition of association follows the same rules as for ordinary classes. Compound keys are supported in the same way. Also a new subassociation <B>cannot</B> define any additional key properties/references.</P>
<P>If any reference to a class has the WEAK qualifier, the KEY-qualified properties of the other class, whose reference is not WEAK-qualified are propagated to the class. (see subchapter 4.5.5 "Key Properties").</P>
<LI><A NAME="_Toc453584988"></FONT><B><I>Object References</A></LI></OL>
</OL>
</OL>
<DIR>
<DIR>

</B></I><FONT SIZE=3><P>Object references are properties which are links or pointers to other objects (classes or instances). The value of an object reference is a string, which represents a path to another object. The path includes:</P></DIR>
</DIR>

<OL>

<OL>

<LI>The namespace in which the object resides. </LI>
<LI>The class name of the object.</LI>
<LI>If the object represents an instance, the values of all key properties for that instance.</LI></OL>
</OL>
<DIR>
<DIR>

<P>Object reference properties are declared by "XXX ref", indicating a strongly typed reference to objects of the class with name "XXX" (or a derived class thereof). For example:</P><DIR>

</FONT><FONT FACE="Courier New" SIZE=1><P>&nbsp;&nbsp;&nbsp; [Association]<BR>
class Acme_ExampleAssoc<BR>
{<BR>
&nbsp;&nbsp;&nbsp; Acme_AnotherClass ref Inst1;<BR>
&nbsp;&nbsp;&nbsp; Acme_Aclass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ref Inst2;<BR>
};</P></DIR>

</FONT><FONT SIZE=3><P>In the above declaration, Inst1 can only be set to point to objects of type Acme_AnotherClass. Also see Section 4.12.2on Initializing References Using Aliases.</P>
<P>In associations, object references have cardinalities - denoted using Min and Max qualifiers. Here are examples of UML cardinality notations and their respective combinations of Min and Max values:</P></DIR>
</DIR>
</FONT>
<P ALIGN="CENTER"><CENTER><TABLE BORDER CELLSPACING=2 BORDERCOLOR="#008000" CELLPADDING=7 WIDTH=475>
<TR><TD WIDTH="19%" VALIGN="TOP">
<B><FONT SIZE=3><P>UML</B></FONT></TD>
<TD WIDTH="11%" VALIGN="TOP">
<B><FONT SIZE=3><P>MIN</B></FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<B><FONT SIZE=3><P>MAX</B></FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<B><FONT SIZE=3><P>Required MOF Text*</B></FONT></TD>
<TD WIDTH="21%" VALIGN="TOP">
<B><FONT SIZE=3><P>Description</B></FONT></TD>
</TR>
<TR><TD WIDTH="19%" VALIGN="TOP">
<FONT SIZE=3><P>*</FONT></TD>
<TD WIDTH="11%" VALIGN="TOP">
<FONT SIZE=3><P>0</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=3><P>NULL</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="21%" VALIGN="TOP">
<FONT SIZE=3><P>Many</FONT></TD>
</TR>
<TR><TD WIDTH="19%" VALIGN="TOP">
<FONT SIZE=3><P>1..*</FONT></TD>
<TD WIDTH="11%" VALIGN="TOP">
<FONT SIZE=3><P>1</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=3><P>NULL</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=3><P>Min(1)</FONT></TD>
<TD WIDTH="21%" VALIGN="TOP">
<FONT SIZE=3><P>At least one</FONT></TD>
</TR>
<TR><TD WIDTH="19%" VALIGN="TOP">
<FONT SIZE=3><P>1</FONT></TD>
<TD WIDTH="11%" VALIGN="TOP">
<FONT SIZE=3><P>1</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=3><P>1</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=3><P>Min(1), Max(1)</FONT></TD>
<TD WIDTH="21%" VALIGN="TOP">
<FONT SIZE=3><P>One</FONT></TD>
</TR>
<TR><TD WIDTH="19%" VALIGN="TOP">
<FONT SIZE=3><P>0,1 (or 0..1)</FONT></TD>
<TD WIDTH="11%" VALIGN="TOP">
<FONT SIZE=3><P>0</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP">
<FONT SIZE=3><P>1</FONT></TD>
<TD WIDTH="36%" VALIGN="TOP">
<FONT SIZE=3><P>Max(1)</FONT></TD>
<TD WIDTH="21%" VALIGN="TOP">
<FONT SIZE=3><P>At most one</FONT></TD>
</TR>
</TABLE>
</CENTER></P>

<FONT SIZE=3><P>&nbsp;</P>
<OL>
<OL>

<LI><A NAME="_Toc404410891"><A NAME="_Toc381332542"><A NAME="_Toc382055175"><A NAME="_Toc453584989"></FONT><B><FONT SIZE=4>Qualifier Declarations</A></A></LI>
</B></FONT><FONT SIZE=3><P>Qualifiers may be declared using the keyword &quot;qualifier&quot;. The declaration of a qualifier allows the definition of types, default values, propagation rules (also known as Flavors), and restrictions on use. </P>
<P>The default value for a declared qualifier is used when the qualifier is not explicitly specified for a given schema element (explicit specification includes when the qualifier specification is inherited).</P>
<P>The MOF syntax allows specifying a qualifier without an explicit value.  In this case, the assumed value depends on the qualifier type:  booleans are true, numeric types are null, strings are null and arrays are empty.</P>
<P>For example, the alias qualifier is declared as follows:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>qualifier alias :string = null, scope (property, reference, method);</P>
</FONT><FONT SIZE=3><P>This declaration establishes a qualifier called alias. The type of the qualifier is string. It has a default value of null and may only be used with properties, references and methods.</P>
<P>  The meta qualifiers are declared as:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>Qualifier Association : boolean = false, </P>
<P>    Scope(class, association), Flavor(DisableOverride);</P>

<P>Qualifier Indication : boolean = false, </P>
<P>    Scope( class, indication), Flavor(DisableOverride);<BR>
</P>
</FONT><FONT SIZE=3><P>See Appendix B for the complete list of standard qualifiers.</P>
<LI><A NAME="_Toc404410892"><A NAME="_Toc453584990"></FONT><B><FONT SIZE=4>Instance Declarations</A></A></A></A></LI></OL>
</OL>
<DIR>
<DIR>

</B></FONT><FONT SIZE=3><P>Instances are declared using the keyword sequence "instance of" and the class name. The properties of the instance may be initialized within an initialization block.</P>
<P>Property initialization consists of an optional list of preceding qualifiers (which must be compatible with the qualifiers declared in the class definition), the name of the property and an optional value. Any properties not initialized will have default values as specified in the class definition, or (if no default value has been specified) the special value NULL to indicate "absence of value". For example, given the class definition:</P><DIR>

</FONT><FONT FACE="Courier New" SIZE=1><P>class Acme_LogicalDisk: CIM_Partition<BR>
{<BR>
 &#9;&#9;[key]<BR>
    string DriveLetter;<BR>
  &#9;&#9;[Units(&quot;kilo bytes&quot;)]<BR>
    sint32 RawCapacity = 128000;<BR>
  &#9;&#9;[write]</P>
<P>    string VolumeLabel;<BR>
  &#9;&#9;[Units(&quot;kilo bytes&quot;)]<BR>
    sint32 FreeSpace;<BR>
};</P></DIR>

</FONT><FONT SIZE=3><P>an instance of the above class might be declared as:</P><DIR>

</FONT><FONT FACE="Courier New" SIZE=1><P>instance of Acme_LogicalDisk<BR>
{<BR>
    DriveLetter = "C";<BR>
    VolumeLabel = "myvol";<BR>
};</P></DIR>

</FONT><FONT SIZE=3><P>The resulting instance would take these property values:</P></DIR>
</DIR>

<OL>

<OL>

<LI>DriveLetter would be assigned the value "C".</LI>
<LI>RawCapacity would be assigned the default value 128000.</LI>
<LI>VolumeLabel would be assigned the value "myvol".</LI>
<LI>FreeSpace would be assigned the value NULL.</LI></OL>
</OL>
<DIR>
<DIR>

<P>For subclasses, all of the properties in the superclass must be initialized along with the properties in the subclass. Any properties not specifically assigned in the instance block will have either the default value for the property (if there is one), or else the value NULL (if there is not one).</P>
<P>The values of all key properties must be specified in order for an instance to be identified and created. There is no requirement to explicitly initialize other properties. See Section 4.11.6 on behavior when there is no property initialization.</P>
<P>Instances of Associations may also be defined. For example:</P><DIR>

</FONT><FONT FACE="Courier New" SIZE=1><P>instance of CIM_ServiceSAPDependency<BR>
{<BR>
    Dependent = "CIM_Service.Name = \"mail\"";<BR>
    Antecedent = "CIM_ServiceAccessPoint.Name = \"PostOffice\"";<BR>
};<BR>
</P></DIR>
</DIR>
</DIR>

<OL>
<OL>
<OL>

<LI><A NAME="_Ref374864011"><A NAME="_Toc381332544"><A NAME="_Toc382055177"><A NAME="_Toc404410893"><A NAME="_Toc453584991"></FONT><B><I>Instance Aliasing</A></A></A></A></A></LI>
</B></I><FONT SIZE=3><P>An alias can be assigned to an instance using this syntax:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>instance of Acme_LogicalDisk as $Disk<BR>
{<BR>
  // Body of instance definition here ...<BR>
};</P>
</FONT><FONT SIZE=3><P>Such an alias can later be used within the same MOF specification as a value for an object reference property. For more information, see Section4.12.2 Initializing References using Aliases<I>.</P>
</I><LI><A NAME="_Toc381332550"><A NAME="_Toc382055183"><A NAME="_Toc404410895"><A NAME="_Ref412616964"><A NAME="_Toc453584992"></FONT><B><I>Arrays</A></A></A></A></A></LI></OL>
</OL>
</OL>
<DIR>
<DIR>

</B></I><FONT SIZE=3><P>Arrays of any of the basic data types can be declared in the MOF specification by using square brackets after the property identifier. Fixed-length arrays indicate their length as an unsigned integer constant within the square brackets; otherwise, the array is assumed to be variable length. Arrays can be bags, ordered lists or indexed arrays.  An array's type is defined by the ARRAYTYPE qualifier, whose values are "Bag", "Ordered" or "Indexed". The default array type is "Bag". Regarding each of the array types:</P></DIR>
</DIR>


<UL>

<UL>
<LI>An array of type "Bag" is unordered and multi-valued, allowing duplicate entries. </LI>
<LI>An ordered list ("Ordered") is a special case of a bag, which is multi-valued and allows duplicate entries. It returns the property values in an implementation dependent, but fixed order. </LI>
<LI>An indexed array ("Indexed") maintains the order of the elements, and could be implemented based on an integer index for each of the array values. </LI></UL>
</UL>
<DIR>
<DIR>

<P>Note that for the "Bag" array type, no significance is defined for the array index other than a convenience for accessing the elements of the array. For example, there can be no assumption that the same index will return the same value for every access to the array. The only assumption is that a complete enumeration of the indices will return a complete set of values.</P>
<P>For the "Ordered" array type, the array index is significant as long as no array elements are added, deleted or changed. In this case the same index will return the same value for every access to the array. If an element is added, deleted or changed, the index of the elements might change according to the implementation-specific ordering algorithm.</P>
<P>The "Indexed" array maintains the correspondence between element position and value. Array elements can be overwritten, but not deleted. Indexes start at 0 and have no gaps.</P>
<P>The current release of CIM does not support n-dimensional arrays.</P>
<P>Arrays of any basic data type are legal. Arrays of references are not legal.  Arrays must be homogeneous. Arrays of mixed types are not supported. In MOF, the data type of an array precedes the array name. Array size, if fixed length, is declared within square brackets, following the array name. If a variable length array is to be defined, empty square brackets follow the array name. </P>
<P>Arrays are declared using this MOF syntax:</P><DIR>

</FONT><FONT FACE="Courier New" SIZE=1><P>class A</P>
<P>{</P>
<P>    [Description("An indexed array of variable length"), ArrayType("Indexed")]</P>
<P>    uint8 MyIndexedArray[];</P>

<P>    [Description("A bag array of fixed length")]</P>
<P>    uint8 MyBagArray[17];</P>
<P>};</P></DIR>

</FONT><FONT SIZE=3><P>If default values are to be provided for the array elements, this syntax is used:</P><DIR>

</FONT><FONT FACE="Courier New" SIZE=1><P>class A</P>
<P>{</P>
<P>    [Description("A bag array property of fixed length")]</P>
<P>    uint8 MyBagArray[17] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17};</P>
<P>};</P></DIR>

</FONT><FONT SIZE=3><P>This MOF presents further examples of "Bag", "Ordered" and "Indexed" array declarations:</P><DIR>

</FONT><FONT FACE="Courier New" SIZE=1><P>class Acme_Example</P>
<P>{</P>
<P>    char16 Prop1[];         // Bag (default) array of chars, Variable length</P>

<P>    [ArrayType ("Ordered")] // Ordered array of double-precision reals,</P>
<P>    real64 Prop2[];         // Variable length </P>

<P>    [ArrayType ("Bag")]     // Bag array containing 4 32-bit signed integers</P>
<P>    sint32 Prop3[4]; </P>

<P>    [ArrayType ("Ordered")] // Ordered array of strings, Variable length</P>
<P>    string Prop4[] = {"an", "ordered", "list"};</P>

<P>        // Prop4 is variable length with default values defined at the </P>
<P>        // first three positions in the array</P>

<P>    [ArrayType ("Indexed")] // Indexed array of 64-bit unsigned integers </P>
<P>    uint64 Prop5[];</P>
<P>};</P></DIR>
</DIR>
</DIR>

<OL>
<OL>

<LI><A NAME="_Toc381332551"><A NAME="_Toc382055184"><A NAME="_Toc404410896"><A NAME="_Toc453584993"></FONT><B><FONT SIZE=4>Method Declarations</A></A></A></A></LI>
</B></FONT><FONT SIZE=3><P>A method is defined as an operation together with its signature. The signature consists of a possibly empty list of parameters and a return type.  There are no restrictions on the type of parameters other than they <B>must</B> be one of the data types described in Section 2.2, a fixed or variable length array of one of those types, or be an object reference.  Return types <B>must</B> be one of the data types described in Section 2.2.  Return types cannot be arrays, but otherwise are unrestricted. Syntactically, the only thing that distinguishes a method from a property is the parameter list. The fact that methods are expected to have side-effects is outside the scope of this specification.</P>
<P>In this example, Start and Stop methods are defined on the Service class.  Each method returns an integer value:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>class CIM_Service:CIM_LogicalElement<BR>
{<BR>
      [Key]<BR>
    string Name;<BR>
    string StartMode;<BR>
    boolean Started;<BR>
    uint32 StartService();<BR>
    uint32 StopService();<BR>
};</P>
</FONT><FONT SIZE=3><P>In this example, a Configure method is defined on the Physical DiskDrive class. It takes a DiskPartitionConfiguration object reference as a parameter, and returns a boolean value.</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>class Acme_DiskDrive:CIM_Media<BR>
{<BR>
&#9;sint32 BytesPerSector;<BR>
&#9;sint32 Partitions;<BR>
&#9;sint32 TracksPerCylinder;<BR>
&#9;sint32 SectorsPerTrack;<BR>
&#9;string TotalCylinders;<BR>
&#9;string TotalTracks;<BR>
&#9;string TotalSectors;<BR>
&#9;string InterfaceType;</P>
<P>&#9;boolean Configure([IN] DiskPartitionConfiguration REF config);<BR>
};</P>
<LI><A NAME="_Toc381332552"><A NAME="_Toc382055185"><A NAME="_Toc404410897"><A NAME="_Toc453584994"></FONT><B><FONT SIZE=4>Compiler Directives</A></A></A></A></LI>
</B></FONT><FONT SIZE=3><P><A NAME="_Ref374863290"><A NAME="_Toc381332553"><A NAME="_Toc382055186"><A NAME="_Toc404410898">Compiler directives are provided as the keyword "pragma", preceded by a hash ('#') character, and followed by a string parameter.</P>
<P>The current standard compiler directives are:</P></FONT>
<P ALIGN="RIGHT"><TABLE BORDER CELLSPACING=1 CELLPADDING=7 WIDTH=516>
<TR><TD WIDTH="35%" VALIGN="TOP">
<B><FONT SIZE=1><P>compiler Directive</B></FONT></TD>
<TD WIDTH="65%" VALIGN="TOP">
<B><FONT SIZE=1><P>Interpretation</B></FONT></TD>
</TR>
<TR><TD WIDTH="35%" VALIGN="TOP">
<FONT SIZE=1><P>#pragma include() </FONT></TD>
<TD WIDTH="65%" VALIGN="TOP">
<FONT SIZE=1><P>Has a file name as a parameter. The file is assumed to be a MOF file. The pragma has the effect of textually inserting the contents of the include file at the point where the include pragma is encountered.</FONT></TD>
</TR>
<TR><TD WIDTH="35%" VALIGN="TOP">
<FONT SIZE=1><P>#pragma instancelocale()</FONT></TD>
<TD WIDTH="65%" VALIGN="TOP">
<FONT SIZE=1><P>Declares the locale used for instances described in a MOF file.  This pragma specifies the locale when "INSTANCE OF" MOF statements include string or char16 properties, and the locale is not the same as the locale specified by a #pragma locale() statement. The locale is specified as a parameter of the form ll_cc where ll is the language code based on ISO/IEC 639, and cc is the country code based on ISO/IEC 3166.</FONT></TD>
</TR>
<TR><TD WIDTH="35%" VALIGN="TOP">
<FONT SIZE=1><P>#pragma locale()</FONT></TD>
<TD WIDTH="65%" VALIGN="TOP">
<FONT SIZE=1><P>Declares the locale used for a particular MOF file. The locale is specified as a parameter of the form ll_cc, where ll is the language code based on ISO/IEC 639, and cc is the country code based on ISO/IEC 3166. When the pragma is not specified, the assumed locale is "en_US".</P>
<P>It is important to note that this pragma does not apply to the syntax structures of MOF.  Keywords, such as "class" and "instance", are always in en_US.</FONT></TD>
</TR>
<TR><TD WIDTH="35%" VALIGN="TOP">
<FONT SIZE=1><P>#pragma namespace( ) </FONT></TD>
<TD WIDTH="65%" VALIGN="TOP">
<FONT SIZE=1><P>This pragma is used to specify a Namespace path.  The syntax needs to conform to the following: &lt;namespacetype&gt;://&lt;namespacehandle&gt;</FONT></TD>
</TR>
<TR><TD WIDTH="35%" VALIGN="TOP">
<FONT SIZE=1><P>#pragma nonlocal() </FONT></TD>
<TD WIDTH="65%" VALIGN="TOP">
<FONT SIZE=1><P>See the description of the NonLocal qualifier for an explanation of this pragma.<B>Usage Rule:</B> Cannot be used with NonLocalType pragma.</FONT></TD>
</TR>
<TR><TD WIDTH="35%" VALIGN="TOP">
<FONT SIZE=1><P>#pragma nonlocaltype()</FONT></TD>
<TD WIDTH="65%" VALIGN="TOP">
<FONT SIZE=1><P>See the description of the NonLocalType qualifier for an explanation of this pragma.&nbsp;<B>Usage Rule:</B> Cannot be used with NonLocal pragma</FONT></TD>
</TR>
<TR><TD WIDTH="35%" VALIGN="TOP">
<FONT SIZE=1><P>#pragma source() </FONT></TD>
<TD WIDTH="65%" VALIGN="TOP">
<FONT SIZE=1><P>See the description of the Source qualifier for an explanation of this pragma.&nbsp;<B>Usage Rule:</B> Cannot be used with sourcetype pragma</FONT></TD>
</TR>
<TR><TD WIDTH="35%" VALIGN="TOP">
<FONT SIZE=1><P>#pragma sourcetype()</FONT></TD>
<TD WIDTH="65%" VALIGN="TOP">
<FONT SIZE=1><P>See the description of the SourceType qualifier for an explanation of this pragma.<B>Usage Rule:</B> Cannot be used with source pragma.</FONT></TD>
</TR>
</TABLE>
</P>

<FONT SIZE=3><P>Additional pragma directives may be added as a MOF extension mechanism.  Unless standardized in a future CIM specification, such new pragma definitions must be considered vendor-specific.  Use of non-standard pragmas will affect interoperability of MOF import and export functions.</P>
<P>When a qualifier value is derived from either a qualifier or a pragma, the qualifier overrides the pragma. </P>
<LI><A NAME="_Toc453584995"></FONT><B><FONT SIZE=4>Value Constants</A></A></A></A></A></LI>
</B></FONT><FONT SIZE=3><P>The constant types supported in the MOF syntax are described in the subsections that follow. These are used in initializers for classes and instances, and in the parameters to named qualifiers.</P>
<P>A formal specification of the representation is found in Appendix A, MOF Syntax Grammar Description.</P>
<OL>

<LI><A NAME="_Ref374863075"><A NAME="_Ref374863078"><A NAME="_Toc381332554"><A NAME="_Toc382055187"><A NAME="_Toc404410899"><A NAME="_Toc453584996"></FONT><B><I>String Constants</A></A></A></A></A></A></LI>
</B></I><FONT SIZE=3><P>A string constant is a sequence of zero or more UCS-2 characters enclosed in double-quotes ("). A double-quote is allowed within the value, as long as it is preceded immediately by a  backslash (\). </P>
<P>For example:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>"This is a string"</P>
</FONT><FONT SIZE=3><P>Successive quoted strings are concatenated, as long as only white space or a comment intervenes:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>"This"  " becomes a long string"</P>
<P>"This" /* comment */ " becomes a long string"</P>
</FONT><FONT SIZE=3><P>The escape sequences such as </FONT><FONT FACE="Courier New" SIZE=1>\n, \t</FONT><FONT SIZE=3> and </FONT><FONT FACE="Courier New" SIZE=1>\r</FONT><FONT SIZE=3> are recognized as legal characters within a string. The complete set is:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>\b&#9;&#9;// \x0008: backspace BS</P>
<P>\t&#9;&#9;// \x0009: horizontal tab HT</P>
<P>\n&#9;&#9;// \x000A: linefeed LF</P>
<P>\f&#9;&#9;// \x000C: form feed FF</P>
<P>\r&#9;&#9;// \x000D: carriage return CR</P>
<P>\"&#9;&#9;// \x0022: double quote "</P>
<P>\' &#9;// \x0027: single quote '</P>
<P>\\ &#9;// \x005C: backslash \</P>
<P>\x&lt;hex&gt;&#9;// where &lt;hex&gt; is one to four hex digits</P>
<P>\X&lt;hex&gt;&#9;// where &lt;hex&gt; is one to four hex digits </P>
</FONT><FONT SIZE=3><P>The character set of the string depends on the character set supported by the local installation. While the MOF specification may be submitted in UCS-2 form [10], the local implementation may only support ANSI and vice-versa. Therefore, the string type is unspecified and dependent on the character set of the MOF specification itself. If a MOF specification is submitted using UCS-2 characters outside of the normal ASCII range, then the implementation may have to convert these characters to the locally-equivalent character set.</P>
<LI><A NAME="_Toc382055188"><A NAME="_Ref374863137"><A NAME="_Toc381332555"><A NAME="_Toc404410900"><A NAME="_Toc453584997"></FONT><B><I>Character Constants</A></A></A></A></A></LI>
</B></I><FONT SIZE=3><P>Character and wide-character constants are specified as.</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>'a'</P>
<P>'\n'</P>
<P>'1'</P>
<P>'\x32'</P>
</FONT><FONT SIZE=3><P>Note: Forms such as octal escape sequences (e.g. ‘\020’) are not supported.</P>
<P>Integer values can also be used as character constants, as long as they are within the numeric range of the character type. For example, wide-character constants must fall within the range 0 to 0xFFFF. </P>
<LI><A NAME="_Toc381332556"><A NAME="_Toc382055189"><A NAME="_Toc404410901"><A NAME="_Toc453584998"></FONT><B><I>Integral Constants</A></A></A></A></LI>
</B></I><FONT SIZE=3><P>Integer constants may be decimal, binary, octal or hexadecimal. </P>
<P>For example, these are all legal:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>1000</P>
<P>-12310</P>
<P>0x100</P>
<P>01236</P>
<P>100101B</P>
</FONT><FONT SIZE=3><P>Note that binary constants have a series of 1 and 0 digits, with a "b" or "B" suffix to indicate that the value is binary.</P>
<P>The number of digits permitted depends on the current type of the expression. For example, it is not legal to assign the constant 0xFFFF to a property of type uint8<I>.</P>
<LI><A NAME="_Toc381332557"><A NAME="_Toc382055190"><A NAME="_Toc404410902"><A NAME="_Toc453584999"></FONT><B>Floating-Point Constants</A></A></A></A></LI>
</B></I><FONT SIZE=3><P>Floating point constants are declared as specified by IEEE in Ref. [6].</P>
<P>For example, these are legal:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>3.14</P>
<P>-3.14</P>
<P>-1.2778E+02</P>
</FONT><FONT SIZE=3><P>The range for floating point constants depends on whether float<I> </I>or double<I> </I>properties are used and must fit within the range specified for IEEE 4-byte and 8-byte<I> </I>floating point values, respectively.</P>
<B><LI><A NAME="_Toc381332558"><A NAME="_Toc382055191"><A NAME="_Toc404410903"><A NAME="_Toc453585000"></FONT><I>Object Ref Constants</A></A></A></A></LI>
</B></I><FONT SIZE=3><P>Object references are simple URL-style links to other objects (which may be classes or instances). They take the form of a quoted string containing an object path. The object path is a combination of a namespace path and the model path.</P>
<P>For example:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>"//./root/default:LogicalDisk.SystemName=\"acme\",LogicalDisk.Drive=\"C\""</P>
<P>"//./root/default:NetworkCard=2"</P>
</FONT><FONT SIZE=3><P>An object reference can also be an alias. See Section 4.12.2 for more details.</P>
<LI><A NAME="_Ref373498207"><A NAME="_Toc381332559"><A NAME="_Toc382055192"><A NAME="_Toc404410904"><A NAME="_Toc453585001"></FONT><B><I>NULL</A></A></A></A></A></LI></OL>

</B></I><FONT SIZE=3><P>All types can be initialized to the predefined constant NULL, which indicates no value has been provided. The details of the internal implementation of the NULL value are not mandated by this document.</P>
<LI><A NAME="_Toc381332560"><A NAME="_Toc382055193"><A NAME="_Toc404410905"><A NAME="_Toc453585002"></FONT><B><FONT SIZE=4>Initializers</A></A></A></A></LI>
</B></FONT><FONT SIZE=3><P>Initializers are used both in class declarations for default values and instance declarations to initialize a property to a value. The format of initializer values is specified in Section 2 and its subsections.</P>
<P>The initializer value <B>must</B> match the property data type.  The only exceptions are the NULL value, which may be used for any data type, and integral values, used for characters.</P>
<OL>

<LI><A NAME="_Toc381332561"><A NAME="_Toc382055194"><A NAME="_Toc404410906"><A NAME="_Toc453585003"></FONT><B><I>Initializing Arrays</A></A></A></A></LI>
</B></I><FONT SIZE=3><P>Arrays can be defined to be of type, "Bag", "Ordered" or "Indexed", and can be initialized by specifying their values in a comma-separated list (as in the C programming language).  The list of array elements is delimited with curly brackets. </P>
<P>For example, given this class definition:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>class Acme_ExampleClass </P>
<P>{</P>
<P>    [ArrayType ("Indexed")]</P>
<P>    string ip_addresses [];    // Indexed array of variable length</P>
<P>    sint32 sint32_values [10]; // Bag array of fixed length = 10</P>
<P>};</P>
</FONT><FONT SIZE=3><P>this is a valid instance declaration:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>instance of Acme_ExampleClass</P>
<P>{</P>
<P>    ip_addresses = { "1.2.3.4", "1.2.3.5", "1.2.3.7" };</P>

<P>        // ip_address is an indexed array of at least 3 elements, where </P>
<P>        // values have been assigned to the first three elements of the</P>
<P>        // array</P>

<P>    sint32_values = { 1, 2, 3, 5, 6 };</P>
<P>};</P>
</FONT><FONT SIZE=3><P>Refer to Section 4.8.2 for additional information on declaring arrays, and the distinctions between bags, ordered arrays and indexed arrays.</P>
<LI><A NAME="_Ref371317877"><A NAME="_Toc381332562"><A NAME="_Toc382055195"><A NAME="_Toc404410907"><A NAME="_Toc453585004"></FONT><B><I>Initializing References Using Aliases</A></A></A></A></A></LI></OL>
</OL>
</OL>
<DIR>
<DIR>

</B></I><FONT SIZE=3><P>Aliases are symbolic references to an object located elsewhere in the MOF specification. They only have significance within the MOF specification in which they are defined, and are only used at compile time to facilitate establishment of references. They are not available outside of the MOF specification.</P>
<P>Classes and instances may be assigned an alias as described in Section 4.8.1.  Aliases are identifiers which begin with the $ symbol. When a subsequent reference to that instance is required for an object reference property, the identifier is used in place of an explicit initializer.</P>
<P>Assuming that $Alias1 and $Alias2 have been declared as aliases for instances, and the obref1 and obref2 properties are object references, this example shows how the object references could be assigned to point to the aliased instances:</P><DIR>

</FONT><FONT FACE="Courier New" SIZE=1><P>instance of Acme_AnAssociation<BR>
{<BR>
    strVal = "ABC";<BR>
    obref1 = $Alias1;</P>
<P>    obref2 = $Alias2;<BR>
};</P></DIR>

</FONT><FONT SIZE=3><P>Forward-referencing and circular aliases are permitted.</P></DIR>
</DIR>

<OL>

<LI><A NAME="_Toc404410908"></LI>
</FONT><B><FONT SIZE=5><LI><A NAME="_Ref411739983"><A NAME="_Ref411740039"><A NAME="_Ref411740083"><A NAME="_Ref411740095"><A NAME="_Toc453585005">Naming</A></A></A></A></A></A></LI></OL>
<DIR>
<DIR>

</B></FONT><FONT SIZE=3><P>Because CIM is not bound to a particular technology or implementation, it promises to facilitate sharing management information between a variety of management platforms.  The CIM Naming mechanism was defined to address enterprise-wide identification of objects, as well as the sharing of management information.</P>
<P>CIM Naming addresses these requirements:</P></DIR>
</DIR>

<OL>

<OL>

<LI>Ability to locate and uniquely identify any object in an enterprise</LI></OL>
</OL>


<UL>

<UL>
<LI>Unambiguous enumeration of all objects</LI>
<LI>Ability to determine when two object names reference the same entity</LI>
<LI>Location transparency (no need to understand which management platforms proxy other platforms’ instrumentation)</LI></UL>
</UL>

<OL>

<OL>

<LI>Allow sharing of objects and instance data among management platforms</LI></OL>
</OL>


<UL>

<UL>
<LI>Allow creation of different scoping hierarchies  which vary by &quot;time&quot; (for example, a &quot;current&quot; vs. &quot;proposed&quot;  scoping  hierarchy)</LI></UL>
</UL>

<OL>

<OL>

<LI>Facilitate move operations between object trees (including within a single management platform)</LI></OL>
</OL>


<UL>

<UL>
<LI>Hide underlying management technology/provide technology transparency for the domain-mapping environment</LI>
<LI>Object name identifiable regardless of instrumentation technology </LI>
<LI>Allowing different names for DMI vs. SNMP objects requires the management platform to understand how the underlying objects are implemented</LI></UL>
</UL>
<DIR>
<DIR>

<P>The Key qualifier is the CIM Meta-Model mechanism used to identify the properties that uniquely identify an instance of a class (and indirectly an instance of an association). CIM Naming enhances this base capability by:</P></DIR>
</DIR>


<UL>

<UL>
<LI>introducing the Weak and Propogated qualifiers to express situations in which the keys of one object are to be propagated to another object.</LI>
<LI>introducing the Source pragma and qualifier (&quot;namespacetype://namespace_handle&quot;) to allow details about the implementation source to be recorded in a MOF file. </LI>
<LI>introducing the NonLocal qualifier (&quot;namespacetype://namespace_handle&quot;) to reference an object instance kept in another implementation. </LI></UL>
</UL>

<OL>
<OL>

<LI><A NAME="_Toc401008281"><A NAME="_Toc404410909"><A NAME="_Toc453585006"></FONT><B><FONT SIZE=4>Back</A>ground</A></A></LI></OL>
</OL>
<DIR>
<DIR>

</B></FONT><FONT SIZE=3><P>CIM MOF files can contain definitions of instances, classes or both, as illustrated in this diagram:</P>
</FONT><FONT SIZE=2></DIR>
</DIR>

<P ALIGN="CENTER"><IMG SRC="Image7.gif" WIDTH=411 HEIGHT=261></P><DIR>
<DIR>

<I><P ALIGN="CENTER"><A NAME="_Toc453585043">Figure -1 Definitions of instances and classes</A></P>
</I></FONT><FONT SIZE=3><P>MOF files can be used to populate a technology that understands the semantics and structure of CIM. When a MOF file is consumed by a particular implementation, there are two operations that are actually being performed, depending on the file’s content. First, a compile or definition operation is performed to establish the structure of the model. Second, an import operation is performed to insert instances into the platform or tool. </P>
<P>Once the compile and import are completed, the actual instances are manipulated using the native capabilities of the platform or tool. In other words, in order to manipulate an object (for example, change the value of a property), one must know the type of platform the information was imported into, the APIs or operations used to access the imported information, and the name of the platform instance that was actually imported. For example, the semantics become: </P>
<P>Set the Version property of the Logical Element object with Name=&quot;Cool&quot; in the relational database named LastWeeksData to &quot;1.4.0&quot;. </P>
<P>The contents of a MOF file are loaded into a namespace that provides a domain (in other words, a container), in which the instances of the classes are guaranteed to be unique per the KEY qualifier definitions.  The term namespace is used to refer to an implementation that provides such a domain.</P>
<P>Namespaces can be used to:</P></DIR>
</DIR>


<UL>

<UL>
<LI>Define chunks of management information (objects and associations) to limit implementation resource requirements, such as database size.</LI>
<LI>Define views on the model for applications managing only specific objects, such as hubs.</LI>
<LI>Pre-structure groups of objects for optimized query speed.</LI></UL>
</UL>
<DIR>
<DIR>

<P>Another viable operation is exporting from a particular management platform. Essentially, this operation creates a MOF file for all or some portion of the information content of a platform. </P></DIR>
</DIR>

</FONT><FONT SIZE=2><P ALIGN="CENTER"><IMG SRC="Image8.gif" WIDTH=501 HEIGHT=669></P><DIR>
<DIR>

<I><P ALIGN="CENTER"><A NAME="_Toc453585044">Figure -2 Exporting to MOF</A></P>
</I></FONT><FONT SIZE=3><P>For example, information is exchanged when the source system is of type Mgmt_X and its name is EastCoast. The export produces a MOF file with the circle and triangle definitions and instances 1, 3, 5 of the circle class and instances 2, 4 of the triangle class. This MOF file is then compiled and imported into the management platform of type Mgmt_ABC with the name AllCoasts.</P></DIR>
</DIR>

</FONT><FONT SIZE=2><P ALIGN="CENTER"><IMG SRC="Image9.gif" WIDTH=479 HEIGHT=359></P><DIR>
<DIR>

<I><P ALIGN="CENTER"><A NAME="_Toc453585045">Figure -3 Information Exchange</A></P>
</I></FONT><FONT SIZE=3><P>The import operation involves storing the information in a local or native format of  Mgmt_ABC so its native operations can be used to manipulate the instances. The transformation to a native format is shown in the figure by wrapping the five instances in hexagons. The transformation process must maintain the original keys. </P></DIR>
</DIR>

<OL>
<OL>
<OL>

<LI><A NAME="_Toc397084531"><A NAME="_Toc401008282"><A NAME="_Toc404410910"><A NAME="_Toc453585007"></FONT><B><I>Management Tool Responsibility for an Export Operation</A></A></A></A></LI>
</B></I><FONT SIZE=3><P>The management tool must be able to create unique key values for each distinct object it places in the MOF file.</P>
<P>For each instance placed in the MOF file, the management tool must maintain a mapping from the MOF file keys to the native key mechanism.</P>
<LI><A NAME="_Toc397084532"><A NAME="_Toc401008283"><A NAME="_Toc404410911"><A NAME="_Toc453585008"></FONT><B><I>Management Tool Responsibility for an Import Operation</A></A></A></A></LI></OL>
</OL>
</OL>
<DIR>
<DIR>

</B></I><FONT SIZE=3><P>The management tool must be able to map the unique keys found in the MOF file to a set of locally-understood keys.</P></DIR>
</DIR>

<OL>
<OL>

<LI><A NAME="_Ref397917127"><A NAME="_Toc401008284"><A NAME="_Toc404410912"><A NAME="_Toc453585009"></FONT><B><FONT SIZE=4>Weak Associations: Supporting Key Propagation</A></A></A></A></LI>
</B></FONT><FONT SIZE=3><P>CIM provides a mechanism to name instances within the context of other object instances. For example, if a management tool is handling a local system, then it can refer to the C drive or the D drive. However, if a management tool is handling multiple machines, it must refer to the C drive on machine X and the C drive on machine Y. In other words, the name of the drive must include the name of the hosting machine. CIM supports the notion of weak associations to specify this type of key propagation. </P>
<P>A weak association is defined using a qualifier.  For example:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>Qualifier Weak: boolean = false, Scope(reference), Flavor(DisableOverride);</P>
</FONT><FONT SIZE=3><P>The key(s) of the referenced class includes the key(s) of the other participants in the WEAK association. This situation occurs when the referenced class identity depends on the identity of other participants in the association.</P>
<P>Usage Rule: This qualifier can only be specified on one of the references defined for an association.  The Weak referenced object is the one that depends on the other object for identity.</P>
<P>This figure shows an example. There are three classes: ComputerSystem, OperatingSystem and Local User. The Operating System class is weak with respect to the Computer System class, since the runs association is marked weak. Similarly, the Local User class is weak with respect to the Operating System class, since the association is marked weak.</P>
</FONT><FONT SIZE=2><P ALIGN="CENTER"><IMG SRC="Image10.gif" WIDTH=478 HEIGHT=359></P>
<I><P ALIGN="CENTER"><A NAME="_Toc453585046">Figure -1 Example of Weak Association</A></P>
</I></FONT><FONT SIZE=3><P>In the context of a weak association definition, the Computer System class is a scoping class for the Operating System class, since its keys are propagated to the Operating System class. The Computer System and the Operating System classes are both scoping classes for the Local User class, since the Local User class gets keys from both. Finally, the Computer System is referred to as a Top Level Object  (TLO) because it is not weak with respect to any other class. The fact that a particular class is a top-level object is inferred because no references to that class are marked with the WEAK qualifier. In addition, Top Level Objects must have the possibility of an enterprise-wide, unique key. An example may be a computer’s IP address in a company’s enterprise-wide IP network. The goal of the TLO concept is to achieve uniqueness of keys in the model path portion of the object name. In order to come as close as possible to this goal, TLO must have relevance in an enterprise context. </P>
<P>Objects in the scope of another object can in turn be a scope for other objects; hence, all model object instances are arranged in directed graphs with the Top Level Object’s (TLO’s) as peer roots. The structure of this graph – in other words, which classes are in the scope of another given class – is defined as part of CIM by means of associations qualified with the WEAK qualifier. </P>
<OL>

<LI><A NAME="_Toc401008286"><A NAME="_Toc404410914"><A NAME="_Toc453585010"></FONT><B><I>Referencing Weak Objects</A></A></A></LI></OL>

</B></I><FONT SIZE=3><P>A reference to an instance of an association includes the propagated keys. The properties must have the propagated qualifier that identifies which class the property originates in and what the name of the property is in that class – for example</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>instance of Acme_has<BR>
{<BR>
    anOS = "Acme_OS.Name=\"acmeunit\",SystemName=\"UnixHost\"";<BR>
    aUser = "Acme_User.uid=33,OSName=\"acmeunit\",SystemName=\"UnixHost\"";<BR>
};</P>
<P>&nbsp;</P>
</FONT><FONT SIZE=3><P>The operating system being weak to system would be declared as:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>Class Acme_OS<BR>
{<BR>
        [key]<BR>
    String Name;<BR>
        [key, Propagated("CIM_System.Name")]<BR>
    String SystemName;<BR>
};</P>
</FONT><FONT SIZE=3><P>The user class being weak to operating system would be declared as:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>Class Acme_User<BR>
{<BR>
        [key]<BR>
    String uid;<BR>
        [key, Propagated("Acme_OS.Name")]<BR>
    String OSName;<BR>
        [key, Propagated("Acme_OS.SystemName")]<BR>
    String SystemName;<BR>
};</P>
<LI><A NAME="_Toc401008287"><A NAME="_Toc404410915"><A NAME="_Toc453585011"></FONT><B><FONT SIZE=4>Naming CIM Objects</A></A></A></LI>
</B></FONT><FONT SIZE=3><P>Since CIM allows for multiple implementations, it is not sufficient to think of the name of an object as just the combination of properties that have the KEY qualifier. The name must also identify the implementation that actually hosts the objects. The object name consists of the Namespace Path, which provides access to a CIM implementation, plus the Model Path, which provides full navigation within the CIM schema. The namespace path is used to locate a particular name space. The details of the namespace path are dependent on a particular implementation. The model path is the concatenation of the properties of a class that are qualified with the KEY qualifier. When the class is weak with respect to another class, the model path includes all key properties from the scoping objects. The following figure shows the various components of an object name. These are described in more details in the following sections.</P>
<P ALIGN="CENTER"><IMG SRC="Image11.gif" WIDTH=432 HEIGHT=216></P>
</FONT><I><FONT SIZE=2><P ALIGN="CENTER"><A NAME="_Toc453585047">Figure -1 Object Naming</A></P>
<OL>

<LI><A NAME="_Toc401008288"><A NAME="_Toc404410916"><A NAME="_Toc453585012"></FONT><B>Namespace Path</A></A></A></LI>
</B></I><FONT SIZE=3><P>A Namespace path references a namespace within an implementation that is capable of hosting CIM objects. </P>
<P>A Namespace path resolves to a namespace hosted by a CIM-Capable implementation (in other words, a CIM Object Manager). Unlike the Model Path, the details of the Namespace path are implementation-specific. Therefore, the Namespace path provides two pieces of information: it identifies the type of implementation or namespace type, and it provides a handle that references a particular implementation or namespace handle. </P>
<OL>

<LI><A NAME="_Toc401008289"></FONT><B>Namespace Type</A></LI>
</B><FONT SIZE=3><P>The namespace type classifies or identifies the type of implementation. The provider of such an implementation is responsible for describing the access protocol for that implementation. This is analogous to specifying http or ftp in a browser. </P>
<P>Fundamentally, a namespace type implies an access protocol or API set that can be used to manipulate objects. These APIs would typically support:  (1) generating a MOF file for a particular scope of classes and associations,  (2) importing a MOF file and (3) manipulating instances. A particular management platform may have a variety of ways to access management information. Each of these ways must have a namespace type definition. Given this type, there would be an assumed set of mechanisms for exporting, importing and updating instances. </P>
<LI><A NAME="_Toc401008290"><A NAME="_Ref413577842"></FONT><B>Namespace Handle</A></A></LI></OL>
</OL>
</OL>
</OL>
<DIR>
<DIR>

</B><FONT SIZE=3><P>The Namespace handle identifies a particular instance of the type of implementation. This handle must resolve to a namespace within an implementation.</P>
<P>The details of the handle are implementation-specific. It might be a simple string for an implementation that supports one namespace, or it might be a hierarchical structure if an implementation supports multiple namespaces. Either way, it resolves to a namespace. </P>
<P>It is important to note that some implementations can support multiple namespaces. In this case, the implementation-specific reference must resolve to a particular namespace within that implementation.</P></DIR>
</DIR>

</FONT><FONT SIZE=2><P ALIGN="CENTER"><IMG SRC="Image12.gif" WIDTH=478 HEIGHT=359></P><DIR>
<DIR>

<I><P ALIGN="CENTER"><A NAME="_Toc453585048">Figure -1 Namespaces</A></P>
</I></FONT><FONT SIZE=3><P>There are two important observations to make:</P></DIR>
</DIR>

<OL>

<OL>

<LI>Namespaces can overlap with respect to their contents.</LI>
<LI>An object in one name space, which has the same model path as an object in another name, space does not guarantee that the objects are representing the same reality.</LI></OL>
</OL>

<OL>
<OL>
<OL>

<LI><A NAME="_Toc401008291"><A NAME="_Toc404410917"><A NAME="_Toc453585013"></FONT><B><I>Model Path</A></A></A></LI>
</B></I><FONT SIZE=3><P>The object name constructed as a scoping path through the CIM schema is referred to as a Model Path.A model path is a combination of the key properties values qualified by the class name. It is solely described by CIM elements and is absolutely implementation-independent. It is used to describe the path to a particular object or to identify a particular object within a namespace. The name of any object is a concatenation of named key property values, including all key values of its scoping objects.. When the class is weak with respect to another class, the model path includes all key properties from the scoping objects.&nbsp;</P>
<P>The syntax of Model Path is:</P>
<P>&lt;Qualifyingclass&gt;.&lt;key1&gt;=&lt;value1&gt;[,&lt;keyx&gt;=&lt;valuex&gt;]*</P>
<LI><A NAME="_Toc453585014"></FONT><B><I>Specifying the Object Name</A></LI></OL>
</OL>
</OL>
<DIR>
<DIR>

</B></I><FONT SIZE=3><P>There are various mechanisms for specifying the object name details for any class instance or any association reference in a MOF file.</P>
<P>The model path is specified for object and association differently. For objects (instances of classes), the model path is the combination of property value pairs that are marked with the KEY qualifier. So the model path for the following is: "ex_sampleClass.label1=9921,label2=8821". Since the order of the key properties is not significant, the model path could also be: "ex_sampleClass.label2=8821,label1=9921".</P><DIR>

</FONT><FONT FACE="Courier New" SIZE=1><P>Class ex_sampleClass<BR>
{<BR>
        [key]<BR>
    uint32 labe11;<BR>
        [key]<BR>
    uint32 label2;<BR>
    uint32 size;<BR>
    uint32 weight;<BR>
};</P>
<P>instance of ex_sampleClass<BR>
{<BR>
    label1 = 9921;<BR>
    label2 = 8821;<BR>
    size = 80;<BR>
    weight = 45<BR>
};</P></DIR>

</FONT><FONT SIZE=3><P>For associations, a model path is used to specify the value of a reference in an INSTANCE OF statement for an association. In the following composedof-association example, the model path "ex_sampleClass.label1=9921,label2=8821" is used to reference an instance of the ex_sampleClass that is playing the role of a composer.</P><DIR>

</FONT><FONT FACE="Courier New" SIZE=1><P>    [Association ]<BR>
Class ex_composedof<BR>
{<BR>
    composer REF ex_sampleClass;<BR>
    component REF ex_sampleClass;<BR>
};</P>

<P>instance of ex_composedof<BR>
{<BR>
    composer = "ex_sampleClass.label1=9921,label2=8821";<BR>
    . . .<BR>
}</P></DIR>

</FONT><FONT SIZE=3><P>A namespace path can be specified for all the INSTANCE OF statements in a file with one of several pragmas or it can be specified on each INSTANCE OF statement using one of several qualifiers. It is also possible to use a combination of pragmas and qualifiers. If qualifiers are used with a pragma, the qualifier overrides the details specified by the pragma.</P>
<P>There are two reasons there are several pragma or qualifiers for specifying a namespace path. First, the namespace path information can be about the implementation hosting the CIM information (SOURCE qualifier or pragma) or it can be about another implementation (NONLOCAL qualifier or pragma). Second, for association references, the namespace type and namespace handle can be specified together (using the SOURCE or NONLOCAL qualifier/pragma) or separately (using the SOURCETYPE or NONLOCALTYPE qualifier/pragma). When the namespace handle is separated from the namespace type, it is specified as a part of the string for the reference value using the following syntax:</P><DIR>

</FONT><FONT FACE="Courier New" SIZE=1><P>&lt;namespacehandle&gt;:&lt;modelpath&gt;</P></DIR>

</FONT><FONT SIZE=3><P>The following table summarizes these situations.</P></DIR>
</DIR>
</FONT>
<P ALIGN="CENTER"><CENTER><TABLE BORDER CELLSPACING=1 CELLPADDING=7 WIDTH=619>
<TR><TD WIDTH="43%" VALIGN="TOP">
<B><FONT SIZE=3><P>Qualifier / Pragma</B></FONT></TD>
<TD WIDTH="17%" VALIGN="TOP">
<B><FONT SIZE=3><P>Class Instance</B></FONT></TD>
<TD WIDTH="40%" VALIGN="TOP">
<B><FONT SIZE=3><P>Association Instance</B></FONT></TD>
</TR>
<TR><TD WIDTH="43%" VALIGN="TOP">
<FONT SIZE=3><P>Source(<BR>
&lt;namespacetype&gt;://&lt;namespace_handle&gt;)NonLocal(<BR>
&lt;namespacetype&gt;://&lt;namespace_handle&gt;)</FONT></TD>
<TD WIDTH="17%" VALIGN="TOP">
<FONT SIZE=3><P>Allowed.</FONT></TD>
<TD WIDTH="40%" VALIGN="TOP">
<FONT SIZE=3><P>When this is used, the string value for the references contains the model path.&nbsp;&nbsp;The complete object name is calculated by concatenating the string specified with the Source qualifier with ":" followed by the value of the model path specified by the reference.</FONT></TD>
</TR>
<TR><TD WIDTH="43%" VALIGN="TOP">
<FONT SIZE=3><P>SourceType(&lt;namespacetype&gt;)&nbsp;NonLocalType(&lt;namespacetype&gt;)</FONT></TD>
<TD WIDTH="17%" VALIGN="TOP">
<FONT SIZE=3><P>Not Permitted. However, when specified as a pragma, any INSTANCE OF statements for classes must have a Source or NonLocal qualifier.&nbsp;</FONT></TD>
<TD WIDTH="40%" VALIGN="TOP">
<FONT SIZE=3><P>When SourceType or NonLocalType are used, the string value for a reference is to have the form &lt;namespace_handle&gt;":"&lt;modelpath&gt;</FONT></TD>
</TR>
</TABLE>
</CENTER></P>

<FONT SIZE=3><P>&nbsp;</P>
<OL>
<OL>

<LI><A NAME="_Toc453585015"></FONT><B><FONT SIZE=4>Specifying Object Names in MOF Files</A></LI>
</B></FONT><FONT SIZE=3><P>The object name can be used as the value for object references and for object queries. </P>
<OL>

<LI><A NAME="_Toc401008293"><A NAME="_Toc404410919"><A NAME="_Toc453585016"></FONT><B><I>Synchronizing Namespaces</A></A></A></LI>
</B></I><FONT SIZE=3><P>When a MOF is loaded into a system that is able to access and manipulate the source implementation, a higher level of integration is possible between two CIM-based implementations. In particular, the receiving implementation can synchronize changes with the sending implementation. This situation is shown in this figure and requires a way to record information about the namespace path of the source in the MOF. The arrow labeled "Dynamic Access to Loaded Information" implies that Mgmt_ABC has the capability to access information about an instance of Mgmt_X because it understands Mgmt_X's access protocol. All it must know is the handle (namespace path) for the source.</P>
<P>The following figure is a sample MOF file for the situation illustrated in the previous figure. Notice the various uses of the SOURCE pragma and the SOURCE qualifier.</P>
</FONT><FONT SIZE=2><P ALIGN="CENTER"><IMG SRC="Image13.gif" WIDTH=479 HEIGHT=359></P>
<I><P ALIGN="CENTER"><A NAME="_Toc453585049">Figure -1 Namespace Path</A></P>
</I></FONT><FONT SIZE=3><P> The namespace path can be provided in one of two ways: 1) a qualifier on each object and association or 2) a pragma. The value for the pragma and the qualifier is exactly the same:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>Source(&lt;namespacetype&gt;:\\&lt;namespace_handle&gt;)</P>
</FONT><FONT SIZE=3><P>When the information is provided as a pragma, it is assumed to be the same for all instances in the MOF file. This pragma is shown in this figure for the circle and triangle example:</P></FONT>
<TABLE CELLSPACING=0 BORDER=0 CELLPADDING=7 WIDTH=636>
<TR><TD WIDTH="40%" VALIGN="TOP" HEIGHT=60>
<FONT FACE="Courier New" SIZE=1><P>#pragma source("Mgmt_X://EastCoast")</P>

<P>class Figs_Circle</P>
<P>{<BR>
        [key]<BR>
    uint32 Name;<BR>
    string Color;<BR>
};</P>

<P>class Figs_Triangle<BR>
{<BR>
        [key]<BR>
    uint32 Label;<BR>
    string Color;<BR>
    uint32 Area;<BR>
};</P>

<P>    [Association]<BR>
class Figs_CircleToTriangle<BR>
{<BR>
    Figs_Circle REF ACircle;<BR>
    Figs_Triangle REF ATriangle;<BR>
};</P>

<P>    [Association]<BR>
class Figs_Covers<BR>
{<BR>
    Figs_Triangle REF Over;<BR>
    Figs_Triangle REF Under;<BR>
};</FONT></TD>
<TD WIDTH="60%" VALIGN="TOP" HEIGHT=60>
<FONT FACE="Courier New" SIZE=1><P>instance of Figs_Triangle {Label=2;Color="Blue";Area=12};<BR>
instance of Figs_Triangle {Label=4;Color="Blue";Area=12};<BR>
instance of Figs_Circle {Name=1;Color="Blue"};<BR>
instance of Figs_Circle {Name=3;Color="Blue"};<BR>
instance of Figs_Circle {Name=5;Color="Blue"};</P>

<P>instance of Figs_CircleToTriangle<BR>
{<BR>
    ACircle="Figs_Circle.Name=1";<BR>
    ATriangle="Figs_Triangle.Label=2";<BR>
};</P>

<P>instance of Figs_CircleToTriangle<BR>
{<BR>
    ACircle="Figs_Circle.Name=5";<BR>
    ATriangle="Figs_Triangle.Label=2";<BR>
};</P>

<P>    [SourceType("Mgmt_X") ]<BR>
instance of Figs_CircleToTriangle<BR>
{<BR>
    ACircle="EastCoast:Figs_Circle.Name=5";<BR>
    ATriangle="EastCoast:Figs_Triangle.Label=4";<BR>
};</P>

<P>instance of Figs_Covers<BR>
{<BR>
        [SourceType("Mgmt_X") ]<BR>
    Over="EastCoast:Figs_Triangle.Label=2";<BR>
    Under="Figs_Triangle.Label=4";<BR>
};</FONT></TD>
</TR>
</TABLE>

<I><FONT SIZE=2><P ALIGN="CENTER"><A NAME="_Toc453585050">Figure -2 Pragma Example</A></P>
</I></FONT><FONT SIZE=3><P>The import operation must preserve namespace path information so if either this platform or another platform understands how to manipulate an implementation of type &lt;namespacetype&gt; and has access to the &lt;namespace_handle&gt;, it can manipulate one or more of the instances in the source. </P>
<P>The namespace path can also be specified using the instance-based Source qualifier. This qualifier marks a particular object or an association. <A NAME="_Toc394472005"><A NAME="_Toc397084534">This is illustrated in Figure 5-3. Note: When a pragma is specified and a qualifier is specified, the qualifier overrides the pragma. </P></FONT>
<TABLE CELLSPACING=0 BORDER=0 CELLPADDING=7 WIDTH=618>
<TR><TD WIDTH="37%" VALIGN="TOP" HEIGHT=60>
<FONT FACE="Courier New" SIZE=1><P>Class Figs_Circle<BR>
{<BR>
        [key]<BR>
    uint32 Name;<BR>
    string Color;<BR>
};</P>

<P>class Figs_Triangle<BR>
{<BR>
        [key]<BR>
    uint32 Label;<BR>
    string Color;<BR>
    uint32 Area;<BR>
};</P>

<P>    [Association]<BR>
class Figs_CircleToTriangle<BR>
{<BR>
    Figs_Circle REF ACircle;<BR>
    Figs_Triangle REF ATriangle;<BR>
};</P>

<P>    [Association]<BR>
class Figs_Covers<BR>
{<BR>
    Figs_Triangle REF Over;<BR>
    Figs_Triangle REF Under;<BR>
};</FONT></TD>
<TD WIDTH="63%" VALIGN="TOP" HEIGHT=60>
<FONT FACE="Courier New" SIZE=1><P>    [source("Mgmt_X://EastCoast")]<BR>
instance of Figs_Triangle {Label=2;Color="Blue";Area=12};</P>

<P>    [source("Mgmt_X://EastCoast")]<BR>
instance of Figs_Triangle {Label=4;Color="Blue";Area=12};</P>

<P>    [source("Mgmt_X://EastCoast")]<BR>
instance of Figs_Circle {Name=1;Color="Blue"};</P>

<P>    [source("Mgmt_X://EastCoast")]<BR>
instance of Figs_Circle {Name=3;Color="Blue"};</P>

<P>    [source("Mgmt_X://EastCoast")]<BR>
instance of Figs_Circle {Name=5;Color="Blue"};</P>

<P>    [source("Mgmt_X://EastCoast")]<BR>
instance of Figs_CircleToTriangle<BR>
{<BR>
    ACircle="Figs_Circle.Name=1";<BR>
    ATriangle="Figs_Triangle.Label=2";<BR>
};</P>

<P>    [source("Mgmt_X://EastCoast")]<BR>
instance of Figs_CircleToTriangle<BR>
{<BR>
    ACircle="Figs_Circle.Name=5";<BR>
    ATriangle="Figs_Triangle.Label=2";<BR>
};</P>

<P>    [source("Mgmt_X://EastCoast")]<BR>
instance of Figs_CircleToTriangle<BR>
{<BR>
    ACircle="Figs_Circle.Name=5";<BR>
    ATriangle="Figs_Triangle.Label=4";<BR>
};</P>

<P>    [source("Mgmt_X://EastCoast")]<BR>
instance of Figs_Covers<BR>
{<BR>
        [nonlocal("Mgmt_X://EastCoast")]<BR>
    Over="Figs_Triangle.Label=2";<BR>
    Under="Figs_Triangle.Label=4";<BR>
};&nbsp;</FONT></TD>
</TR>
</TABLE>

<I><FONT SIZE=2><P ALIGN="CENTER"><A NAME="_Ref413143363"><A NAME="_Toc453585051">Figure -3</A> Namespace Path Example</A></P>
<LI><A NAME="_Toc401008294"><A NAME="_Toc404410920"><A NAME="_Toc453585017"></A></FONT><B>Building References Between Management Systems</A></A></A></A></LI></OL>
</OL>
</OL>
<DIR>
<DIR>

</B></I><FONT SIZE=3><P>The Nonlocal instance qualifier for references allows a targeted management system to selectively import instances in a MOF file. This is used when a targeted management system knows how to access a source management platform (in other words, it has verified, using the source pragma or qualifer, that it knows how to access the source platform) and it does not want to store some class instances locally. Using the circle and triangle MOF as an example, the target management system, Mgmt_ABC, only wants to store circle information locally. When a Mgmt_ABC user requests information about a triangle, the Mgmt_ABC implementation contacts the source platform Mgmt_X to get the instance information:</P></DIR>
</DIR>

</FONT><FONT SIZE=2><P ALIGN="CENTER"><IMG SRC="Image14.gif" WIDTH=478 HEIGHT=359></P><DIR>
<DIR>

<I><P ALIGN="CENTER"><A NAME="_Toc453585052">Figure -1 References Between Management Systems</A></P>
</I></FONT><FONT SIZE=3><P>The Nonlocal qualifier is similar to the Source qualifier since its value is a       </P><DIR>

</FONT><FONT FACE="Courier New" SIZE=1><P>&lt;namespacetype&gt;:\\&lt;namespacehandle&gt;  </P></DIR>

</FONT><FONT SIZE=3><P>string. The content of Mgmt_ABC after importing only circle information looks like this:</P></DIR>
</DIR>
</FONT>
<TABLE CELLSPACING=0 BORDER=0 CELLPADDING=7 WIDTH=624>
<TR><TD WIDTH="37%" VALIGN="TOP" HEIGHT=322>
<FONT FACE="Courier New" SIZE=1><P>Class Figs_Circle<BR>
{<BR>
        [key]<BR>
    uint32 Name;<BR>
    string Color;<BR>
};</P>

<P>class Figs_Triangle<BR>
{<BR>
        [key]<BR>
    uint32 Label;<BR>
    string Color;<BR>
    uint32 Area;<BR>
};</P>

<P>    [Association]<BR>
class Figs_CircleToTriangle<BR>
{<BR>
    Figs_Circle REF ACircle;<BR>
    Figs_Triangle REF ATriangle;<BR>
};</P>

<P>    [Association]<BR>
class Figs_Covers<BR>
{<BR>
    Figs_Triangle REF Over;<BR>
    Figs_Triangle REF Under;<BR>
};</FONT></TD>
<TD WIDTH="63%" VALIGN="TOP" HEIGHT=322>
<FONT FACE="Courier New" SIZE=1><P>instance of Figs_Circle {Name=1; Color="Blue"};<BR>
instance of Figs_Circle {Name=3; Color="Blue"};<BR>
instance of Figs_Circle {Name=5; Color="Blue"};</P>

<P>instance of Figs_CircleToTriangle<BR>
{<BR>
    ACircle="Figs_Circle.Name=1";<BR>
        [nonlocal("Mgmt_X://EastCoast")]<BR>
    ATriangle="Figs_Triangle.Label=2";<BR>
};</P>

<P>instance of Figs_CircleToTriangle<BR>
{<BR>
    ACircle="Figs_Circle.Name=5";<BR>
        [nonlocal("Mgmt_X://EastCoast")]<BR>
    ATriangle="Figs_Triangle.Label=2";<BR>
};</P>

<P>instance of Figs_CircleToTriangle<BR>
{<BR>
    ACircle="Figs_Circle.Name=5";<BR>
        [nonlocaltype("Mgmt_X")]<BR>
    ATriangle="EastCoast:Triangle.Label=4";<BR>
};</P>

<P>    [nonlocal("Mgmt_X://EastCoast")]<BR>
Instance of Figs_Covers<BR>
{<BR>
        [nonlocal("Mgmt_X://EastCoast")]<BR>
    Over="Figs_Triangle.Label=2";</P>
<P>        [nonlocal("Mgmt_X://EastCoast")]<BR>
    Under="Figs_Triangle.Label=4";<BR>
};</FONT></TD>
</TR>
</TABLE>
<DIR>
<DIR>

<I><FONT SIZE=2><P ALIGN="CENTER"><A NAME="_Toc453585053">Figure -2 Example of Nonlocal Qualifier</A></P>
</I></FONT><FONT SIZE=3><P>In particular, the two instances of triangle are not imported, and the references to triangle in the associations are also marked with the nonlocal qualifier.</P>
<P>The above schema also allows intelligent import operations to avoid importing all the objects if there are associations between the objects. </P></DIR>
</DIR>

<OL>

<LI><A NAME="_Ref406248626"><A NAME="_Toc406249731"></LI>
</FONT><B><FONT SIZE=5><LI><A NAME="_Ref412223830"><A NAME="_Ref412223851"><A NAME="_Ref412223880"><A NAME="_Toc453585018">Mapping Existing Models Into CIM</A></A></A></A></A></A></LI>
</B></FONT><FONT SIZE=3><P>Existing models have their own meta model and model. There are three types of mapping that can occur between meta schemas: technique, recast and domain. Each of these mappings can be applied when converting from MIF syntax to MOF syntax.</P>
<OL>

<LI><A NAME="_Toc406249732"><A NAME="_Toc453585019"></FONT><B><FONT SIZE=4>Technique Mapping</A></A></LI>
</B></FONT><FONT SIZE=3><P>A technique mapping provides a mapping that uses the CIM meta-model constructs to describe the source modeling technique’s meta constructs (for example, MIF, GDMO and SMI). Essentially, the CIM meta model is a meta meta-model for the source technique. </P>
</FONT><FONT SIZE=2>
<P ALIGN="CENTER"><IMG SRC="Image15.gif" WIDTH=272 HEIGHT=143></P>
<I><P ALIGN="CENTER"><A NAME="_Toc453585054">Figure -1 Technique Mapping Example</A></P>
</I></FONT><FONT SIZE=3><P>The DMTF uses the management information format (MIF) as the meta model to describe distributed management information in a common way. Therefore, it is meaningful to describe a technique mapping in which the CIM meta model is used to describe the MIF syntax. </P>
<P>The mapping presented here takes the important types that can appear in a MIF file and then creates classes for them. Thus, component, group, attribute, table and enum are expressed in the CIM meta model as classes. In addition, associations are defined to document how these are combined.  Figure 6-2 illustrates the results:</P>
</FONT><FONT SIZE=2><P ALIGN="CENTER"><IMG SRC="Image16.gif" WIDTH=476 HEIGHT=357></P>
<I><P ALIGN="CENTER"><A NAME="_Ref412653304"><A NAME="_Toc453585055">Figure -2</A> MIF Technique Mapping Example</A></P>
<LI><A NAME="_Toc406249733"><A NAME="_Toc453585020"></I></FONT><B><FONT SIZE=4>Recast Mapping</A></A></LI>
</B></FONT><FONT SIZE=3><P>A<B> </B>recast<B> </B>mapping provides a mapping of the sources’ meta constructs into the targeted meta constructs, so that a model expressed in the source can be translated into the target. The major design work is to develop a mapping between the sources’ meta model and the CIM meta model. Once this is done, the source expressions are recast.</P>
</FONT><FONT SIZE=2><P ALIGN="CENTER"><IMG SRC="Image17.gif" WIDTH=435 HEIGHT=222></P>
<I><P ALIGN="CENTER"><A NAME="_Toc453585056">Figure -1 Recast mapping</A></P>
</I></FONT><FONT SIZE=3><P>This is an example of a recast mapping for MIF, assuming: </P>
</FONT><FONT FACE="Courier New" SIZE=1><P>DMI attributes -&gt; CIM properties</P>
<P>DMI key attributes -&gt; CIM key properties</P>
<P>DMI groups -&gt; CIM classes </P>
<P>DMI components -&gt; CIM classes</P>
</FONT><FONT SIZE=3><P>The standard DMI ComponentID group might be recast into a corresponding CIM class:</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>Start Group<BR>
Name = "ComponentID"<BR>
Class = "DMTF|ComponentID|001"<BR>
ID = 1<BR>
Description = "This group defines the attributes common to all "<BR>
&#9;      "components.  This group is required."<BR>
Start Attribute<BR>
&#9;Name = "Manufacturer"<BR>
&#9;ID = 1<BR>
&#9;Description = "Manufacturer of this system."<BR>
&#9;Access = Read-Only<BR>
&#9;Storage = Common<BR>
&#9;Type = DisplayString(64)<BR>
&#9;Value = ""<BR>
End Attribute<BR>
Start Attribute<BR>
&#9;Name = "Product"<BR>
&#9;ID = 2<BR>
&#9;Description = "Product name for this system."<BR>
&#9;Access = Read-Only<BR>
&#9;Storage = Common<BR>
&#9;Type = DisplayString(64)<BR>
&#9;Value = ""<BR>
End Attribute<BR>
Start Attribute<BR>
&#9;Name = "Version"<BR>
&#9;ID = 3<BR>
&#9;Description = "Version number of this system."<BR>
&#9;Access = Read-Only<BR>
&#9;Storage = Specific<BR>
&#9;Type = DisplayString(64)<BR>
&#9;Value = ""<BR>
End Attribute<BR>
Start Attribute<BR>
&#9;Name = "Serial Number"<BR>
&#9;ID = 4<BR>
&#9;Description = "Serial number for this system."<BR>
&#9;Access = Read-Only<BR>
&#9;Storage = Specific<BR>
&#9;Type = DisplayString(64)<BR>
&#9;Value = ""<BR>
End Attribute<BR>
Start Attribute<BR>
&#9;Name = "Installation"<BR>
&#9;ID = 5<BR>
&#9;Description = "Component installation time and date."<BR>
&#9;Access = Read-Only<BR>
&#9;Storage = Specific<BR>
&#9;Type = Date<BR>
&#9;Value = ""<BR>
End Attribute<BR>
Start Attribute<BR>
&#9;Name = "Verify"<BR>
&#9;ID = 6<BR>
&#9;Description = "A code that provides a level of verification that the "<BR>
 &#9;&#9;       "component is still installed and working."<BR>
&#9;Access = Read-Only<BR>
&#9;Storage = Common<BR>
&#9;Type = Start ENUM<BR>
&#9;&#9;0 = "An error occurred; check status code."<BR>
&#9;&#9;1 = "This component does not exist."<BR>
&#9;&#9;2 = "Verification is not supported."<BR>
&#9;&#9;3 = "Reserved."<BR>
&#9;&#9;4 = "This component exists, but the functionality is untested."<BR>
&#9;&#9;5 = "This component exists, but the functionality is unknown."<BR>
&#9;&#9;6 = "This component exists, and is not functioning correctly."<BR>
&#9;&#9;7 = "This component exists, and is functioning correctly."<BR>
&#9;End ENUM<BR>
&#9;Value = 1<BR>
End Attribute<BR>
End Group</P>
</FONT><FONT SIZE=3><P>A corresponding CIM class might be the following.  Note that properties in the example include an ID qualifier to represent the corresponding DMI attribute’s ID.  Here, a user-defined qualifier may be necessary.</P>
</FONT><FONT FACE="Courier New" SIZE=1><P>[Name ("ComponentID"), ID (1), Description (<BR>
    "This group defines the attributes common to all components.  "</P>
<P>    "This group is required.")]</P>
<P><BR>
class DMTF|ComponentID|001 {</P>
<P>    [ID (1), Description ("Manufacturer of this system."), maxlen (64)] <BR>
    string Manufacturer;<BR>
    [ID (2), Description ("Product name for this system."), maxlen (64)] <BR>
    string Product;<BR>
    [ID (3), Description ("Version number of this system."), maxlen (64)] <BR>
    string Version;<BR>
    [ID (4), Description ("Serial number for this system."), maxlen (64)] <BR>
    string Serial_Number;<BR>
    [ID (5), Description("Component installation time and date.")]<BR>
    datetime Installation;<BR>
    [ID (6), Description("A code that provides a level of verification "<BR>
             "that the component is still installed and working."),</P>
<P>             Value (1)] <BR>
    string Verify;<BR>
};</P>
<LI><A NAME="_Toc406249734"><A NAME="_Toc453585021"></FONT><B><FONT SIZE=4>Domain Mapping</A></A></LI>
</B></FONT><FONT SIZE=3><P>A domain mapping takes a source expressed in a particular technique and maps its content into either the core or common models, or extension sub-schemas of the CIM. This mapping does not rely heavily on a meta-to-meta mapping; it is primarily a content-to-content mapping. In one case, the mapping is actually a re-expression of content in a more common way using a more expressive technique.</P>
<P>This is an example of how CIM properties can be supplied by DMI, using information from the DMI disks group ("DMTF|Disks|002"). For a hypothetical CIM disk class, the CIM properties are expressed as:</P></FONT>
<P ALIGN="RIGHT"><TABLE BORDER CELLSPACING=1 BORDERCOLOR="#000000" CELLPADDING=7 WIDTH=518>
<TR><TD WIDTH="40%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>CIM "Disk" property</FONT></TD>
<TD WIDTH="60%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>Can be sourced from DMI group/attribute</FONT></TD>
</TR>
<TR><TD WIDTH="40%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>StorageType             </P>
<P>StorageInterface        </P>
<P>RemovableDrive          </P>
<P>RemovableMedia          </P>
<P>DiskSize                </FONT></TD>
<TD WIDTH="60%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"MIF.DMTF|Disks|002.1"</P>
<P>"MIF.DMTF|Disks|002.3"</P>
<P>"MIF.DMTF|Disks|002.6"</P>
<P>"MIF.DMTF|Disks|002.7"</P>
<P>"MIF.DMTF|Disks|002.16"</FONT></TD>
</TR>
</TABLE>
</P>

<FONT FACE="Courier" SIZE=1><P>&nbsp;</P>
<LI><A NAME="_Ref406248815"><A NAME="_Toc406249735"><A NAME="_Toc453585022"></FONT><B><FONT SIZE=4>Mapping Scratch Pads</A></A></A></LI></OL>

</B></FONT><FONT SIZE=3><P>In general, when the content of models are mapped between different meta schemas, information gets lost or is missing. To fill this gap, &quot;scratch pads&quot; are expressed in the CIM meta model using qualifiers, which are actually extensions to the meta model (for example, see section 2.5.5 Mapping MIF Attributes and section 2.5.6 Mapping Generic Data to CIM Properties). These scratch pads are critical to the exchange of core, common and extension model content with the various technologies used to build management applications.</P>
</FONT><B><FONT SIZE=5><LI></LI>
<LI><A NAME="_Ref406249436"><A NAME="_Ref406249455"><A NAME="_Toc406249736"><A NAME="_Toc453585023">Repository Perspective</A></A></A></A></LI></OL>
<DIR>
<DIR>

</B></FONT><FONT SIZE=3><P>This section provides a basic description of a repository and a complete picture of the potential exploitation of it. A repository stores definitional and/or structural information, and includes the capability to extract the definitions in a form that is useful to application developers. Some repositories allow the definitions to be imported into and exported from the repository in multiple forms. The notions of importing and exporting definition can be refined so that they distinguish between three types of mappings.</P>
<P>Using the mapping definitions in Section 6, the repository can be organized into the four partitions (meta, technique, recast and domain). </P></DIR>
</DIR>

</FONT><FONT SIZE=2><P ALIGN="CENTER"><IMG SRC="Image18.gif" WIDTH=624 HEIGHT=466></P><DIR>
<DIR>

<I><P ALIGN="CENTER"><A NAME="_Toc453585057">Figure -1 Repository Partitions</A></P>
</I></FONT><FONT SIZE=3><P>The repository partitions have the following characteristics:</P></DIR>
</DIR>


<UL>

<UL>
<LI>Each partition is discrete. The meta partition refers to the definitions of the CIM meta model. The technique partition refers to definitions that are loaded using technique mappings. The recast partition refers to definitions that are loaded using recast mappings. The domain partition refers to the definitions that are associated with the core and common models, and Extension schemas.</LI>
<LI>The technique and recast partitions can be organized into multiple sub-partitions in order to capture each source uniquely. For example, there would be a technique sub-partition for each unique meta language encountered (that is, one for MIF, GDMO, SMI, and so on). In the re-cast partition, there would be a sub-partition for each meta language. </LI>
<LI>The act of importing the content of an existing source can result in entries in the recast or domain partition. </LI></UL>
</UL>

<OL>
<OL>

<LI><A NAME="_Toc406249737"><A NAME="_Toc453585024"></FONT><B><FONT SIZE=4>DMTF MIF Mapping Strategies</A></A></LI></OL>
</OL>
<DIR>
<DIR>

</B></FONT><FONT SIZE=3><P>Assume the meta-model definition and the baseline for the CIM schema are complete.  The next step is to map another source of management information (such as standard groups) into the repository.  The primary objective is to do the work required to import one or more of the standard group(s).</P>
<P>The possible import scenarios for a DMTF standard group are:</P></DIR>
</DIR>

<OL>

<OL>

<I><LI>To Technique Partition</I>: Create a technique mapping for the MIF syntax. This mapping would be the same for all standard groups and would only need to be updated if the MIF syntax changed.<I> </LI>
<LI>To Recast Partition</I>: Create a recast mapping from a particular standard group into a sub-partition of the recast partition. This mapping would allow the entire contents of the selected group to be loaded into a sub-partition of the recast partition. The same algorithm can be used to map additional standard groups into that same sub-partition.</LI>
<I><LI>To Domain Partition</I>: Create a Domain Mapping for the content of a particular standard group that overlaps with the content of the CIM schema.</LI>
<I><LI>To Domain Partition</I>: Create a Domain Mapping for the content of a particular standard group that does not overlap with CIM’s schema into an extension sub-schema.</LI>
<I><LI>To Domain Partition</I>: Propose extensions to the content of the CIM schema and then perform Steps 3 and/or 4.</LI></OL>
</OL>
<DIR>
<DIR>

<P>Any combination of these five scenarios can be initiated by a team that is responsible for mapping an existing source into the CIM repository. There are many other details that must be addressed as the content of any of the sources changes and/or when the core or common model changes.</P>
<P>Assuming numerous existing sources have been imported using all the import scenarios, now look at the export side. Ignoring the technique partition, the possible scenarios are:</P></DIR>
</DIR>

<OL>

<OL>

<I><LI>From Recast Partition</I>: Create a recast mapping for a sub-partition in the recast partition to a standard group (that is, inverse of import 2). The desired method would be to use the recast mapping to translate a standard group into a GDMO definition. </LI>
<I><LI>From Recast Partition</I>: Create a Domain Mapping for one of the recast sub-partitions to a known management model that was not the original source for the content that overlaps. </LI>
<I><LI>From Domain Partition</I>: Create a recast mapping for the complete content of the CIM to a selected technique (for MIF, this results in a non-standard group).</LI>
<I><LI>From Domain Partition</I>: Create a Domain Mapping for the content of the CIM schema that overlaps with the content of an existing management model</LI>
<I><LI>From Domain Partition</I>: Create a Domain Mapping for the entire content of the CIM schema to an existing management model with the necessary extensions.</LI></OL>
</OL>

<OL>
<OL>

<LI><A NAME="_Toc406249738"><A NAME="_Toc453585025"></FONT><B><FONT SIZE=4>Recording Mapping Decisions</A></A></LI></OL>
</OL>
<DIR>
<DIR>

</B></FONT><FONT SIZE=3><P>In order to understand the role of the scratch pad (see Section 6.4) in the repository, it is necessary to look at the import and export scenarios for the different partitions in the repository (technique, recast and application). These mappings can be organized into two categories: homogeneous and heterogeneous. The homogeneous category includes the mapping where the imported syntax and expressions are the same as the exported (for example, software MIF in and software MIF out). The heterogeneous category addresses the mappings where the imported syntax and expressions are different from the exported (for example, MIF in and GDMO out). For the homogenous category, the information can be recorded by creating qualifiers during an import operation so the content can be exported properly. For the heterogeneous category, the qualifiers must be added after the content is loaded into a partition of the repository. Figure 7-1, shows the X schema imported into the Y schema, and then being homogeneously exported into X or heterogeneously exported into Z. Each of the export arrows works with a different scratch pad.</P>
<P><IMG SRC="Image19.gif" WIDTH=478 HEIGHT=276></P>
</FONT><I><FONT SIZE=2><P ALIGN="CENTER"><A NAME="_Ref412656412"><A NAME="_Toc453585058">Figure -1</A> Homogeneous and Heterogeneous Export</A></P>
</I></FONT><FONT SIZE=3><P>The definition of the heterogeneous category is actually based on knowing how a schema was loaded into the repository. A more general way of looking at this is to think of the export process using one of multiple scratch pads. One of the scratch pads was created when the schema was loaded, and the others were added to handle mappings to schema techniques other than the import source (Figure 7-3).</P>
<P><IMG SRC="Image20.gif" WIDTH=478 HEIGHT=323></P>
</FONT><I><FONT SIZE=2><P ALIGN="CENTER"><A NAME="_Ref412886522"><A NAME="_Toc453585059">Figure -3</A> Scratch Pads and Mapping</A></P>
</I></FONT><FONT SIZE=3><P>Figure 7-3 shows how the scratch pads of qualifiers are used without factoring in the unique aspects of each of the partitions (technique, recast, applications) within the CIM repository. The next step is to put this discussion in the context of these partitions.</P>
<P>For the technique partition, there is no need for a scratch pad since the CIM meta model is used to describe the constructs used in the source meta schema. Therefore, by definition, there is one homogeneous mapping for each meta schema covered by the technique partition. These mappings create CIM objects for the syntactical constructs of the schema and create associations for the ways they can be combined (for example, MIF groups include attributes).</P>
<P>For the recast partition, there are multiple scratch pads for each of the sub-partitions, since one is required for each export target and there can be multiple mapping algorithms for each target. The latter occurs because part of creating a recast mapping involves mapping the constructs of the source into CIM meta-model constructs. Therefore, for the MIF syntax, a mapping must be created for component, group, attribute, and so on, into appropriate CIM meta-model constructs like object, association, property, and so on.  These mappings can be arbitrary. As a specific example, one of the decisions that must be made is whether a group or a component maps into an object. It would be possible to have two different recast mapping algorithms, one that mapped groups into objects with qualifiers that preserved the component, and one that mapped components into objects with qualifiers that preserved the group name for the properties. Therefore, the scratch pads in the recast partition are organized by target technique and employed algorithm.</P>
<P>For the domain partitions, there are two types of mappings. The first is similar to the recast partition in that some portion of the domain partition is mapped into the syntax of another meta schema. These mappings can use the same qualifier scratch pads and associated algorithms that are developed for the recast partition. The second type of mapping facilitates documenting the content overlap between the domain partition and some other model (for example, software groups). These mappings cannot be determined in a generic way at import time; therefore, it is best to consider them in the context of exporting. The mapping uses filters to determine the overlaps and then performs the necessary conversions. The filtering can be done using qualifiers that indicate a particular set of domain partition constructs map into some combination of constructs in the target/source model. The conversions would be documented in the repository using a complex set of qualifiers that capture how to write or insert the overlapped content into the target model. The mapping qualifiers for the domain partition would be organized like the recasting partition for the syntax conversions, and there would be scratch pads for each of the models for documenting overlapping content.</P>
<P>In summary, pick the partition, develop a mapping, and identify the qualifiers necessary to capture potentially lost information when developing mapping details for a particular source.  On the export side, the mapping algorithm checks to see if the content to be exported includes the necessary qualifiers for the logic to work.</P></DIR>
</DIR>

<OL TYPE="A">

<LI><A NAME="_Ref374849108"><A NAME="_Ref374862443"><A NAME="_Toc381332570"><A NAME="_Toc382055203"><A NAME="_Toc404410921"><A NAME="_Toc453585026"></FONT><B><FONT SIZE=5>MOF Syntax Grammar Description</A></A></A></A></A></A></LI></OL>
<DIR>
<DIR>

</B></FONT><FONT SIZE=3><P>This section contains the grammar for MOF syntax. The grammar is described in the notation defined in [7], with this deviation:  each token may be separated by an arbitrary number of white space characters, except where stated otherwise (at least one tab, carriage return, line feed, form feed or space).</P>
<P>However, while this notation is convenient for describing the MOF syntax clearly, it should be noted that the MOF syntax has been defined to be expressible in an LL(1)-parseable grammar. This has been done to allow low-footprint implementations of MOF compilers.</P>
<P>In addition, note these points:</P></DIR>
</DIR>

<OL>

<OL>

<LI>An empty property list is equivalent to "*".</LI>
<LI>All keywords are case-insensitive.</LI>
<LI>The IDENTIFIER type is used for names of classes, properties, qualifiers, methods and namespaces; the rules governing the naming of classes and properties are to be found in section 1 of Appendix F.</LI>
<LI>A string Value may contain quote (") characters, provided that each is immediately preceded by a backslash (\) character.</LI></OL>
</OL>

</FONT>
<TABLE CELLSPACING=0 BORDER=0 CELLPADDING=7 WIDTH=612>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>mofSpecification</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>*mofProduction</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>mofProduction</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>compilerDirective    |</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>classDeclaration     |</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>assocDeclaration     |</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>indicDeclaration     |</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>qualifierDeclaration |</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>instanceDeclaration</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P> </FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>compilerDirective</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>PRAGMA pragmaName  "(" pragmaParameter ")"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>pragmaName</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>IDENTIFIER</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>pragmaParameter</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>stringValue</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>classDeclaration</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>[ qualifierList ]</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>CLASS className [ alias ] [ superClass ]</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"{" *classFeature "}" ";"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>    </FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>assocDeclaration</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"[" ASSOCIATION *( "," qualifier ) "]"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>CLASS className [ alias ] [ superClass ]</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"{" *associationFeature "}" ";"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>        </FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>// Context:</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>// The remaining qualifier list must not include</P>
<P>// the ASSOCIATION qualifier again. If the</P>
<P>// association has no super association, then at</P>
<P>// least two references must be specified! The</P>
<P>// ASSOCIATION qualifier may be omitted in</P>
<P>// sub associations.</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>indicDeclaration</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"[" INDICATION *( "," qualifier ) "]"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>CLASS className [ alias ] [ superClass ]</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"{" *classFeature "}" ";"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>className</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>schemaName "_" IDENTIFIER   // NO whitespace !</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>// Context:</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>// Schema name must not include "_" !</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>alias</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>AS aliasIdentifer</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>aliasIdentifer</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"$" IDENTIFIER   // NO whitespace !</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>superClass</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>":" className</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>             </FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>classFeature</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>propertyDeclaration | methodDeclaration</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>        </FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>associationFeature</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>classFeature | referenceDeclaration</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>qualifierList</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"[" qualifier *( "," qualifier ) "]"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>qualifier</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>qualifierName [ qualifierParameter ] [ ":" 1*flavor ]</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>qualifierParameter</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"(" constantValue ")" | arrayInitializer</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>flavor</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>ENABLEOVERRIDE | DISABLEOVERRIDE | RESTRICTED | </FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>TOSUBCLASS | TRANSLATABLE</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>propertyDeclaration</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>[ qualifierList ] dataType propertyName</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>[ array ] [ defaultValue ] ";"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>        </FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>referenceDeclaration</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>[ qualifierList ] objectRef referenceName</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>[ defaultValue ] ";"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP"><DIR>
<DIR>
<DIR>

<FONT FACE="Courier New" SIZE=1><P>        </DIR>
</DIR>
</DIR>
</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>methodDeclaration</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>[ qualifierList ] dataType methodName</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"(" [ parameterList ] ")" ";"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>        </FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>propertyName</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>IDENTIFIER</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>referenceName</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>IDENTIFIER</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>methodName</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>IDENTIFIER</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>dataType</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>DT_UINT8 | DT_SINT8 | DT_UINT16 | DT_SINT16 |</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>DT_UINT32 | DT_SINT32 | DT_UINT64 | DT_SINT64 |</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>DT_REAL32 | DT_REAL64 | DT_CHAR16 |</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>DT_STR | DT_BOOL | DT_DATETIME</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>objectRef</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>className REF</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>parameterList</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>parameter *( "," parameter )</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>parameter</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>[ qualifierList ] (dataType|objectRef) parameterName </P>
<P>[ array ]</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>parameterName</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>IDENTIFIER</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>array</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"[" [positiveDecimalValue] "]"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>positiveDecimalValue</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>positiveDecimalDigit *decimalDigit</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>defaultValue</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"=" initializer</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>initializer</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>ConstantValue | arrayInitializer | referenceInitializer</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>arrayInitializer</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"{" constantValue*( "," constantValue)"}"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>constantValue</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>integerValue | realValue | charValue | stringValue |</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>booleanValue | nullValue</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>        </FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>integerValue</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>binaryValue | octalValue | decimalValue | hexValue</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>referenceInitializer</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>objectHandle | aliasIdentifier</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>objectHandle</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>""" [ namespaceHandle ":" ] modelPath """</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>namespaceHandle</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>*ucs2Character <BR>
// Note: structure depends on type of namespace</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>modelPath&nbsp;</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>className "." keyValuePairList</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>keyValuePairList</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>keyValuePair *( "," keyValuePair )</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>keyValuePair</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>( propertyname | referenceName ) "=" initializer</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>qualifierDeclaration</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>QUALIFIER qualifierName qualifierType scope</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>[ defaultFlavor ] ";"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>        </FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>qualifierName</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>IDENTIFIER</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>qualifierType</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>":" dataType [ array ] [ defaultValue ]</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>scope</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"," SCOPE "(" metaElement *( "," metaElement ) ")"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>metaElement</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>SCHEMA | CLASS | ASSOCIATION | INDICATION | QUALIFIER</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>PROPERTY | REFERENCE | METHOD | PARAMETER | ANY</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>        </FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>defaultFlavor</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"," FLAVOR "(" flavor *( "," flavor ) ")"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>instanceDeclaration</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>[ qualifierList ] INSTANCE OF className [ alias ]</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"{" 1*valueInitializer "}" ";"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>        </FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>valueInitializer</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>[ qualifierList ] </FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>( propertyName | referenceName ) "=" initializer ";"</FONT></TD>
</TR>
</TABLE>
<DIR>
<DIR>

<FONT SIZE=3><P>These productions do not allow whitespace between the terms:</P></DIR>
</DIR>
</FONT>
<TABLE CELLSPACING=0 BORDER=0 CELLPADDING=7 WIDTH=624>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>schemaName</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>IDENTIFIER</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>// Context:</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>// Schema name must not include "_" !</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>fileName</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>stringValue</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>                      </FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>binaryValue</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>[ "+" | "-" ] 1*binaryDigit ( "b" | "B" )</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>binaryDigit</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"0" | "1"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>octalValue</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>[ "+" | "-" ] "0" 1*octalDigit</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>octalDigit</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"0" | "1" | "2" | "3" | "4" | "5" | "6" | "7"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>decimalValue</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>[ "+" | "-" ] ( positiveDecimalDigit *decimalDigit | "0" )</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>decimalDigit</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"0" | positiveDecimalDigit</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>positiveDecimalDigit</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>hexValue</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>[ "+" | "-" ] ( "0x" | "0X" ) 1*hexDigit</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>hexDigit</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>decimalDigit | "a" | "A" | "b" | "B" | "c" | "C" |</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"d" | "D" | "e" | "E" | "f" | "F"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>realValue</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>[ "+" | "-" ] *decimalDigit "." 1*decimalDigit</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>[ ( "e" | "E" ) [ "+" | "-" ] 1*decimalDigit ]</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>charValue</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>// any single-quoted Unicode-character, except</P>
<P>// single quotes</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>stringValue</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>1*( """ *ucs2Character """ )</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>ucs2Character</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>// any valid UCS-2-character</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>booleanValue</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>TRUE | FALSE</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="4%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="70%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>nullValue</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>NULL</FONT></TD>
</TR>
</TABLE>
<DIR>
<DIR>

<FONT SIZE=3><P>The remaining productions are case-insensitive keywords:</P></DIR>
</DIR>
</FONT>
<TABLE CELLSPACING=0 BORDER=0 CELLPADDING=7 WIDTH=624>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>ANY</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"any"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>AS</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"as"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>ASSOCIATION</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"association"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>CLASS</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"class"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>DISABLEOVERRIDE</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"disableOverride"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>DT_BOOL</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"boolean"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>DT_CHAR16</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"char16"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>DT_DATETIME</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"datetime"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>DT_REAL32</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"real32"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>DT_REAL64</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"real64"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>DT_SINT16</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"sint16"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>DT_SINT32</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"sint32"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>DT_SINT64</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"sint64"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>DT_SINT8</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"sint8"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>DT_STR</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"string"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>DT_UINT16</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"uint16"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>DT_UINT32</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"uint32"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>DT_UINT64</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"uint64"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>DT_UINT8</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"uint8"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>ENABLEOVERRIDE</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"enableoverride"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>FALSE</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"false"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>FLAVOR</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"flavor"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>INDICATION</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"indication"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>INSTANCE</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"instance"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>METHOD</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"method"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>NULL</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"null"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>OF</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"of"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>PARAMETER</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"parameter"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>PRAGMA</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"#pragma"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>PROPERTY</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"property"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>QUALIFIER</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"qualifier"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>REF</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"ref"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>REFERENCE</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"reference"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>RESTRICTED</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"restricted"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>SCHEMA</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"schema"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>SCOPE</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"scope"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>TOSUBCLASS</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"tosubclass"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>TRANSLATABLE</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"translatable"</FONT></TD>
</TR>
<TR><TD WIDTH="26%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>TRUE</FONT></TD>
<TD WIDTH="4%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P ALIGN="CENTER">=</FONT></TD>
<TD WIDTH="70%" VALIGN="TOP">
<FONT FACE="Courier New" SIZE=1><P>"true"</FONT></TD>
</TR>
</TABLE>

<OL TYPE="A">

<FONT SIZE=2><LI><A NAME="_Ref394208783"><A NAME="_Toc404410922"><A NAME="_Toc453585027"></FONT><B><FONT SIZE=5>CIM META SCHEMA</A></A></A></LI>
</B></FONT><FONT FACE="Courier New" SIZE=1><P>// version 2.2</P>

<P>Qualifier Abstract : boolean = false, Scope(class, association, indication),<BR>
                     Flavor(disableoverride, restricted);</P>

<P>Qualifier Aggregate : boolean = false, Scope(reference),<BR>
                      Flavor(disableoverride, tosubclass);</P>
<P>Qualifier Aggregation : boolean = false, Scope(association),<BR>
                        Flavor(disableoverride, tosubclass);</P>
<P>Qualifier Alias : string = null, Scope(property, reference, method),<BR>
                  Flavor(translatable);</P>

<P>Qualifier ArrayType : string = "Bag", Scope(property, parameter);</P>

<P>Qualifier Association : boolean = false, Scope(class, association),<BR>
                        Flavor(disableoverride);</P>

<P>Qualifier BitMap : string[], Scope(property, method, parameter);</P>

<P>Qualifier BitValues : string[], Scope(property, method, parameter),<BR>
                      Flavor(Translatable);</P>

<P>Qualifier Counter : boolean = false, Scope(property, method, parameter);</P>
<P>Qualifier Delete : boolean = false, Scope(association, reference);</P>

<P>Qualifier Description : string = null, Scope(any), Flavor(translatable);</P>

<P>Qualifier DisplayName : string = null, Scope(any), Flavor(translatable);</P>

<P>Qualifier Expensive : boolean = false,<BR>
                      Scope(property, reference, method, class, association);</P>
<P>Qualifier Gauge : boolean = false, Scope(property, method, parameter);</P>
<P>Qualifier Ifdeleted : boolean = false, Scope(association, reference);</P>

<P>Qualifier In : boolean = true, Scope(parameter), Flavor(disableoverride);</P>

<P>Qualifier Indication : boolean = false, Scope(class, indication),<BR>
                       Flavor(disableoverride);</P>

<P>Qualifier Invisible : boolean = false,<BR>
                      Scope(reference, association, class,property, method);</P>

<P>Qualifier Key : boolean = false, Scope(property, reference),<BR>
                Flavor(disableoverride);</P>

<P>Qualifier Large : boolean = false, Scope(property, class);</P>

<P>Qualifier MappingStrings : string[],<BR>
                           Scope(class, property, association, indication, reference);</P>

<P>Qualifier Max : uint32 = null, Scope(reference);</P>

<P>Qualifier MaxLen : uint32 = null, Scope(property, method, parameter);</P>

<P>Qualifier MaxValue : sint64 = null, Scope(property, method, parameter);</P>

<P>Qualifier Min : uint32 = 0, Scope(reference);</P>

<P>Qualifier MinValue : sint64 = null, Scope(property, method, parameter);</P>

<P>Qualifier ModelCorrespondence : string[], Scope(property);</P>

<P>Qualifier NonLocal : string = null, Scope(reference);</P>

<P>Qualifier NonLocalType : string = null, Scope(reference);</P>

<P>Qualifier NullValue : string = null, Scope(property),<BR>
                      Flavor(tosubclass, disableoverride);</P>

<P>Qualifier Out : boolean = false, Scope(parameter), Flavor(disableoverride);</P>

<P>Qualifier Override : string = null, Scope(property, method, reference),<BR>
                     Flavor(disableoverride);</P>

<P>Qualifier Propagated : string = null, Scope(property, reference),<BR>
                       Flavor(disableoverride);</P>

<P>Qualifier Provider : string = null, Scope(any);</P>

<P>Qualifier Read : boolean = true, Scope(property);</P>

<P>Qualifier Required : boolean = false, Scope(property);</P>

<P>Qualifier Revision : string = null, Scope(schema, class, association, indication),<BR>
                     Flavor(translatable);</P>

<P>Qualifier Schema : string = null, Scope(property, method),<BR>
                   Flavor(disableoverride, translatable);</P>

<P>Qualifier Source : string = null, Scope(class, association, indication);</P>

<P>Qualifier SourceType : string = null, <BR>
                       Scope(class, association, indication,reference);</P>

<P>Qualifier Static : boolean = false, Scope(property, method), Flavor(disableoverride);</P>

<P>Qualifier Syntax : string = null, Scope(property, reference, method, parameter);</P>

<P>Qualifier SyntaxType : string = null, Scope(property, reference, method, parameter);</P>

<P>Qualifier Terminal : boolean = false, Scope(class);</P>

<P>Qualifier TriggerType : string = null,<BR>
                  Scope(class, property, reference, method, association, indication);</P>

<P>Qualifier Units : string = null, Scope(property, method, parameter),<BR>
                  Flavor(translatable);</P>

<P>Qualifier UnknownValues : string[], Scope(property),<BR>
                          Flavor(disableoverride, tosubclass);</P>

<P>Qualifier UnsupportedValues : string[], Scope(property),<BR>
                              Flavor(disableoverride, tosubclass);</P>

<P>Qualifier ValueMap : string[], Scope(property, method, parameter);</P>

<P>Qualifier Values : string[], Scope(property, method, parameter),<BR>
                   Flavor(translatable);</P>

<P>Qualifier Version : string = null,<BR>
                    Scope(schema, class, association, indication),<BR>
                    Flavor(translatable);Qualifier Weak : boolean = false, Scope(reference),<BR>
                 Flavor(disableoverride, tosubclass);</P>

<P>Qualifier Write : boolean = false, Scope(property);</P>
<P> </P>
<P>// ==================================================================<BR>
//    NamedElement<BR>
// ==================================================================<BR>
        [Version( "2" ), Revision( "2" ), Description(<BR>
        "The Meta_NamedElement class represents the root class for the "<BR>
        "Metaschema. It has one property: Name, which is inherited by all the "<BR>
        "non-association classes in the Metaschema. Every metaconstruct is "<BR>
        "expressed as a descendent of the class Meta_Named Element.") ] <BR>
class Meta_NamedElement<BR>
{<BR>
        [Description (<BR>
        "The Name property indicates the name of the current Metaschema element. "<BR>
        "The following rules apply to the Name property, depending on the "<BR>
        "creation type of the object:&lt;UL&gt;&lt;LI&gt;Fully-qualified class names, such "<BR>
        "as those prefixed by the schema name, are unique within the schema."<BR>
        "&lt;LI&gt;Fully-qualified association and indication names are unique within "<BR>
        "the schema (implied by the fact that association and indication classes "<BR>
        "are subtypes of Meta_Class).&lt;LI&gt;Implicitly-defined qualifier names are "<BR>
        "unique within the scope of the characterized object; that is, a named "<BR>
        "element may not have two characteristics with the same name."<BR>
        "&lt;LI&gt;Explicitly-defined qualifier names are unique within the defining "<BR>
        "schema. An implicitly-defined qualifier must agree in type, scope and "<BR>
        "flavor with any explicitly-defined qualifier of the same name."<BR>
        "&lt;LI&gt;Trigger names must be unique within the property, class or method "<BR>
        "to which the trigger applies.&lt;LI&gt;Method and property names must be "<BR>
        "unique within the domain class. A class can inherit more than one "<BR>
        "property or method with the same name. Property and method names can be "<BR>
        "qualified using the name of the declaring class.&lt;LI&gt;Reference names "<BR>
        "must be unique within the scope of their defining association class. "<BR>
        "Reference names obey the same rules as property names.&lt;/UL&gt;&lt;B&gt;Note:&lt;/B&gt; "<BR>
        "Reference names are not required to be unique within the scope of the "<BR>
        "related class. Within such a scope, the reference provides the name of "<BR>
        "the class within the context defined by the association.") ] <BR>
    string Name;<BR>
};</P>
<P>     </P>
<P>// ==================================================================<BR>
//    QualifierFlavor<BR>
// ==================================================================<BR>
        [Version( "2" ), Revision( "2" ), Description (<BR>
        "The Meta_QualifierFlavor class encapsulates extra semantics attached "<BR>
        "to a qualifier such as the rules for transmission from superClass "<BR>
        "to subClass and whether or not the qualifier value may be translated "<BR>
        "into other languages") ] <BR>
class Meta_QualifierFlavor:Meta_NamedElement<BR>
{<BR>
};</P>
<P>     </P>
<P>// ==================================================================<BR>
//    Schema<BR>
// ==================================================================<BR>
        [Version( "2" ), Revision( "2" ), Description (<BR>
        "The Meta_Schema class represents a group of classes with a single owner."<BR>
        " Schemas are used for administration and class naming. Class names must "<BR>
        "be unique within their owning schemas.") ] <BR>
class Meta_Schema:Meta_NamedElement<BR>
{<BR>
};</P>
<P>     </P>
<P>// ==================================================================<BR>
//    Trigger<BR>
// ==================================================================<BR>
        [Version( "2" ), Revision( "2" ), Description (<BR>
        "A Trigger is a recognition of a state change (such as create, delete, "<BR>
        "update, or access) of a Class instance, and update or access of a "<BR>
        "Property.") ] <BR>
class Meta_Trigger:Meta_NamedElement<BR>
{<BR>
};</P>
<P> </P>
<P>// ==================================================================<BR>
//    Qualifier<BR>
// ==================================================================<BR>
        [Version( "2" ), Revision( "2" ), Description (<BR>
        "The Meta_Qualifier class represents characteristics of named elements. "<BR>
        "For example, there are qualifiers that define the characteristics of a "<BR>
        "property or the key of a class. Qualifiers provide a mechanism that "<BR>
        "makes the Metaschema extensible in a limited and controlled fashion."<BR>
        "&lt;P&gt;It is possible to add new types of qualifiers by the introduction of "<BR>
        "a new qualifier name, thereby providing new types of metadata to "<BR>
        "processes that manage and manipulate classes, properties, and other "<BR>
        "elements of the Metaschema.") ] <BR>
class Meta_Qualifier:Meta_NamedElement<BR>
{<BR>
        [Description ("The Value property indicates the value of the qualifier.")] <BR>
    string Value;<BR>
};</P>
<P>     </P>
<P>// ==================================================================<BR>
//    Method<BR>
// ==================================================================<BR>
        [Version( "2" ), Revision( "2" ), Description (<BR>
        "The Meta_Method class represents a declaration of a signature; that is, "<BR>
        "the method name, return type and parameters, and (in the case of a "<BR>
        "concrete class) may imply an implementation.") ] <BR>
class Meta_Method:Meta_NamedElement<BR>
{<BR>
};</P>
<P>     </P>
<P>// ==================================================================<BR>
//    Property<BR>
// ==================================================================<BR>
        [Version( "2" ), Revision( "2" ), Description (<BR>
        "The Meta_Property class represents a value used to characterize "<BR>
        "instances of a class. A property can be thought of as a pair of Get and "<BR>
        "Set functions that, when applied to an object,  return state and set "<BR>
        "state, respectively.") ] <BR>
class Meta_Property:Meta_NamedElement<BR>
{<BR>
};</P>
<P>     </P>
<P>// ==================================================================<BR>
//    Reference<BR>
// ==================================================================<BR>
        [Version( "2" ), Revision( "2" ), Description (<BR>
        "The Meta_Reference class represents (and defines) the role each object "<BR>
        "plays in an association. The reference represents the role name of a "<BR>
        "class in the context of an association, which supports the provision of "<BR>
        "multiple relationship instances for a given object. For example, a "<BR>
        "system can be related to many system components.") ] <BR>
class Meta_Reference:Meta_Property<BR>
{<BR>
};</P>
<P>     </P>
<P>// ==================================================================<BR>
//    Class<BR>
// ==================================================================<BR>
        [Version( "2" ), Revision( "2" ), Description (<BR>
        "The Meta_Class class is a collection of instances that support the same "<BR>
        "type; that is, the same properties and methods. Classes can be arranged "<BR>
        "in a generalization hierarchy that represents subtype relationships "<BR>
        "between classes.&lt;P&gt;The generalization hierarchy is a rooted, directed "<BR>
        "graph and does not support multiple inheritance. Classes can have "<BR>
        "methods, which represent the behavior relevant for that class. A Class "<BR>
        "may participate in associations by being the target of one of the "<BR>
        "references owned by the association.") ] <BR>
class Meta_Class:Meta_NamedElement<BR>
{<BR>
};</P>
<P>     </P>
<P>// ==================================================================<BR>
//    Indication<BR>
// ==================================================================<BR>
        [Version( "2" ), Revision( "2" ), Description (<BR>
        "The Meta_Indication class represents an object created as a result of a "<BR>
        "trigger. Because Indications are subtypes of Meta_Class, they can have "<BR>
        "properties and methods, and be arranged in a type hierarchy. ") ] <BR>
class Meta_Indication:Meta_Class<BR>
{<BR>
};</P>
<P>     </P>
<P>// ==================================================================<BR>
//    Association<BR>
// ==================================================================<BR>
        [Version( "2" ), Revision( "2" ), Description (<BR>
        "The Meta_Association class represents a class that contains two or more "<BR>
        "references and represents a relationship between two or more objects. "<BR>
        "Because of how associations are defined, it is possible to establish a "<BR>
        "relationship between classes without affecting any of the related "<BR>
        "classes.&lt;P&gt;For example, the addition of an association does not affect "<BR>
        "the interface of the related classes; associations have no other "<BR>
        "significance. Only associations can have references. Associations can "<BR>
        "be a subclass of a non-association class . Any subclass of "<BR>
        "Meta_Association is an association.") ] <BR>
class Meta_Association:Meta_Class<BR>
{<BR>
};</P>
<P>     </P>
<P>// ==================================================================<BR>
//    Characteristics<BR>
// ==================================================================<BR>
        [Association, Version( "2" ), Revision( "2" ), Aggregation, Description (<BR>
        "The Meta_Characteristics class relates a Meta_NamedElement to a "<BR>
        "qualifier that characterizes the named element. Meta_NamedElement may "<BR>
        "have zero or more characteristics.") ] <BR>
class Meta_Characteristics<BR>
{<BR>
        [Description (<BR>
        "The Characteristic reference represents the qualifier that "<BR>
        "characterizes the named element.") ] <BR>
    Meta_Qualifier REF Characteristic;<BR>
        [Aggregate, Description (<BR>
        "The Characterized reference represents the named element that is being "<BR>
        "characterized.") ] <BR>
    Meta_NamedElement REF Characterized;<BR>
};</P>
<P>     </P>
<P>// ==================================================================<BR>
//    PropertyDomain<BR>
// ==================================================================<BR>
        [Association, Version( "2" ), Revision( "2" ), Aggregation, Description (<BR>
        "The Meta_PropertyDomain class represents an association between a class "<BR>
        "and a property.&lt;P&gt;A property  has only one domain: the class that owns "<BR>
        "the property. A property can have an override relationship with another "<BR>
        "property from a different class. The domain of the overridden property "<BR>
        "must be a supertype of the domain of the overriding property.  The "<BR>
        "domain of a reference must be an association.") ] <BR>
class Meta_PropertyDomain<BR>
{<BR>
        [Description (<BR>
        "The Property reference represents the property that is owned by the "<BR>
        "class referenced by Domain.") ] <BR>
    Meta_Property REF Property;<BR>
        [Aggregate, Description (<BR>
        "The Domain reference represents the class that owns the property "<BR>
        "referenced by Property.") ] <BR>
    Meta_Class REF Domain;<BR>
};</P>
<P>     </P>
<P>// ==================================================================<BR>
//    MethodDomain<BR>
// ==================================================================<BR>
        [Association, Version( "2" ), Revision( "2" ), Aggregation, Description (<BR>
        "The Meta_MethodDomain class represents an association between a class "<BR>
        "and a method.&lt;P&gt;A method has only one domain: the class that owns the "<BR>
        "method, which can have an override relationship with another method "<BR>
        "from a different class. The domain of the overridden method must be a "<BR>
        "supertype of the domain of the overriding method. The signature of the "<BR>
        "method (that is, the name, parameters and return type) must be "<BR>
        "identical.") ] <BR>
class Meta_MethodDomain<BR>
{<BR>
        [Description (<BR>
        "The Method reference represents the method that is owned by the class "<BR>
        "referenced by Domain.") ] <BR>
    Meta_Method REF Method;<BR>
        [Aggregate, Description (<BR>
        "The Domain reference represents the class that owns the method "<BR>
        "referenced by Method.") ] <BR>
    Meta_Class REF Domain;<BR>
};</P>
<P>     </P>
<P>// ==================================================================<BR>
//    ReferenceRange<BR>
// ==================================================================<BR>
        [Association, Version( "2" ), Revision( "2" ), Description (<BR>
        "The Meta_ReferenceRange class defines the type of the reference.") ] <BR>
class Meta_ReferenceRange<BR>
{<BR>
        [Description (<BR>
        "The Reference reference represents the reference whose type is defined "<BR>
        "by Range.") ] <BR>
    Meta_Reference REF Reference;<BR>
        [Description (<BR>
        "The Range reference represents the class that defines the type of "<BR>
        "reference.") ] <BR>
    Meta_Class REF Range;<BR>
};</P>
<P>     </P>
<P>// ==================================================================<BR>
//    QualifiersFlavor<BR>
// ==================================================================<BR>
        [Association, Version( "2" ), Revision( "2" ), Aggregation, Description (<BR>
        "The Meta_QualifiersFlavor class represents an association between a "<BR>
        "flavor and a qualifier.") ] <BR>
class Meta_QualifiersFlavor<BR>
{<BR>
        [Description (<BR>
        "The Flavor reference represents the qualifier flavor to "<BR>
        "be applied to Qualifier.") ] <BR>
    Meta_QualifierFlavor REF Flavor;<BR>
        [Aggregate, Description (<BR>
        "The Qualifier reference represents the qualifier to which "<BR>
        "Flavor applies.") ] <BR>
    Meta_Qualifier REF Qualifier;<BR>
};</P>
<P>     </P>
<P>// ==================================================================<BR>
//    SubtypeSupertype<BR>
// ==================================================================<BR>
        [Association, Version( "2" ), Revision( "2" ), Description (<BR>
        "The Meta_SubtypeSupertype class represents subtype/supertype "<BR>
        "relationships between classes arranged in a generalization hierarchy. "<BR>
        "This generalization hierarchy is a rooted, directed graph and does not "<BR>
        "support multiple inheritance.") ] <BR>
class Meta_SubtypeSupertype<BR>
{<BR>
        [Description (<BR>
        "The SuperClass reference represents the class that is hierarchically "<BR>
        "immediately above the class referenced by SubClass.") ] <BR>
    Meta_Class REF SuperClass;<BR>
        [Description (<BR>
        "The SubClass reference represents the class that is the immediate "<BR>
        "descendent of the class referenced by SuperClass.") ] <BR>
    Meta_Class REF SubClass;<BR>
};</P>
<P>     </P>
<P>// ==================================================================<BR>
//    PropertyOverride<BR>
// ==================================================================<BR>
        [Association, Version( "2" ), Revision( "2" ), Description (<BR>
        "The Meta_PropertyOverride class represents an association between two "<BR>
        "properties where one overrides the other.&lt;P&gt;Properties have reflexive "<BR>
        "associations that represent property overriding. A property can "<BR>
        "override an inherited property, which implies that any access to the "<BR>
        "inherited property will result in the invocation of the implementation "<BR>
        "of the overriding property. A Property can have an override "<BR>
        "relationship with another property from a different class.&lt;P&gt;The domain "<BR>
        "of the overridden property must be a supertype of the domain of the "<BR>
        "overriding property. The class referenced by the Meta_ReferenceRange "<BR>
        "association of an overriding reference must be the same as, or a "<BR>
        "subtype of, the class referenced by the Meta_ReferenceRange "<BR>
        "associations of the reference being overridden.") ] <BR>
class Meta_PropertyOverride<BR>
{<BR>
        [Description (<BR>
        "The OverridingProperty reference represents the property that overrides "<BR>
        "the property referenced by OverriddenProperty.") ] <BR>
    Meta_Property REF OverridingProperty;<BR>
        [Description (<BR>
        "The OverriddenProperty reference represents the property that is "<BR>
        "overridden by the property reference by OverridingProperty.") ] <BR>
    Meta_Property REF OverriddenProperty;<BR>
};</P>
<P>     </P>
<P>// ==================================================================<BR>
//    MethodOverride<BR>
// ==================================================================<BR>
        [Association, Version( "2" ), Revision( "2" ), Description (<BR>
        "The Meta_MethodOverride class represents an association between two "<BR>
        "methods, where one overrides the other. Methods have reflexive "<BR>
        "associations that represent method overriding. A method can override an "<BR>
        "inherited method, which implies that any access to the inherited method "<BR>
        "will result in the invocation of the implementation of the overriding "<BR>
        "method.") ] <BR>
class Meta_MethodOverride<BR>
{<BR>
        [Description (<BR>
        "The OverridingMethod reference represents the method that overrides the "<BR>
        "method referenced by OverriddenMethod.") ] <BR>
    Meta_Method REF OverridingMethod;<BR>
        [Description (<BR>
        "The OverriddenMethod reference represents the method that is overridden "<BR>
        "by the method reference by OverridingMethod.") ] <BR>
    Meta_Method REF OverriddenMethod;<BR>
};</P>
<P>     </P>
<P>// ==================================================================<BR>
//    ElementSchema<BR>
// ==================================================================<BR>
        [Association, Version( "2" ), Revision( "2" ), Aggregation, Description (<BR>
        "The Meta_ElementSchema class represents the elements (typically classes "<BR>
        "and qualifiers) that make up a schema.") ] <BR>
class Meta_ElementSchema<BR>
{<BR>
        [Description (<BR>
        "The Element reference represents the named element that belongs to the "<BR>
        "schema referenced by Schema.") ] <BR>
    Meta_NamedElement REF Element;<BR>
        [Aggregate, Description (<BR>
        "The Schema reference represents the schema to which the named element "<BR>
        "referenced by Element belongs.") ] <BR>
    Meta_Schema REF Schema;<BR>
};     </P>
<LI><A NAME="_Toc404410923"><A NAME="_Ref412178790"><A NAME="_Toc453585028"></FONT><B><FONT SIZE=5>Values for UNITS Qualifier</A></A></LI></OL>
<DIR>
<DIR>

</B></FONT><FONT SIZE=3><P>The UNITS qualifier specifies the unit of measure in which the associated property is expressed. For example, a Size property might have Units ("bytes"). Currently recognized values are:</P></DIR>
</DIR>


<UL>

<UL>
<LI>Bits, KiloBits, MegaBits, GigaBits</LI>
<LI>Bits per Second</LI>
<LI>Bytes, KiloBytes, MegaBytes, GigaBytes, Words, DoubleWords, QuadWords</LI>
<LI>Degrees C, Tenths of Degrees C, Hundredths of Degrees C, Degrees F, Tenths of Degrees F, Hundredths of Degrees F, Degrees K, Tenths of Degrees K, Hundredths of Degrees K, Color Temperature</LI>
<LI>Volts, MilliVolts, Tenths of MilliVolts, Amps, MilliAmps, Tenths of MilliAmps, Watts, MilliWattHours</LI>
<LI>Joules, Coulombs, Newtons</LI>
<LI>Lumen, Lux, Candelas</LI>
<LI>Pounds, Pounds per Square Inch</LI>
<LI>Cycles, Revolutions, Revolutions per Minute, Revolutions per Second</LI>
<LI>Minutes, Seconds, Tenths of Seconds, Hundredths of Seconds, MicroSeconds, MilliSeconds, NanoSeconds</LI>
<LI>Hours, Days, Weeks</LI>
<LI>Hertz, MegaHertz</LI>
<LI>Pixels, Pixels per Inch</LI>
<LI>Counts per Inch</LI>
<LI>Percent, Tenths of Percent, Hundredths of Percent</LI>
<LI>Meters, Centimeters, Millimeters, Cubic Meters, Cubic Centimeters, Cubic Millimeters</LI>
<LI>Inches, Feet, Cubic Inches, Cubic Feet Ounces, Liters, Fluid Ounces</LI>
<LI>Radians, Steradians, Degrees</LI>
<LI>Gravities, Pounds, Foot-Pounds</LI>
<LI>Gauss, Gilberts, Henrys, MilliHenrys, Farads, MilliFarads, MicroFarads, PicoFarads</LI>
<LI>Ohms, Siemens</LI>
<LI>Moles, Becquerels, Parts per Million</LI>
<LI>Decibels, Tenths of Decibels</LI>
<LI>Grays, Sieverts</LI></UL>
</UL>

<OL TYPE="A">

<LI><A NAME="_Toc453585029"></FONT><B><FONT SIZE=5>UML Notation</A></A></LI>
</B></FONT><FONT SIZE=3><P>The CIM meta-schema notation is based directly on the notation used in Unified Modeling Language (UML). There are distinct symbols for all of the major constructs in the schema, with the exception of qualifiers (as opposed to properties, which are directly represented in the diagrams). </P>
<P>In UML, a class is represented by a rectangle. The class name either stands alone in the rectangle or is in the uppermost segment of the rectangle. If present, the segment below the segment containing the name contains the properties of the class. If present, a third region indicates the presence of methods. </P>
<P>A line decorated with a triangle indicates an inheritance relationship; the lower rectangle represents a subtype of the upper rectangle. The triangle points to the superclass. </P>
<P>Other solid lines represent relationships. The cardinality of the references on either side of the relationship is indicated by a decoration on either end. The following character combinations are commonly used:</P>
<P>&quot;1&quot;&#9; indicates a single-valued, required reference</P>
<P>&quot;0…1&quot; &#9;indicates an optional single-valued reference</P>
<P>&quot;*&quot;&#9; indicates an optional many-valued reference (as does &quot;0..*&quot;)</P>
<P>&quot;1..*&quot;&#9; indicates a required many-valued reference</P>
<P>A line connected to a rectangle by a dotted line represents a subclass relationship between two associations. </P>
<P>The diagramming notation and its interpretation are summarized in this table: </P></FONT>
<P ALIGN="CENTER"><CENTER><TABLE BORDER CELLSPACING=1 BORDERCOLOR="#000000" CELLPADDING=9 WIDTH=558>
<TR><TD WIDTH="24%" VALIGN="TOP">
<B><FONT SIZE=1><P>Meta element</B></FONT></TD>
<TD WIDTH="37%" VALIGN="TOP">
<B><FONT SIZE=1><P>Interpretation</B></FONT></TD>
<TD WIDTH="40%" VALIGN="TOP">
<B><FONT SIZE=1><P>Diagramming Notation</B></FONT></TD>
</TR>
<TR><TD WIDTH="24%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">Object</FONT></TD>
<TD WIDTH="37%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="40%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
</FONT><FONT SIZE=2><P ALIGN="CENTER"><IMG SRC="Image21.gif" WIDTH=101 HEIGHT=98></P>
</FONT><FONT SIZE=1><P ALIGN="CENTER"></FONT></TD>
</TR>
<TR><TD WIDTH="24%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">Primitive type</FONT></TD>
<TD WIDTH="37%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">Text to the right of the colon in the center portion of the class icon </FONT></TD>
<TD WIDTH="40%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER"><BR>
</FONT></TD>
</TR>
<TR><TD WIDTH="24%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">Class</FONT></TD>
<TD WIDTH="37%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="40%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
</FONT><FONT SIZE=2><P ALIGN="CENTER"><IMG SRC="Image22.gif" WIDTH=99 HEIGHT=99></P>
</FONT><FONT SIZE=1><P ALIGN="CENTER"></FONT></TD>
</TR>
<TR><TD WIDTH="24%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">Subclass</FONT></TD>
<TD WIDTH="37%" VALIGN="TOP">&nbsp;</TD>
<TD WIDTH="40%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
</FONT><FONT SIZE=2><P ALIGN="CENTER"><IMG SRC="Image23.gif" WIDTH=95 HEIGHT=72></P>
</FONT><FONT SIZE=1><P ALIGN="CENTER"></FONT></TD>
</TR>
<TR><TD WIDTH="24%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">Association</FONT></TD>
<TD WIDTH="37%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER"><BR>
1:1 </P>
<P ALIGN="CENTER">1:Many</P>
<P ALIGN="CENTER">1:zero or 1 </P>
<P ALIGN="CENTER">Aggregation</FONT></TD>
<TD WIDTH="40%" VALIGN="TOP">
<FONT SIZE=2><P ALIGN="CENTER"><IMG SRC="Image24.gif" WIDTH=108 HEIGHT=129></FONT></TD>
</TR>
<TR><TD WIDTH="24%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">Association with properties</FONT></TD>
<TD WIDTH="37%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER"> link-class with the link-class having the same name as the association, and using normal conventions for representing properties and methods.</FONT></TD>
<TD WIDTH="40%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
</FONT><FONT SIZE=2><P ALIGN="CENTER"><IMG SRC="Image25.gif" WIDTH=221 HEIGHT=145></FONT></TD>
</TR>
<TR><TD WIDTH="24%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">Association with subclass</FONT></TD>
<TD WIDTH="37%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">A dashed line running from the sub association to the super class.</FONT></TD>
<TD WIDTH="40%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
</FONT><FONT SIZE=2><P ALIGN="CENTER"><IMG SRC="Image26.gif" WIDTH=171 HEIGHT=60></FONT></TD>
</TR>
<TR><TD WIDTH="24%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">Property</FONT></TD>
<TD WIDTH="37%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">Middle section of the class icon is a list of the properties of the class.</FONT></TD>
<TD WIDTH="40%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
</FONT><FONT SIZE=2><P ALIGN="CENTER"><IMG SRC="Image27.gif" WIDTH=99 HEIGHT=99></P>
</FONT><FONT SIZE=1><P ALIGN="CENTER"></FONT></TD>
</TR>
<TR><TD WIDTH="24%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">Reference</FONT></TD>
<TD WIDTH="37%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">One end of the association line labeled with the name of the reference.</FONT></TD>
<TD WIDTH="40%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
</FONT><FONT SIZE=2><P ALIGN="CENTER"><IMG SRC="Image28.gif" WIDTH=110 HEIGHT=52></P>
</FONT><FONT SIZE=1><P ALIGN="CENTER"></FONT></TD>
</TR>
<TR><TD WIDTH="24%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">Method</FONT></TD>
<TD WIDTH="37%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">Lower section of the class icon is a list of the methods of the class.</FONT></TD>
<TD WIDTH="40%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
</FONT><FONT SIZE=2><P ALIGN="CENTER"><IMG SRC="Image29.gif" WIDTH=99 HEIGHT=99></P>
</FONT><FONT SIZE=1><P ALIGN="CENTER"></FONT></TD>
</TR>
<TR><TD WIDTH="24%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">Overriding</FONT></TD>
<TD WIDTH="37%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">No direct equivalent.</P>
<B><P ALIGN="CENTER">Note:</B> Use of the same name does not imply overriding.</FONT></TD>
<TD WIDTH="40%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER"><BR>
</FONT></TD>
</TR>
<TR><TD WIDTH="24%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">Indication</FONT></TD>
<TD WIDTH="37%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">Message trace diagram in which vertical bars represent objects and horizontal lines represent messages.</FONT></TD>
<TD WIDTH="40%" VALIGN="TOP">&nbsp;</TD>
</TR>
<TR><TD WIDTH="24%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">Trigger</FONT></TD>
<TD WIDTH="37%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">State transition diagrams.</FONT></TD>
<TD WIDTH="40%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER"><BR>
</FONT></TD>
</TR>
<TR><TD WIDTH="24%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">Qualifier</FONT></TD>
<TD WIDTH="37%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER">&nbsp;</P>
<P ALIGN="CENTER">No direct equivalent.</FONT></TD>
<TD WIDTH="40%" VALIGN="TOP">
<FONT SIZE=1><P ALIGN="CENTER"><BR>
</FONT></TD>
</TR>
</TABLE>
</CENTER></P>

<FONT SIZE=3><P>&nbsp;</P>
<LI><A NAME="_Toc373214132"><A NAME="_Toc404410924"><A NAME="_Toc453585030"></FONT><B><FONT SIZE=5>Glossary</A></A></A></LI>
</B></FONT><FONT SIZE=3></FONT>
<TABLE BORDER CELLSPACING=1 BORDERCOLOR="#000000" CELLPADDING=9>
<TR><TD WIDTH=450 VALIGN="TOP" COLSPAN=2></TD>
<TD></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>AggregationAssociation</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>A <I>class</I> that expresses the relationship between two other <I>classes</I>. The relationship is established by the presence of two or more <I>references</I> in the <I>association class</I> pointing to the related <I>classes</I>. </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Cardinality</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>A relationship between two classes that allows more than one <I>object</I> to be related to a single <I>object</I>. For example, Microsoft Office* is made up of the software elements Word, Excel, Access and PowerPoint. </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>CIM</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>Common Information Model is the schema of the overall managed environment. It is divided into a <I>Core model</I>, <I>Common model</I> and <I>extended schemas</I>. </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>CIM Schema</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>The schema representing the <I>Core</I> and <I>Common</I> <I>models</I>. Versions of this schema will be released by the DMTF over time as the schema evolves.</FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Class</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>A collection of instances, all of which support a common type; that is, a set of <I>properties</I> and <I>methods</I>. The common <I>properties</I> and <I>methods</I> are defined as <I>features</I> of the <I>class</I>. For example, the <I>class</I> called Modem represents all the modems present in a system. </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Common model</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>A collection of <I>models</I> specific to a particular area, derived from the <I>Core model</I>. Included are the system <I>model</I>, the application <I>model</I>, the network <I>model</I> and the device <I>model</I>. </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Core model</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>A subset of <I>CIM</I>, not specific to any platform. The <I>Core model</I> is set of <I>classes</I> and <I>associations</I> that establish a conceptual framework for the <I>schema</I> of the rest of the managed environment. Systems, applications, networks and related information are modeled as extensions to the <I>Core model</I>. </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Domain</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>A virtual room for object names that establishes the range in which the names of objects are unique.</FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Explicit Qualifier</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>A <I>qualifier</I> defined separately from the definition of a <I>class</I>, <I>property</I> or other schema element (see i<I>mplicit qualifier</I>). <I>Explicit qualifier</I> names must be unique across the entire <I>schema</I>. <I>Implicit qualifier</I> names must be unique within the defining schema element; that is, a given schema element may not have two <I>qualifiers</I> with the same name.</FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Extended schema</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>A platform specific <I>schema</I> derived from the Common model. An example is the Win32 <I>schema</I>. </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Feature</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>A <I>property</I> or <I>method</I> belonging to a <I>class</I>. </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Flavor</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>Part of a <I>qualifier</I> spcification indicating overriding and <I>inheritance </I>rules. For example, the <I>qualifier</I> KEY has Flavor(DisableOverride ToSubclass), meaning that every subclass must inherit it and cannot override it.</FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Implicit Qualifier</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>A <I>qualifier</I> defined as a part of the definition of a <I>class</I>, <I>property</I> or other schema element (see <I>explicit qualifier</I>). </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Indication</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>A type of <I>class</I> usually created as a result of the occurrence of a <I>trigger</I>. </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Inheritance</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>A relationship between two <I>classes</I> in which all the members of the <I>subclass</I> are required to be members of the <I>superclass</I>.  Any member of the <I>subclass</I> must also support any <I>method</I> or <I>property</I> supported by the <I>superclass</I>. For example, Modem is a <I>subclass</I> of Device. </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Instance</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>A unit of data. An <I>instance</I> is a set of <I>property</I> values that can be uniquely identified by a <I>key</I>.</FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Key</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>One or more qualified class properties that can be used to construct a name.</P>
<P>One or more qualified object properties which uniquely identify instances of this object in a namespace.</FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Managed Object</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>The actual item in the system environment that is accessed by the <I>provider</I>. For example, a Network Interface Card. </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Meta model</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>A set of <I>classes</I>, <I>associations</I> and <I>properties</I> that expresses the types of things that can be defined in a <I>Schema</I>. For example, the <I>meta model</I> includes a <I>class</I> called property which defines the <I>properties</I> known to the system, a <I>class</I> called method which defines the <I>methods</I> known to the system, and a <I>class</I> called class which defines the <I>classes</I> known to the system. </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Meta schema</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>The schema of the meta model. </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Method</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>A declaration of a signature; that is, the method name, return type and parameters, and, in the case of a concrete class, may imply an implementation.</FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Model</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>A set of <I>classes</I>, <I>properties</I> and <I>associations</I> that allows the expression of information about a specific domain. For example, a Network may consist of Network Devices and Logical Networks. The Network Devices may have attachment <I>associations</I> to each other, and may have member <I>associations</I> to Logical Networks. </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Model Path</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>A reference to an object within a namespace.</FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Namespace</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>An <I>object</I> that defines a scope within which object keys must be unique. </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Namespath Path</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>A reference to a namespace within an implementation that is capable of hosting CIM objects.</FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Name</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>Combination of a Namespace path and a Model path that identifies a unique object. </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Trigger</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>The occurrence of some action such as the creation, modification or deletion of an <I>object</I>, access to an <I>object,</I> or modification or access to a <I>property</I>. <I>Triggers</I> may also be fired as a result of the passage of a specified period of time. A <I>trigger</I> typically results in an <I>Indication</I>. </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Polymorphism</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>A <I>subclass</I> may redefine the implementation of a <I>method</I> or <I>property</I> inherited from its <I>superclass</I>. The <I>property</I> or <I>method</I> is thereby redefined, even if the <I>superclass</I> is used to access the object. For example, Device may define availability as a string, and may return the values &quot;powersave&quot;, "on" or "off." The Modem <I>subclass</I> of Device may redefine (override) availability by returning "on," "off," but not "powersave". If all Devices are enumerated, any Device that happens to be a modem will not return the value "powersave" for the availability <I>property</I>. </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Property</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>A value used to characterize an instance of a <I>class</I>. For example, a Device may have a <I>property</I> called status. </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Provider</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>An executable that can return or set information about a given <I>managed object</I>. </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Qualifier</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>A value used to characterize a <I>method</I>, <I>property</I>, or <I>class</I> in the <I>meta schema</I>. For example, if a property has the qualifier KEY with the value TRUE, the property is a key for the class. </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Reference</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>Special<I> </I> <I>property</I> <I>types</I> that are references or "pointers" to other instances. </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Schema</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>A namespace and unit of ownership for a set of classes. <I>Schemas</I> may come in forms such as a text file, information in a repository, or diagrams in a CASE tool. </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Scope</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>Part of a <I>Qualifier</I> specification indicating with which meta constructs the <I>Qualifier</I> can be used. For example, the <I>Qualifier</I> ABSTRACT has Scope(Class Association Indication), meaning that it can only be used with <I>Classes</I>, <I>Associations</I> and <I>Indications</I>. </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Scoping Object</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>Objects which represent a real-world managed element, which in turn propagate keys to other objects.</FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Signature</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>The return type and parameters supported by a <I>method</I>. </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Subclass</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>See <I>Inheritance</I>. </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP">
<B><FONT SIZE=2><P>Superclass</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2>
<FONT SIZE=1><P>See <I>Inheritance</I>. </FONT></TD>
</TR>
<TR><TD WIDTH=162 VALIGN="TOP" HEIGHT=22>
<B><FONT SIZE=2><P>Top Level Object</B></FONT></TD>
<TD WIDTH=738 VALIGN="TOP" COLSPAN=2 HEIGHT=22>
<FONT SIZE=1><P>A class or object that has no scoping object. </FONT></TD>
</TR>
</TABLE>

<FONT SIZE=2><LI><A NAME="_Ref385244809"><A NAME="_Toc404410925"><A NAME="_Toc453585031"></FONT><B><FONT SIZE=5>Unicode Usage</A></A></A> </LI></OL>
<DIR>
<DIR>

</B></FONT><FONT SIZE=3><P>All punctuation symbols associated with object path or MOF Syntax occur within the Basic Latin<I> </I>range U+0000 to U+007F. These include normal punctuators, such as slashes, colons, commas, and so on. No important syntactic punctuation character occurs outside of this range. </P>
<P>All characters above U+007F are treated as parts of names, even though there are several reserved characters such as U+2028 and U+2029 which are logically whitespace.</P>
<P>Therefore, all namespace, class and property names are identifiers composed as follows:</P></DIR>
</DIR>

<OL>

<OL>

<LI>Initial identifier characters must be in set S1, where S1 = {U+005F, U+0041...U+005A, U+0061...U+007A, U+0080...U+FFEF) [This is alphabetic, plus underscore]</LI>
<LI>All following characters must be in set S2 where S2 = S1 union {U+0030...U+0039} [This is alphabetic, underscore, plus Arabic numerals 0 through 9.]</LI></OL>
</OL>
<DIR>
<DIR>

<P>Note that the Unicode specials range (U+FFF0...U+FFFF) are not legal for identifiers. While the above sub-range of U+0080...U+FFEF includes many diacritical characters which would not be useful in an identifier, as well as the Unicode reserved sub-range which has not been allocated, it seems advisable for simplicity of parsers to simply treat this entire sub-range as 'legal' for identifiers.</P>
<P>Refer to RFC2279, published by the Internet Engineering Task Force (IETF), as an example of a Universal Transformation Format that has specific characteristics for dealing with multi-octet characters on an application-specific basis.</P></DIR>
</DIR>

<OL>
<OL>

<LI><A NAME="_Ref385241589"><A NAME="_Toc404410926"><A NAME="_Toc453585032"></FONT><B><FONT SIZE=4>MOF Text</A></A></A></LI>
</B></FONT><FONT SIZE=3><P>MOF files using Unicode must contain a signature as the first two bytes of the text file, either U+FFFE or U+FEFF, depending on the byte ordering of the text file (as suggested in Section 2.4 of the Unicode specification).</P>
<P>U+FFFE is little endian.</P>
<P>All MOF keywords and punctuation symbols are as described in the MOF Syntax document and are not locale-specific. They are composed of characters falling in the range U+0000...U+007F, regardless of the locale of origin for the MOF or its identifiers.</P>
<LI><A NAME="_Toc404410927"><A NAME="_Toc453585033"></FONT><B><FONT SIZE=4>Quoted Strings</A></A></LI></OL>
</OL>
<DIR>
<DIR>

</B></FONT><FONT SIZE=3><P>In all cases where non-identifier string values are required, delimiters must surround them. </P>
<P>The supported delimiter for strings is U+0027. Once a quoted string is started using the delimiter, the same delimiter, U+0027, is used to terminate it. </P>
<P>In addition, the digraph U+005C ("\") followed by U+0027 """ constitutes an embedded quotation mark, not a termination of the quoted string.</P>
<P>The characters permitted within the quotation mark delimiters just described may fall within the range U+0001 through U+FFEF.</P></DIR>
</DIR>

<OL TYPE="A">

<LI><A NAME="_Toc404410928"><A NAME="_Toc453585034"></FONT><B><FONT SIZE=5>Guidelines</A></A></LI></OL>
<DIR>
<DIR>

</B></FONT><FONT SIZE=3><P>Method descriptions are recommended and must, at a minimum, indicate that method’s side-effects (pre- and post-conditions).</P>
<P>Associations must not be declared as subtypes of classes that are not associations. </P>
<P>Leading underscores in identifiers are to be discouraged and not be used at all in the standard schemas.</P>
<P>As a general rule, it is recommended that class names not be reused as part of property or method names.  Property and method names are already unique within their defining class.</P>
<P>To enable information sharing between different CIM implementations, the MAXLEN qualifier should be used to specify the maximum length of string properties.  This qualifier must <B>always</B> be present for string properties used as keys.</P>
<P>A class that has no ABSTRACT qualifier must define, or inherit, key properties.</P></DIR>
</DIR>

<OL>
<OL>

<LI><A NAME="_Toc453585035"></FONT><B><FONT SIZE=4>Mapping of Octet Strings</A></LI>
</B></FONT><FONT SIZE=3><P>Most management models, including SNMP and DMI, support octet strings as data types. The octet string data type represents arbitrary numeric or textual data. This data is stored as an indexed byte array of unlimited, but fixed size.  Typically, the first N bytes indicate the actual string length.  Since some environments only reserve the first byte, they do not support octet strings larger than 255 bytes.</P>
<P>In the current release, CIM does not support octet strings as a separate data type. To map octet strings, it is recommended that the equivalent CIM property be defined as an array of unsigned 8-bit integers (uint8).  The first four bytes of the array contain the length of the octet data: byte 0 is the most significant byte of the length; byte 3 is the least significant byte of the length.  The octet data starts at byte 4.</P>
<LI><A NAME="_Toc453585036"></FONT><B><FONT SIZE=4>SQL Reserved Words</A></LI></OL>
</OL>
<DIR>
<DIR>

</B></FONT><FONT SIZE=3><P>It is recommended that SQL reserved words be avoided in the selection of class and property names. This particularly applies to property names, since class names are prefixed by the schema name, making a clash with a reserved word unlikely. The current set of SQL reserved words are:</P>
</FONT><B><P>From sql1992.txt:</P></DIR>
</DIR>
</B>
<P ALIGN="RIGHT"><TABLE CELLSPACING=0 BORDER=0 CELLPADDING=7 WIDTH=564>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>AFTER</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ALIAS</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ASYNC</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>BEFORE</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>BOOLEAN</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>BREADTH</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>COMPLETION</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>CALL</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>CYCLE</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>DATA</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>DEPTH</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>DICTIONARY</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>EACH</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ELSEIF</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>EQUALS</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>GENERAL</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>IF</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>IGNORE</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>LEAVE</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>LESS</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>LIMIT</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>LOOP</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>MODIFY</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>NEW</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>NONE</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>OBJECT</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>OFF</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>OID</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>OLD</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>OPERATION</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>OPERATORS</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>OTHERS</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>PARAMETERS</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>PENDANT</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>PREORDER</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>PRIVATE</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>PROTECTED</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>RECURSIVE</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>REF</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>REFERENCING</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>REPLACE</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>RESIGNAL</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>RETURN</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>RETURNS</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ROLE</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ROUTINE</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ROW</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SAVEPOINT</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SEARCH</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SENSITIVE</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SEQUENCE</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SIGNAL</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SIMILAR</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SQLEXCEPTION</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SQLWARNING</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>STRUCTURE</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>TEST</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>THERE</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>TRIGGER</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>TYPE</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>UNDER</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>VARIABLE</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>VIRTUAL</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>VISIBLE</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>WAIT</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>WHILE</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>WITHOUT</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20><P></P></TD>
</TR>
</TABLE>
</P>
<DIR>
<DIR>

<B><P>From sql1992.txt (Annex E):</P></DIR>
</DIR>
</B>
<P ALIGN="RIGHT"><TABLE CELLSPACING=0 BORDER=0 CELLPADDING=7 WIDTH=564>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ABSOLUTE</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ACTION</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ADD</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ALLOCATE</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ALTER</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ARE</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ASSERTION</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>AT</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>BETWEEN</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>BIT</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>BIT_LENGTH</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>BOTH</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>CASCADE</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>CASCADED</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>CASE</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>CAST</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>CATALOG</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>CHAR_LENGTH</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>CHARACTER_LENGTH</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>COALESCE</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>COLLATE</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>COLLATION</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>COLUMN</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>CONNECT</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>CONNECTION</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>CONSTRAINT</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>CONSTRAINTS</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>CONVERT</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>CORRESPONDING</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>CROSS</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>CURRENT_DATE</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>CURRENT_TIME</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>CURRENT_TIMESTAMP</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>CURRENT_USER</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>DATE</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>DAY</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>DEALLOCATE</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>DEFERRABLE</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>DEFERRED</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>DESCRIBE</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>DESCRIPTOR</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>DIAGNOSTICS</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>DISCONNECT</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>DOMAIN</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>DROP</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ELSE</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>END-EXEC</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>EXCEPT</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>EXCEPTION</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>EXECUTE</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>EXTERNAL</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>EXTRACT</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>FALSE</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>FIRST</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>FULL</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>GET</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>GLOBAL</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>HOUR</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>IDENTITY</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>IMMEDIATE</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>INITIALLY</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>INNER</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>INPUT</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>INSENSITIVE</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>INTERSECT</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>INTERVAL</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ISOLATION</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>JOIN</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>LAST</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>LEADING</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>LEFT</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>LEVEL</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>LOCAL</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>LOWER</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>MATCH</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>MINUTE</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>MONTH</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>NAMES</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>NATIONAL</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>NATURAL</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>NCHAR</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>NEXT</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>NO</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>NULLIF</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>OCTET_LENGTH</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ONLY</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>OUTER</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>OUTPUT</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>OVERLAPS</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>PAD</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>PARTIAL</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>POSITION</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>PREPARE</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>PRESERVE</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>PRIOR</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>READ</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>RELATIVE</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>RESTRICT</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>REVOKE</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>RIGHT</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ROWS</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SCROLL</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SECOND</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SESSION</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SESSION_USER</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SIZE</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SPACE</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SQLSTATE</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SUBSTRING</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SYSTEM_USER</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>TEMPORARY</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>THEN</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>TIME</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>TIMESTAMP</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>TIMEZONE_HOUR</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>TIMEZONE_MINUTE</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>TRAILING</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>TRANSACTION</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>TRANSLATE</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>TRANSLATION</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>TRIM</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>TRUE</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>UNKNOWN</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>UPPER</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>USAGE</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>USING</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>VALUE</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>VARCHAR</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>VARYING</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>WHEN</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>WRITE</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>YEAR</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ZONE</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20><P></P></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20><P></P></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20><P></P></TD>
</TR>
</TABLE>
</P>
<DIR>
<DIR>

<B><P>From sql3part2.txt (Annex E):</P></DIR>
</DIR>
</B>
<P ALIGN="RIGHT"><TABLE CELLSPACING=0 BORDER=0 CELLPADDING=7 WIDTH=564>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ACTION</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ACTOR</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>AFTER</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ALIAS</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ASYNC</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ATTRIBUTES</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>BEFORE</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>BOOLEAN</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>BREADTH</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>COMPLETION</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>CURRENT_PATH</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>CYCLE</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>DATA</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>DEPTH</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>DESTROY</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>DICTIONARY</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>EACH</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ELEMENT</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ELSEIF</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>EQUALS</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>FACTOR</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>GENERAL</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>HOLD</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>IGNORE</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>INSTEAD</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>LESS</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>LIMIT</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>LIST</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>MODIFY</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>NEW</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>NEW_TABLE</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>NO</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>NONE</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>OFF</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>OID</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>OLD</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>OLD_TABLE</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>OPERATION</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>OPERATOR</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>OPERATORS</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>PARAMETERS</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>PATH</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>PENDANT</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>POSTFIX</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>PREFIX</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>PREORDER</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>PRIVATE</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>PROTECTED</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>RECURSIVE</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>REFERENCING</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>REPLACE</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ROLE</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ROUTINE</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ROW</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SAVEPOINT</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SEARCH</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SENSITIVE</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SEQUENCE</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SESSION</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SIMILAR</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SPACE</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SQLEXCEPTION</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SQLWARNING</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>START</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>STATE</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>STRUCTURE</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SYMBOL</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>TERM</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>TEST</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>THERE</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>TRIGGER</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>TYPE</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>UNDER</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>VARIABLE</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>VIRTUAL</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>VISIBLE</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>WAIT</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>WITHOUT</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20><P></P></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20><P></P></TD>
</TR>
</TABLE>
</P>
<DIR>
<DIR>

<B><P>sql3part4.txt (ANNEX E):</P></DIR>
</DIR>
</B>
<P ALIGN="RIGHT"><TABLE CELLSPACING=0 BORDER=0 CELLPADDING=7 WIDTH=564>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>CALL</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>DO</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>ELSEIF</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>EXCEPTION</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>IF</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>LEAVE</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>LOOP</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>OTHERS</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>RESIGNAL</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>RETURN</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>RETURNS</FONT></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>SIGNAL</FONT></TD>
</TR>
<TR><TD WIDTH="28%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>TUPLE</FONT></TD>
<TD WIDTH="22%" VALIGN="TOP" HEIGHT=20>
<FONT SIZE=1><P>WHILE</FONT></TD>
<TD WIDTH="26%" VALIGN="TOP" HEIGHT=20><P></P></TD>
<TD WIDTH="24%" VALIGN="TOP" HEIGHT=20><P></P></TD>
</TR>
</TABLE>
</P>

<FONT SIZE=2><P>&nbsp;</P>
<OL TYPE="A">

<LI><A NAME="_Toc404410929"><A NAME="_Toc453585037"></FONT><B><FONT SIZE=5>References</A></A></LI></OL>
<DIR>
<DIR>
<DIR>

</B></FONT><FONT SIZE=3><P>[1]&#9;Grady Booch and James Rumbaugh, <I>Unified Method for Object-Oriented Development Document Set</I>, Rational Software Corporation, 1996, <U>http://www.rational.com/uml</P>
</U><P>[2]&#9;HyperMedia Management Protocol, Protocol Encoding, draft-hmmp-encoding-03.txt, February, 1997</P>
<P>[3]&#9;<I>Interface Definition Language</I>, DCE/RPC, The Open Group.</P>
<P>[4]&#9;Georges Gardarin and Patrick Valduriez, <I>Relational Databases and Knowledge Bases</I>, Addison Wesley, 1989 </P>
<P>[5]&#9;Coplein, James O., Schmidt, Douglas C (eds). <I>Pattern Languages of Program Design</I>, Addison-Wesley, Reading Mass., 1995</P>
<P>[6]&#9;IEEE Standard for Binary Floating-Point Arithmetic, <I>ANSI/IEEE Standard 754-1985</I>, Institute of Electrical and Electronics Engineers, August 1985.</P>
<P>[7]&#9;Augmented BNF for Syntax Specifications: ABNF, RFC 2234, Nov 1997</P>
<P>[8]&#9;G. Weinberger, <I>General Systems Theory</P>
</I><P>[9]&#9;<I>The Unicode Standard</I>, Version 2.0, by The Unicode Consortium, Addison-Wesley, 1996.</P>
<P>[10]&#9;Universal Multiple-Octet Coded Character Set, ISO/IEC 10646</P>
<P>[11]&#9;UCS Transformation Format 8 (UTF-8), ISO/IEC 10646-1:1993 Amendment 2 (1996)</P>
<P>[12]&#9;Code for the Representation of Names of Languages, ISO/IEC 639:1988 (E/F)</P>
<P>[13]&#9;Code for the Representation of Names of Territory, ISO/IEC 3166:1988 (E/F)</P>
</FONT><FONT SIZE=2></DIR>
</DIR>
</DIR>
</FONT></BODY>
</HTML>

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2