<?xml version="1.0" encoding="utf-8"?>

<wsdl:definitions name="WS-ResourceProperties"
  xmlns="http://schemas.xmlsoap.org/wsdl/" 
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
  xmlns:wsa="http://schemas.xmlsoap.org/ws/2003/03/addressing" 
  xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
  xmlns:wsbf="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd"
  xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" 
  xmlns:wsrpw="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl" 
  targetNamespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.wsdl">
  
<!-- ===================== Types Definitions ====================== -->
   <wsdl:types>
     <xsd:schema 
        xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
        targetNamespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd"
        elementFormDefault="qualified" 
        attributeFormDefault="unqualified">

       <xsd:include schemaLocation="WS-ResourceProperties-1.2-draft-01.xsd" />
       
       <xsd:import 
            namespace="http://schemas.xmlsoap.org/ws/2003/03/addressing"
            schemaLocation="WS-Addressing-2003-03.xsd" />
       
       <xsd:import 
          namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd"
          schemaLocation="faults.xsd" />
          
       
<!-- ========== Message Types for GetResourceProperty  ============ -->
       
       <xsd:element name="GetResourceProperty" 
                    type="xsd:QName" />

       <xsd:element name="GetResourcePropertyResponse" >
         <xsd:complexType>
           <xsd:sequence>
             <xsd:any  minOccurs="0" maxOccurs="unbounded" />
           </xsd:sequence>
         </xsd:complexType>
       </xsd:element>

      <xsd:complexType name="ResourceUnknownFaultType">
         <xsd:complexContent>
            <xsd:extension base="wsbf:BaseFaultType"/>
         </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="ResourceUnknownFault" 
                   type="wsrp:ResourceUnknownFaultType"/>

      <xsd:complexType name="InvalidResourcePropertyQNameFaultType">
         <xsd:complexContent>
            <xsd:extension base="wsbf:BaseFaultType"/>
         </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="InvalidResourcePropertyQNameFault" 
                   type="wsrp:InvalidResourcePropertyQNameFaultType"/>


<!-- ====== Message Types for GetMultipleResourceProperties ======= -->       
       <xsd:element name="GetMultipleResourceProperties">
         <xsd:complexType>
           <xsd:sequence>
             <xsd:element name="ResourceProperty" type="xsd:QName" 
                          minOccurs="1" maxOccurs="unbounded" />
           </xsd:sequence>
         </xsd:complexType>
       </xsd:element>
 
       <xsd:element name="GetMultipleResourcePropertiesResponse">
         <xsd:complexType>
           <xsd:sequence>
             <xsd:any  minOccurs="0" maxOccurs="unbounded" />
           </xsd:sequence>
         </xsd:complexType>
       </xsd:element>

<!-- ========= Message Types for SetResourceProperties =========== -->
                   
       <xsd:complexType name="InsertType">
         <xsd:sequence>
           <xsd:any processContents="lax"
                    minOccurs="1" maxOccurs="unbounded" />
         </xsd:sequence>
       </xsd:complexType>
       <xsd:element name="Insert" 
                    type="wsrp:InsertType"/>
         
       <xsd:complexType name="UpdateType">
         <xsd:sequence>
           <xsd:any processContents="lax"
                    minOccurs="1" maxOccurs="unbounded" />
         </xsd:sequence>
       </xsd:complexType>
       <xsd:element name="Update" 
                    type="wsrp:UpdateType"/>
         
       <xsd:complexType name="DeleteType">
         <xsd:attribute name="ResourceProperty" 
                        type="xsd:QName" use="required" />
       </xsd:complexType>
       <xsd:element name="Delete" 
                    type="wsrp:DeleteType"/>
        
       <xsd:element name="SetResourceProperties">
         <xsd:complexType>
           <xsd:choice minOccurs="0" maxOccurs="unbounded">
             <xsd:element ref="wsrp:Insert"/>
             <xsd:element ref="wsrp:Update"/>
             <xsd:element ref="wsrp:Delete"/>
           </xsd:choice>
         </xsd:complexType>
       </xsd:element>

      <xsd:element name="SetResourcePropertiesResponse" >
         <xsd:complexType />
      </xsd:element>

      <xsd:complexType
               name="InvalidSetResourcePropertiesRequestContentFaultType">
         <xsd:complexContent>
            <xsd:extension base="wsbf:BaseFaultType"/>
         </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="InvalidSetResourcePropertiesRequestContentFault" 
               type="wsrp:InvalidSetResourcePropertiesRequestContentFaultType"/>

      <xsd:complexType name="UnableToModifyResourcePropertyFaultType">
         <xsd:complexContent>
            <xsd:extension base="wsbf:BaseFaultType"/>
         </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="UnableToModifyResourcePropertyFault" 
                   type="wsrp:UnableToModifyResourcePropertyFaultType"/>

      <xsd:complexType name="SetResourcePropertyRequestFailedFaultType">
         <xsd:complexContent>
            <xsd:extension base="wsbf:BaseFaultType"/>
         </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="SetResourcePropertyRequestFailedFault" 
                   type="wsrp:SetResourcePropertyRequestFailedFaultType"/>


<!-- ========= Message Types for QueryResourceProperties ========== -->         
       
       <xsd:element name="QueryResourceProperties" >
         <xsd:complexType>
           <xsd:sequence>
             <xsd:element ref="wsrp:QueryExpression" 
                          minOccurs="1" maxOccurs="1"/>
           </xsd:sequence>
         </xsd:complexType>
       </xsd:element>
 
       <xsd:element name="QueryResourcePropertiesResponse" >
         <xsd:complexType>
           <xsd:complexContent mixed="true">
             <xsd:restriction base="xsd:anyType">
               <xsd:sequence>
                 <xsd:any processContents="lax" 
                          minOccurs="1" maxOccurs="unbounded"/>
               </xsd:sequence>
             </xsd:restriction>
           </xsd:complexContent>
         </xsd:complexType>
       </xsd:element>        

      <xsd:complexType name="UnknownQueryExpressionDialectFaultType">
         <xsd:complexContent>
            <xsd:extension base="wsbf:BaseFaultType"/>
         </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="UnknownQueryExpressionDialectFault" 
                   type="wsrp:UnknownQueryExpressionDialectFaultType"/>

      <xsd:complexType name="InvalidQueryExpressionFaultType">
         <xsd:complexContent>
            <xsd:extension base="wsbf:BaseFaultType"/>
         </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="InvalidQueryExpressionFault" 
                   type="wsrp:InvalidQueryExpressionFaultType"/>

      <xsd:complexType name="QueryEvaluationErrorFaultType">
         <xsd:complexContent>
            <xsd:extension base="wsbf:BaseFaultType"/>
         </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="QueryEvaluationErrorFault" 
                   type="wsrp:QueryEvaluationErrorFaultType"/>


     </xsd:schema>
   </wsdl:types>
   
<!-- ===================== GetResourceProperty ==================== 
  GetResourceProperty(QName)
  returns: any
-->
  <wsdl:message name="GetResourcePropertyRequest">
    <wsdl:part name="GetResourcePropertyRequest" 
               element="wsrp:GetResourceProperty" />
  </wsdl:message>
  
  <wsdl:message name="GetResourcePropertyResponse">
    <wsdl:part name="GetResourcePropertyResponse" 
               element="wsrp:GetResourcePropertyResponse" />
  </wsdl:message>

  <wsdl:message name="ResourceUnknownFault">
     <part name="ResourceUnknownFault"
           element="wsrp:ResourceUnknownFault" />
  </wsdl:message> 

  <wsdl:message name="InvalidResourcePropertyQNameFault">
     <part name="InvalidResourcePropertyQNameFault"
           element="wsrp:InvalidResourcePropertyQNameFault" />
  </wsdl:message> 

<!-- ==============GetMultipleResourceProperties ================== 
  GetMultipleResourceProperties(list of QName)
  returns: sequence of any
-->
  <wsdl:message name="GetMultipleResourcePropertiesRequest">
    <wsdl:part name="GetMultipleResourcePropertiesRequest" 
               element="wsrp:GetMultipleResourceProperties" />
  </wsdl:message>
  
  <wsdl:message name="GetMultipleResourcePropertiesResponse">
    <wsdl:part name="GetMultipleResourcePropertiesResponse" 
               element="wsrp:GetMultipleResourcePropertiesResponse" />
  </wsdl:message>

<!-- ================= SetResourceProperties ====================== 
  SetResourceProperties(
  { insert (any)* |
    update (any)* |
    delete@QName } + 
  )
  returns: empty
-->
  <wsdl:message name="SetResourcePropertiesRequest">
    <wsdl:part name="SetResourcePropertiesRequest" 
               element="wsrp:SetResourceProperties" />
  </wsdl:message>
  
  <wsdl:message name="SetResourcePropertiesResponse">
    <wsdl:part name="SetResourcePropertiesResponse" 
               element="wsrp:SetResourcePropertiesResponse" />
  </wsdl:message>
  
  <wsdl:message name="InvalidSetResourcePropertiesRequestContentFault">
     <part name="InvalidSetResourcePropertiesRequestContentFault"
           element="wsrp:InvalidSetResourcePropertiesRequestContentFault" />
  </wsdl:message> 

  <wsdl:message name="UnableToModifyResourcePropertyFault">
     <part name="UnableToModifyResourcePropertyFault"
           element="wsrp:UnableToModifyResourcePropertyFault" />
  </wsdl:message> 

  <wsdl:message name="SetResourcePropertyRequestFailedFault">
     <part name="SetResourcePropertyRequestFailedFault"
           element="wsrp:SetResourcePropertyRequestFailedFault" />
  </wsdl:message> 

<!-- ================ QueryResourceProperties ===================== 
  QueryResourceProperties(QueryExpression)
  returns: any
-->
  <wsdl:message name="QueryResourcePropertiesRequest">
    <wsdl:part name="QueryResourcePropertiesRequest" 
               element="wsrp:QueryResourceProperties" />
  </wsdl:message>
  
  <wsdl:message name="QueryResourcePropertiesResponse">
    <wsdl:part name="QueryResourcePropertiesResponse" 
               element="wsrp:QueryResourcePropertiesResponse" />
  </wsdl:message>

  <wsdl:message name="UnknownQueryExpressionDialectFault">
     <part name="UnknownQueryExpressionDialectFault"
           element="wsrp:UnknownQueryExpressionDialectFault" />
  </wsdl:message> 

  <wsdl:message name="InvalidQueryExpressionFault">
     <part name="InvalidQueryExpressionFault"
           element="wsrp:InvalidQueryExpressionFault" />
  </wsdl:message> 

  <wsdl:message name="QueryEvaluationErrorFault">
     <part name="QueryEvaluationErrorFault"
           element="wsrp:QueryEvaluationErrorFault" />
  </wsdl:message> 

<!-- =================== PortType Definitions ===================== -->
  <wsdl:portType name="GetResourceProperty">  
    <wsdl:operation name="GetResourceProperty">
      <wsdl:input  name="GetResourcePropertyRequest" 
                   message="wsrpw:GetResourcePropertyRequest" />
      <wsdl:output name="GetResourcePropertyResponse" 
                   message="wsrpw:GetResourcePropertyResponse" />
      <wsdl:fault  name="ResourceUnknownFault" 
                   message="wsrpw:ResourceUnknownFault" />
      <wsdl:fault  name="InvalidResourcePropertyQNameFault" 
                   message="wsrpw:InvalidResourcePropertyQNameFault" />     
    </wsdl:operation>
  </wsdl:portType>
  
  <wsdl:portType name="GetMultipleResourceProperties">
    <wsdl:operation name="GetMultipleResourceProperties">
      <wsdl:input  name="GetMultipleResourcePropertiesRequest" 
                   message="wsrpw:GetMultipleResourcePropertiesRequest" />
      <wsdl:output name="GetMultipleResourcePropertiesResponse" 
                   message="wsrpw:GetMultipleResourcePropertiesResponse" />
      <wsdl:fault  name="ResourceUnknownFault" 
                   message="wsrpw:ResourceUnknownFault" />
      <wsdl:fault  name="InvalidResourcePropertyQNameFault" 
                   message="wsrpw:InvalidResourcePropertyQNameFault" />     
    </wsdl:operation>
  </wsdl:portType>

  <wsdl:portType name="SetResourceProperties"> 
    <wsdl:operation name="SetResourceProperties">
      <wsdl:input  name="SetResourcePropertiesRequest" 
                   message="wsrpw:SetResourcePropertiesRequest" />
      <wsdl:output name="SetResourcePropertiesResponse" 
                   message="wsrpw:SetResourcePropertiesResponse" />
      <wsdl:fault  name="ResourceUnknownFault" 
                   message="wsrpw:ResourceUnknownFault" />
      <wsdl:fault  name="InvalidSetResourcePropertiesRequestContentFault" 
               message="wsrpw:InvalidSetResourcePropertiesRequestContentFault" />     
      <wsdl:fault  name="UnableToModifyResourcePropertyFault" 
                   message="wsrpw:UnableToModifyResourcePropertyFault" />
      <wsdl:fault  name="InvalidResourcePropertyQNameFault" 
                   message="wsrpw:InvalidResourcePropertyQNameFault" />     
      <wsdl:fault  name="SetResourcePropertyRequestFailedFault" 
                   message="wsrpw:SetResourcePropertyRequestFailedFault" />
    </wsdl:operation>
  </wsdl:portType>
  
  <wsdl:portType name="QueryResourceProperties">
    <wsdl:operation name="QueryResourceProperties">
      <wsdl:input  name="QueryResourcePropertiesRequest" 
                   message="wsrpw:QueryResourcePropertiesRequest" />
      <wsdl:output name="QueryResourcePropertiesResponse" 
                   message="wsrpw:QueryResourcePropertiesResponse" />
      <wsdl:fault  name="ResourceUnknownFault" 
                   message="wsrpw:ResourceUnknownFault" />
      <wsdl:fault  name="InvalidResourcePropertyQNameFault" 
                   message="wsrpw:InvalidResourcePropertyQNameFault" />     
      <wsdl:fault  name="UnknownQueryExpressionDialectFault" 
                   message="wsrpw:UnknownQueryExpressionDialectFault" />
      <wsdl:fault  name="InvalidQueryExpressionFault" 
                   message="wsrpw:InvalidQueryExpressionFault" />
      <wsdl:fault  name="QueryEvaluationErrorFault" 
                   message="wsrpw:QueryEvaluationErrorFault" />
    </wsdl:operation>

  </wsdl:portType>

</wsdl:definitions>
