<!-- Template for describing a group of properties

                                        v0.8 20061009 RBLandau

Define a group of properties.  A group may contain 
- scalar properties that occur once, 
- vector properties that occur more than once, or
- tables, which are vectors of tuples of properties, 
  where the columns of the table are properties 
  and the rows (tuples) of the table repeat zero or more times.  
  
Cut and paste copies of the Property definition as needed and fill in.  
Properties may appear inside tables or outside tables in the group.
                                        
--> 

<Group GroupName="Name for the group">
<!-- The group may contain zero or more properties and tables -->

    <Description>
        <!-- Text description of the scope and purpose of the group.  -->
    </Description>

    <Table TableName="Name for the table within the group">
    <!-- The table may contain one or more properties.
        Properties may also appear as scalars outside the 
        context of a table.
    -->

        <Description>
            <!-- Text description of the scope and purpose of the table.  
            What are the objects represented here that repeat?  -->
        </Description>

        <TableRepetition>
                <RepetitionType> Fixed/Variable </RepetitionType>
                <NumberMin> <!-- Minimum number of repetitions --> </NumberMin>
                <NumberMax> <!-- Maximum number of repetitions --> </NumberMax>
        </TableRepetition>

        <Property AbstractName="Unique name used to identify the Property">

            <SNMPName> SNMP Name </SNMPName>
            <CIMName> CIM Name </CIMName>
 
            <Description>
                <!-- Detailed description of the property.  The description
                may go on for many lines as needed to give the user a clear
                understanding of the semantic content of the property. -->
            </Description>

            <!-- Depending on the datatype please choose one of the following. -->
            
            <Datatype Type="Integer">
                <RangeMin> <!-- Minimum value of the range --> </RangeMin>
                <RangeMax> <!-- Maximum value of the range --> </RangeMax>
                <Unit> 
                    <!-- Unit of measurement, if applicable, e.g., 
                    centimeters, cubic feet per minute, hours. --> 
                </Unit>
            </Datatype>

            <Datatype Type="String">
                <LengthMin> 
                    <!-- Minimum length of the string.  Specifically, 
                    zero if the string is allowed to be empty. --> 
                </LengthMin>
                <LengthMax> 
                    <!-- Maximum length of the string.  If the string
                    is fixed length, LengthMax must = LengthMin. --> 
                </LengthMax>
                <Localizable> Yes/No 
                    <!-- Is this string localizable? --> 
                </Localizable>
            </Datatype>

            <Datatype Type="EnumeratedInteger">     
                <Source> Local/URL </Source>
                    <!-- If Source is local then provide list of values here. -->
                <Value Number="Integer value"> <!-- String value --> </Value>
                <Value Number="Integer value"> <!-- String value --> </Value>
                <Value Number="Integer value"> <!-- String value --> </Value>
            </Datatype>

            <Datatype Type="EnumeratedString">
                <Source> Local/URL </Source>
                    <!-- If Source is Local then provide list of values here. -->
                <Value String="String Value" />
                .
                .       
            </Datatype>

            <Datatype Type="Counter">
                <RangeMax> 
                    <!-- Maximum value of the counter --> 
                </RangeMax>
                <Unit> 
                    <!-- Unit of measurement, e.g., hours, pages, Kbytes --> 
                </Unit>
            </Datatype>

            <Datatype Type="Gauge">
                <RangeMin> <!-- Minimum Value of the gauge --> </RangeMin>
                <RangeMax> <!-- Maximum Value of the gauge --> </RangeMax>
                <Unit> <!-- Unit of measurement, e.g., gallons --> </Unit>
            </Datatype>

            <Datatype Type="Boolean" />

            <Datatype Type="IntegerConstant">
                <Value> <!-- Whatever the vendor says --> </Value>
            </Datatype>

            <Datatype Type="StringConstant">
                <Value> <!-- Whatever the vendor says --> </Value>
            </Datatype>

            <Datatype Type="AbsoluteDateTime">
                <Format> 
                    <!-- Format of the DateTime property, specified
                    as (some format TBS) -->
                </Format>
                <Precision> <!-- Precision for the date and time --> </Precision>
                <Timezone> 
                    <!-- Timezone information for the DateTime
                    specified as GMT+nnnn or GMT-nnnn 
                    where nnnn is in minutes. (approximately ISO) --> 
                </Timezone>
            </Datatype>

            <Datatype Type="DeltaTime">
                <Precision> 
                    <!-- Precision for the time: hours, minutes
                    seconds, hundredths, microseconds, etc. --> 
                </Precision>
            </Datatype>

            <Datatype Type="IPv4Address" />

            <Datatype Type="IPv6Address" />

            <Datatype Type="MACAddress" />

            <!-- Valid URL, syntax in accord with RFC3986 -->
            <Datatype Type="URL" />

            <!-- email address, syntax = someone@someplace.somedomain -->
            <Datatype Type="EmailAddress" />

            <Datatype Type="PhoneNumber" /> 
                <!-- If the phone number does not
                begin with a "+" that indicates a
                full international dialing prefix, 
                "+1" will be assumed. -->

            <Datatype Type="Blob">
                <!-- blob = Binary Large OBject, 
                an opaque binary object of potentially
                large size. -->
            </Datatype>

            <!-- End of list of datatypes -->
            
            <!-- Other questions pertaining to the property -->

            <!-- Is this property mandatory or optional? -->
            <Optionality>
                <!-- Select one -->
                Mandatory<!-- MUST be implemented -->
                ConditionallyMandatory<!-- Dependent on a feature (describe) -->
                Optional<!-- MAY be implemented -->
            </Optionality>
            
            <!-- Does this property repeat?  Are there multiple instances of it? -->
            <PropertyRepetition>
                <RepetitionType> Fixed/Variable </RepetitionType>
                <NumberMin> <!-- Minimum number of repetitions --> </NumberMin>
                <NumberMax> <!-- Maximum number of repetitions --> </NumberMax>
            </PropertyRepetition>

            <!-- Is there a vendor-supplied default value for the property? -->
            <DefaultValue>
                <!-- Default value of the property in whatever format 
                is appropriate to the datatype. -->
                <Present> Yes/No </Present>
                <Value> <!-- number or enum value or string or n/a --> </Value>
            </DefaultValue>

            <!-- Is the property user writable (with authorization) -->
            <UserWritable> Yes/No </UserWritable>

            <!-- Does the value of the property ever change within a 
            power cycle? -->
            <Mutable> Yes/No </Mutable>
            
            <!-- Is the value of the property persistent across power cycles? -->
            <Persistent> Yes/No </Persistent>

            <!-- Is there an external specification that defines this property? -->
            <ExternalSpec> <!-- URL of the specification --> </ExternalSpec>
            
            <!-- Is this property always available for management? -->
            <Availability> Always/StandbyReadonly/FullPowerOnly
                <!-- In what power states must this property be available?  
                Does it need to be available when the device is powered down, 
                that is, when the device is running on auxiliary power?
                Is it sufficient if the property is writable when powered up
                but read-only on auxiliary power? 
                This is the *minimum* requirement; implementations may 
                do more. --> 
            </Availability>

            <!-- Relationship of this property with others -->
            <Relationships>
                <!-- Text description of the relationships here that this 
                property has with others, e.g., must match some other property, 
                must not match some other property (unique value), etc. -->
            </Relationships>

        </Property>

    </Table>
    
</Group>