Web Services Resource Properties 1.2
(WS-ResourceProperties)

OASIS Standard, 1 April 2006

 

Document identifier:

wsrf-ws_resource_properties-1.2-spec-os

Location:

http://docs.oasis-open.org/wsrf/wsrf-ws_resource_properties-1.2-spec-os.pdf

Editors:

Steve Graham, IBM <sggraham@us.ibm.com>

Jem Treadwell, Hewlett-Packard Company <Jem.Treadwell@hp.com>

Abstract:

The relationship between Web services and stateful resources is defined in [WS-Resource] in terms of a WS-Resource which represents the composition of a stateful resource and a Web service.

One characteristic of a WS-Resource is the set of properties associated with the resource. This document standardizes the means by which the definition of the properties of a WS-Resource may be declared as part of a Web service interface. The declaration of the WS-Resource’s properties represents a projection of or a view on the WS-Resource’s state. This projection is defined in terms of a resource properties document. This resource properties document serves to define a basis for access to the resource properties through Web service interfaces.

This specification also defines a standard set of message exchanges that allow a requestor to query or update the property values of the WS-Resource. The set of properties defined in the resource properties document associated with the service interface defines the constraints on the valid contents of these message exchanges.

Status:

This document is an OASIS Standard.

Committee members should send comments on this specification to the wsrf@lists.oasis-open.org list. Others may submit comments to the TC via the web form found on the TC's web page at http://www.oasis-open.org/committees/wsrf. Click the button for "Send A Comment" at the top of the page. Submitted comments (for this work as well as other works of that TC) are publicly archived and can be viewed at http://lists.oasis-open.org/archives/wsrf-comment/.

For information on whether any patents have been disclosed that may be essential to implementing this specification, and any offers of patent licensing terms, please refer to the Intellectual Property Rights section of the WSRF TC web page (http://www.oasis-open.org/committees/wsrf/).


Table of Contents

1      Introduction. 5

1.1        Goals and Requirements. 5

1.1.1     Requirements. 5

1.1.2     Non-Goals. 6

1.2        Notational Conventions. 6

1.3        Namespaces. 7

1.4        Fault Definitions. 7

2      Terminology and Concepts. 8

3      Example. 9

4      Declaring Resource Properties. 11

4.1        Resource Properties Document 11

4.2        Resource Properties Document and Resource Properties. 11

4.3        Declaring the Resource Properties Document Type in WSDL. 12

5      Operations on Resource Properties. 13

5.1        GetResourcePropertyDocument 13

5.1.1     Example SOAP Encoding of the GetResourcePropertyDocument Message Exchange. 13

5.2        GetResourceProperty. 15

5.2.1     Example SOAP Encoding of the GetResourceProperty Message Exchange. 16

5.3        GetMultipleResourceProperties. 17

5.3.1     Example SOAP Encoding of the GetMultipleResourceProperties Message Exchange. 18

5.4        QueryResourceProperties. 19

5.4.1     QueryExpressionDialect Resource Property. 21

5.4.2     Example SOAP Encoding of the QueryResourceProperties Message Exchange. 21

5.5        PutResourcePropertyDocument 22

5.5.1     Example SOAP Encoding of the PutResponsePropertyDocument Message Exchange. 23

5.6        SetResourceProperties. 24

5.6.1     Example SOAP Encoding of the SetResourceProperties Message Exchange. 28

5.7        InsertResourceProperties. 29

5.7.1     Example SOAP Encoding of the InsertResourceProperties Message Exchange. 30

5.8        UpdateResourceProperties. 32

5.8.1     Example SOAP Encoding of the UpdateResourceProperties Message Exchange. 33

5.9        DeleteResourceProperties. 34

5.9.1     Example SOAP Encoding of the DeleteResourceProperties Message Exchange. 35

6      Subscription. 37

6.1        Individual Resource Property Value Changes. 37

6.2        Value Changes on Any Resource Property. 39

7      ACID Properties of Operations on WS-Resources. 40

8      Security Considerations. 41

8.1        Securing the message exchanges. 41

8.2        Securing Resource Properties. 41

9      References. 42

9.1        Normative. 42

9.2        Non-Normative. 42

Appendix A. Acknowledgments. 43

Appendix B. XML Schema. 44

Appendix C. WSDL 1.1. 53

Appendix D. Revision History. 62

Appendix E. Notices. 64

 

1        Introduction

The relationship between Web services and stateful resources is defined in [WS-Resource] in terms of a WS-Resource which represents the composition of a stateful resource and a Web service as a WS-Resource.

One characteristic of a WS-Resource is the set of properties associated with the resource. This specification standardizes the means by which the definition of the properties of a WS-Resource may be declared as part of the Web service interface. The declaration of the WS-Resource’s properties represents a projection of or a view on the resource’s state. The projection is defined in terms of a resource properties document. This resource properties document serves to define a basis for access to the resource properties through the Web service interface.

This specification also defines a standard set of message exchanges that allow a requestor to query or update the resource property values. The set of properties defined in the resource properties document, and associated with the service interface, defines the constraints on the valid contents of these message exchanges.

In this document, we outline the goals and requirements for resource properties. We define the means to declare resource properties as part of a Web service description. Following this, we define the message exchanges for querying and updating resource property values. We also define a standard means by which requestors can use WS-Notification to receive notification messages related to changes in resource property values. The document concludes with a discussion of security considerations associated with resource properties. As an appendix, we provide normative XML and WSDL descriptions of resource properties.

WS-ResourceProperties is inspired by a portion of the Global Grid Forum’s “Open Grid Services Infrastructure (OGSI) Version 1.0” specification [OGSI].

1.1      Goals and Requirements

The goal of WS-ResourceProperties is to standardize the terminology, concepts, operations, WSDL and XML needed to express the resource properties projection, its association with the Web service interface, and the messages defining the query and update capability against the properties of a WS-Resource. 

1.1.1      Requirements

In meeting this goal, the specification must address the following specific requirements:

This specification MUST:

·         Define the term “resource property” and its relationship to Web services and WS-Resources.

·         Define the means by which a designer decorates a Web service description with the names and types of properties associated with a WS-Resource.

·         Define the means by which a requestor can:

·         Retrieve the values of one or more properties of a WS-Resource

·         Update the values of one or more properties of a WS-Resource

·         Query across the values of one or more properties of a WS-Resource

·         Subscribe for notification [WS-BaseNotification] when the value of a WS-Resource property changes.

The means by which resource property values are retrieved and updated SHOULD reflect a document-oriented style and MUST provide the means to perform batched query and update operations against the WS-Resource in a single message exchange. This will facilitate improved performance over approaches requiring a separate request message exchange for each individual resource property access.

Web services are often described using a collection of message exchange sets (e.g. WSDL 1.1 portTypes). These message exchange sets may be aggregated (using manual cut-and-paste in WSDL 1.1) to form the “final” composed interface definition for the Web service. The requestor’s exposure to and interpretation of the Web service interface may be defined by a partial subset of the constituent message exchange sets in the overall interface composition. Therefore, a requestor will form resource property-related message requests based on this potentially partial understanding of the overall composed interface to the Web service. It MUST be possible for a requestor, having partial knowledge of the composed service interface, to form correct and consistent resource property access message requests that execute properly on a Web service that implements an extended message exchange set.

1.1.2      Non-Goals

The following topics are outside the scope of this specification:

General purpose XML document query and update: This specification is not meant to be used for querying and updating generic XML documents, or to be used outside the context of modeling stateful resources with Web services.

1.2      Notational Conventions

The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].

When describing abstract data models, this specification uses the notational convention used by the [XML Infoset]. Specifically, abstract property names always appear in square brackets (e.g., [some property]).

This specification uses a notational convention, refered to as “Pseudo-schemas” in a fashion similar to the WSDL 2.0 Part 1 specification [WSDL 2.0]. A Pseudo-schema uses a BNF-style convention to describe attributes and elements:

Attributes are conventionally assigned a value which corresponds to their type, as defined in the normative schema.

<!-- sample pseudo-schema -->

<element

      required_attribute_of_type_QName="xs:QName"

      optional_attribute_of_type_string="xs:string"? >

  <required_element />

  <optional_element />?

  <one_or_more_of_these_elements />+

  [ <choice_1 /> | <choice_2 /> ]*

</element>

Where there is disagreement between the separate XML schema and WSDL files describing the messages defined by this specification and the normative descriptive text (excluding any pseudo-schema) in this document, the normative descriptive text will take precedence over the separate files. The separate files take precedence over any pseudo-schema and over any schema and WSDL included in the appendices.

1.3      Namespaces

The following namespaces are used in this document:

Prefix

Namespace

s11

http://schemas.xmlsoap.org/soap/envelope/

xsd

http://www.w3.org/2001/XMLSchema

wsa

http://www.w3.org/2005/08/addressing

wsnt

http://docs.oasis-open.org/wsn/b-2

wsrf-rp

http://docs.oasis-open.org/wsrf/rp-2

wsrf-rpw

http://docs.oasis-open.org/wsrf/rpw-2

wsrf-bf

http://docs.oasis-open.org/wsrf/bf-2

wsrf-rw

http://docs.oasis-open.org/wsrf/rw-2

1.4      Fault Definitions

All faults generated by a WS-Resource SHOULD be compliant with the WS-BaseFaults [WS-BaseFaults] specification.

All faults defined by this specification MUST use the following wsa:Action URI [WS-Addressing]:

http://docs.oasis-open.org/wsrf/fault.

2        Terminology and Concepts

The following definitions outline the terminology and usage in this specification. This section gives only brief description of these terms.

Resource Property:

Resource Properties Document:

Resource Property Element:

Resource Property Value:

3        Example

The simple example below defines the GenericDiskDrive portType and the resource properties document associated with GenericDiskDrive. The association of the resource properties document with the portType defines the type of the WS-Resource.

<wsdl:definitions … xmlns:tns="http://example.com/diskDrive" …>

  <wsdl:types>

    <xsd:schema targetNamespace="http://example.com/diskDrive" ... >

 

    <!-- Resource property element declarations -->

    <xsd:element name="NumberOfBlocks" type="xsd:integer"/>

    <xsd:element name="BlockSize" type="xsd:integer" />

    <xsd:element name="Manufacturer" type="xsd:string" />

    <xsd:element name="StorageCapability" type="xsd:string" />

 

    <!-- Resource properties document declaration -->

    <xsd:element name="GenericDiskDriveProperties">

      <xsd:complexType>

         <xsd:sequence>

           <xsd:element ref="tns:NumberOfBlocks"/>

           <xsd:element ref="tns:BlockSize" />

           <xsd:element ref="tns:Manufacturer" />

           <xsd:any minOccurs="0" maxOccurs="unbounded" />

           <xsd:element ref="tns:StorageCapability"

                        minOccurs="0" maxOccurs="unbounded" />

        </xsd:sequence>

      </xsd:complexType>

    </xsd:element>

    </xsd:schema>

  </wsdl:types>

  <!-- Association of resource properties document to a portType -->

  <wsdl:portType name="GenericDiskDrive"

    wsrf-rp:ResourceProperties="tns:GenericDiskDriveProperties" >

 

    <operation name="start" …/>

    <operation name="stop" …/>

  </wsdl:portType>

</wsdl:definitions>

The following represents the request message used to retrieve three resource property elements from the WS-Resource that implements the GenericDiskDrive portType:

  <wsrf-rp:GetMultipleResourceProperties

    xmlns:tns="http://example.com/diskdrive" …>

      <wsrf-rp:ResourceProperty>

        tns:NumberOfBlocks

      </wsrf-rp:ResourceProperty>

      <wsrf-rp:ResourceProperty>

        tns:BlockSize

      </wsrf-rp:ResourceProperty>

      <wsrf-rp:ResourceProperty>

        tns:StorageCapability

      </wsrf-rp:ResourceProperty>

  </wsrf-rp:GetMultipleResourceProperties>

The following is a sample response to the simple get request:

  <wsrf-rp:GetMultipleResourcePropertiesResponse

    xmlns:ns1="http://example.com/diskdrive"

    xmlns:ns2="http://example.com/capabilities" ...>

    <ns1:NumberOfBlocks>22</ns1:NumberOfBlocks>

    <ns1:BlockSize>1024</ns1:BlockSize>

    <ns1:StorageCapability>

      <ns2:NoSinglePointOfFailure>true</ns2:NoSinglePointOfFailure>

    </ns1:StorageCapability>

    <ns1:StorageCapability>

      <ns2:DataRedundancyMax>42</ns2:DataRedundancyMax>

    </ns1:StorageCapability>

 

  </wsrf-rp:GetMultipleResourcePropertiesResponse>

4        Declaring Resource Properties

4.1      Resource Properties Document

The resource properties document type associated with a Web service’s WSDL 1.1 portType definition provides the declaration of the exposed resource properties of the WS-Resource. It represents a particular composed structural view or projection of the resource properties of the WS-Resource, essentially exposing the stateful resource component within the WS-Resource composition. This may be used by a service requestor to form an XML-based query or update expression on the WS-Resource.

This specification does not dictate the means by which a service implements a resource properties document. A given service implementation may choose to realize its implementation of the resource properties document as an actual XML instance document, stored in memory, in the file system, in a database or in some XML Repository. Other service implementations may dynamically construct the resource property elements and their values, from data held in programming language objects (such as a J2EE EJB Entity Bean) or by executing a command on a private communications channel to a physical resource. Yet another implementation possibility is a mapping layer to a standard management interface (such as CIM or SNMP).

There is an explicit relationship between the resource properties document and the message exchanges defined in Section 5. Any Web service that implements an interface that includes a resource properties document type declaration is a WS-Resource and MUST comply with the definition of a WS-Resource in [WS-Resource]. A WS-Resource MUST accept message requests declared by the GetResourceProperty message exchange defined in Section 5. Similarly, such a Web service MAY accept message requests declared by the other message exchanges defined in Section 5.

However, there is no relationship, intended or implied by this specification, between the resource properties defined in the resource properties document and any other message exchanges that may be introduced as part of the Web service interface. Any relationships between the resource properties and messages that comprise an interface are entirely under the purview of the designer of that interface. For example, using the resource properties document described in Section 3, it would be legal for an interface designer to introduce a “ReformatSectorBlock” message exchange. However, with respect to this specification, there is no relationship either required or prohibited between such an operation and the properties declared in the resource properties document.

4.2      Resource Properties Document and Resource Properties

A resource properties document MUST be defined in XML Schema as a global element declaration (GED) in some XML namespace. This GED refers to the definition of the root element of a resource properties document.

A resource properties document MAY contain resource property elements, also refered to as simply resource properties. Resource properties appear as child elements of the root element of a resource properties document. If a resource properties document contains resource properties, its definition MUST be a complexType defining a collection of zero or more child elements, each of these child elements defining a resource property element. Each resource property element MUST be defined in XML Schema as a GED. The complexType defining the resource properties document MAY allow open element content (xsd:any). Resource properties are the atomic unit upon which many of the message exchanges defined in this document operate.

4.3      Declaring the Resource Properties Document Type in WSDL

The resource properties document definition is associated with a Web service WSDL 1.1 portType in the following manner:

<wsdl:defintions …>

  <wsdl:portType …

    wsrf-rp:ResourceProperties=”xsd:QName”? … >

  </wsdl:portType>

This definition is further constrained as follows:

/wsdl:portType/@wsrf-rp:ResourceProperties

If this attribute appears on a WSDL 1.1 portType element (using attribute extensibility available in the WSDL 1.1 XML schema definition for the portType element) its value MUST be a QName referring to a resource properties document as defined in Section 4.2.

Any service that implements a portType annotated with @wsrf-rp:ResourceProperties MUST be a component of a WS-Resource and MUST provide the interface to resource properties via a document whose root element is defined by the XML global element declaration associated with the portType.

5        Operations on Resource Properties

This section defines a collection of message exchanges that standardize the means by which a requestor can retrieve values of resource properties, update values of resource properties, and issue queries against resource properties.

Any interface that includes a resource properties document type declaration (/wsdl:portType/@ResourceProperties) MUST also include the GetResourceProperty message exchange (operation) defined in this section. Any Web service that implements an interface that includes a resource properties document type declaration MAY also support the other message exchanges defined in this section.

5.1      GetResourcePropertyDocument

A WS-Resource MAY support the message exchange defined in this section that allows a requestor to retrieve the values of all resource properties associated with the WS-Resource.

The format of this request message MUST be:

  <wsrf-rp:GetResourcePropertyDocument />

The wsa:Action MUST contain the URI

http://docs.oasis-open.org/wsrf/rpw-2/GetResourcePropertyDocument/GetResourcePropertyDocumentRequest.

The response of the GetResourcePropertyDocument request message is a message of the following form:

  <wsrf-rp:GetResourcePropertyDocumentResponse>

    {any}

  </wsrf-rp:GetResourcePropertyDocumentResponse>

The wsa:Action MUST contain the URI

http://docs.oasis-open.org/wsrf/rpw-2/GetResourcePropertyDocument/GetResourcePropertyDocumentResponse.

The contents of the GetResourcePropertyDocumentResponse message are further described as follows:

/wsrf-rp:GetResourcePropertyDocumentResponse/{any}

An XML element that MUST correspond to the resource properties document of the WS-Resource.

If the WS-Resource does not respond to the GetResourcePropertyDocument request message with the GetResourcePropertyDocumentResponse message, then it MUST send a fault. This specification does not define any additional faults for this operation other than those defined for all WS-Resources in [WS-Resource]. One of these faults, or a specialization thereof, SHOULD be sent upon failure although other fault messages MAY be returned instead.

5.1.1      Example SOAP Encoding of the GetResourcePropertyDocument Message Exchange

Consider the following resource properties document defining resource properties for a WS-Resource defined by the GenericDiskDrive portType:

<tns:GenericDiskDriveProperties

      xmlns:tns="http://example.com/diskDrive"

      xmlns:cap="http://example.com/capabilities">

   <tns:NumberOfBlocks>22</tns:NumberOfBlocks>

   <tns:BlockSize>1024</tns:BlockSize>

   <tns:Manufacturer>DrivesRUs</tns:Manufacturer>

    <tns:StorageCapability>

      <cap:NoSinglePointOfFailure>true</cap:NoSinglePointOfFailure>

    </tns:StorageCapability>

    <tns:StorageCapability>

      <cap:DataRedundancyMax>42</cap:DataRedundancyMax>

    </tns:StorageCapability>

</tns:GenericDiskDriveProperties>

The following is a non-normative example of a GetResourcePropertyDocument request message using SOAP 1.1:

<s11:Envelope …>

  <s11:Header>

    <wsa:Action>

http://docs.oasis-open.org/wsrf/rpw-2/GetResourcePropertyDocument/GetResourcePropertyDocumentRequest

    </wsa:Action>

  </s11:Header>

  <s11:Body>

    <wsrf-rp:GetResourcePropertyDocument/>

  </s11:Body>

</s11:Envelope>

The following is an example GetResourcePropertyDocumentResponse message using SOAP 1.1:

<s11:Envelope …>

  <s11:Header>

    <wsa:Action>

http://docs.oasis-open.org/wsrf/rpw-2/GetResourcePropertyDocument/GetResourcePropertyDocumentResponse

    </wsa:Action>

  </s11:Header>

  <s11:Body>

    <wsrf-rp:GetResourcePropertyDocumentResponse

      xmlns:tns="http://example.com/diskDrive"

      xmlns:cap="http://example.com/capabilities">

       <tns:GenericDiskDriveProperties>

         <tns:NumberOfBlocks>22</tns:NumberOfBlocks>

         <tns:BlockSize>1024</tns:BlockSize>

         <tns:Manufacturer>DrivesRUs</tns:Manufacturer>

         <tns:StorageCapability>

          <cap:NoSinglePointOfFailure>true</cap:NoSinglePointOfFailure>

         </tns:StorageCapability>

         <tns:StorageCapability>

          <cap:DataRedundancyMax>42</cap:DataRedundancyMax>

         </tns:StorageCapability>

      </tns:GenericDiskDriveProperties>

    </wsrf-rp:GetResourcePropertyDocumentResponse>

  </s11:Body>

</s11:Envelope>

5.2      GetResourceProperty

A WS-Resource whose portType includes the resource properties document type declaration (/wsdl:portType/@ResourceProperties) MUST support the message exchange defined in this section that allows a requestor to retrieve the value of a single resource property of a WS-Resource.

The format of this request message MUST be:

 

  <wsrf-rp:GetResourceProperty>

    QName

  </wsrf-rp:GetResourceProperty>

 

The wsa:Action MUST contain the URI

http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest.

The components of the GetResourceProperty request message are further described as follows:

/wsrf-rp:GetResourceProperty/QName

This MUST correspond to the QName of a resource property element (child of the root of the WS-Resource’s resource properties document).

The response of the GetResourceProperty request message is a message of the following form:

 

  <wsrf-rp:GetResourcePropertyResponse>

    {any}*

  </wsrf-rp:GetResourcePropertyResponse>

 

The wsa:Action MUST contain the URI

http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse.

The contents of the GetResourceProperty response message are further described as follows:

/wsrf-rp:GetResourcePropertyResponse/{any}

The resource property value, as XML element(s), that corresponds to the QName in the GetResourceProperty request. Note: in the case where the resource property element is defined with minOccurs=”0” and the resource properties document does not contain any value for that resource property, the response MUST be an empty wsrf-rp:GetResourcePropertyResponse element. If an implementation cannot return all of the resource property values associated with the request, due to, for example, security considerations, then it MUST fault.

If the WS-Resource does not respond to the GetResourceProperty request message with the GetResourcePropertyResponse message, then it MUST send a fault. This specification defines the following faults associated with failure to process the GetResourceProperty request message, in addition to those faults defined for all WS-Resources in [WS-Resource]:

InvalidResourcePropertyQNameFault

One of these faults, or a specialization thereof, SHOULD be sent upon failure, although other fault messages MAY be returned instead.

5.2.1      Example SOAP Encoding of the GetResourceProperty Message Exchange

Consider the resource properties document defining resource properties for a WS-Resource as shown in section 5.1.1. The following is a non-normative example of a GetResourceProperty request message using SOAP 1.1:

<s11:Envelope …>

  <s11:Header>

    <wsa:Action>

http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest

    </wsa:Action>

  </s11:Header>

  <s11:Body>

    <wsrf-rp:GetResourceProperty

      xmlns:tns="http://example.com/diskDrive">

       tns:NumberOfBlocks

    </wsrf-rp: GetResourceProperty>

  </s11:Body>

</s11:Envelope>

The following is an example GetResourcePropertyResponse message using SOAP 1.1:

<s11:Envelope  …>

  <s11:Header>

    <wsa:Action>

http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse

    </wsa:Action>

  </s11:Header>

  <s11:Body>

    <wsrf-rp:GetResourcePropertyResponse

        xmlns:ns1="http://example.com/diskDrive">

      <ns1:NumberOfBlocks>22</ns1:NumberOfBlocks>

    </wsrf-rp:GetResourcePropertyResponse>

  </s11:Body>

</s11:Envelope>

5.3      GetMultipleResourceProperties

A WS-Resource MAY support the message exchange defined in this section that allows a requestor to retrieve the values of multiple resource properties of a WS-Resource.

The format of this request message MUST be:

  <wsrf-rp:GetMultipleResourceProperties>

    <wsrf-rp:ResourceProperty>QName <wsrf-rp:ResourceProperty>+

  </wsrf-rp:GetMultipleResourceProperties>

The wsa:Action MUST contain the URI

http://docs.oasis-open.org/wsrf/rpw-2/GetMultipleResourceProperties/GetMultipleResourcePropertiesRequest.

The components of the GetMultipleResourceProperties request message are further described as follows:

/wsrf-rp:GetMultipleResourceProperties/wsrf-rp:ResourceProperty+

This component MAY appear one or more times. Each ResourceProperty element contains an xsd:QName which MUST correspond to the QName of a resource property element child of the root of the WS-Resource’s resource properties document.

The response of the GetMultipleResourceProperties request message is a message of the following form:

  <wsrf-rp:GetMultipleResourcePropertiesResponse>

    {any}*

  </wsrf-rp:GetMultipleResourcePropertiesResponse>

The wsa:Action MUST contain the URI

http://docs.oasis-open.org/wsrf/rpw-2/GetMultipleResourceProperties/GetMultipleResourcePropertiesResponse.

The contents of the GetMultipleResourcePropertiesResponse message are further described as follows:

/wsrf-rp:GetMultipleResourcePropertiesResponse/{any}

A collection of resource property values, as XML elements that correspond to the QNames given in the GetMultipleResourceProperties request message. This collection is formed in the following fashion. For each QName in the request message, the resource must add to the collection all child elements of the root of the resource properties document whose name corresponds to that QName. Note: in the case where the resource property element is defined with minOccurs=”0” and the resource properties document does not contain any value for that resource property, no child element is added to the collection for that QName. If an implementation cannot return all of the resource property values associated with the request, due to, for example, security considerations, then it MUST fault.

If the XML schema definition of the resource properties document root element does not permit the root element to contain a child element with that QName the processing of the GetMultipleResourceProperties request message MUST terminate with an InvalidResourcePropertyQName fault message.

The collection of resource property values SHOULD be formed in the same order as the resource property element QNames were specified in the GetMultipleResourceProperties request message.

If the WS-Resource does not respond to the GetMultipleResourceProperties request message with the GetMultipleResourcePropertiesResponse message, then it MUST send a fault. This specification defines the following faults associated with failure to process the GetMultipleResourceProperties request message, in addition to those faults defined for all WS-Resources in [WS-Resource]:

InvalidResourcePropertyQNameFault

One of these faults, or a specialization thereof, SHOULD be sent upon failure, although other fault messages MAY be returned instead.

Note: the functionality provided by the GetResourceProperty message exchange is a strict subset of that provided by GetMultipleResourceProperties. WS-ResourceProperties defines two message exchange sets to provide implementation flexibility. GetResourceProperty is a simple, required message exchange that allows simple Web service implementations to be compliant with WS-ResourceProperties. The optional GetMultipleResourceProperties, while more sophisticated, allows efficient retrieval of multiple resource property values using a single message exchange.

An example use of the GetMultipleResourceProperties operation is shown in Section 3. Note: it is the responsibility of the requestor to correlate the elements of the response message that correspond to the QNames contained in the request message.

5.3.1      Example SOAP Encoding of the GetMultipleResourceProperties Message Exchange

Consider the resource properties document defining resource properties for a WS-Resource as shown in section 5.1.1. The following is a non-normative example of a GetMultipleResourceProperties request message using SOAP 1.1:

<s11:Envelope …>

  <s11:Header>

    <wsa:Action>

http://docs.oasis-open.org/wsrf/rpw-2/GetMultipleResourceProperties/GetMultipleResourcePropertiesRequest

    </wsa:Action>

  </s11:Header>

  <s11:Body>

    <wsrf-rp:GetMultipleResourceProperties

          xmlns:tns="http://example.com/diskdrive">

      <wsrf-rp:ResourceProperty>

         tns:NumberOfBlocks

      </wsrf-rp:ResourceProperty>

      <wsrf-rp:ResourceProperty>

         tns:BlockSize

      </wsrf-rp:ResourceProperty>

    </wsrf-rp:GetMultipleResourceProperties>

  </s11:Body>

</s11:Envelope>

The following is an example GetMultipleResourcePropertiesResponse message using SOAP 1.1:

<s11:Envelope …>

  <s11:Header>

    <wsa:Action>

http://docs.oasis-open.org/wsrf/rpw-2/GetMultipleResourceProperties/GetMultipleResourcePropertiesResponse

    </wsa:Action>

  </s11:Header>

  <s11:Body>

    <wsrf-rp:GetMultipleResourcePropertiesResponse

          xmlns:ns1="http://example.com/diskdrive" …>

      <ns1:NumberOfBlocks>22</ns1:NumberOfBlocks>

      <ns1:BlockSize>1024</ns1:BlockSize>

    </wsrf-rp:GetMultipleResourcePropertiesResponse>

  </s11:Body>

</s11:Envelope>

5.4      QueryResourceProperties

A WS-Resource MAY support the message exchange defined in this section that allows a requestor to query the resource properties document of a WS-Resource using a query expression such as XPath [XPATH].

The format of this request message MUST be:

  <wsrf-rp:QueryResourceProperties>

    <wsrf-rp:QueryExpression Dialect=”xsd:anyURI”>

      xsd:any

    </wsrf-rp:QueryExpression>

  </wsrf-rp:QueryResourceProperties>

The wsa:Action MUST contain the URI

http://docs.oasis-open.org/wsrf/rpw-2/QueryResourceProperties/QueryResourcePropertiesRequest.

The components of the QueryResourceProperties request message are further described as follows:

/wsrf-rp:QueryResourceProperties/wsrf-rp:QueryExpression

The context of the expression is to be evaluated against the resource properties document of the WS-Resource identified by the request. The results of evaluating the QueryExpression are returned in the response to this request message.

/wsrf-rp:QueryResourceProperties/wsrf-rp:QueryExpression/@Dialect

This attribute contains a URI specifying the type of expression contained by the element. If the implementation does not recognize the URI identified by @Dialect, it MUST fault. There is one well-known dialect identified by this specification, corresponding to the current stable version of the XPath [XPATH] language.

http://www.w3.org/TR/1999/REC-xpath-19991116

This URI identifies the XPath 1.0 language. The contents of the QueryExpression MUST be a string containing a valid XPath 1.0 expression. The namespace URI prefixes for the in-scope namespace declarations of the QueryExpression element may be used in the XPath expression. The actual namespace declaration may be on any of the ancestors of the QueryResourceProperties element.

Note: It is RECOMMENDED that users avoid the use of previously-defined namespace prefixes when there is a chance the message could traverse intermediaries or when encryption is applied to the message, as there is a chance that an intermediary will modify the namespace prefixes. In such cases the expression will become incoherent with respect to the namespace-prefix to namespace-URI mapping intended by the requestor.

A WS-Resource that supports the QueryResourceProperties message exchange MUST support QueryExpressions that contain a Dialect with value “http://www.w3.org/TR/1999/REC-xpath-19991116”. Such a WS-Resource MAY also support other dialects.

/wsrf-rp:QueryResourceProperties/QueryExpression/{any}

The QueryExpression MUST contain an expression in an expression language specified by the dialect attribute. Note: this element may contain mixed content.

The response of the QueryResourceProperties request message MUST be a message of the following form:

  <wsrf-rp:QueryResourcePropertiesResponse>

    {any}

  </wsrf-rp:QueryResourcePropertiesResponse>

The wsa:Action MUST contain the URI

http://docs.oasis-open.org/wsrf/rpw-2/QueryResourceProperties/QueryResourcePropertiesResponse.

The contents of the QueryResourcePropertiesResponse message are further described as follows:

/wsrf-rp:QueryResourcePropertiesResponse/{any}

The response of the QueryResourceProperties request is variable, depending on the nature of the QueryExpression component of the QueryResourceProperties request. The response MUST contain an XML serialization of the results of evaluating the QueryExpression against the resource properties document. Note: this element has mixedContent, to allow for the case where the QueryExpression evaluates to a simple type (such as a Boolean, a string or an integer) as well as the case where a node-set of elements is returned.

If the WS-Resource does not respond to the QueryResourceProperties request message with the QueryResourcePropertiesResponse message, then it MUST send a fault. This specification defines the following faults associated with failure to process the QueryResourceProperties request message, in addition to those faults defined for all WS-Resources in [WS-Resource]:

UnknownQueryExpressionDialectFault

InvalidQueryExpressionFault

QueryEvaluationErrorFault

One of these faults, or a specialization thereof, SHOULD be sent upon failure, although other fault messages MAY be returned instead.

5.4.1      QueryExpressionDialect Resource Property

If a WS-Resource supports the QueryResourceProperty operation and supports dialects in addition to the required XPath 1.0 dialect, then it MUST include a wsrf-rp:QueryExpressionDialect resource property within its resource property document definition. Such a WS-Resource MAY include this resource property if it supports only the XPath 1.0 dialect. The form of the wsrf-rp:QueryExpressionDialect resource property is:

<wsrf-rp:QueryExpressionDialect>

   xsd:anyURI

</wsrf-rp:QueryExpressionDialect>

Furthermore, this reference MUST reflect the minOccurs and maxOccurs properties as follows:

 <xsd:element ref="wsrf-rp:QueryExpressionDialect"

                         minOccurs="0" maxOccurs="unbounded" />

This resource property element is further constrained as follows:

/wsrf-rp:QueryExpressionDialect

This resource property declares one or more QueryExpression dialects that are supported by the Web service.

/wsrf-rp:QueryExpressionDialect/{anyURI}

If a requestor sends a QueryResourceProperties request message using a QueryExpression with Dialect matching the URI contained in this resource property element, the WS-Resource MUST NOT issue an UnknownQueryExpressionDialect fault. The value of this element is a URI that MUST correspond to a QueryExpression dialect.

5.4.2      Example SOAP Encoding of the QueryResourceProperties Message Exchange

Consider the resource properties document defining resource properties for a WS-Resource as shown in Section 5.1.1. The following is a non-normative example of a QueryResourceProperties request message using SOAP 1.1:

<s11:Envelope …>

  <s11:Header>

    <wsa:Action>

http://docs.oasis-open.org/wsrf/rpw-2/QueryResourceProperties/QueryResourcePropertiesRequest

    </wsa:Action>

  </s11:Header>

  <s11:Body>

    <wsrf-rp:QueryResourceProperties>

      <wsrf-rp:QueryExpression

        Dialect=”http://www.w3.org/TR/1999/REC-xpath-19991116” >

          boolean(/*/NumberOfBlocks > 20 and /*/BlockSize=1024)

      </wsrf-rp:QueryExpression>

    </wsrf-rp:QueryResourceProperties>

  </s11:Body>

</s11:Envelope>

The following is an example QueryResourcePropertiesResponse message using SOAP 1.1, containing the results of evaluating that XPath [XPATH] expression against the root element of the resource’s resource properties document:

<s11:Envelope …>

  <s11:Header>

    <wsa:Action>

http://docs.oasis-open.org/wsrf/rpw-2/QueryResourceProperties/QueryResourcePropertiesResponse

    </wsa:Action>

  </s11:Header>

  <s11:Body>

    <wsrf-rp:QueryResourcePropertiesResponse>

       true

    </wsrf-rp:QueryResourcePropertiesResponse>

  </s11:Body>

</s11:Envelope>

5.5      PutResourcePropertyDocument

A WS-Resource MAY support the message exchange defined in this section that allows a requestor to completely replace the values of a WS-Resource’s properties with an entirely new resource property document. This message exchange is symmetric to the GetResourcePropertyDocument message exchange defined in Section 5.1.

The format of the PutResourcePropertyDocument request message MUST be:

<wsrf-rp:PutResourcePropertyDocument>

  {any}

</wsrf-rp:PutResourcePropertyDocument>

The wsa:Action MUST contain the URI

http://docs.oasis-open.org/wsrf/rpw-2/PutResourcePropertyDocument/PutResourcePropertyDocumentRequest.

The contents of the PutResourcePropertyDocument request message are further described as follows:

/wsrf-rp:PutResourcePropertyDocument/{any}

An XML element that MUST correspond to the element declared in the value of the ResourceProperties attribute of the portType defining the PutResourcePropertyDocument operation. This is the value the requestor intends to be the new resource property document for the WS-Resource.

The response of the PutResourcePropertyDocument request message is a message of the following form:

<wsrf-rp:PutResourcePropertyDocumentResponse>

  {any} ?

</wsrf-rp:PutResourcePropertyDocumentResponse>

The wsa:Action MUST contain the URI

http://docs.oasis-open.org/wsrf/rpw-2/PutResourcePropertyDocument/PutResourcePropertyDocumentResponse.

The contents of the PutResourcePropertyDocumentResponse message are further described as follows:

/wsrf-rp:PutResourcePropertyDocumentResponse/{any}

If, after processing the PutResourcePropertyDocument request, the XML Infoset of the WS-Resource’s resource properties document is identical to the XML Infoset of the contents of the PutResourcePropertyDocument request itself, then the contents of the PutResourcePropertyDocumentResponse MUST be empty.

If, after processing the PutResourcePropertyDocument request, the XML Infoset of the WS-Resource’s resource properties document is not identical to the XML Infoset of the contents of the PutResourcePropertyDocument request itself, then the contents of the PutResourcePropertyDocumentResponse MUST contain the updated resource property document. If an implementation cannot return all of the resource property values associated with the request, due to, for example, security considerations, then it MUST fault.

If the WS-Resource does not respond to the PutResourcePropertyDocument request message with the PutResourcePropertyDocumentResponse message, then it MUST send a fault. If the request results in a fault for any reason, such as read-only property changed or some other update fault, none of the resource properties are modified. This specification defines the following faults associated with failure to process the PutResourcePropertyDocument request message, in addition to those faults defined for all WS-Resources in [WS-Resource]:

UnableToPutResourcePropertyDocumentFault

One of these faults, or a specialization thereof, SHOULD be sent upon failure, although other fault messages MAY be returned instead.

5.5.1      Example SOAP Encoding of the PutResponsePropertyDocument Message Exchange

Consider the resource properties document defining resource properties for a WS-Resource as shown in Section 5.1.1. The following is a non-normative example of a PutResourcePropertyDocument request message using SOAP 1.1:

<s11:Envelope …>

  <s11:Header>

    <wsa:Action>

http://docs.oasis-open.org/wsrf/rpw-2/PutResourcePropertyDocument/PutResourcePropertyDocumentRequest

    </wsa:Action>

  </s11:Header>

  <s11:Body>

    <wsrf-rp:PutResourcePropertyDocument>

         <tns:GenericDiskDriveProperties

               xmlns:tns="http://example.com/diskDrive"

               xmlns:cap="http://example.com/capabilities">

               <tns:NumberOfBlocks>22</tns:NumberOfBlocks>

               <tns:BlockSize>1024</tns:BlockSize>

               <tns:Manufacturer>DrivesRUs</tns:Manufacturer>

               <tns:StorageCapability>

                  <cap:NoSinglePointOfFailure>true</cap:NoSinglePointOfFailure>

               </tns:StorageCapability>

               <tns:StorageCapability>

                  <cap:DataRedundancyMax>42</cap:DataRedundancyMax>

               </tns:StorageCapability>

         </tns:GenericDiskDriveProperties>

    </wsrf-rp:PutResourcePropertyDocument>

  </s11:Body>

</s11:Envelope>

The following is an example PutResourcePropertyDocumentResponse message using SOAP 1.1:

<s11:Envelope …>

  <s11:Header>

    <wsa:Action>

http://docs.oasis-open.org/wsrf/rpw-2/PutResourcePropertyDocument/PutResourcePropertyDocumentResponse

    </wsa:Action>

  </s11:Header>

  <s11:Body>

    <wsrf-rp:PutResourcePropertyDocumentResponse />

  </s11:Body>

</s11:Envelope>

5.6      SetResourceProperties

A WS-Resource MAY support the message exchange defined in this section that allows a requestor to modify the values of multiple resource properties of a WS-Resource.

The SetResourceProperties message allows the processing of a single request message to make multiple changes to the resource properties document. There are three types of changes, each modeled as separate types of component (called SetRequestComponent) of a SetResourceProperties request message:

The format of this request message MUST be:

  <wsrf-rp:SetResourceProperties>

   [

    <wsrf-rp:Insert >

      {any}*

    </wsrf-rp:Insert> |

 

    <wsrf-rp:Update >

      {any}*

    </wsrf-rp:Update> |

 

    <wsrf-rp:Delete ResourceProperty=”QName” />

   ]+

  </wsrf-rp:SetResourceProperties>

The wsa:Action MUST contain the URI

http://docs.oasis-open.org/wsrf/rpw-2/SetResourceProperties/SetResourcePropertiesRequest.

The contents of the SetResourceProperties request message are further described as follows:

/wsrf-rp:SetResourceProperties

This element contains a collection of one or more components called SetRequestComponents. Each of the SetRequestComponents must be processed against the WS-Resource’s resource properties document. These SetRequestComponents MUST appear to be processed in the order in which they are listed in the request. Each request component MUST be processed to completion in this conceptual sequence before a subsequent SetRequestComponent is processed. The result of processing a given SetRequestComponent MUST be observable to the processing of a subsequent SetRequestComponent, and to subsequent message exchanges with the same WS-Resources.

If a service fails to process a SetRequestComponent, it MUST cease processing the SetResourceProperties request message. The values of the resource properties associated with this SetRequestComponent MAY reflect partial processing of this SetRequestComponent. An implementation MAY restore the contents of the resource properties document to a state as if no processing of the failed SetRequestComponent had occurred. The implementation MAY additionally choose to restore the resource properties document as if none of the SetRequestComponents had been processed. Refer to Section 7 for additional information of resource recovery.

/wsrf-rp:SetResourceProperties/wsrf-rp:Insert

The intent of this component is to insert the contents of the component into the resource properties document. The exact placement of the element insertion is implementation-dependent. If, as a result of processing the Insert component, the resource properties document is no longer able to validate, the processing of the component MUST fault. The implementation may be unable to accept the insertion of an element because it does not allow the requestor to insert a resource property (or its value) of that given name. In such circumstances, the resource MUST fault the processing of the component.

/wsrf-rp:SetResourceProperties/wsrf-rp:Insert/{any}

This component identifies the element(s) to be inserted into the resource properties document. If there are multiple child elements of the Insert component, each MUST have the same namespace and name (i.e. the same QName). The QName MUST correspond to the QName of a resource property element associated with the WS-Resource (i.e. an element that is a valid child element of the root element of the resource properties document). Note, for those resource properties documents that allow open element content, the set of valid content types can be very large.

/wsrf-rp:SetResourceProperties/wsrf-rp:Update

The intent of this component is to change the value of the resource property by removing any and all resource property element(s) of the given QName and replacing them with the contents of this component. If, as a result of processing the Update component, the resource properties document is no longer able to validate, the processing of the component MUST fault. The resource may be unable to accept the update of an element because it does not allow the requestor to update a resource property (or its value) of that given name. In such circumstances, the resource MUST fault the processing of the component.

/wsrf-rp:SetResourceProperties/wsrf-rp:Update/{any}

This identifies the element(s) to be inserted into the resource properties document, replacing all element children of the root of the resource properties document with the same QName. If there are multiple child elements of the Insert component, each MUST have the same namespace and name (i.e. the same QName). The QName MUST correspond to the QName of a resource property element associated with the WS-Resource (i.e. an element that is a valid child element of the root element of the resource properties document). Note, for those resource properties documents that allow open element content, the set of valid content types can be very large.

/wsrf-rp:SetResourceProperties/wsrf-rp:Delete

The intent of this component is to remove all element children of the root of the resource properties document whose QNames correspond to the value of @ResourceProperty. If the resource is unable to remove all identified elements, the processing of the component MUST fault. If, as a result of processing the Delete component, the resource properties document is no longer able to validate, the processing of the component MUST fail. The resource may be unable to accept the delete of an element because it does not allow the requestor to delete a resource property (or its value) of the given name. In such circumstances, the resource MUST fault the processing of the component.

/wsrf-rp:SetResourceProperties/wsrf-rp:Delete/@ResourceProperty

This attribute contains the QName of a resource property to be deleted by this component.

The response of the SetResourceProperties request message, all of whose components were successfully processed, MUST be a message of the following form:

  <wsrf-rp:SetResourcePropertiesResponse>

  </wsrf-rp:SetResourcePropertiesResponse>

The wsa:Action MUST contain the URI

http://docs.oasis-open.org/wsrf/rpw-2/SetResourceProperties/SetResourcePropertiesResponse.

If the WS-Resource does not respond to the SetResourceProperties request message with the SetResourcePropertiesResponse message, then it MUST send a fault message. This specification defines the following faults associated with failure to process the SetResourcePropertyDocument request message, in addition to those faults defined for all WS-Resources in [WS-Resource]:

InvalidModificationFault

UnableToModifyResourcePropertyFault

InvalidResourcePropertyQNameFault

SetResourcePropertyRequestFailedFault

One of these faults, or a specialization thereof, SHOULD be sent upon failure, although other fault messages MAY be returned instead.

Any fault message indicating a failure during the update of the resource properties document MUST also indicate whether the document was restored or not by using the ResourcePropertyChangeFailure element of the fault. This fault element indicates the resource property element change associated with the fault and indicates if the resource property document as a whole was restored. The format of this element is indicated as follows:

<wsrf-rp:ResourcePropertyChangeFailure Restored=xsd:boolean?>

     <wsrf-rp:CurrentValue>{any}*</wsrf-rp:CurrentValue> ?

     <wsrf-rp:RequestedValue>{any}*</wsrf-rp:RequestedValue> ?

</wsrf-rp:ResourcePropertyChangeFailure>

This element is further constrained as follows:

/wsrf-rp:ResourcePropertyChangeFailure

The contents of this element provide more information about the element associated with a failed modification to a resource property document.

/wsrf-rp:ResourcePropertyChangeFailure/@Restored

If the value of this optional attribute is “true”, then the resource property document was restored to its state prior to the attempt to process the request message.  The absence of this attribute is identical to this attribute having the value “false”, indicating that no attempt was made to restore the resource property document.

/wsrf-rp:ResourcePropertyChangeFailure/wsrf-rp:CurrentValue

If present, this component contains the current value(s) of the resource property elements associated with the fault.

/wsrf-rp:ResourcePropertyChangeFailure/wsrf-rp:RequestedValue

If present, this component contains the value(s) of the resource property elements associated with the fault as found within the request message.

Note: There is no isolation policy implied, for either modifications to the resource properties document resulting from the processing of the request or the modifications implemented by the restore. See Section 7 for more discussion.

5.6.1      Example SOAP Encoding of the SetResourceProperties Message Exchange

Consider the resource properties document defining resource properties for a WS-Resource as shown in Section 5.1.1.: The following is a non-normative example of a SetResourceProperties request message using SOAP 1.1:

<s11:Envelope …>

  <s11:Header>

    <wsa:Action>

http://docs.oasis-open.org/wsrf/rpw-2/SetResourceProperties/SetResourcePropertiesRequest

    </wsa:Action>

  </s11:Header>

  <s11:Body>

    <wsrf-rp:SetResourceProperties

          xmlns:tns="http://example.com/diskdrive">

      <wsrf-rp:Update>

        <tns:NumberOfBlocks>143</tns:NumberOfBlocks>

      </wsrf-rp:Update>

 

      <wsrf-rp:Delete ResourceProperty="tns:StorageCapability" />

 

      <wsrf-rp:Insert>

        <tns:someElement>42</tns:someElement>

      </wsrf-rp:Insert>

 

    </wsrf-rp:SetResourceProperties>

  </s11:Body>

</s11:Envelope>

The following is an example SetResourcePropertiesResponse message using SOAP 1.1:

<s11:Envelope …>

  <s11:Header>

    <wsa:Action>

http://docs.oasis-open.org/wsrf/rpw-2/SetResourceProperties/SetResourcePropertiesResponse

    </wsa:Action>

  </s11:Header>

  <s11:Body>

    <wsrf-rp:SetResourcePropertiesResponse>

    </wsrf-rp:SetResourcePropertiesResponse>

  </s11:Body>

</s11:Envelope>

The new contents of the resource properties document after successful processing of the request message will be:

<tns:xmlns:tns="http://example.com/diskDrive" >

   <tns:NumberOfBlocks>143</tns:NumberOfBlocks>

   <tns:BlockSize>1024</tns:BlockSize>

   <tns:someElement>42</tns:someElement>

   <tns:Manufacturer>DrivesRUs</tns:Manufacturer>

</tns:GenericDiskDriveProperties>

Now consider the situation wherein it is illegal to change the value of the resource property tns:Manufacturer, for example because the resource property is not modifiable. If a SetResourceProperties operation contained a component that attempted to modify this resource property value, then a fault message would be returned in response to the SetResourceProperties request, and that fault message would contain the following XML fragment:

     <wsrf-rp:ResourcePropertyChangeFailure Restored=”true”>

        <wsrf-rp:CurrentValue>

               <tns:Manufacturer>DrivesRUs</tns:Manufacturer>

        </wsrf-rp:CurrentValue>

        <wsrf-rp:RequestedValue>

               <tns:Manufacturer>BogusName</tns:Manufacturer>

        </wsrf-rp:RequestedValue>

   </wsrf-rp:ResourcePropertyChangeFailure>

5.7      InsertResourceProperties

A WS-Resource MAY support the message exchange defined in this section that allows a requestor to insert new values of a resource property of a WS-Resource.

The InsertResourceProperties message is used to request the insertion of one or more element values of a single resource property into the resource properties document of a WS-Resource.

The format of this request message MUST be:

  <wsrf-rp:InsertResourceProperties>

    <wsrf-rp:Insert>

      {any}*

    </wsrf-rp:Insert>

  </wsrf-rp:InsertResourceProperties>

The wsa:Action MUST contain the URI

http://docs.oasis-open.org/wsrf/rpw-2/InsertResourceProperties/InsertResourcePropertiesRequest.

The contents of the InsertResourceProperties request message are further described as follows:

/wsrf-rp:InsertResourceProperties/wsrf-rp:Insert

The intent of this component is to insert the contents of the component into the resource properties document. The exact placement of the element insertion is implementation-dependent. If, as a result of processing the InsertResourceProperties request, the resource properties document is no longer able to validate, the processing of the request MUST fault. The implementation may be unable to accept the insertion of an element because it does not allow the requestor to insert a resource property (or its value) of that given name. In such circumstances, the resource MUST fault the processing of the request message.

/wsrf-rp:InsertResourceProperties/wsrf-rp:Insert/{any}

This component identifies the element(s) to be inserted into the resource properties document. If there are multiple child elements of the wsrf-rp:Insert element, each MUST have the same namespace and name (i.e. the same QName). The QName MUST correspond to the QName of a resource property element associated with the WS-Resource (i.e. an element that is a valid child element of the root element of the resource properties document). Note, for those resource properties documents that allow open element content, the set of valid content types can be very large.

When an InsertResourceProperties request message has been successfully processed, the response message MUST have the following form:

  <wsrf-rp:InsertResourcePropertiesResponse>

  </wsrf-rp:InsertResourcePropertiesResponse>

The wsa:Action MUST contain the URI

http://docs.oasis-open.org/wsrf/rpw-2/InsertResourceProperties/InsertResourcePropertiesResponse.

If the WS-Resource does not respond to the InsertResourceProperties request message with the InsertResourcePropertiesResponse message, then it MUST send a fault. This specification defines the following faults associated with failure to process the InsertResourceProperties request message, in addition to those faults defined for all WS-Resources in [WS-Resource]:

InvalidModificationFault

UnableToModifyResourcePropertyFault

InvalidResourcePropertyQNameFault

InsertResourcePropertiesRequestFailedFault

One of these faults, or a specialization thereof, SHOULD be sent upon failure, although other fault messages MAY be returned instead.

Any fault message indicating a failure during the update of the resource properties document MUST also indicate whether the document was restored by using the ResourcePropertyChangeFailure element of the fault. This fault element indicates the resource property element change associated with the fault and indicates if the resource property document as a whole was restored. The format of this element is described in Section 5.6.

5.7.1      Example SOAP Encoding of the InsertResourceProperties Message Exchange

Consider the following resource properties document defining resource properties for a WS-Resource defined by the GenericDiskDrive portType:

<tns:GenericDiskDriveProperties xmlns:tns="http://example.com/diskDrive" >

   <tns:NumberOfBlocks>22</tns:NumberOfBlocks>

   <tns:BlockSize>1024</tns:BlockSize>

   <tns:Manufacturer>DrivesRUs</tns:Manufacturer>

</tns:GenericDiskDriveProperties>

The following is a non-normative example of an InsertResourceProperties request message using SOAP 1.1:

<s11:Envelope …>

  <s11:Header>

    <wsa:Action>

http://docs.oasis-open.org/wsrf/rpw-2/InsertResourceProperties/InsertResourcePropertiesRequest

    </wsa:Action>

  </s11:Header>

  <s11:Body>

    <wsrf-rp:InsertResourceProperties

          xmlns:tns="http://example.com/diskdrive">

      <wsrf-rp:Insert>

        <tns:StorageCapability>

          <tns:NoSinglePointOfFailure>true</tns:NoSinglePointOfFailure>

        </tns:StorageCapability>

        <tns:StorageCapability>

          <tns:DataRedundancyMax>42</tns:DataRedundancyMax>

        </tns:StorageCapability>

      </wsrf-rp:Insert>

 

    </wsrf-rp:InsertResourceProperties>

  </s11:Body>

</s11:Envelope>

The following is an example InsertResourcePropertiesResponse message using SOAP 1.1:

<s11:Envelope …>

  <s11:Header>

    <wsa:Action>

http://docs.oasis-open.org/wsrf/rpw-2/InsertResourceProperties/InsertResourcePropertiesResponse

    </wsa:Action>

  </s11:Header>

  <s11:Body>

    <wsrf-rp:InsertResourcePropertiesResponse>

    </wsrf-rp:InsertResourcePropertiesResponse>

  </s11:Body>

</s11:Envelope>

The new contents of the resource properties document after successful processing of the request message will be:

<tns:GenericDiskDriveProperties xmlns:tns="http://example.com/diskDrive" >

   <tns:NumberOfBlocks>22</tns:NumberOfBlocks>

   <tns:BlockSize>1024</tns:BlockSize>

   <tns:Manufacturer>DrivesRUs</tns:Manufacturer>

    <tns:StorageCapability>

      <tns:NoSinglePointOfFailure>true</tns:NoSinglePointOfFailure>

    </tns:StorageCapability>

    <tns:StorageCapability>

      <tns:DataRedundancyMax>42</tns:DataRedundancyMax>

    </tns:StorageCapability>

</tns:GenericDiskDriveProperties>

5.8      UpdateResourceProperties

A WS-Resource MAY support the message exchange defined in this section that allows a requestor to replace the existing values of a resource property with new values.

The UpdateResourceProperties message is used to request the replacement of all the element values of a single resource property in the resource properties document of a WS-Resource with a new set of values.

The format of this request message MUST be:

  <wsrf-rp:UpdateResourceProperties>

    <wsrf-rp:Update>

      {any}*

    </wsrf-rp:Update>

  </wsrf-rp:UpdateResourceProperties>

The wsa:Action MUST contain the URI

http://docs.oasis-open.org/wsrf/rpw-2/UpdateResourceProperties/UpdateResourcePropertiesRequest.

The contents of the UpdateResourceProperties request message are further described as follows:

/wsrf-rp:UpdateResourceProperties/wsrf-rp:Update

The intent of this request is to change the value of the elements of a resource property by removing any and all resource property element(s) of the given QName and replacing them with the contents of this component. If, as a result of processing the entire UpdateResourceProperties request, the resource properties document is no longer able to validate, the processing of the request MUST fault. The resource may be unable to accept the update of an element because it does not allow the requestor to update a resource property (or its value) of that given name. In such circumstances, the resource MUST fault the processing of the request message.

/wsrf-rp:UpdateResourceProperties/wsrf-rp:Update/{any}

This identifies the element(s) to be inserted into the resource properties document, replacing all element children of the root of the resource properties document with the same QName. If there are multiple child elements of the wsrf-rp:Update component, each MUST have the same namespace and name (i.e. the same QName). The QName MUST correspond to the QName of a resource property element associated with the WS-Resource (i.e. an element that is a valid child element of the root element of the resource properties document). Note: for those resource properties documents that allow open element content, the set of valid content types can be very large.

When an UpdateResourceProperties request message has been successfully processed, the response message MUST have the following form:

  <wsrf-rp:UpdateResourcePropertiesResponse>

  </wsrf-rp:UpdateResourcePropertiesResponse>

The wsa:Action MUST contain the URI

http://docs.oasis-open.org/wsrf/rpw-2/UpdateResourceProperties/UpdateResourcePropertiesResponse.

If the WS-Resource does not respond to the UpdateResourceProperties request message with the UpdateResourcePropertiesResponse message, then it MUST send a fault. This specification defines the following faults associated with failure to process the UpdateResourceProperties request message, in addition to those faults defined for all WS-Resources in [WS-Resource]:

InvalidModificationFault

UnableToModifyResourcePropertyFault

InvalidResourcePropertyQNameFault

UpdateResourcePropertiesRequestFailedFault

One of these faults, or a specialization thereof, SHOULD be sent upon failure, although other fault messages MAY be returned instead.

Any fault message indicating a failure during the update of the resource properties document MUST also indicate whether the document was restored by using the ResourcePropertyChangeFailure element of the fault. This fault element indicates the resource property element change associated with the fault and indicates if the resource property document as a whole was restored. The format of this element is described in Section 5.6.

5.8.1      Example SOAP Encoding of the UpdateResourceProperties Message Exchange

Consider the resource properties document defining resource properties for a WS-Resource as shown in Section 5.7.1. The following is a non-normative example of an UpdateResourceProperties request message using SOAP 1.1:

<s11:Envelope …>

  <s11:Header>

    <wsa:Action>

http://docs.oasis-open.org/wsrf/rpw-2/UpdateResourceProperties/UpdateResourcePropertiesRequest

    </wsa:Action>

  </s11:Header>

  <s11:Body>

    <wsrf-rp:UpdateResourceProperties

          xmlns:tns="http://example.com/diskdrive">

      <wsrf-rp:Update>

        <tns:NumberOfBlocks>143</tns:NumberOfBlocks>

      </wsrf-rp:Update> 

    </wsrf-rp:UpdateResourceProperties>

  </s11:Body>

</s11:Envelope>

The following is an example UpdateResourcePropertiesResponse message using SOAP 1.1:

<s11:Envelope …>

  <s11:Header>

    <wsa:Action>

http://docs.oasis-open.org/wsrf/rpw-2/UpdateResourceProperties/UpdateResourcePropertiesResponse

    </wsa:Action>

  </s11:Header>

  <s11:Body>

    <wsrf-rp:UpdateResourcePropertiesResponse>

    </wsrf-rp:UpdateResourcePropertiesResponse>

  </s11:Body>

</s11:Envelope>

The new contents of the resource properties document after successful processing of the request message will be:

<tns:GenericDiskDriveProperties xmlns:tns="http://example.com/diskDrive" >

   <tns:NumberOfBlocks>143</tns:NumberOfBlocks>

   <tns:BlockSize>1024</tns:BlockSize>

   <tns:Manufacturer>DrivesRUs</tns:Manufacturer>

</tns:GenericDiskDriveProperties>

5.9      DeleteResourceProperties

A WS-Resource MAY support the message exchange defined in this section that allows a requestor to remove all values of a resource property of a WS-Resource.

The DeleteResourceProperties message is used to request the removal of all values of a single resource property from the resource properties document of a WS-Resource.

The format of this request message MUST be:

  <wsrf-rp:DeleteResourceProperties>

    <wsrf-rp:Delete ResourceProperty=”QName” />

  </wsrf-rp:DeleteResourceProperties>

The wsa:Action MUST contain the URI

http://docs.oasis-open.org/wsrf/rpw-2/DeleteResourceProperties/DeleteResourcePropertiesRequest.

The contents of the DeleteResourceProperties request message are further described as follows:

/wsrf-rp:DeleteResourceProperties/wsrf-rp:Delete

The intent of this message is to remove all element children of the root of the resource properties document whose QNames correspond to the value of @ResourceProperty. If the resource is unable to remove all identified elements, the processing of the message MUST fault. If, as a result of processing the DeletResourceProperty request, the resource properties document is no longer able to validate, the processing of the request MUST fault. The resource may be unable to accept the deletion of an element because it does not allow the requestor to delete a resource property (or its value) of the given name. In such circumstances, the resource MUST fault the processing of the request message.

/wsrf-rp:DeleteResourceProperties/wsrf-rp:Delete/@ResourceProperty

This attribute contains the QName of a resource property to be deleted by this request.

When a DeleteResourceProperties request message has been successfully processed, the response message MUST have the following form:

  <wsrf-rp:DeleteResourcePropertiesResponse>

  </wsrf-rp:DeleteResourcePropertiesResponse>

The wsa:Action MUST contain the URI

http://docs.oasis-open.org/wsrf/rpw-2/DeleteResourceProperties/DeleteResourcePropertiesResponse.

If the WS-Resource does not respond to the DeleteResourceProperties request message with the DeleteResourcePropertiesResponse message, then it MUST send a fault. This specification defines the following faults associated with failure to process the DeleteResourceProperties request message, in addition to those faults defined for all WS-Resources in [WS-Resource]:

InvalidModificationFault

UnableToModifyResourcePropertyFault

InvalidResourcePropertyQNameFault

DeleteResourcePropertiesRequestFailedFault

One of these faults, or a specialization thereof, SHOULD be sent upon failure, although other fault messages MAY be returned instead.

Any fault message indicating a failure during the update of the resource properties document MUST also indicate whether the document was restored by using the ResourcePropertyChangeFailure element of the fault. This fault element indicates the resource property element change associated with the fault and indicates if the resource property document as a whole was restored. The format of this element is described in Section 5.6.

5.9.1      Example SOAP Encoding of the DeleteResourceProperties Message Exchange

Consider the resource properties document defining resource properties for a WS-Resource as shown in Section 5.7.1. The following is a non-normative example of a DeleteResourceProperties request message using SOAP 1.1:

<s11:Envelope …>

  <s11:Header>

    <wsa:Action>

http://docs.oasis-open.org/wsrf/rpw-2/DeleteResourceProperties/DeleteResourcePropertiesRequest

    </wsa:Action>

  </s11:Header>

  <s11:Body>

    <wsrf-rp:DeleteResourceProperties

          xmlns:tns="http://example.com/diskdrive">

      <wsrf-rp:Delete ResourceProperty="tns:Manufacturer" />

    </wsrf-rp:DeleteResourceProperties>

  </s11:Body>

</s11:Envelope>

The following is an example DeleteResourcePropertiesResponse message using SOAP 1.1:

<s11:Envelope …>

  <s11:Header>

    <wsa:Action>

http://docs.oasis-open.org/wsrf/rpw-2/DeleteResourceProperties/DeleteResourcePropertiesResponse

    </wsa:Action>

  </s11:Header>

  <s11:Body>

    <wsrf-rp:DeleteResourcePropertiesResponse>

    </wsrf-rp:DeleteResourcePropertiesResponse>

  </s11:Body>

</s11:Envelope>

The new contents of the resource properties document after successful processing of the request message will be:

<tns:GenericDiskDriveProperties xmlns:tns="http://example.com/diskDrive" >

   <tns:NumberOfBlocks>22</tns:NumberOfBlocks>

   <tns:BlockSize>1024</tns:BlockSize>

</tns:GenericDiskDriveProperties>

6        Subscription

The WS-Notification [WS-BaseNotification] [WS-Topics] family of specifications describes the patterns, concepts, standard message exchanges, and protocols of a topic-based, publish-subscribe messaging pattern in Web services. In the notification model, a service creates messages that are delivered to other services that had previously registered interest in the situation associated with that message.

With WS-ResourceProperties, it is a common pattern for Web service requestors to request notification of inserts, updates and deletions made to the values of one or more resource property elements of a given WS-Resource.This suggests the need for the WS-Resource to encapsulate the stateful resource to ensure all changes made to the stateful resource (those made by Web services invocations, or those that happen to the resource by other means) are observed by the WS-Resource implementation. To the extent that encapsulation is not provided, and changes to the stateful resource are made outside of the knowledge of the associated WS-Resource implementation, the WS-Resource may not be able to provide notifications reflecting those changes.

If a WS-Resource supports the resource property value-change notification pattern, and if it uses WS-Notification to implement this feature, then it MUST implement the message exchanges for the NotificationProducer role, as specified in [WS-BaseNotification]. The WS-Resource MAY accept subscriptions to only a subset of the resource properties defined for a WS-Resource. If an implementation does not use WS-Notification, then it MAY ignore the requirements outlined in this section.

6.1      Individual Resource Property Value Changes

One notification message artifact is created for each change to each resource property observed by the WS-Resource implementation. For example, a SetResourceProperties request message might contain five SetRequestComponents. Each of these components would result in the creation of a separate message artifact. A PutResourcePropertyDocument request might result in the change of most of the WS-Resource’s resource properties, in which case each resource property changed by the PutResourcePropertyDocument request would result in a separate message artifact.

WS-ResourceProperties defines the Notification TopicExpressions and TopicNamespace elements [WS-Topics] that MUST be used to express the organization of the WS-Resource property element value change notifications. By understanding the relationship between TopicExpressions and resource properties, and examining the set of TopicExpressions supported by the NotificationProducer Web service, the service requestor can determine which of the resource properties are able to participate in the value-change notification pattern. The TopicExpression and TopicNamespace elements associated with resource property value-change notification are described as follows:

1.       The WS-Resource’s resource properties document MAY be defined using resource properties declared in multiple XML namespaces. For each of these XML namespaces, an associated TopicNamespace element MUST be defined. The TopicNamespace element defines a namespace intended to contain topics related to value changes of resource properties declared in that XML namespace.

o        The value of the TopicNamespace element’s targetNamespace attribute MUST be the same as the URI of the namespace in which the resource property element is defined. The name attribute of the TopicNamespace element SHOULD have the value “ResourcePropertiesTopicNamespace”.

2.       For each resource property participating in the value-change notification pattern, a TopicExpression element MUST be defined as a child of the TopicNamespace element defined in 1.

o        Notification messages reflecting changes to the resource property are associated with this TopicExpression.

o        The value of the TopicExpression element’s name attribute MUST be the same as the NCName of the resource property element.

o        The value of the TopicExpression element’s messageTypes attribute MUST include wsrf-rp:ResourcePropertyValueChangeNotification (defined later in this section). In addition, it MAY include QNames of other message elements.

o        A designer MAY introduce additional child sub-topic elements to the TopicExpression element that represent application-specific needs. 

3.       The WS-Resource acting as the NotificationProducer MUST include TopicExpressions as defined in 2 above, as part of the value of its “wsnt:TopicExpression” resource property element. One such TopicExpression MUST be included for each resource property element offered as a target for a value-change subscription.

4.       When a WS-Resource observes a resource property value change, it SHOULD create a notification message that expresses the situation, and associate the notification message with the TopicExpression associated with that resource property. Note: there are many circumstances in which a change to a resource property might not result in the generation of a notification message. For example, a resource property value may change frequently, making generation of notification messages too expensive for the service. In this situation, a WS-Resource may choose to never generate notification message artifacts to record value change, or it may choose to generate notification message artifacts for a subset of the value‑change situations.

The wsrf-rp:ResourcePropertyValueChangeNotification element MUST appear as a component of the notification message associated with resource property value change topics. This element is defined as follows:

<wsrf-rp:ResourcePropertyValueChangeNotification>

  <wsrf-rp:OldValues> xsd:any *</wsrf-rp:OldValues>?

  <wsrf-rp:NewValues> xsd:any *</wsrf-rp:NewValues>

</wsrf-rp:ResourcePropertyValueChangeNotification>

This element may appear as the root element of the notification message, or it may appear as a descendent of the root, accommodating patterns where the notification message itself is contained in an enveloping mechanism. The form of the ResourcePropertyValueChangeNotification is further constrained as follows:

/wsrf-rp:ResourcePropertyValueChangeNotification

One ResourcePropertyValueChangeNotification element is created for each resource property value-change situation detected and acted upon by the WS-Resource. This component records the value change of the affected resource property.

/wsrf-rp:ResourcePropertyValueChangeNotification/OldValues

This element, if it appears, MUST contain the resource property elements of the affected WS-Resource property immediately prior to when the value change was applied. If the resource property did not have any value prior to the value change (for example, this notification represents an insertion of a new resource property element) then this element is empty and will contain the attribute xsi:nil with value “true”. If this component does not appear in the message, then the WS-Resource was unable or unwilling to record the resource property elements prior to the value change.

/wsrf-rp:ResourcePropertyValueChangeNotification/NewValues

This element MUST contain the resource property elements of the affected WS-Resource property after the value-change condition was detected. If the WS-Resource property does not have any value after the value change (for example, this notification represents a deletion of the resource property element) then this element is empty and will contain the attribute xsi:nil with value “true”.

6.2      Value Changes on Any Resource Property

In addition to the TopicExpressions defined for value-change notification to individual resource properties (described in the previous section), the WS-Resource MAY also support subscription for changes to any resource property. This specification defines a distinguished topic, named “AnyResourcePropertyValueChange” in a distinguished Topic Namespace corresponding to the WS-ResourceProperties specification namespace.

If the WS-Resource supports the NotificationProducer interface (as defined by WS-BaseNotification) and it supports subscriptions on the wsrf-rp:AnyResourcePropertyValueChange topic, then it MUST include this TopicExpression’s QName in the value of its wsnt:TopicExpression resource property. Furthermore, for any ResourcePropertyValueChange notification message published on any Topic, the WS-Resource MUST also publish the notification message on the wsrf-rp:AnyResourcePropertyValueChange Topic.

7        ACID Properties of Operations on WS-Resources

The ability to associate a transactional recovery policy to the execution of a Web service message exchange is a quality of service the designer would compose into the definition of a WS-Resource. In the presence of a transactional unit of work, a Web service capable of participating in the transactional protocol must abide by the rules of two-phase-commit transaction management. However, in the absence of a transaction management policy, the Web service is under no obligation to recover the state of the WS-Resource in the event of a failure during message processing. 

This specification is not prescriptive with respect to policy that governs concurrent read or write access to a WS-Resource. The definition of specific policy governing concurrent updates, whether or not separate message executions targeting the same WS-Resource may be interleaved, and whether partially-completed WS-Resource updates within a given message execution may be observed by other concurrent requests is beyond the scope of this definition. The scope and extent of the isolation of changes made to the WS-Resource is an implementation dependent responsibility of the WS-Resource itself. The WS-Resource must also take on the responsibility for the scope and extent to which notifications of changes to the WS-Resource are isolated and made observable. If WS-Resource update isolation is needed, we suggest the use of a transaction to provide a context within which isolation of WS-Resource updates can be provided. In the absence of a transactional unit of work, the level of WS-Resource update atomicity, recovery, isolation, and durability provided is implementation-dependent.

The ability to declare and attach isolation-level policy to the definition of a Web service message exchange, whether or not a transactional unit of work is present, represents a general requirement not met by the current Web service architecture. In the future, isolation-level policy declarations may be introduced as a formal part of the WS-Resource definition.

8        Security Considerations

This specification defines the resource properties document and also the set of message exchanges that MUST be supported by a WS-Resource. In this context, there are two categories of security aspects that need to be considered: (a) securing the message exchanges and (b) securing the resource properties.

8.1      Securing the message exchanges

When messages are exchanged between a requestor and a WS-Resource in order to access or act upon one or more resource properties, it is RECOMMENDED that the communication between the services be secured using the mechanisms described in WS-Security [WS-Security]. 

8.2      Securing Resource Properties

Since WS-ResourceProperties defines a mechanism to expose properties of a WS-Resource, security policies should be established that ensure that only authorized requestors can access the value of a resource property. In order to secure access to the resource properties, the message exchanges that provide the access should be appropriately controlled. Authorization policies should be put in place so that the implications of providing the state information (through GetResourceProperty, GetMultipleResourceProperties, GetResourcePropertyDocument, or QueryResourceProperties messages or through notification of value change and modification of the resource properties), are taken into account. These policies should also take into account the semantic difference between components of the SetResourceProperties message – i.e. that an Update component updates a value of a resource property, whereas Insert and Delete components modify whether the WS-Resource actually contains the resource property values.

The authorization policies may also reflect the sensitivity of the resource property(ies) that are accessible from a WS-Resource. Policies can be set at the coarse granularity of the message exchange (e.g., Get(Multiple)ResourceProperty(ies) vs SetResourceProperty), but finer-grained control at the level of individual resource properties may be desired in some scenarios (e.g. user Bob can access value of “Manufacturer” but not “NumberOfBlocks”).

Given that a requestor will be able to access a resource property value by subscribing to state changes, care should be taken to set up security policies so that a consistent policy is in effect irrespective of whether the resource property value is accessed through direct message exchanges (e.g., GetResourceProperty) or indirectly through subscription for state changes (i.e., subscription to “ResourcePropertyValueChangeNotification” topic). It should also be noted that a requestor will be able to query the value of a property through the QueryResourceProperties operation, or by using a domain-specific operation corresponding to a resource property (e.g., getNumberOfBlocks) if one exists. Therefore, the authorization policy on QueryResourceProperties operation (and the getXXX operation, if one is declared on the Web service for resource property named XXX) should be set so that a requestor who is not authorized to get a value of a resource property through a GetResourceProperty request is not able to deduce the value indirectly through the QueryResourceProperties request (or the getXXX operation on the Web service).

Even if the requestor is authorized to access the requested resource properties, it is RECOMMENDED that the resource properties that are exchanged between a requestor and a Web service are secured to ensure integrity and/or confidentiality of the resource property values. This will prevent unauthorized alteration of and/or access to the property values while in transit. This would mean that the specific resource property elements are signed and/or encrypted within the message by leveraging WS-Security as discussed in the previous section.

9        References

9.1      Normative

[RFC2119]                           S. Bradner, Key words for use in RFCs to Indicate Requirement Levels, http://www.ietf.org/rfc/rfc2119.txt, IETF RFC 2119, March 1997.

[WS-Addressing]               

   http://www.w3.org/TR/ws-addr-core

[WS-BaseFaults]               

   http://docs.oasis-open.org/wsrf/wsrf-ws_base_faults-1.2-spec-os.pdf

[WS-BaseNotification]       

   http://docs.oasis-open.org/wsn/wsn-ws_base_notification-1.3-spec-pr-02.pdf

[WS-Resource]                   

   http://docs.oasis-open.org/wsrf/wsrf-ws_resource-1.2-spec-os.pdf

[WS-Topics]                      

   http://docs.oasis-open.org/wsn/wsn-ws_topics-1.3-spec-pr-01.pdf

[XML-Infoset]                     

   http://www.w3.org/TR/xml-infoset/

[XPATH]                            

   http://www.w3.org/TR/xpath

9.2      Non-Normative

[OGSI 1.0]                          Open Grid Services Infrastructure (OGSI) V1.0 http://forge.gridforum.org/projects/ggf-editor/document/draft-ogsi-service-1/en/1

[WS-Security]                    

   http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf

[WSDL 2.0]                        

   http://www.w3.org/TR/wsdl20/

[WS-I]                                

   http://www.ws-i.org/Profiles/BasicProfile-1.1.html

Appendix A. Acknowledgments

Special thanks to the Global Grid Forum’s Open Grid Services Infrastructure working group, which defined the OGSI v1.0 [OGSI] specification which was a large inspiration for the ideas expressed in this specification.

The following individuals were members of the committee during the development of this specification:

Mario Antonioletti (EPCC, The University of Edinburgh), Akhil Arora (Sun Microsystems), Tim Banks (IBM), Jeff Bohren (OpenNetwork), Fred Carter (AmberPoint), Martin Chapman (Oracle), Glen Daniels (Sonic Software), David De Roure (University of Southampton), Thomas Freund (IBM), John Fuller (Individual), Stephen Graham (IBM), Anish Karmarkar (Oracle), Hideharu Kato (Hitachi), David Levine (IBM), Paul Lipton (Computer Associates), Mark Little (Arjuna Technologies Limited), Lily Liu (WebMethods, Inc.), Tom Maguire (IBM), Susan Malaika (IBM), Mark Mc Keown (University of Manchester), David Martin (IBM), Samuel Meder (Argonne National Laboratory), Jeff Mischkinsky (Oracle), Roger Menday (Forschungszentrum Jlich GmbH), Bryan Murray (Hewlett-Packard), Mark Peel (Novell), Alain Regnier (Ricoh Company, Ltd.), Ian Robinson (IBM), Tom Rutt (Fujitsu), Mitsunori Satomi (Hitachi), Igor Sedukhin (Computer Associates), Hitoshi Sekine (Ricoh Company, Ltd.), Frank Siebenlist (Argonne National Laboratory), Alex Sim (Lawrence Berkeley National Laboratory), David Snelling (Fujitsu), Latha Srinivasan (Hewlett-Packard), Rich Thompson (IBM), Jem Treadwell (Hewlett-Packard), Steve Tuecke (Argonne National Laboratory), William Vambenepe (Hewlett-Packard), Katy Warr (IBM), Alan Weissberger (NEC Corporation), Pete Wenzel (SeeBeyond Technology Corporation), Kirk Wilson (Computer Associates) and Umit Yalcinalp (SAP).

In addition, the following people made contributions to this specification:

Nick Butler (IBM), Karl Czajkowski (Globus / USC/ISI), Andrew Eisenberg (IBM), Donald F Ferguson (IBM), Ian Foster (Globus / Argonne), Jeffrey Frey (IBM), Diane Jordan (IBM), Frank Leymann (IBM), Andreas Meier (IBM), Nataraj Nagaratnam (IBM), Martin Nally (IBM), John Rofrano (IBM), Ellen Stokes (IBM), Tony Storey (IBM), Jay Unger (IBM), Sanjiva Weerawarana (IBM).

Appendix B. XML Schema

The XML types and elements used in this specification are included here for convenience. The authoritative version of this schema document is available at

http://docs.oasis-open.org/wsrf/rp-2.xsd

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

<!--

 

OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director.

 

OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.

 

Copyright (C) OASIS Open (2005). All Rights Reserved.

 

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English.

 

The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns.

 

This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

 

-->

<xsd:schema

  xmlns:xsd="http://www.w3.org/2001/XMLSchema"

  xmlns:wsrf-rp="http://docs.oasis-open.org/wsrf/rp-2"

  xmlns:wsrf-bf="http://docs.oasis-open.org/wsrf/bf-2"

  elementFormDefault="qualified" attributeFormDefault="unqualified"

  targetNamespace="http://docs.oasis-open.org/wsrf/rp-2"

>

  <xsd:import

       namespace="http://docs.oasis-open.org/wsrf/bf-2"

       schemaLocation="http://docs.oasis-open.org/wsrf/bf-2.xsd"

   />

<!-- =============== Resource Property Related  =================== -->

<!-- ====== Resource Properties for QueryResourceProperties ======= -->

   <xsd:element name="QueryExpressionDialect" type="xsd:anyURI"/>

  

   <xsd:element name="QueryExpressionRPDocument">

      <xsd:complexType>

         <xsd:sequence>

            <xsd:element ref="wsrf-rp:QueryExpressionDialect"

                         minOccurs="0" maxOccurs="unbounded" />

         </xsd:sequence>

      </xsd:complexType>

   </xsd:element>

 

<!-- ======= Global Attribute Declaration for WSDL 1.1 portType==== -->

  <xsd:attribute name="ResourceProperties" type="xsd:QName" />

 

<!-- = Notification Message for ResourceProperties value change === -->

  <xsd:complexType name="ResourcePropertyValueChangeNotificationType">

    <xsd:sequence>

      <xsd:element name="OldValues" nillable="true"

                   minOccurs="0" maxOccurs="1" >

        <xsd:complexType>

          <xsd:sequence>

            <xsd:any minOccurs="1" maxOccurs="unbounded" />

          </xsd:sequence>

        </xsd:complexType>

      </xsd:element>

      <xsd:element name="NewValues" nillable="true"

                   minOccurs="1" maxOccurs="1" >

        <xsd:complexType>

          <xsd:sequence>

            <xsd:any minOccurs="1" maxOccurs="unbounded" />

          </xsd:sequence>

        </xsd:complexType>

      </xsd:element>     

    </xsd:sequence>

  </xsd:complexType>

 

  <xsd:element name="ResourcePropertyValueChangeNotification"

        type="wsrf-rp:ResourcePropertyValueChangeNotificationType" />

 

  <xsd:complexType name="QueryExpressionType" mixed="true">

    <xsd:sequence>

      <xsd:any minOccurs="0" maxOccurs="1" processContents="lax" />

    </xsd:sequence>

    <xsd:attribute name="Dialect" type="xsd:anyURI" />

  </xsd:complexType>

 

  <xsd:element name="QueryExpression" type="wsrf-rp:QueryExpressionType" />

 

<!-- ======= Message Types for GetResourcePropertyDocument  ======= -->

 

  <xsd:element name="GetResourcePropertyDocument">

    <xsd:complexType/>

  </xsd:element>

 

  <xsd:element name="GetResourcePropertyDocumentResponse">

    <xsd:complexType>

      <xsd:sequence>

        <xsd:any minOccurs="1" maxOccurs="1"/>

      </xsd:sequence>

    </xsd:complexType>

  </xsd:element>

 

<!-- ========== 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="InvalidResourcePropertyQNameFaultType">

    <xsd:complexContent>

      <xsd:extension base="wsrf-bf:BaseFaultType"/>

    </xsd:complexContent>

  </xsd:complexType>

  <xsd:element name="InvalidResourcePropertyQNameFault"

               type="wsrf-rp: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 PutResourceProperty  ============ -->

 

  <xsd:element name="PutResourcePropertyDocument">

    <xsd:complexType>

      <xsd:sequence>

        <xsd:any minOccurs="1" maxOccurs="1"/>

      </xsd:sequence>

    </xsd:complexType>

  </xsd:element>

 

  <xsd:element name="PutResourcePropertyDocumentResponse">

    <xsd:complexType>

      <xsd:sequence>

        <xsd:any minOccurs="0" maxOccurs="1"/>

      </xsd:sequence>

    </xsd:complexType>

  </xsd:element>

 

  <xsd:complexType name="ResourcePropertyChangeFailureType">

         <xsd:sequence>

         <xsd:element name="CurrentValue" minOccurs="0" maxOccurs="1">

           <xsd:complexType>

             <xsd:sequence>

               <xsd:any minOccurs="1" maxOccurs="unbounded" />

             </xsd:sequence>

           </xsd:complexType>

         </xsd:element>

         <xsd:element name="RequestedValue" minOccurs="0" maxOccurs="1">

           <xsd:complexType>

             <xsd:sequence>

               <xsd:any minOccurs="1" maxOccurs="unbounded" />

             </xsd:sequence>

           </xsd:complexType>

         </xsd:element>

     </xsd:sequence>

     <xsd:attribute name="Restored" type="xsd:boolean"/>

  </xsd:complexType>

 

  <xsd:complexType

      name="UnableToPutResourcePropertyDocumentFaultType">

    <xsd:complexContent>

      <xsd:extension base="wsrf-bf:BaseFaultType">

        <xsd:sequence>

          <xsd:element name="ResourcePropertyChangeFailure" type=

                                                      "wsrf-rp:ResourcePropertyChangeFailureType"/>

        </xsd:sequence>

      </xsd:extension>

    </xsd:complexContent>

  </xsd:complexType>

  <xsd:element name="UnableToPutResourcePropertyDocumentFault"

               type=

      "wsrf-rp:UnableToPutResourcePropertyDocumentFaultType"/>

 

<!-- ========= 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="wsrf-rp:InsertType"/>

        

  <xsd:complexType name="UpdateType">

    <xsd:sequence>

      <xsd:any processContents="lax"

               minOccurs="1" maxOccurs="unbounded" />

    </xsd:sequence>

  </xsd:complexType>

  <xsd:element name="Update" type="wsrf-rp:UpdateType"/>

        

  <xsd:complexType name="DeleteType">

    <xsd:attribute name="ResourceProperty"

                   type="xsd:QName" use="required" />

  </xsd:complexType>

  <xsd:element name="Delete" type="wsrf-rp:DeleteType"/>

       

  <xsd:element name="SetResourceProperties">

    <xsd:complexType>

      <xsd:choice minOccurs="1" maxOccurs="unbounded">

        <xsd:element ref="wsrf-rp:Insert"/>

        <xsd:element ref="wsrf-rp:Update"/>

        <xsd:element ref="wsrf-rp:Delete"/>

      </xsd:choice>

    </xsd:complexType>

  </xsd:element>

 

  <xsd:element name="SetResourcePropertiesResponse" >

    <xsd:complexType />

  </xsd:element>

 

  <xsd:complexType

          name="InvalidModificationFaultType">

    <xsd:complexContent>

      <xsd:extension base="wsrf-bf:BaseFaultType">

        <xsd:sequence>

          <xsd:element name="ResourcePropertyChangeFailure" type=

                                                      "wsrf-rp:ResourcePropertyChangeFailureType"/>

        </xsd:sequence>

      </xsd:extension>

    </xsd:complexContent>

  </xsd:complexType>

  <xsd:element name=

      "InvalidModificationFault"

               type=

      "wsrf-rp:InvalidModificationFaultType"/>

 

  <xsd:complexType name="UnableToModifyResourcePropertyFaultType">

    <xsd:complexContent>

      <xsd:extension base="wsrf-bf:BaseFaultType">

        <xsd:sequence>

          <xsd:element name="ResourcePropertyChangeFailure" type=

                                                      "wsrf-rp:ResourcePropertyChangeFailureType"/>

        </xsd:sequence>

      </xsd:extension>

    </xsd:complexContent>

  </xsd:complexType>

  <xsd:element name="UnableToModifyResourcePropertyFault"

               type="wsrf-rp:UnableToModifyResourcePropertyFaultType"/>

 

  <xsd:complexType name="SetResourcePropertyRequestFailedFaultType">

    <xsd:complexContent>

      <xsd:extension base="wsrf-bf:BaseFaultType">

        <xsd:sequence>

          <xsd:element name="ResourcePropertyChangeFailure" type=

                                                      "wsrf-rp:ResourcePropertyChangeFailureType"/>

        </xsd:sequence>

      </xsd:extension>

    </xsd:complexContent>

  </xsd:complexType>

  <xsd:element name="SetResourcePropertyRequestFailedFault"

               type=

          "wsrf-rp:SetResourcePropertyRequestFailedFaultType"/>

 

  <xsd:complexType name="InsertResourcePropertiesRequestFailedFaultType">

    <xsd:complexContent>

      <xsd:extension base="wsrf-bf:BaseFaultType">

        <xsd:sequence>

          <xsd:element name="ResourcePropertyChangeFailure" type=

                                                      "wsrf-rp:ResourcePropertyChangeFailureType"/>

        </xsd:sequence>

      </xsd:extension>

    </xsd:complexContent>

  </xsd:complexType>

  <xsd:element name="InsertResourcePropertiesRequestFailedFault"

               type=

          "wsrf-rp:InsertResourcePropertiesRequestFailedFaultType"/>

 

  <xsd:complexType name="UpdateResourcePropertiesRequestFailedFaultType">

    <xsd:complexContent>

      <xsd:extension base="wsrf-bf:BaseFaultType">

        <xsd:sequence>

          <xsd:element name="ResourcePropertyChangeFailure" type=

                                                      "wsrf-rp:ResourcePropertyChangeFailureType"/>

        </xsd:sequence>

      </xsd:extension>

    </xsd:complexContent>

  </xsd:complexType>

  <xsd:element

     name="UpdateResourcePropertiesRequestFailedFault"

     type="wsrf-rp:UpdateResourcePropertiesRequestFailedFaultType"/>

 

  <xsd:complexType name="DeleteResourcePropertiesRequestFailedFaultType">

    <xsd:complexContent>

      <xsd:extension base="wsrf-bf:BaseFaultType">

        <xsd:sequence>

          <xsd:element name="ResourcePropertyChangeFailure" type=

                                                      "wsrf-rp:ResourcePropertyChangeFailureType"/>

        </xsd:sequence>

      </xsd:extension>

    </xsd:complexContent>

  </xsd:complexType>

  <xsd:element

     name="DeleteResourcePropertiesRequestFailedFault"

     type="wsrf-rp:DeleteResourcePropertiesRequestFailedFaultType"/>

 

<!-- ======== Message Types for InsertResourceProperties ========== -->

  <xsd:element name="InsertResourceProperties">

    <xsd:complexType>

      <xsd:sequence>

        <xsd:element ref="wsrf-rp:Insert"/>

      </xsd:sequence>

    </xsd:complexType>

  </xsd:element>

 

  <xsd:element name="InsertResourcePropertiesResponse" >

    <xsd:complexType />

  </xsd:element>

     

<!-- ======== Message Types for UpdateResourceProperties ========== -->

  <xsd:element name="UpdateResourceProperties">

    <xsd:complexType>

      <xsd:sequence>

        <xsd:element ref="wsrf-rp:Update"/>

      </xsd:sequence>

    </xsd:complexType>

  </xsd:element>

 

  <xsd:element name="UpdateResourcePropertiesResponse" >

    <xsd:complexType />

  </xsd:element>

 

<!-- ======== Message Types for DeleteResourceProperties ========== -->

  <xsd:element name="DeleteResourceProperties">

    <xsd:complexType>

      <xsd:sequence>

        <xsd:element ref="wsrf-rp:Delete"/>

      </xsd:sequence>

    </xsd:complexType>

  </xsd:element>

 

  <xsd:element name="DeleteResourcePropertiesResponse" >

    <xsd:complexType />

  </xsd:element>

 

<!-- ========= Message Types for QueryResourceProperties ========== -->        

      

  <xsd:element name="QueryResourceProperties" >

    <xsd:complexType>

      <xsd:sequence>

        <xsd:element ref="wsrf-rp: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="wsrf-bf:BaseFaultType"/>

    </xsd:complexContent>

  </xsd:complexType>

  <xsd:element name="UnknownQueryExpressionDialectFault"

               type="wsrf-rp:UnknownQueryExpressionDialectFaultType"/>

 

  <xsd:complexType name="InvalidQueryExpressionFaultType">

    <xsd:complexContent>

      <xsd:extension base="wsrf-bf:BaseFaultType"/>

    </xsd:complexContent>

  </xsd:complexType>

  <xsd:element name="InvalidQueryExpressionFault"

               type="wsrf-rp:InvalidQueryExpressionFaultType"/>

 

  <xsd:complexType name="QueryEvaluationErrorFaultType">

    <xsd:complexContent>

      <xsd:extension base="wsrf-bf:BaseFaultType"/>

    </xsd:complexContent>

  </xsd:complexType>

  <xsd:element name="QueryEvaluationErrorFault"

               type="wsrf-rp:QueryEvaluationErrorFaultType"/>

 

</xsd:schema>

Appendix C. WSDL 1.1

The WSDL 1.1 for the Web service methods described in this specification is compliant with WS-I Basic Profile 1.1 [WS-I] and is included here for convenience. The authoritative version of this WSDL is available at:

http://docs.oasis-open.org/wsrf/rpw-2.wsdl

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

<!--

 

OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director.

 

OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.

 

Copyright (C) OASIS Open (2005). All Rights Reserved.

 

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English.

 

The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns.

 

This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

 

-->

 

<wsdl:definitions name="WS-ResourceProperties"

  xmlns="http://schemas.xmlsoap.org/wsdl/"

  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

  xmlns:xsd="http://www.w3.org/2001/XMLSchema"

  xmlns:wsa="http://www.w3.org/2005/08/addressing"

  xmlns:wsrf-bf="http://docs.oasis-open.org/wsrf/bf-2"

  xmlns:wsrf-rp="http://docs.oasis-open.org/wsrf/rp-2"

  xmlns:wsrf-rpw="http://docs.oasis-open.org/wsrf/rpw-2"

  xmlns:wsrf-rw="http://docs.oasis-open.org/wsrf/rw-2"

  targetNamespace="http://docs.oasis-open.org/wsrf/rpw-2"

>

 

<!-- ========================== Imports  ========================== -->

 

 <wsdl:import

   namespace="http://docs.oasis-open.org/wsrf/rw-2"

   location="http://docs.oasis-open.org/wsrf/rw-2.wsdl" />

 

<!-- ===================== Types Definitions ====================== -->

   <wsdl:types>

     <xsd:schema>

       <xsd:import

         namespace="http://docs.oasis-open.org/wsrf/rp-2"

         schemaLocation="http://docs.oasis-open.org/wsrf/rp-2.xsd" />

     </xsd:schema>

   </wsdl:types>

  

<!-- ================== GetResourcePropertyDocument ===============

     GetResourcePropertyDocument()

     returns: any

-->

   <wsdl:message name="GetResourcePropertyDocumentRequest">

      <wsdl:part name="GetResourcePropertyDocumentRequest"

            element="wsrf-rp:GetResourcePropertyDocument"/>

   </wsdl:message>

 

   <wsdl:message name="GetResourcePropertyDocumentResponse">

      <wsdl:part name="GetResourcePropertyDocumentResponse"

            element="wsrf-rp:GetResourcePropertyDocumentResponse"/>

   </wsdl:message>

 

<!-- ===================== GetResourceProperty ====================

  GetResourceProperty(QName)

  returns: any

-->

  <wsdl:message name="GetResourcePropertyRequest">

    <wsdl:part name="GetResourcePropertyRequest"

               element="wsrf-rp:GetResourceProperty" />

  </wsdl:message>

 

  <wsdl:message name="GetResourcePropertyResponse">

    <wsdl:part name="GetResourcePropertyResponse"

               element="wsrf-rp:GetResourcePropertyResponse" />

  </wsdl:message>

 

  <wsdl:message name="InvalidResourcePropertyQNameFault">

     <part name="InvalidResourcePropertyQNameFault"

           element="wsrf-rp:InvalidResourcePropertyQNameFault" />

  </wsdl:message>

 

<!-- ==============GetMultipleResourceProperties ==================

  GetMultipleResourceProperties(list of QName)

  returns: sequence of any

-->

  <wsdl:message name="GetMultipleResourcePropertiesRequest">

    <wsdl:part name="GetMultipleResourcePropertiesRequest"

               element="wsrf-rp:GetMultipleResourceProperties" />

  </wsdl:message>

 

  <wsdl:message name="GetMultipleResourcePropertiesResponse">

    <wsdl:part name="GetMultipleResourcePropertiesResponse"

               element="wsrf-rp:GetMultipleResourcePropertiesResponse" />

  </wsdl:message>

<!-- ================== PutResourcePropertyDocument ===============

     PutResourcePropertyDocument(any)

     returns: any?

-->

   <wsdl:message name="PutResourcePropertyDocumentRequest">

      <wsdl:part name="PutResourcePropertyDocumentRequest"

            element="wsrf-rp:PutResourcePropertyDocument"/>

   </wsdl:message>

 

   <wsdl:message name="PutResourcePropertyDocumentResponse">

      <wsdl:part name="PutResourcePropertyDocumentResponse"

            element="wsrf-rp:PutResourcePropertyDocumentResponse"/>

   </wsdl:message>

 

  <wsdl:message name="UnableToPutResourcePropertyDocumentFault">

     <part name="UnableToPutResourcePropertyDocumentFault"

           element="wsrf-rp:UnableToPutResourcePropertyDocumentFault" />

  </wsdl:message>

 

<!-- ================= SetResourceProperties ======================

  SetResourceProperties(

  { insert (any)* |

    update (any)* |

    delete@QName } +

  )

  returns: empty

-->

  <wsdl:message name="SetResourcePropertiesRequest">

    <wsdl:part name="SetResourcePropertiesRequest"

               element="wsrf-rp:SetResourceProperties" />

  </wsdl:message>

 

  <wsdl:message name="SetResourcePropertiesResponse">

    <wsdl:part name="SetResourcePropertiesResponse"

               element="wsrf-rp:SetResourcePropertiesResponse" />

  </wsdl:message>

 

  <wsdl:message name="InvalidModificationFault">

     <part name="InvalidModificationFault"

           element="wsrf-rp:InvalidModificationFault" />

  </wsdl:message>

 

  <wsdl:message name="UnableToModifyResourcePropertyFault">

     <part name="UnableToModifyResourcePropertyFault"

           element="wsrf-rp:UnableToModifyResourcePropertyFault" />

  </wsdl:message>

 

  <wsdl:message name="SetResourcePropertyRequestFailedFault">

     <part name="SetResourcePropertyRequestFailedFault"

           element="wsrf-rp:SetResourcePropertyRequestFailedFault" />

  </wsdl:message>

 

<!-- =============== InsertResourceProperties =====================

  InsertResourceProperties((any)* )

  returns: empty

-->

  <wsdl:message name="InsertResourcePropertiesRequest">

    <wsdl:part name="InsertResourcePropertiesRequest"

               element="wsrf-rp:InsertResourceProperties" />

  </wsdl:message>

 

  <wsdl:message name="InsertResourcePropertiesResponse">

    <wsdl:part name="InsertResourcePropertiesResponse"

               element="wsrf-rp:InsertResourcePropertiesResponse" />

  </wsdl:message>

 

  <wsdl:message name="InsertResourcePropertiesRequestFailedFault">

     <part name="InsertResourcePropertiesRequestFailedFault"

           element="wsrf-rp:InsertResourcePropertiesRequestFailedFault" />

  </wsdl:message>

 

<!-- =============== UpdateResourceProperties =====================

  UpdateResourceProperties((any)* )

  returns: empty

-->

  <wsdl:message name="UpdateResourcePropertiesRequest">

    <wsdl:part name="UpdateResourcePropertiesRequest"

               element="wsrf-rp:UpdateResourceProperties" />

  </wsdl:message>

 

  <wsdl:message name="UpdateResourcePropertiesResponse">

    <wsdl:part name="UpdateResourcePropertiesResponse"

               element="wsrf-rp:UpdateResourcePropertiesResponse" />

  </wsdl:message>

 

  <wsdl:message name="UpdateResourcePropertiesRequestFailedFault">

     <part name="UpdateResourcePropertiesRequestFailedFault"

           element="wsrf-rp:UpdateResourcePropertiesRequestFailedFault" />

  </wsdl:message>

 

<!-- =============== DeleteResourceProperties =====================

  DeleteResourceProperties( ResourceProperty )

  returns: empty

-->

  <wsdl:message name="DeleteResourcePropertiesRequest">

    <wsdl:part name="DeleteResourcePropertiesRequest"

               element="wsrf-rp:DeleteResourceProperties" />

  </wsdl:message>

 

  <wsdl:message name="DeleteResourcePropertiesResponse">

    <wsdl:part name="DeleteResourcePropertiesResponse"

               element="wsrf-rp:DeleteResourcePropertiesResponse" />

  </wsdl:message>

 

  <wsdl:message name="DeleteResourcePropertiesRequestFailedFault">

     <part name="DeleteResourcePropertiesRequestFailedFault"

           element="wsrf-rp:DeleteResourcePropertiesRequestFailedFault" />

  </wsdl:message>

 

<!-- ================ QueryResourceProperties =====================

  QueryResourceProperties(QueryExpression)

  returns: any

-->

  <wsdl:message name="QueryResourcePropertiesRequest">

    <wsdl:part name="QueryResourcePropertiesRequest"

               element="wsrf-rp:QueryResourceProperties" />

  </wsdl:message>

 

  <wsdl:message name="QueryResourcePropertiesResponse">

    <wsdl:part name="QueryResourcePropertiesResponse"

               element="wsrf-rp:QueryResourcePropertiesResponse" />

  </wsdl:message>

 

  <wsdl:message name="UnknownQueryExpressionDialectFault">

     <part name="UnknownQueryExpressionDialectFault"

           element="wsrf-rp:UnknownQueryExpressionDialectFault" />

  </wsdl:message>

 

  <wsdl:message name="InvalidQueryExpressionFault">

     <part name="InvalidQueryExpressionFault"

           element="wsrf-rp:InvalidQueryExpressionFault" />

  </wsdl:message>

 

  <wsdl:message name="QueryEvaluationErrorFault">

     <part name="QueryEvaluationErrorFault"

           element="wsrf-rp:QueryEvaluationErrorFault" />

  </wsdl:message>

 

<!-- =================== PortType Definitions ===================== -->

  <wsdl:portType name="GetResourcePropertyDocument">

    <wsdl:operation name="GetResourcePropertyDocument">

      <wsdl:input name="GetResourcePropertyDocumentRequest"

               message="wsrf-rpw:GetResourcePropertyDocumentRequest"/>

      <wsdl:output name="GetResourcePropertyDocumentResponse"

               message="wsrf-rpw:GetResourcePropertyDocumentResponse"/>

      <wsdl:fault name="ResourceUnknownFault"

              message="wsrf-rw:ResourceUnknownFault"/>

      <wsdl:fault name="ResourceUnavailableFault"

              message="wsrf-rw:ResourceUnavailableFault"/>

    </wsdl:operation>

  </wsdl:portType>

 

  <wsdl:portType name="GetResourceProperty"> 

    <wsdl:operation name="GetResourceProperty">

      <wsdl:input  name="GetResourcePropertyRequest"

                   message="wsrf-rpw:GetResourcePropertyRequest" />

      <wsdl:output name="GetResourcePropertyResponse"

                   message="wsrf-rpw:GetResourcePropertyResponse" />

      <wsdl:fault name="ResourceUnknownFault"

              message="wsrf-rw:ResourceUnknownFault"/>

      <wsdl:fault name="ResourceUnavailableFault"

              message="wsrf-rw:ResourceUnavailableFault"/>

      <wsdl:fault  name="InvalidResourcePropertyQNameFault"

                   message="wsrf-rpw:InvalidResourcePropertyQNameFault" />    

    </wsdl:operation>

  </wsdl:portType>

 

  <wsdl:portType name="GetMultipleResourceProperties">

    <wsdl:operation name="GetMultipleResourceProperties">

      <wsdl:input  name="GetMultipleResourcePropertiesRequest"

                   message="wsrf-rpw:GetMultipleResourcePropertiesRequest" />

      <wsdl:output name="GetMultipleResourcePropertiesResponse"

                   message="wsrf-rpw:GetMultipleResourcePropertiesResponse" />

      <wsdl:fault name="ResourceUnknownFault"

              message="wsrf-rw:ResourceUnknownFault"/>

      <wsdl:fault name="ResourceUnavailableFault"

              message="wsrf-rw:ResourceUnavailableFault"/>

      <wsdl:fault  name="InvalidResourcePropertyQNameFault"

                   message="wsrf-rpw:InvalidResourcePropertyQNameFault" />    

    </wsdl:operation>

  </wsdl:portType>

 

  <wsdl:portType name="PutResourcePropertyDocument"> 

    <wsdl:operation name="PutResourcePropertyDocument">

      <wsdl:input  name="PutResourcePropertyDocumentRequest"

                   message="wsrf-rpw:PutResourcePropertyDocumentRequest" />

      <wsdl:output name="PutResourcePropertyDocumentResponse"

                   message="wsrf-rpw:PutResourcePropertyDocumentResponse" />

      <wsdl:fault  name="ResourceUnknownFault"

                   message="wsrf-rw:ResourceUnknownFault"/>

      <wsdl:fault name="ResourceUnavailableFault"

              message="wsrf-rw:ResourceUnavailableFault"/>

      <wsdl:fault  name="UnableToPutResourcePropertyDocumentFault"

                   message="wsrf-rpw:UnableToPutResourcePropertyDocumentFault" />    

    </wsdl:operation>

  </wsdl:portType>

 

  <wsdl:portType name="SetResourceProperties">

    <wsdl:operation name="SetResourceProperties">

      <wsdl:input  name="SetResourcePropertiesRequest"

                   message="wsrf-rpw:SetResourcePropertiesRequest" />

      <wsdl:output name="SetResourcePropertiesResponse"

                   message="wsrf-rpw:SetResourcePropertiesResponse" />

      <wsdl:fault name="ResourceUnknownFault"

              message="wsrf-rw:ResourceUnknownFault"/>

      <wsdl:fault name="ResourceUnavailableFault"

              message="wsrf-rw:ResourceUnavailableFault"/>

      <wsdl:fault  name="InvalidModificationFault"

               message="wsrf-rpw:InvalidModificationFault" />    

      <wsdl:fault  name="UnableToModifyResourcePropertyFault"

                   message="wsrf-rpw:UnableToModifyResourcePropertyFault" />

      <wsdl:fault  name="InvalidResourcePropertyQNameFault"

                   message="wsrf-rpw:InvalidResourcePropertyQNameFault" />    

      <wsdl:fault  name="SetResourcePropertyRequestFailedFault"

                   message="wsrf-rpw:SetResourcePropertyRequestFailedFault" />

    </wsdl:operation>

  </wsdl:portType>

 

  <wsdl:portType name="InsertResourceProperties">

    <wsdl:operation name="InsertResourceProperties">

      <wsdl:input  name="InsertResourcePropertiesRequest"

                   message="wsrf-rpw:InsertResourcePropertiesRequest" />

      <wsdl:output name="InsertResourcePropertiesResponse"

                   message="wsrf-rpw:InsertResourcePropertiesResponse" />

      <wsdl:fault name="ResourceUnknownFault"

              message="wsrf-rw:ResourceUnknownFault"/>

      <wsdl:fault name="ResourceUnavailableFault"

              message="wsrf-rw:ResourceUnavailableFault"/>

      <wsdl:fault  name="InvalidModificationFault"

               message="wsrf-rpw:InvalidModificationFault" />    

      <wsdl:fault  name="UnableToModifyResourcePropertyFault"

                   message="wsrf-rpw:UnableToModifyResourcePropertyFault" />

      <wsdl:fault  name="InvalidResourcePropertyQNameFault"

                   message="wsrf-rpw:InvalidResourcePropertyQNameFault" />    

      <wsdl:fault  name="InsertResourcePropertiesRequestFailedFault"

                   message="wsrf-rpw:InsertResourcePropertiesRequestFailedFault" />

    </wsdl:operation>

  </wsdl:portType> 

 

  <wsdl:portType name="UpdateResourceProperties">

    <wsdl:operation name="UpdateResourceProperties">

      <wsdl:input  name="UpdateResourcePropertiesRequest"

                   message="wsrf-rpw:UpdateResourcePropertiesRequest" />

      <wsdl:output name="UpdateResourcePropertiesResponse"

                   message="wsrf-rpw:UpdateResourcePropertiesResponse" />

      <wsdl:fault name="ResourceUnknownFault"

              message="wsrf-rw:ResourceUnknownFault"/>

      <wsdl:fault name="ResourceUnavailableFault"

              message="wsrf-rw:ResourceUnavailableFault"/>

      <wsdl:fault  name="InvalidModificationFault"

               message="wsrf-rpw:InvalidModificationFault" />    

      <wsdl:fault  name="UnableToModifyResourcePropertyFault"

                   message="wsrf-rpw:UnableToModifyResourcePropertyFault" />

      <wsdl:fault  name="InvalidResourcePropertyQNameFault"

                   message="wsrf-rpw:InvalidResourcePropertyQNameFault" />    

      <wsdl:fault  name="UpdateResourcePropertiesRequestFailedFault"

                   message="wsrf-rpw:UpdateResourcePropertiesRequestFailedFault" />

    </wsdl:operation>

  </wsdl:portType> 

 

  <wsdl:portType name="DeleteResourceProperties">

    <wsdl:operation name="DeleteResourceProperties">

      <wsdl:input  name="DeleteResourcePropertiesRequest"

                   message="wsrf-rpw:DeleteResourcePropertiesRequest" />

      <wsdl:output name="DeleteResourcePropertiesResponse"

                   message="wsrf-rpw:DeleteResourcePropertiesResponse" />

      <wsdl:fault name="ResourceUnknownFault"

              message="wsrf-rw:ResourceUnknownFault"/>

      <wsdl:fault name="ResourceUnavailableFault"

              message="wsrf-rw:ResourceUnavailableFault"/>

      <wsdl:fault  name="InvalidModificationFault"

               message="wsrf-rpw:InvalidModificationFault" />    

      <wsdl:fault  name="UnableToModifyResourcePropertyFault"

                   message="wsrf-rpw:UnableToModifyResourcePropertyFault" />

      <wsdl:fault  name="InvalidResourcePropertyQNameFault"

                   message="wsrf-rpw:InvalidResourcePropertyQNameFault" />    

      <wsdl:fault  name="DeleteResourcePropertiesRequestFailedFault"

                   message="wsrf-rpw:DeleteResourcePropertiesRequestFailedFault" />

    </wsdl:operation>

  </wsdl:portType> 

 

<wsdl:portType name="QueryResourceProperties"

                          wsrf-rp:ResourceProperties="wsrf-rp:QueryExpressionRPDocument">

    <wsdl:operation name="QueryResourceProperties">

      <wsdl:input  name="QueryResourcePropertiesRequest"

                   message="wsrf-rpw:QueryResourcePropertiesRequest" />

      <wsdl:output name="QueryResourcePropertiesResponse"

                   message="wsrf-rpw:QueryResourcePropertiesResponse" />

      <wsdl:fault name="ResourceUnknownFault"

              message="wsrf-rw:ResourceUnknownFault"/>

      <wsdl:fault name="ResourceUnavailableFault"

              message="wsrf-rw:ResourceUnavailableFault"/>

      <wsdl:fault  name="InvalidResourcePropertyQNameFault"

                   message="wsrf-rpw:InvalidResourcePropertyQNameFault" />    

      <wsdl:fault  name="UnknownQueryExpressionDialectFault"

                   message="wsrf-rpw:UnknownQueryExpressionDialectFault" />

      <wsdl:fault  name="InvalidQueryExpressionFault"

                   message="wsrf-rpw:InvalidQueryExpressionFault" />

      <wsdl:fault  name="QueryEvaluationErrorFault"

                   message="wsrf-rpw:QueryEvaluationErrorFault" />

    </wsdl:operation>

 

  </wsdl:portType>

 

</wsdl:definitions>

Appendix D. Revision History

Rev

Date

By Whom

What

wd-01

2004-05-18

Steve Graham

Initial version created from submission by contributing companies. Minor modifications made to reflect OASIS formatting and the following issues: WSRF2, WSRF3, WSRF14, WSRF33.

wd-02

2004-05-31

Steve Graham, Jem Treadwell

Mods to draft 01, including hyphenation, clarification of acknowledgements section

wd-03

2004-06-04

Steve Graham

Reformat rogue Veranda text with Arial.

wd-04

2004-06-07

Steve Graham

Base faults comment on faults (align with ResourceLifetime), update date URis to 2004/06, update URLs in references to point to .pdfs, update Acknowledgements

wd-05

2004-07-19

Jem Treadwell

Changed [State Paper] & [WS-Notification] references to public URLs.

wd-06 (wd-05.b)

2004-09-17

Steve Graham

WSRF15, WSRF16, WSRF21

wd-05.c

2004-11-22

Jem Treadwell

Steve Graham

Confirm WSRF15. WSRF16, WSRF21, fix up some small typos (Jem), verify typos fixes are correct and reversion to 05.c (sgg)

wd-05.d

2004-11-22

Steve Graham

Incorporate Chairman’s editorial modifications (from Ian Robinson) on Title page, namespace URIs and References section.

Incorporate changes due to adoption of WS-Resource specification.

Addresses:WSRF4, WSRF24, WSRF27, WSRF30, WSRF43, WSRF49, WSRF53, WSRF56

wd-05.e

2004-11-26

Ian Robinson

Handful of typos corrected.

wd-05

2004-11-30

Steve Graham

Final typos accepted, PDF generated.

wd-06.a

2005-02-18

Steve Graham

WSRF25, WSRF51, WSRF55, WSRF62, WSRF63, WSRF68, WSRF72, WSRF79, WSRF81, WSRF83, WSRF86, WSRF93, WSRF95,WSRF96

wd-06.b

2005-02-25

Jem Treadwell

Few minor typos etc. corrected.

wd-06.c

2005-03-07

Jem Treadwell

Updated wsa namespace reference.

wd-06.d

2005-03-24

Ian Robinson

Added ResourcePropertyChangeFailure type to schema

wd-07.a

2005-05-16

Steve Graham

91, 92 (no changes required), 97, 98, 99, 101, 102, 103

wd-07.c

2005-05-17

Steve Graham

100, 109

wd-07.d

2005-05-17

Steve Graham

113

wd-07.e

2005-05-18

Steve Graham

Updates to 114, per Ian Robinson and F2F discussion.

wd-07.f

2005-05-18

Steve Graham

WSRF 91,97,99,100,101,102, 103

wd-07.g

2005-06-10

Steve Graham

Minor typos as reported by Hideharu Kato, a few additional related typos, update references to WS-Notification, update Acknowledgements.

pr-01

2005-06-10

Steve Graham

Change status to PR

wd-08

2005-09-06

Ian Robinson

127. TopicSpace->Topic Namespace

wd-09

2005-09-15

Steve Graham

Remove unused references and use hyperlinks for references, namespace URIs from -1 to -2, namespace locations now include .xsd and .wsdl

WSRF 141, 152, 125, 126 (no action due to WSRF 140), 132, 133, 134, 135, 136, 138, 140, 143, 144, 146, 147

pr-02.a

2005-11-18

Jem Treadwell

158: Added wsnt prefix and fixed a few nits.

pr-02.b

2005-11-28

Jem Treadwell

Fixed minor typos.

pr-02.c

2006-01-11

Ian Robinson

Fixed wsnt namespace reference

Appendix E. Notices

OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director.

 

OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director.

 

Copyright (C) OASIS Open (2005). All Rights Reserved.

 

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English.

 

The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns.

 

This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.