<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:coreService="http://schema.omg.org/spec/CTS2/1.0/CoreService"
  xmlns:valueSet="http://schema.omg.org/spec/CTS2/1.0/ValueSet"
  xmlns:tns="http://schema.omg.org/spec/CTS2/1.0/wsdl/ValueSetCatalogQueryServices"
  xmlns:core="http://schema.omg.org/spec/CTS2/1.0/Core"
  attributeFormDefault="qualified"
  elementFormDefault="qualified"
  targetNamespace="http://schema.omg.org/spec/CTS2/1.0/wsdl/ValueSetCatalogQueryServices">
  
  <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/Core" schemaLocation="../core/Core.xsd"/>
  <xs:import namespace="http://schema.omg.org/spec/CTS2/1.0/ValueSet" schemaLocation="../valueset/ValueSet.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:element name="getAllValueSetCatalogEntries" type="tns:getAllValueSetCatalogEntries"/>
  <xs:complexType name="getAllValueSetCatalogEntries"/>
  
  <xs:element name="getAllValueSetCatalogEntriesResponse" type="tns:getAllValueSetCatalogEntriesResponse"/>
  <xs:complexType name="getAllValueSetCatalogEntriesResponse">
    <xs:sequence>
      <xs:element name="return" type="core:ValueSetCatalogEntryDirectoryURI"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="restrictToCodeSystem" type="tns:restrictToCodeSystem"/>
  <xs:complexType name="restrictToCodeSystem">
    <xs:sequence>
      <xs:element minOccurs="1" name="directory" type="core:ValueSetCatalogEntryDirectoryURI"/>
      <xs:element minOccurs="0" name="versionTag" type="coreService:NameOrURI"/>
      <xs:element minOccurs="1" name="codeSystem" type="coreService:NameOrURI"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="restrictToCodeSystemResponse" type="tns:restrictToCodeSystemResponse"/>
  <xs:complexType name="restrictToCodeSystemResponse">
    <xs:sequence>
      <xs:element name="return" type="core:ValueSetCatalogEntryDirectoryURI"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="restrictToContainedValueSet" type="tns:restrictToContainedValueSet"/>
  <xs:complexType name="restrictToContainedValueSet">
    <xs:sequence>
      <xs:element minOccurs="1" name="directory" type="core:ValueSetCatalogEntryDirectoryURI"/>
      <xs:element minOccurs="0" name="versionTag" type="coreService:NameOrURI"/>
      <xs:element minOccurs="1" name="valueSet" type="coreService:NameOrURI"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="restrictToContainedValueSetResponse" type="tns:restrictToContainedValueSetResponse"/>
  <xs:complexType name="restrictToContainedValueSetResponse">
    <xs:sequence>
      <xs:element name="return" type="core:ValueSetCatalogEntryDirectoryURI"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="restrictToPropertyReference" type="tns:restrictToPropertyReference"/>
  <xs:complexType name="restrictToPropertyReference">
    <xs:sequence>
      <xs:element minOccurs="1" name="directory" type="core:ValueSetCatalogEntryDirectoryURI"/>
      <xs:element minOccurs="0" name="versionTag" type="coreService:NameOrURI"/>
      <xs:element minOccurs="1" name="propertyReference" type="coreService:EntityNameOrURI"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="restrictToPropertyReferenceResponse" type="tns:restrictToPropertyReferenceResponse"/>
  <xs:complexType name="restrictToPropertyReferenceResponse">
    <xs:sequence>
      <xs:element name="return" type="core:ValueSetCatalogEntryDirectoryURI"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="restrictToDefinitionEntities" type="tns:restrictToDefinitionEntities"/>
  <xs:complexType name="restrictToDefinitionEntities">
    <xs:sequence>
      <xs:element minOccurs="1" name="directory" type="core:ValueSetCatalogEntryDirectoryURI"/>
      <xs:element minOccurs="0" name="versionTag" type="coreService:NameOrURI"/>
      <xs:element minOccurs="1" name="entities" type="coreService:EntityNameOrURIList"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="restrictToDefinitionEntitiesResponse" type="tns:restrictToDefinitionEntitiesResponse"/>
  <xs:complexType name="restrictToDefinitionEntitiesResponse">
    <xs:sequence>
      <xs:element name="return" type="core:ValueSetCatalogEntryDirectoryURI"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="count" type="tns:count"/>
  <xs:complexType name="count">
    <xs:sequence>
      <xs:element minOccurs="1" name="directory" type="core:ValueSetCatalogEntryDirectoryURI"/>
      <xs:element minOccurs="0" name="context" type="coreService:ReadContext"/>
      <xs:element minOccurs="0" name="timeout" type="core:NaturalNumber"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="countResponse" type="tns:countResponse"/>
  <xs:complexType name="countResponse">
    <xs:sequence>
      <xs:element name="return" type="core:NaturalNumber"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="resolveAsList" type="tns:resolveAsList"/>
  <xs:complexType name="resolveAsList">
    <xs:sequence>
      <xs:element minOccurs="1" name="directory" type="core:ValueSetCatalogEntryDirectoryURI"/>
      <xs:element minOccurs="0" name="queryControl" type="coreService:QueryControl"/>
      <xs:element minOccurs="0" name="context" type="coreService:ReadContext"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="resolveAsListResponse" type="tns:resolveAsListResponse"/>
  <xs:complexType name="resolveAsListResponse">
    <xs:sequence>
      <xs:element ref="valueSet:ValueSetCatalogEntryList"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="resolve" type="tns:resolve"/>
  <xs:complexType name="resolve">
    <xs:sequence>
      <xs:element minOccurs="1" name="directory" type="core:ValueSetCatalogEntryDirectoryURI"/>
      <xs:element minOccurs="0" name="queryControl" type="coreService:QueryControl"/>
      <xs:element minOccurs="0" name="context" type="coreService:ReadContext"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="resolveResponse" type="tns:resolveResponse"/>
  <xs:complexType name="resolveResponse">
    <xs:sequence>
      <xs:element ref="valueSet:ValueSetCatalogEntryDirectory"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="restrict" type="tns:restrict"/>
  <xs:complexType name="restrict">
    <xs:sequence>
      <xs:element name="directory" type="core:ValueSetCatalogEntryDirectoryURI"/>
      <xs:element name="filter" type="core:Filter"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="restrictResponse" type="tns:restrictResponse"/>
  <xs:complexType name="restrictResponse">
    <xs:sequence>
      <xs:element name="return" type="core:ValueSetCatalogEntryDirectoryURI"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="difference" type="tns:restrict"/>
  <xs:complexType name="difference">
    <xs:sequence>
      <xs:element name="initialSet" type="core:ValueSetCatalogEntryDirectoryURI"/>
      <xs:element name="elementsToRemove" type="core:ValueSetCatalogEntryDirectoryURI"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="differenceResponse" type="tns:differenceResponse"/>
  <xs:complexType name="differenceResponse">
    <xs:sequence>
      <xs:element name="return" type="core:ValueSetCatalogEntryDirectoryURI"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="union" type="tns:union"/>
  <xs:complexType name="union">
    <xs:sequence>
      <xs:element name="directory1" type="core:ValueSetCatalogEntryDirectoryURI"/>
      <xs:element name="directory2" type="core:ValueSetCatalogEntryDirectoryURI"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="unionResponse" type="tns:unionResponse"/>
  <xs:complexType name="unionResponse">
    <xs:sequence>
      <xs:element name="return" type="core:ValueSetCatalogEntryDirectoryURI"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="intersect" type="tns:intersect"/>
  <xs:complexType name="intersect">
    <xs:sequence>
      <xs:element name="directory1" type="core:ValueSetCatalogEntryDirectoryURI"/>
      <xs:element name="directory2" type="core:ValueSetCatalogEntryDirectoryURI"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:element name="intersectResponse" type="tns:intersectResponse"/>
  <xs:complexType name="intersectResponse">
    <xs:sequence>
      <xs:element name="return" type="core:ValueSetCatalogEntryDirectoryURI"/>
    </xs:sequence>
  </xs:complexType>
  
</xs:schema>
