<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:core="http://schema.omg.org/spec/CTS2/1.0/Core"
  xmlns:coreService="http://schema.omg.org/spec/CTS2/1.0/CoreService"
  xmlns:mapEntryService="http://schema.omg.org/spec/CTS2/1.0/MapEntryServices"
  xmlns:updates="http://schema.omg.org/spec/CTS2/1.0/Updates"
  xmlns:mapVersion="http://schema.omg.org/spec/CTS2/1.0/MapVersion"
  xmlns:tns="http://schema.omg.org/spec/CTS2/1.0/wsdl/MapEntryMaintenanceServices"
  attributeFormDefault="qualified"
  elementFormDefault="qualified"
  targetNamespace="http://schema.omg.org/spec/CTS2/1.0/wsdl/MapEntryMaintenanceServices">
  
  <xs:import namespace="http://schema.omg.org/spec/CTS2/1.0/Core" schemaLocation="../core/Core.xsd"/>
  <xs:import namespace="http://schema.omg.org/spec/CTS2/1.0/CoreService" schemaLocation="../core/CoreService.xsd"/>
  <xs:import namespace="http://schema.omg.org/spec/CTS2/1.0/Updates" schemaLocation="../updates/Updates.xsd"/>
  <xs:import namespace="http://schema.omg.org/spec/CTS2/1.0/MapVersion" schemaLocation="../mapversion/MapVersion.xsd"/>
  <xs:import namespace="http://schema.omg.org/spec/CTS2/1.0/MapEntryServices" schemaLocation="../mapversion/MapEntryServices.xsd"/>
  <xs:import namespace="http://schema.omg.org/spec/CTS2/1.0/wsdl/BaseServiceTypes" schemaLocation="BaseServiceTypes.xsd"/>
  <xs:import namespace="http://schema.omg.org/spec/CTS2/1.0/wsdl/BaseQueryServiceTypes" schemaLocation="BaseQueryServiceTypes.xsd"/>
  <xs:import namespace="http://schema.omg.org/spec/CTS2/1.0/wsdl/UpdateServices" schemaLocation="UpdateServiceTypes.xsd"/>
  
  <xs:element name="validateChangeSet" type="tns:validateChangeSet"/>
  <xs:complexType name="validateChangeSet">
    <xs:sequence>
      <xs:element minOccurs="1" name="validationLevel" type="coreService:ValidationLevel"/>
      <xs:element minOccurs="1" name="changeSet" type="updates:ChangeSet"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="validateChangeSetResponse" type="tns:validateChangeSetResponse"/>
  <xs:complexType name="validateChangeSetResponse">
    <xs:sequence>
      <xs:element name="return" type="coreService:ValidationResponse"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="createMapEntry" type="tns:createMapEntry"/>
  <xs:complexType name="createMapEntry">
    <xs:sequence>
      <xs:element minOccurs="1" name="changeSet" type="core:ChangeSetURI"/>
      <xs:element minOccurs="1" name="assertedBy" type="coreService:NameOrURI"/>
      <xs:element minOccurs="1" name="mapFrom" type="coreService:EntityNameOrURI"/>
      <xs:element minOccurs="1" name="processingRule" type="mapVersion:MapProcessingRule"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="createMapEntryResponse" type="tns:createMapEntryResponse"/>
  <xs:complexType name="createMapEntryResponse">
    <xs:sequence>
      <xs:element name="return" type="mapVersion:MapEntry"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="commitChangeSet" type="tns:commitChangeSet"/>
  <xs:complexType name="commitChangeSet">
    <xs:sequence>
      <xs:element minOccurs="1" name="changeSet" type="core:ChangeSetURI"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="commitChangeSetResponse" type="tns:commitChangeSetResponse"/>
  <xs:complexType name="commitChangeSetResponse">
    <xs:sequence/>
  </xs:complexType>
  
  <xs:element name="updateChangeSetMetadata" type="tns:updateChangeSetMetadata"/>
  <xs:complexType name="updateChangeSetMetadata">
    <xs:sequence>
      <xs:element minOccurs="1" name="changeSet" type="core:ChangeSetURI"/>
      <xs:element minOccurs="1" name="request" type="coreService:UpdateChangeSetMetadataRequest"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="updateChangeSetMetadataResponse" type="tns:updateChangeSetMetadataResponse"/>
  <xs:complexType name="updateChangeSetMetadataResponse">
    <xs:sequence/>
  </xs:complexType>
  
  <xs:element name="putChangeSet" type="tns:putChangeSet"/>
  <xs:complexType name="putChangeSet">
    <xs:sequence>
      <xs:element minOccurs="1" name="changeSet" type="updates:ChangeSet"/>
      <xs:element minOccurs="0" name="errorResponse" type="coreService:ErrorResponse"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="putChangeSetResponse" type="tns:putChangeSetResponse"/>
  <xs:complexType name="putChangeSetResponse">
    <xs:sequence>
      <xs:element name="return" type="coreService:SuccessIndicator"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="listChanges" type="tns:listChanges"/>
  <xs:complexType name="listChanges">
    <xs:sequence>
      <xs:element minOccurs="0" name="fromDate" type="core:DateAndTime"/>
      <xs:element minOccurs="0" name="toDate" type="core:DateAndTime"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="listChangesResponse" type="tns:listChangesResponse"/>
  <xs:complexType name="listChangesResponse">
    <xs:sequence>
      <xs:element name="return" type="coreService:ChangeSetEntryList"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="updateChangeableMetadata" type="tns:updateChangeableMetadata"/>
  <xs:complexType name="updateChangeableMetadata">
    <xs:sequence>
      <xs:element minOccurs="1" name="changeSet" type="core:ChangeSetURI"/>
      <xs:element minOccurs="1" name="entryID" type="core:PersistentURI" />
      <xs:element minOccurs="1" name="request" type="coreService:UpdateChangeableMetadataRequest"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="updateChangeableMetadataResponse" type="tns:updateChangeableMetadataResponse"/>
  <xs:complexType name="updateChangeableMetadataResponse">
    <xs:sequence>
      <xs:element name="return" type="core:Changeable"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="updateMapEntry" type="tns:updateMapEntry"/>
  <xs:complexType name="updateMapEntry">
    <xs:sequence>
      <xs:element minOccurs="1" name="changeSet" type="core:ChangeSetURI"/>
      <xs:element minOccurs="1" name="mapVersion" type="coreService:NameOrURI"/>
      <xs:element minOccurs="1" name="mapFrom" type="coreService:EntityNameOrURI"/>
      <xs:element minOccurs="1" name="request" type="mapEntryService:UpdateMapEntryRequest"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="updateMapEntryResponse" type="tns:updateMapEntryResponse"/>
  <xs:complexType name="updateMapEntryResponse">
    <xs:sequence>
      <xs:element name="return" type="mapVersion:MapEntry"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="updateMapTarget" type="tns:updateMapTarget"/>
  <xs:complexType name="updateMapTarget">
    <xs:sequence>
      <xs:element minOccurs="1" name="changeSet" type="core:ChangeSetURI"/>
      <xs:element minOccurs="1" name="mapVersion" type="coreService:NameOrURI"/>
      <xs:element minOccurs="1" name="mapFrom" type="coreService:EntityNameOrURI"/>
      <xs:element minOccurs="1" name="changeInSet" type="core:NaturalNumber"/>
      <xs:element minOccurs="1" name="targetSlot" type="core:NaturalNumber"/>
      <xs:element minOccurs="1" name="request" type="mapEntryService:MapTargetRequest"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="updateMapTargetResponse" type="tns:updateMapTargetResponse"/>
  <xs:complexType name="updateMapTargetResponse">
    <xs:sequence>
      <xs:element name="return" type="mapVersion:MapSet"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="removeMapTarget" type="tns:removeMapTarget"/>
  <xs:complexType name="removeMapTarget">
    <xs:sequence>
      <xs:element minOccurs="1" name="changeSet" type="core:ChangeSetURI"/>
      <xs:element minOccurs="1" name="mapVersion" type="coreService:NameOrURI"/>
      <xs:element minOccurs="1" name="mapFrom" type="coreService:EntityNameOrURI"/>
      <xs:element minOccurs="1" name="changeInSet" type="core:NaturalNumber"/>
      <xs:element minOccurs="1" name="targetSlot" type="core:NaturalNumber"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="removeMapTargetResponse" type="tns:removeMapTargetResponse"/>
  <xs:complexType name="removeMapTargetResponse">
    <xs:sequence>
      <xs:element name="return" type="mapVersion:MapSet"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="addMapTarget" type="tns:addMapTarget"/>
  <xs:complexType name="addMapTarget">
    <xs:sequence>
      <xs:element minOccurs="1" name="changeSet" type="core:ChangeSetURI"/>
      <xs:element minOccurs="1" name="entry" type="mapVersion:MapEntry"/>
      <xs:element minOccurs="1" name="addToSet" type="core:NaturalNumber"/>
      <xs:element minOccurs="0" name="targetSlot" type="core:NaturalNumber"/>
      <xs:element minOccurs="1" name="target" type="mapEntryService:MapTargetRequest"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="addMapTargetResponse" type="tns:addMapTargetResponse"/>
  <xs:complexType name="addMapTargetResponse">
    <xs:sequence>
      <xs:element name="return" type="mapVersion:MapSet"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="addMapSet" type="tns:addMapSet"/>
  <xs:complexType name="addMapSet">
    <xs:sequence>
      <xs:element minOccurs="1" name="changeSet" type="core:ChangeSetURI"/>
      <xs:element minOccurs="1" name="mapVersion" type="coreService:NameOrURI"/>
      <xs:element minOccurs="1" name="mapFrom" type="coreService:EntityNameOrURI"/>
      <xs:element minOccurs="0" name="entryOrder" type="core:NaturalNumber"/>
      <xs:element minOccurs="1" name="processingRule" type="mapVersion:MapProcessingRule"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="addMapSetResponse" type="tns:addMapSetResponse"/>
  <xs:complexType name="addMapSetResponse">
    <xs:sequence>
      <xs:element name="return" type="mapVersion:MapEntry"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="removeMapSet" type="tns:removeMapSet"/>
  <xs:complexType name="removeMapSet">
    <xs:sequence>
      <xs:element minOccurs="1" name="changeSet" type="core:ChangeSetURI"/>
      <xs:element minOccurs="1" name="mapVersion" type="coreService:NameOrURI"/>
      <xs:element minOccurs="1" name="mapFrom" type="coreService:EntityNameOrURI"/>
      <xs:element minOccurs="1" name="setNumber" type="core:NaturalNumber"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="removeMapSetResponse" type="tns:removeMapSetResponse"/>
  <xs:complexType name="removeMapSetResponse">
    <xs:sequence>
      <xs:element name="return" type="mapVersion:MapSet"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="createChangeSet" type="tns:createChangeSet"/>
  <xs:complexType name="createChangeSet">
    <xs:sequence/>
  </xs:complexType>
  
  <xs:element name="createChangeSetResponse" type="tns:createChangeSetResponse"/>
  <xs:complexType name="createChangeSetResponse">
    <xs:sequence>
      <xs:element name="return" type="updates:ChangeSet"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="rollbackChangeSet" type="tns:rollbackChangeSet"/>
  <xs:complexType name="rollbackChangeSet">
    <xs:sequence>
      <xs:element minOccurs="1" name="changeSet" type="core:ChangeSetURI"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="rollbackChangeSetResponse" type="tns:rollbackChangeSetResponse"/>
  <xs:complexType name="rollbackChangeSetResponse">
    <xs:sequence/>
  </xs:complexType>
  
  <xs:element name="readChangeSet" type="tns:readChangeSet"/>
  <xs:complexType name="readChangeSet">
    <xs:sequence>
      <xs:element minOccurs="1" name="changeSet" type="core:ChangeSetURI"/>
      <xs:element minOccurs="0" name="queryControl" type="coreService:QueryControl"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="readChangeSetResponse" type="tns:readChangeSetResponse"/>
  <xs:complexType name="readChangeSetResponse">
    <xs:sequence>
      <xs:element name="return" type="updates:ChangeSet"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="deleteChangeable" type="tns:deleteChangeable"/>
  <xs:complexType name="deleteChangeable">
    <xs:sequence>
      <xs:element minOccurs="1" name="changeSet" type="core:ChangeSetURI"/>
      <xs:element minOccurs="1" name="target" type="core:Changeable"/>
    </xs:sequence>
    
  </xs:complexType>
  
  <xs:element name="deleteChangeableResponse" type="tns:deleteChangeableResponse"/>
  <xs:complexType name="deleteChangeableResponse">
    <xs:sequence/>
  </xs:complexType>
  
  <xs:element name="readIteratableChangeSet" type="tns:readIteratableChangeSet"/>
  <xs:complexType name="readIteratableChangeSet">
    <xs:sequence>
      <xs:element minOccurs="1" name="changeSet" type="core:ChangeSetURI"/>
      <xs:element minOccurs="0" name="queryControl" type="coreService:QueryControl"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="readIteratableChangeSetResponse" type="tns:readIteratableChangeSetResponse"/>
  <xs:complexType name="readIteratableChangeSetResponse">
    <xs:sequence>
      <xs:element ref="updates:IteratableChangeSet"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="newProperty" type="tns:newProperty"/>
  <xs:complexType name="newProperty">
    <xs:sequence>
      <xs:element minOccurs="1" name="changeSet" type="core:ChangeSetURI"/>
      <xs:element minOccurs="0" name="queryControl" type="coreService:QueryControl"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="newPropertyResponse" type="tns:newPropertyResponse"/>
  <xs:complexType name="newPropertyResponse">
    <xs:sequence>
      <xs:element name="return" type="core:Property"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="newResourceTarget" type="tns:newResourceTarget"/>
  <xs:complexType name="newResourceTarget">
    <xs:sequence>
      <xs:element minOccurs="1" name="resource" type="core:ExternalURI"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="newResourceTargetResponse" type="tns:newResourceTargetResponse"/>
  <xs:complexType name="newResourceTargetResponse">
    <xs:sequence>
      <xs:element name="return" type="core:StatementTarget"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="newLiteralTarget" type="tns:newLiteralTarget"/>
  <xs:complexType name="newLiteralTarget">
    <xs:sequence>
      <xs:element minOccurs="1" name="literal" type="core:OpaqueData"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="newLiteralTargetResponse" type="tns:newLiteralTargetResponse"/>
  <xs:complexType name="newLiteralTargetResponse">
    <xs:sequence>
      <xs:element name="return" type="core:StatementTarget"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="newEntityReferenceTarget" type="tns:newEntityReferenceTarget"/>
  <xs:complexType name="newEntityReferenceTarget">
    <xs:sequence>
      <xs:element minOccurs="1" name="entity" type="coreService:EntityNameOrURI"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="newEntityReferenceTargetResponse" type="tns:newEntityReferenceTargetResponse"/>
  <xs:complexType name="newEntityReferenceTargetResponse">
    <xs:sequence>
      <xs:element name="return" type="core:StatementTarget"/>
    </xs:sequence>
  </xs:complexType>
  
</xs:schema>
