CMDBf Data Model
Jump to navigation
Jump to search
<?xml version="1.0" encoding="UTF-8" ?> <!-- Copyright Notice (c) 2007 by BMC Software, CA, Fujitsu, Hewlett-Packard, IBM, and Microsoft. All rights reserved. Permission to copy and display this portion of the CMDB Federation specification, in any medium without fee or royalty is hereby granted, provided that you include the following on ALL copies of the CMDB Federation specification, or portions thereof, that you make: 1. A link or URL to the Specification at the website of one of the authors. 2. The copyright notice as shown in the Specification. BMC Software, CA, Fujitsu, Hewlett-Packard, IBM, and Microsoft (collectively, the "Authors") each agree to grant you a royalty-free license, under reasonable, non-discriminatory terms and conditions to their respective patents that they deem necessary to implement the Specification. THE "CMDB FEDERATION" SPECIFICATION IS PROVIDED "AS IS," AND THE AUTHORS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE "CMDB FEDERATION" SPECIFICATION ARE SUITABLE FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. THE AUTHORS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO ANY USE OR DISTRIBUTION OF THE "CMDB FEDERATION" SPECIFICATION. The name and trademarks of the Authors may NOT be used in any manner, including advertising or publicity pertaining to the "CMDB FEDERATION" Specification or its contents without specific, written prior permission. Title to copyright in the "CMDB FEDERATION" Specification will at all times remain with the Authors. No other rights are granted by implication, estoppel or otherwise. --> <xs:schema targetNamespace="http://cmdbf.org/schema/1-0-0/datamodel" elementFormDefault="qualified" blockDefault="#all" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cmdbf="http://cmdbf.org/schema/1-0-0/datamodel"> <!-- Message Global Element Declarations --> <xs:element name="query" type="cmdbf:QueryType" /> <xs:element name="queryResult" type="cmdbf:QueryResultType" /> <xs:element name="registerRequest" type="cmdbf:RegisterRequestType" /> <xs:element name="registerResponse" type="cmdbf:RegistrationServiceResponseType" /> <xs:element name="deregisterRequest" type="cmdbf:DeregisterRequestType" /> <xs:element name="deregisterResponse" type="cmdbf:RegistrationServiceResponseType" /> <!-- Query Fault Message Global Element Declarations --> <xs:element name="UnkownTemplateIDFault"> <xs:complexType> <xs:sequence> <xs:element name="graphId" type="xs:ID" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="InvalidPropertyTypeFault"> <xs:complexType> <xs:sequence> <xs:element name="propertyName"> <xs:complexType> <xs:attribute name="localName" type="xs:NCName" use="required" /> <xs:attribute name="namespace" type="xs:anyURI" use="required" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="XPathErrorFault"> <xs:complexType> <xs:sequence> <xs:element name="expression" type="xs:string" /> <xs:element name="xpathErrorCode" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="UnsupportedConstraintFault"> <xs:complexType> <xs:sequence> <xs:element name="constraint"> <xs:complexType> <xs:attribute name="localName" type="xs:NCName" use="required" /> <xs:attribute name="namespace" type="xs:anyURI" use="required" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="UnsupportedSelectorFault"> <xs:complexType> <xs:sequence> <xs:element name="selector"> <xs:complexType> <xs:attribute name="localName" type="xs:NCName" use="required" /> <xs:attribute name="namespace" type="xs:anyURI" use="required" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="QueryErrorFault"> <xs:complexType> <xs:sequence> <xs:any namespace="##any" processContents="lax" /> </xs:sequence> </xs:complexType> </xs:element> <!-- Registration Message Global Element Declarations --> <xs:element name="InvalidRecordFault"> <xs:complexType> <xs:sequence> <xs:element name="recordId" type="xs:anyURI" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="UnsupportedRecordTypeFault"> <xs:complexType> <xs:sequence> <xs:element name="recordType"> <xs:complexType> <xs:attribute name="localName" type="xs:NCName" use="required" /> <xs:attribute name="namespace" type="xs:anyURI" use="required" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="InvalidMDRFault"> <xs:complexType> <xs:sequence> <xs:element name="mdrId" type="xs:anyURI" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="RegistrationErrorFault"> <xs:complexType> <xs:sequence> <xs:element name="recordId" type="xs:anyURI" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="DeregistrationErrorFault"> <xs:complexType> <xs:sequence> <xs:element name="recordId" type="xs:anyURI" /> </xs:sequence> </xs:complexType> </xs:element> <!-- Query Request Definitions --> <xs:complexType name="QueryType"> <xs:sequence> <xs:element name="itemTemplate" type="cmdbf:ItemTemplateType" minOccurs="0" maxOccurs="unbounded" /> <xs:element name="relationshipTemplate" type="cmdbf:RelationshipTemplateType" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> <xs:complexType name="ItemTemplateType"> <xs:sequence> <xs:choice> <xs:group ref="cmdbf:Constraints" /> <xs:element name="xpathExpression" type="cmdbf:XPathExpressionType" minOccurs="0" maxOccurs="unbounded" /> </xs:choice> <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" /> </xs:sequence> <xs:attribute name="id" type="xs:ID" use="required" /> <xs:attribute name="suppressFromResult" type="xs:boolean" use="optional" default="false"/> </xs:complexType> <xs:group name="Constraints" > <xs:sequence> <xs:element name="contentSelector" type="cmdbf:ContentSelectorType" minOccurs="0" maxOccurs="1" /> <xs:element name="instanceIdConstraint" type="cmdbf:InstanceIdConstraintType" minOccurs="0" maxOccurs="1" /> <xs:element name="recordConstraint" type="cmdbf:RecordConstraintType" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:group> <xs:complexType name="RelationshipTemplateType"> <xs:sequence> <xs:choice> <xs:group ref="cmdbf:Constraints" /> <xs:element name="xpathExpression" type="cmdbf:XPathExpressionType" minOccurs="0" maxOccurs="unbounded" /> </xs:choice> <xs:element name="sourceTemplate" type="cmdbf:RelationshipRefType" minOccurs="0" maxOccurs="1" /> <xs:element name="targetTemplate" type="cmdbf:RelationshipRefType" minOccurs="0" maxOccurs="1" /> <xs:element name="depthLimit" type="cmdbf:DepthLimitType" minOccurs="0" maxOccurs="1" /> <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" /> </xs:sequence> <xs:attribute name="id" type="xs:ID" use="required" /> <xs:attribute name="suppressFromResult" type="xs:boolean" use="optional" default="false"/> </xs:complexType> <xs:complexType name="RelationshipRefType"> <xs:attribute name="ref" type="xs:IDREF" use="required" /> <xs:attribute name="minimum" type="xs:int" /> <xs:attribute name="maximum" type="xs:int" /> </xs:complexType> <xs:complexType name="DepthLimitType"> <xs:attribute name="maxIntermediateItems" type="xs:positiveInteger" /> <xs:attribute name="intermediateItemTemplate" type="xs:IDREF" /> </xs:complexType> <xs:complexType name="ContentSelectorType"> <xs:sequence> <xs:element name="selectedRecordType" type="cmdbf:SelectedRecordTypeType" minOccurs="0" maxOccurs="unbounded" /> <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" /> </xs:sequence> <xs:attribute name="matchedRecords" type="xs:boolean" use="optional" default="true"/> </xs:complexType> <xs:complexType name="SelectedRecordTypeType"> <xs:sequence> <xs:element name="selectedProperty" type="cmdbf:QNameType" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> <xs:attribute name="namespace" type="xs:anyURI" use="required" /> <xs:attribute name="localName" type="xs:NCName" use="required" /> </xs:complexType> <xs:complexType name="InstanceIdConstraintType"> <xs:sequence> <xs:element ref="cmdbf:instanceId" maxOccurs="unbounded" minOccurs="1" /> </xs:sequence> </xs:complexType> <xs:complexType name="RecordConstraintType"> <xs:sequence> <xs:element name="recordType" type="cmdbf:QNameType" minOccurs="0" maxOccurs="unbounded" /> <xs:element name="propertyValue" type="cmdbf:PropertyValueType" minOccurs="0" maxOccurs="unbounded" /> <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" /> </xs:sequence> </xs:complexType> <xs:complexType name="PropertyValueType"> <xs:sequence> <xs:element name="equal" type="cmdbf:EqualOperatorType" minOccurs="0" maxOccurs="unbounded" /> <xs:element name="less" type="cmdbf:ComparisonOperatorType" minOccurs="0" maxOccurs="1" /> <xs:element name="lessOrEqual" type="cmdbf:ComparisonOperatorType" minOccurs="0" maxOccurs="1" /> <xs:element name="greater" type="cmdbf:ComparisonOperatorType" minOccurs="0" maxOccurs="1" /> <xs:element name="greaterOrEqual" type="cmdbf:ComparisonOperatorType" minOccurs="0" maxOccurs="1" /> <xs:element name="contains" type="cmdbf:StringOperatorType" minOccurs="0" maxOccurs="unbounded" /> <xs:element name="like" type="cmdbf:StringOperatorType" minOccurs="0" maxOccurs="unbounded" /> <xs:element name="isNull" type="cmdbf:NullOperatorType" minOccurs="0" maxOccurs="1" /> <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" /> </xs:sequence> <xs:attribute name="namespace" type="xs:anyURI" use="required" /> <xs:attribute name="localName" type="xs:NCName" use="required" /> <xs:attribute name="recordMetadata" type="xs:boolean" use="optional" default="false" /> <xs:attribute name="matchAny" type="xs:boolean" use="optional" default="false" /> </xs:complexType> <!-- property value operators --> <xs:complexType name="ComparisonOperatorType"> <xs:simpleContent> <xs:extension base="xs:anySimpleType"> <xs:attribute name="negate" type="xs:boolean" use="optional" default="false" /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="StringOperatorType"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="caseSensitive" type="xs:boolean" use="optional" default="true" /> <xs:attribute name="negate" type="xs:boolean" use="optional" default="false" /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="EqualOperatorType"> <xs:simpleContent> <xs:extension base="xs:anySimpleType"> <xs:attribute name="caseSensitive" type="xs:boolean" use="optional" default="true" /> <xs:attribute name="negate" type="xs:boolean" use="optional" default="false" /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="NullOperatorType"> <xs:attribute name="negate" type="xs:boolean" use="optional" default="false" /> </xs:complexType> <xs:complexType name="XPathExpressionType"> <xs:sequence> <xs:element name="prefixMapping" type="cmdbf:PrefixMappingType" minOccurs="1" maxOccurs="unbounded" /> <xs:element name="expression" type="xs:string" /> </xs:sequence> <xs:attribute name="dialect" type="xs:anyURI" use="required" /> </xs:complexType> <xs:complexType name="PrefixMappingType"> <xs:attribute name="prefix" type="xs:NCName" use="required" /> <xs:attribute name="namespace" type="xs:anyURI" use="required" /> </xs:complexType> <!-- Query Response definition --> <xs:complexType name="QueryResultType"> <xs:sequence> <xs:element name="nodes" type="cmdbf:NodesType" minOccurs="0" maxOccurs="unbounded" /> <xs:element name="edges" type="cmdbf:EdgesType" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> <xs:complexType name="NodesType"> <xs:sequence> <xs:element ref="cmdbf:item" minOccurs="1" maxOccurs="unbounded" /> </xs:sequence> <xs:attribute name="templateId" type="xs:ID" use="required" /> </xs:complexType> <xs:complexType name="EdgesType"> <xs:sequence> <xs:element ref="cmdbf:relationship" minOccurs="1" maxOccurs="unbounded" /> </xs:sequence> <xs:attribute name="templateId" type="xs:ID" use="required" /> </xs:complexType> <!-- Registration Service --> <xs:complexType name="RegisterRequestType"> <xs:sequence> <xs:element name="mdrId" type="xs:anyURI" /> <xs:element name="itemList" type="cmdbf:ItemListType" minOccurs="0" maxOccurs="1" /> <xs:element name="relationshipList" type="cmdbf:RelationshipListType" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:complexType> <xs:complexType name="ItemListType"> <xs:sequence> <xs:element ref="cmdbf:item" minOccurs="1" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> <xs:complexType name="RelationshipListType"> <xs:sequence> <xs:element ref="cmdbf:relationship" minOccurs="1" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> <xs:complexType name="DeregisterRequestType"> <xs:sequence> <xs:element name="mdrId" type="xs:anyURI" /> <xs:element name="itemIdList" type="cmdbf:MdrScopedIdListType" minOccurs="0" maxOccurs="1" /> <xs:element name="relationshipIdList" type="cmdbf:MdrScopedIdListType" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:complexType> <xs:complexType name="MdrScopedIdListType"> <xs:sequence> <xs:element ref="cmdbf:instanceId" minOccurs="1" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> <xs:complexType name="RegistrationServiceResponseType"> <xs:sequence> <xs:element name="instanceResponse" type="cmdbf:InstanceResponseType" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> <xs:complexType name="InstanceResponseType"> <xs:sequence> <xs:element name="instanceId" type="cmdbf:MdrScopedIdType" minOccurs="1" maxOccurs="1" /> <xs:element name="accepted" type="cmdbf:AcceptedType" maxOccurs="1" minOccurs="0" /> <xs:element name="declined" type="cmdbf:DeclinedType" maxOccurs="1" minOccurs="0" /> </xs:sequence> </xs:complexType> <xs:complexType name="AcceptedType"> <xs:sequence> <xs:element name="alternateInstanceId" type="cmdbf:MdrScopedIdType" maxOccurs="unbounded" minOccurs="0" /> </xs:sequence> </xs:complexType> <xs:complexType name="DeclinedType"> <xs:sequence> <xs:element name="reason" type="xs:string" maxOccurs="unbounded" minOccurs="0" /> </xs:sequence> </xs:complexType> <!-- Shared elements definition --> <xs:element name="item" type="cmdbf:ItemType" /> <xs:complexType name="ItemType"> <xs:sequence> <xs:element ref="cmdbf:record" minOccurs="0" maxOccurs="unbounded" /> <xs:element ref="cmdbf:instanceId" minOccurs="1" maxOccurs="unbounded" /> <xs:element name="additionalRecordType" type="cmdbf:QNameType" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> <xs:element name="relationship" type="cmdbf:RelationshipType" /> <xs:complexType name="RelationshipType"> <xs:sequence> <xs:element name="source" type="cmdbf:MdrScopedIdType" minOccurs="1" maxOccurs="1" /> <xs:element name="target" type="cmdbf:MdrScopedIdType" minOccurs="1" maxOccurs="1" /> <xs:element ref="cmdbf:record" minOccurs="0" maxOccurs="unbounded" /> <xs:element ref="cmdbf:instanceId" minOccurs="1" maxOccurs="unbounded" /> <xs:element name="additionalRecordType" type="cmdbf:QNameType" maxOccurs="unbounded" minOccurs="0" /> </xs:sequence> </xs:complexType> <xs:element name="record" type="cmdbf:RecordType" /> <xs:complexType name="RecordType"> <xs:sequence> <xs:any namespace="##other" processContents="skip" /> <xs:element name="recordMetadata" > <xs:complexType> <xs:sequence> <xs:element name="recordId" type="xs:anyURI" /> <xs:element name="lastModified" type="xs:dateTime" minOccurs="0" /> <xs:element name="baselineId" type="xs:string" minOccurs="0" /> <xs:element name="snapshotId" type="xs:string" minOccurs="0" /> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:element name="instanceId" type="cmdbf:MdrScopedIdType" /> <xs:complexType name="MdrScopedIdType"> <xs:sequence> <xs:element name="mdrId" type="xs:anyURI" minOccurs="1" maxOccurs="1" /> <xs:element name="localId" type="xs:anyURI" minOccurs="1" maxOccurs="1" /> </xs:sequence> </xs:complexType> <xs:complexType name="QNameType"> <xs:attribute name="namespace" type="xs:anyURI" use="required" /> <xs:attribute name="localName" type="xs:NCName" use="required" /> </xs:complexType> </xs:schema>