<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="vocabDefs" targetNamespace="urn:vocab/defs" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:types="urn:vocab/types" xmlns:intf="urn:vocab/defs">
  <wsdl:types>
    <xsd:schema elementFormDefault="qualified" targetNamespace="urn:vocab/types" xmlns:xsd="http://www.w3.org/2001/XMLSchema">


			<!-- whatLists -->
			<xsd:element name="whatLists" type="types:whatListsType"/>
			<xsd:element name="whatListsResponse" type="types:whatListsResponseType"/>

			<xsd:complexType name="whatListsType">
				<xsd:sequence>
					<xsd:element minOccurs="0" name="categoryKey" type="xsd:string"/>
				</xsd:sequence>
			</xsd:complexType>

			<xsd:complexType name="whatListsResponseType">
				<xsd:sequence>
					<xsd:element maxOccurs="unbounded" minOccurs="0" name="codeTableType" type="types:codeTableTypeType"/>
					<xsd:element maxOccurs="1" minOccurs="1" name="error" type="xsd:boolean"/>
				</xsd:sequence>
			</xsd:complexType>

			<xsd:complexType name="codeTableTypeType">
				<xsd:sequence>
					<xsd:element name="listKey" type="xsd:string"/>
					<xsd:element name="listLongName" type="xsd:string"/>
					<xsd:element name="listShortName" type="xsd:string"/>
					<xsd:element name="listDefinition" type="xsd:string"/>
					<xsd:element name="listVersion" type="xsd:int"/>
					<xsd:element name="listLastMod" type="xsd:dateTime"/>
				</xsd:sequence>
			</xsd:complexType>

			<!-- getList -->
			<xsd:complexType name="getListType">
				<xsd:sequence>
					<xsd:element maxOccurs="unbounded" minOccurs="1" name="recordKey" type="xsd:string"/>
					<xsd:element minOccurs="0" name="earliestRecord" type="xsd:dateTime"/>
				</xsd:sequence>
			</xsd:complexType>

			<xsd:complexType name="getListResponseType">
				<xsd:sequence>
					<xsd:element maxOccurs="unbounded" minOccurs="0" name="codeTableRecord" type="types:codeTableRecordType"/>
					<xsd:element maxOccurs="1" minOccurs="1" name="error" type="xsd:boolean"/>
				</xsd:sequence>
			</xsd:complexType>

			<xsd:complexType name="codeTableRecordType">
				<xsd:sequence>
					<xsd:element minOccurs="0" name="listKey" type="xsd:string"/>
					<xsd:element name="entryKey" type="xsd:string"/>
					<xsd:element name="entryTerm" type="xsd:string"/>
					<xsd:element name="entryTermAbbr" nillable="true" type="xsd:string"/>
					<xsd:element name="entryTermDef" nillable="true" type="xsd:string"/>
					<xsd:element name="entryTermLastMod" type="xsd:dateTime"/>

					<xsd:element maxOccurs="unbounded" minOccurs="0" name="exactMatch" type="types:codeTableRecordType"/>
					<xsd:element maxOccurs="unbounded" minOccurs="0" name="narrowMatch" type="types:codeTableRecordType"/>
					<xsd:element maxOccurs="unbounded" minOccurs="0" name="broadMatch" type="types:codeTableRecordType"/>
					<xsd:element maxOccurs="unbounded" minOccurs="0" name="minorMatch" type="types:codeTableRecordType"/>
					<xsd:element maxOccurs="unbounded" minOccurs="0" name="majorMatch" type="types:codeTableRecordType"/>
				</xsd:sequence>
			</xsd:complexType>

			<xsd:element name="getList" type="types:getListType"/>
			<xsd:element name="getListResponse" type="types:getListResponseType"/>

			<!-- verifyTerm -->
			<xsd:complexType name="verifyTermType">
				<xsd:sequence>
					<xsd:element name="listKey" type="xsd:string"/>
					<xsd:element name="entryTerm" type="xsd:string"/>
					<xsd:element minOccurs="0" name="termType" type="xsd:string"/>
				</xsd:sequence>
			</xsd:complexType>

			<xsd:complexType name="verifyTermResponseType">
				<xsd:sequence>
					<xsd:element maxOccurs="1" minOccurs="0" name="verifiedTerm" type="types:codeTableRecordType"/>
					<xsd:element maxOccurs="1" minOccurs="1" name="error" type="xsd:boolean"/>

				</xsd:sequence>
			</xsd:complexType>

			<xsd:element name="verifyTerm" type="types:verifyTermType"/>
			<xsd:element name="verifyTermResponse" type="types:verifyTermResponseType"/>


			<!-- whatListsCat -->
			<xsd:complexType name="whatListsCatType">
				<xsd:sequence/>
			</xsd:complexType>

			<xsd:complexType name="whatListsCatResponseType">
				<xsd:sequence>
					<xsd:element maxOccurs="unbounded" minOccurs="0" name="codeTableRecord" type="types:codeTableRecordType"/>
					<xsd:element maxOccurs="1" minOccurs="1" name="error" type="xsd:boolean"/>
				</xsd:sequence>
			</xsd:complexType>

			<xsd:element name="whatListsCat" type="types:whatListsCatType"/>
			<xsd:element name="whatListsCatResponse" type="types:whatListsCatResponseType"/>

			<!-- searchVocab -->
			<xsd:complexType name="searchVocabType">
				<xsd:sequence>
					<xsd:element minOccurs="0" name="listKey" type="xsd:string"/>
					<xsd:element name="searchTerm" type="xsd:string"/>
					<xsd:element default="true" minOccurs="0" name="caseSensitivity" type="xsd:boolean"/>
					<xsd:element minOccurs="0" name="termType" type="xsd:string"/>
				</xsd:sequence>
			</xsd:complexType>

			<xsd:complexType name="searchVocabResponseType">
				<xsd:sequence>
					<xsd:element maxOccurs="unbounded" minOccurs="0" name="codeTableRecord" type="types:codeTableRecordType"/>
					<xsd:element maxOccurs="1" minOccurs="1" name="error" type="xsd:boolean"/>
				</xsd:sequence>
			</xsd:complexType>

			<xsd:element name="searchVocab" type="types:searchVocabType"/>
			<xsd:element name="searchVocabResponse" type="types:searchVocabResponseType"/>

			<!-- getMap -->
			<xsd:complexType name="getMapType">
				<xsd:sequence>
					<xsd:element maxOccurs="unbounded" minOccurs="1" name="subjectList" type="xsd:string"/>
					<xsd:element name="predicate" type="xsd:int"/>
					<xsd:element maxOccurs="unbounded" minOccurs="0" name="objectList" type="xsd:string"/>
					<xsd:element name="inference" type="xsd:string"/>
				</xsd:sequence>
			</xsd:complexType>

			<xsd:complexType name="getMapResponseType">
				<xsd:sequence>
					<xsd:element maxOccurs="unbounded" minOccurs="0" name="codeTableRecord" type="types:codeTableRecordType"/>
					<xsd:element maxOccurs="1" minOccurs="1" name="error" type="xsd:boolean"/>
				</xsd:sequence>
			</xsd:complexType>

			<xsd:element name="getMap" type="types:getMapType"/>
			<xsd:element name="getMapResponse" type="types:getMapResponseType"/>

			<!--  getRelatedRecordByCriteria -->
			<xsd:complexType name="getRelatedRecordByCriteriaType">
				<xsd:sequence>
					<xsd:element maxOccurs="unbounded" minOccurs="0" name="subjectList" type="xsd:string"/>
					<xsd:element default="long" minOccurs="0" name="subjectField" type="xsd:string"/>
					<xsd:element maxOccurs="1" minOccurs="1" name="subjectText" type="xsd:string"/>
					<xsd:element default="true" minOccurs="0" name="caseSensitivity" type="xsd:boolean"/>
					<xsd:element default="false" minOccurs="0" name="partialMatch" type="xsd:boolean"/>
					<xsd:element name="predicate" type="xsd:int"/>
					<xsd:element maxOccurs="unbounded" minOccurs="0" name="objectList" type="xsd:string"/>
					<xsd:element name="inferences" type="xsd:string"/>
				</xsd:sequence>					
			</xsd:complexType>
			
			<xsd:complexType name="getRelatedRecordByCriteriaResponseType">
				<xsd:sequence>
					<xsd:element maxOccurs="unbounded" minOccurs="0" name="codeTableRecord" type="types:codeTableRecordType"/>
					<xsd:element maxOccurs="1" minOccurs="1" name="error" type="xsd:boolean"/>
				</xsd:sequence>
			</xsd:complexType>
			
			<!--  getRelatedRecordsByTerm -->
			<xsd:complexType name="getRelatedRecordByTermType">
				<xsd:sequence>
					<xsd:element maxOccurs="unbounded" minOccurs="1" name="subjectTerm" type="xsd:string"/>
					<xsd:element name="predicate" type="xsd:int"/>
					<xsd:element maxOccurs="unbounded" minOccurs="0" name="objectList" type="xsd:string"/>
					<xsd:element name="inferences" type="xsd:string"/>
				</xsd:sequence>
			</xsd:complexType>
			
			<xsd:complexType name="getRelatedRecordByTermResponseType">
				<xsd:sequence>
					<xsd:element maxOccurs="unbounded" minOccurs="0" name="codeTableRecord" type="types:codeTableRecordType"/>
					<xsd:element maxOccurs="1" minOccurs="1" name="error" type="xsd:boolean"/>
				</xsd:sequence>
			</xsd:complexType>

			<xsd:element name="getRelatedRecordByCriteria" type="types:getRelatedRecordByCriteriaType"/>
			<xsd:element name="getRelatedRecordByCriteriaResponse" type="types:getRelatedRecordByCriteriaResponseType"/>

			
			<xsd:element name="getRelatedRecordByTerm" type="types:getRelatedRecordByTermType"/>
			<xsd:element name="getRelatedRecordByTermResponse" type="types:getRelatedRecordByTermResponseType"/>
			
		</xsd:schema>
  </wsdl:types>
  <wsdl:message name="getMapResponse">
    <wsdl:part name="parameters" element="types:getMapResponse">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="getListRequest">
    <wsdl:part name="parameters" element="types:getList">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="getListResponse">
    <wsdl:part name="parameters" element="types:getListResponse">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="whatListsCatResponse">
    <wsdl:part name="parameters" element="types:whatListsCatResponse">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="getRelatedRecordByCriteriaRequest">
    <wsdl:part name="parameters" element="types:getRelatedRecordByCriteria">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="searchVocabResponse">
    <wsdl:part name="parameters" element="types:searchVocabResponse">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="getRelatedRecordByCriteriaResponse">
    <wsdl:part name="parameters" element="types:getRelatedRecordByCriteriaResponse">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="getRelatedRecordByTermRequest">
    <wsdl:part name="parameters" element="types:getRelatedRecordByTerm">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="verifyTermRequest">
    <wsdl:part name="parameters" element="types:verifyTerm">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="searchVocabRequest">
    <wsdl:part name="parameters" element="types:searchVocab">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="whatListsCatRequest">
    <wsdl:part name="parameters" element="types:whatListsCat">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="getRelatedRecordByTermResponse">
    <wsdl:part name="parameters" element="types:getRelatedRecordByTermResponse">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="getMapRequest">
    <wsdl:part name="parameters" element="types:getMap">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="whatListsRequest">
    <wsdl:part name="parameters" element="types:whatLists">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="whatListsResponse">
    <wsdl:part name="parameters" element="types:whatListsResponse">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="verifyTermResponse">
    <wsdl:part name="parameters" element="types:verifyTermResponse">
    </wsdl:part>
  </wsdl:message>
  <wsdl:portType name="vocabPortType">
    <wsdl:operation name="whatLists">
      <wsdl:input message="intf:whatListsRequest">
    </wsdl:input>
      <wsdl:output message="intf:whatListsResponse">
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getList">
      <wsdl:input message="intf:getListRequest">
    </wsdl:input>
      <wsdl:output message="intf:getListResponse">
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="verifyTerm">
      <wsdl:input message="intf:verifyTermRequest">
    </wsdl:input>
      <wsdl:output message="intf:verifyTermResponse">
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="searchVocab">
      <wsdl:input message="intf:searchVocabRequest">
    </wsdl:input>
      <wsdl:output message="intf:searchVocabResponse">
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getMap">
      <wsdl:input message="intf:getMapRequest">
    </wsdl:input>
      <wsdl:output message="intf:getMapResponse">
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getRelatedRecordByCriteria">
      <wsdl:input message="intf:getRelatedRecordByCriteriaRequest">
    </wsdl:input>
      <wsdl:output message="intf:getRelatedRecordByCriteriaResponse">
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getRelatedRecordByTerm">
      <wsdl:input message="intf:getRelatedRecordByTermRequest">
    </wsdl:input>
      <wsdl:output message="intf:getRelatedRecordByTermResponse">
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="whatListsCat">
      <wsdl:input message="intf:whatListsCatRequest">
    </wsdl:input>
      <wsdl:output message="intf:whatListsCatResponse">
    </wsdl:output>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="vocabSoapBinding" type="intf:vocabPortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="whatLists">
      <soap:operation soapAction="urn:vocab/defs"/>
      <wsdl:input name="whatListsRequest">
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output name="whatListsResponse">
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getList">
      <soap:operation soapAction="urn:vocab/defs"/>
      <wsdl:input name="getListRequest">
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output name="getListResponse">
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="verifyTerm">
      <soap:operation soapAction="urn:vocab/defs"/>
      <wsdl:input name="verifyTermRequest">
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output name="verifyTermResponse">
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="searchVocab">
      <soap:operation soapAction="urn:vocab/defs"/>
      <wsdl:input name="searchVocabRequest">
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output name="searchVocabResponse">
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getMap">
      <soap:operation soapAction="urn:vocab/defs"/>
      <wsdl:input name="getMapRequest">
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output name="getMapResponse">
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getRelatedRecordByCriteria">
      <soap:operation soapAction="urn:vocab/defs"/>
      <wsdl:input name="getRelatedRecordByCriteriaRequest">
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output name="getRelatedRecordByCriteriaResponse">
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getRelatedRecordByTerm">
      <soap:operation soapAction="urn:vocab/defs"/>
      <wsdl:input name="getRelatedRecordByTermRequest">
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output name="getRelatedRecordByTermResponse">
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="whatListsCat">
      <soap:operation soapAction="urn:vocab/defs"/>
      <wsdl:input name="whatListsCatRequest">
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output name="whatListsCatResponse">
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="vocab">
    <wsdl:port name="vocabPort" binding="intf:vocabSoapBinding">
      <soap:address location="http://vocab.ndg.nerc.ac.uk/axis2/services/vocab"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>
