![](media/image1.png){width="2.957638888888889in"
height="0.7708333333333334in"}

Web Services Resource Properties 1.2\
(WS-ResourceProperties)

Committee Draft 01, 31 May 2005

Document identifier: wsrf-ws_resource_properties-1.2-spec-cd-01

Location:

http://docs.oasis-open.org/wsrf/wsrf-ws_resource_properties-1.2-spec-cd-01.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\]. This relationship is described as the WS-Resource
Access Pattern \[WS-Resource\]. In the WS-Resource Access Pattern,
messages to a Web service may include a component that identifies a
stateful resource to be used in the execution of the message. We refer
to the composition of a stateful resource and a Web service as a
WS-Resource \[WS-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 published by this TC as a \"committee draft\". It is
> possible that it may change during this process, but should
> nonetheless provide a stable reference for discussion and early
> adopters\' implementations. 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](#introduction)

[1.1 Goals and Requirements 5](#goals-and-requirements)

[1.1.1 Requirements 5](#requirements)

[1.1.2 Non-Goals 6](#non-goals)

[1.2 Notational Conventions 6](#notational-conventions)

[1.3 Namespaces 7](#namespaces)

[1.4 Fault Definitions 7](#fault-definitions)

[2 Terminology and Concepts 8](#terminology-and-concepts)

[3 Example 9](#example)

[4 Declaring Resource Properties 11](#declaring-resource-properties)

[4.1 Resource Properties Document 11](#resource-properties-document)

[4.2 Resource Properties Document Type
11](#resource-properties-document-type)

[4.3 Declaring the Resource Properties Document Type in WSDL
12](#declaring-the-resource-properties-document-type-in-wsdl)

[5 Operations on Resource Properties
13](#operations-on-resource-properties)

[5.1 GetResourcePropertyDocument 13](#getresourcepropertydocument)

[5.1.1 Example SOAP Encoding of the GetResponsePropertyDocument Message
Exchange
14](#example-soap-encoding-of-the-getresponsepropertydocument-message-exchange)

[5.2 GetResourceProperty 15](#getresourceproperty)

[5.2.1 Example SOAP Encoding of the GetResourceProperty Message Exchange
16](#example-soap-encoding-of-the-getresourceproperty-message-exchange)

[5.3 GetMultipleResourceProperties 17](#getmultipleresourceproperties)

[5.3.1 Example SOAP Encoding of the GetMultipleResourceProperties
Message Exchange
19](#example-soap-encoding-of-the-getmultipleresourceproperties-message-exchange)

[5.4 QueryResourceProperties 20](#queryresourceproperties)

[5.4.1 QueryExpressionDialect Resource Property
22](#queryexpressiondialect-resource-property)

[5.4.2 Example SOAP Encoding of the QueryResourceProperties Message
Exchange
22](#example-soap-encoding-of-the-queryresourceproperties-message-exchange)

[5.5 PutResourcePropertyDocument 23](#putresourcepropertydocument)

[5.5.1 Example SOAP Encoding of the PutResponsePropertyDocument Message
Exchange
25](#example-soap-encoding-of-the-putresponsepropertydocument-message-exchange)

[5.6 SetResourceProperties 26](#setresourceproperties)

[5.6.1 Example SOAP Encoding of the SetResourceProperties Message
Exchange
29](#example-soap-encoding-of-the-setresourceproperties-message-exchange)

[5.7 InsertResourceProperties 30](#insertresourceproperties)

[5.7.1 Example SOAP Encoding of the InsertResourceProperties Message
Exchange
32](#example-soap-encoding-of-the-insertresourceproperties-message-exchange)

[5.8 UpdateResourceProperties 33](#updateresourceproperties)

[5.8.1 Example SOAP Encoding of the UpdateResourceProperties Message
Exchange
35](#example-soap-encoding-of-the-updateresourceproperties-message-exchange)

[5.9 DeleteResourceProperties 36](#deleteresourceproperties)

[5.9.1 Example SOAP Encoding of the DeleteResourceProperties Message
Exchange
37](#example-soap-encoding-of-the-deleteresourceproperties-message-exchange)

[6 Subscription 39](#subscription)

[6.1 Individual Resource Property Value Changes
39](#individual-resource-property-value-changes)

[6.2 Value Changes on Any Resource Property
41](#value-changes-on-any-resource-property)

[7 ACID Properties of Operations on WS-Resources
42](#acid-properties-of-operations-on-ws-resources)

[8 Security Considerations 43](#security-considerations)

[8.1 Securing the message exchanges 43](#securing-the-message-exchanges)

[8.2 Securing Resource Properties 43](#securing-resource-properties)

[9 References 44](#references)

[9.1 Normative 44](#normative)

[9.2 Non-Normative 44](#non-normative)

[Appendix A. Acknowledgments 45](#acknowledgments)

[Appendix B. XML Schema 46](#xml-schema)

[Appendix C. WSDL 1.1 55](#wsdl-1.1)

[Appendix D. Revision History 64](#revision-history)

[Appendix E. Notices 66](#notices)

# Introduction

The relationship between Web services and stateful resources is defined
in \[WS-Resource\]. This relationship is described as the *WS-Resource
Access Pattern*. In the WS-Resource Access Pattern, messages to a Web
service include a component that identifies a stateful resource to be
used in the execution of the message exchange. We refer to the
composition of a stateful resource and a Web service as a WS-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 WS-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, including 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\].

## 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.

### 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.

### 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.

## 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
\[RFC 2119\].

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:

-   *\`?\'* denotes optionality (i.e. zero or one occurrences),

-   *\`\*\'* denotes zero or more occurrences,

-   *\`+\'* denotes one or more occurrences,

-   *\`\[\'* and *\`\]\'* are used to form groups,

-   *\`\|\'* represents choice.

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.

## Namespaces

The following namespaces are used in this document:

  ----------- ------------------------------------------------------------------------------------------------------
  Prefix      Namespace

  s11         [[http://schemas.xmlsoap.org/soap/envelope/]{.underline}](http://schemas.xmlsoap.org/soap/envelope/)

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

  wsa         http://www.w3.org/2005/03/addressing

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

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

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

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

## 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:

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

# 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:

-   A resource property is a piece of information defined as part of the
    state model of a WS-Resource.

-   A resource property may reflect a part of the resource's state,
    meta-data, manageability information, etc.

Resource Properties Document:

-   The XML document representing a logical composition of resource
    property elements. The resource properties document defines a
    particular view or projection of the state data implemented by the
    WS-Resource.

-   The type (e.g. the XML Schema definition of the root element) of a
    resource properties document is associated with the WSDL portType
    defining the Web service interface. This association is the basis of
    the WS-Resource definition. Each instance of a particular
    WS-Resource type MUST implement a logical resource properties
    document of the type declared in the WSDL portType.

Resource Property Element:

-   The XML representation of a resource property.

-   A resource property element must appear as the immediate child of
    the root element of a resource properties document.

-   A resource property element must be an XML global element definition
    (GED), and is uniquely identified by QName.

Resource Property Value:

-   The value(s) associated with a resource property.

# 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 two
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\>

...

# Declaring Resource Properties

## 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. 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 above in
Section 3, it would be legal for an interface designer to introduce a
"getNumberOfBlocks" 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.

## Resource Properties Document Type

A *resource properties document* MUST be defined using the following
rules:

1.  The resource properties document MUST be a global element
    declaration (GED) in some XML namespace. This GED defines the type
    of the root element of a resource properties document and hence the
    type of the resource properties document itself.

2.  The resource properties document MUST be uniquely identified by a
    QName.

3.  The complexType defining the resource properties document MUST
    define element children only.

4.  The complexType defining the resource properties document MUST
    define a collection of zero or more child elements, called *resource
    property elements*. Each child element MUST be a GED.

5.  The complexType defining the resource properties document MAY allow
    open element content (xsd:any).

## 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

::: Definition
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.

# 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.

## 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 GetResourcePropertyDocument request message MUST follow the
WS-Resource Access Pattern. The wsa:Action MUST contain the URI

> http://docs.oasis-open.org/wsrf/rpw-1/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-1/GetResourcePropertyDocument/GetResourcePropertyDocumentResponse.

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

/wsrf-rp:GetResourcePropertyDocumentResponse/{any}

::: Definition
An XML element that MUST correspond to the element declared in the value
of the ResourceProperties attribute of the portType defining the
GetResourcePropertyDocument operation. The contents of the element
comprise all the resource property values contained in the WS-Resource's
resource properties document.
:::

If the WS-Resource does not respond to the GetResourcePropertyDocument
request message with the GetResourcePropertyDocumentResponse message,
then it MUST send a fault. This specification defines the following
faults associated with failure to process the
GetResourcePropertyDocument request message:

ResourceUnknownFault

-   The resource identified in the message (which follows the
    WS-Resource Access Pattern) is not known to the Web service. This
    fault is specified by the WS-Resource \[WS-Resource\] specification.

### Example SOAP Encoding of the GetResponsePropertyDocument Message Exchange

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

\<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\>

\</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-1/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-1/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\>

\</GenericDiskDriveProperties\>

\</wsrf-rp:GetResourcePropertyDocumentResponse\>

\</s11:Body\>

\</s11:Envelope\>

## 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 GetResourceProperty request message MUST follow the WS-Resource
Access Pattern. The wsa:Action MUST contain the URI

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

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

/wsrf-rp:GetResourceProperty/QName

::: Definition
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-1/GetResourceProperty/GetResourcePropertyResponse](http://docs.oasis-open.org/wsrf/2004/11/wsrf-WS-ResourceProperties-1.2-draft-05.wsdl/GetResourceProperty/GetResourcePropertyResponse).

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

/wsrf-rp:GetResourcePropertyResponse/{any}

::: Definition
The resource property value, as an XML element, 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 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::

ResourceUnknownFault

-   The resource identified in the message (which follows the
    WS-Resource Access Pattern) is not known to the Web service. This
    fault is specified by the WS-Resource \[WS-Resource\] specification.

InvalidResourcePropertyQName

-   The QName in the request message did not correspond to a resource
    property element of the WS-Resource referred to in the request
    message.

### Example SOAP Encoding of the GetResourceProperty Message Exchange

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

\<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\>

\</GenericDiskDriveProperties\>

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-1/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-1/GetResourceProperty/GetResourcePropertyResponse](http://docs.oasis-open.org/wsrf/2004/11/wsrf-WS-ResourceProperties-1.2-draft-05.wsdl/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\>

## 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 GetMultipleResourceProperties request message MUST follow the
WS-Resource Access Pattern. The wsa:Action MUST contain the URI

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

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

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

::: Definition
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-1/GetMultipleResourceProperties/GetMultipleResourcePropertiesRe](http://docs.oasis-open.org/wsrf/2004/11/wsrf-WS-ResourceProperties-1.2-draft-05.wsdl/GetMultipleResourceProperties/GetMultipleResourcePropertiesRequest)sponse.

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

/wsrf-rp:GetMultipleResourcePropertiesResponse/{any}

::: Definition
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.
:::

::: Definition
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 a fault message.
:::

::: Definition
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:

ResourceUnknownFault

-   The resource identified in the message (which follows the
    WS-Resource Access Pattern) is not known to the Web service. This
    fault is specified by the WS-Resource \[WS-Resource\] specification.

InvalidResourcePropertyQName

-   One or more of the QNames in the request message did not correspond
    to a resource property element of the WS-Resource referred to in the
    request message.

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.

### Example SOAP Encoding of the GetMultipleResourceProperties Message Exchange

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

\<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\>

\</GenericDiskDriveProperties\>

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-1/GetMultipleResourceProperties/GetMultipleResourcePropertiesRequest](http://docs.oasis-open.org/wsrf/2004/11/wsrf-WS-ResourceProperties-1.2-draft-05.wsdl/GetMultipleResourceProperties/GetMultipleResourcePropertiesResponse)

\</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-1/GetMultipleResourceProperties/GetMultipleResourcePropertiesResponse](http://docs.oasis-open.org/wsrf/2004/11/wsrf-WS-ResourceProperties-1.2-draft-05.wsdl/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\>

## 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="URI"\>

xsd:any

\</wsrf-rp:QueryExpression\>

\</wsrf-rp:QueryResourceProperties\>

The QueryResourceProperties request message MUST follow the WS-Resource
Access Pattern. The wsa:Action MUST contain the URI

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

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

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

::: Definition
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

::: Definition
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 are two well known
dialects identified by this specification, corresponding to two versions
of the 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.
>
> http://www.w3.org/TR/2003/WD-xpath20-20031112
>
> This URI identifies the Xpath 2.0 (working draft) language. The
> contents of the QueryExpression MUST be a string containing a valid
> XPath 2.0 expression. Note: an additional URI will be added to
> represent the W3C Recommendation form of the XPath 2.0 language.

::: Definition
For XPath dialects, the namespace URI prefixes for the in-scope
namespace declarations of the QueryResourceProperties element may be
used in the XPath expression. The actual namespace declaration may be on
any of the ancestors of the QueryResourceProperty element.
:::

::: Definition
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.
:::

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

::: Definition
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-1/QueryResourceProperties/QueryResourcePropertiesResponse](http://docs.oasis-open.org/wsrf/2004/11/wsrf-WS-ResourceProperties-1.2-draft-05.wsdl/QueryResourceProperties/QueryResourcePropertiesResponse).

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

/wsrf-rp:QueryResourcePropertiesResponse/{any}

::: Definition
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::

ResourceUnknownFault

-   The resource identified in the message (which follows the
    WS-Resource Access Pattern) is not known to the Web service. This
    fault is specified by the WS-Resource \[WS-Resource\] specification.

UnknownQueryExpressionDialect

-   The given QueryExpression has a dialect that is unknown to the Web
    service.

InvalidQueryExpression

-   The given Query Expression is not valid within the QueryExpression
    language identified by the dialect attribute.

QueryEvaluationError

-   The Query Expression failed during evaluation.

### QueryExpressionDialect Resource Property

When a portType includes the definition of the QueryResourceProperties
operation, it MUST also include a reference to the
wsrf-rp:QueryExpressionDialect Resource Property. 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.

### Example SOAP Encoding of the QueryResourceProperties Message Exchange

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

\<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\>

\</GenericDiskDriveProperties\>

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-1/QueryResourceProperties/QueryResourcePropertiesRequest](http://docs.oasis-open.org/wsrf/2004/11/wsrf-WS-ResourceProperties-1.2-draft-05.wsdl/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
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-1/QueryResourceProperties/QueryResourcePropertiesResponse](http://docs.oasis-open.org/wsrf/2004/11/wsrf-WS-ResourceProperties-1.2-draft-05.wsdl/QueryResourceProperties/QueryResourcePropertiesRequest)

\</wsa:Action\>

\</s11:Header\>

\<s11:Body\>

\<wsrf-rp:QueryResourcePropertiesResponse\>

true

\</wsrf-rp:QueryResourcePropertiesResponse\>

\</s11:Body\>

\</s11:Envelope\>

## PutResourcePropertyDocument

The PutResourcePropertyDocument message exchange 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 PutResourcePropertyDocument request message MUST follow the
WS-Resource Access Pattern. The wsa:Action MUST contain the URI

> [http://docs.oasis-open.org/wsrf/rpw-1/PutResourcePropertyDocument/PutResourcePropertyDocumentRequest](http://docs.oasis-open.org/wsrf/2005/03/wsrf-WS-ResourceProperties-1.2-draft-06.wsdl/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-1/PutResourcePropertyDocument/PutResourcePropertyDocumentResponse.

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

/wsrf-rp:PutResourcePropertyDocumentResponse/{any}

::: Definition
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.
:::

::: Definition
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 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:

ResourceUnknownFault:

-   The resource identified in the message (which follows the
    WS-Resource Access Pattern) is not known to the Web service. This
    fault is specified by the WS-Resource \[WS-Resource\] specification.

UnableToPutResourcePropertyDocument:

-   The WS-Resource was unable to complete the processing of the
    PutResourcePropertyDocument for some reason.

### Example SOAP Encoding of the PutResponsePropertyDocument Message Exchange

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

\<GenericDiskDriveProperties

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

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

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

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

\<tns:DriveIdentifier\>ABC123\</tns:DriveIdentifier\>

\</GenericDiskDriveProperties\>

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-1/PutResourcePropertyDocument/PutResourcePropertyDocumentResponseRequest

\</wsa:Action\>

...

\</s11:Header\>

\<s11:Body\>

\<wsrf-rp:PutResourcePropertyDocument\>

\<abc:GenericDiskDriveProperties

xmlns:abc=\"http://example.com/diskDrive\"\>

\<abc:NumberOfBlocks\>22\</abc:NumberOfBlocks\>

\<abc:BlockSize\>1024\</abc:BlockSize\>

\<abc:Manufacturer\>DrivesRUs\</abc:Manufacturer\>

\<abc:DriveIdentifier\>ABC123\</abc:DriveIdentifier\>

\</abc: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-1/PutResourcePropertyDocument/PutResourcePropertyDocumentResponse](http://docs.oasis-open.org/wsrf/2005/03/wsrf-WS-ResourceProperties-1.2-draft-06.wsdl/PutResourcePropertyDocument/PutResourcePropertyDocumentResponse)

\</wsa:Action\>

...

\</s11:Header\>

\<s11:Body\>

\<wsrf-rp:PutResourcePropertyDocumentResponse /\>

\</s11:Body\>

\</s11:Envelope\>

## 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:

-   Insert: wherein a new resource property element is inserted into the
    resource properties document;

-   Update: wherein existing resource property element(s) are modified;
    and

-   Delete: wherein existing resource property element(s) are removed.

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 SetResourceProperties request message MUST follow the WS-Resource
Access Pattern. The wsa:Action MUST contain the URI

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

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

/wsrf-rp:SetResourceProperties

::: Definition
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.
:::

::: Definition
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

::: Definition
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}

::: Definition
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

::: Definition
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}

::: Definition
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

::: Definition
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

::: Definition
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-1/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:

ResourceUnknownFault:

-   The resource identified in the message (which follows the
    WS-Resource Access Pattern) is not known to the Web service. This
    fault is specified by the WS-Resource \[WS-Resource\] specification.

InvalidModification:

-   The contents of the SetResourceProperties request component causes
    the resource properties document to no longer be able to validate.

UnableToModifyResourceProperty:

-   A resource property identified by one of the SetResourceProperties
    request components is read-only.

InvalidResourcePropertyQName:

-   A resource property QName does not identify a proper number of
    resource properties.

SetResourcePropertyRequestFailed

-   One or more components of the SetResourceProperties request failed.

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.

### Example SOAP Encoding of the SetResourceProperties Message Exchange

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

\<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\>

\</GenericDiskDriveProperties\>

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-1/SetResourceProperties/SetResourcePropertiesRequest](http://docs.oasis-open.org/wsrf/2004/11/wsrf-WS-ResourceProperties-1.2-draft-05.wsdl/SetResourceProperties/SetResourcePropertiesResponse)

\</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-1/SetResourceProperties/SetResourcePropertiesResponse](http://docs.oasis-open.org/wsrf/2004/11/wsrf-WS-ResourceProperties-1.2-draft-05.wsdl/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 MUST be:

\<GenericDiskDriveProperties 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\>

\</GenericDiskDriveProperties\>

## 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 InsertResourceProperties request message MUST follow the WS-Resource
Access Pattern. The wsa:Action MUST contain the URI

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

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

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

::: Definition
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 InsertResourceProperty 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}

::: Definition
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-1/InsertResourceProperties/InsertResourcePropertiesResponse](http://docs.oasis-open.org/wsrf/2004/11/wsrf-WS-ResourceProperties-1.2-draft-05.wsdl/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 InsertResourcePropertyDocument
request message:

ResourceUnknownFault:

-   The resource identified in the message (which follows the
    WS-Resource Access Pattern) is not known to the Web service. This
    fault is specified by the WS-Resource \[WS-Resource\] specification.

InvalidModification:

-   The contents of the InsertResourceProperties request component
    causes the resource properties document to no longer be able to
    validate.

UnableToModifyResourceProperty:

-   A resource property identified by the InsertResourceProperties
    request is not modifiable.

InvalidResourcePropertyQName:

-   A resource property QName does not identify a resource property.

InsertResourcePropertyRequestFailed:

-   The InsertResourceProperty request failed for some reason.

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.

### 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:

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

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

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

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

\</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-1/InsertResourceProperties/InsertResourcePropertiesRequest](http://docs.oasis-open.org/wsrf/2004/11/wsrf-WS-ResourceProperties-1.2-draft-05.wsdl/SetResourceProperties/SetResourcePropertiesRequest)

\</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-1/InsertResourceProperties/InsertResourcePropertiesResponse](http://docs.oasis-open.org/wsrf/2004/11/wsrf-WS-ResourceProperties-1.2-draft-05.wsdl/SetResourceProperties/SetResourcePropertiesRequest)

\</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 MUST be:

\<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\>

\</GenericDiskDriveProperties\>

## 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 UpdateResourceProperties request message MUST follow the WS-Resource
Access Pattern. The wsa:Action MUST contain the URI

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

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

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

::: Definition
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
UpdateResourceProperty 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}

::: Definition
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-1/UpdateResourceProperties/UpdateResourcePropertiesResponse](http://docs.oasis-open.org/wsrf/2004/11/wsrf-WS-ResourceProperties-1.2-draft-05.wsdl/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 UpdateResourcePropertyDocument
request message:

ResourceUnknownFault:

-   The resource identified in the message (which follows the
    WS-Resource Access Pattern) is not known to the Web service. This
    fault is specified by the WS-Resource \[WS-Resource\] specification.

InvalidModification:

-   The contents of the UpdateResourceProperties request component
    causes the resource properties document to no longer be able to
    validate.

UnableToModifyResourceProperty:

-   A resource property identified by the UpdateResourceProperties
    request is not modifiable.

InvalidResourcePropertyQName:

-   A resource property QName does not identify a resource property.

UpdateResourcePropertiesRequestFailed:

-   The UpdateResourceProperties request failed for some reason.

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.

### Example SOAP Encoding of the UpdateResourceProperties Message Exchange

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

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

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

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

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

\</GenericDiskDriveProperties\>

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

\<s11:Envelope ...\>

\<s11:Header\>

\<wsa:Action\>

[http://docs.oasis-open.org/wsrf/rpw-1/UpdateResourceProperties/UpdateResourcePropertiesRequest](http://docs.oasis-open.org/wsrf/2004/11/wsrf-WS-ResourceProperties-1.2-draft-05.wsdl/UpdateResourceProperties/UpdateResourcePropertiesResponse)

\</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-1/UpdateResourceProperties/UpdateResourcePropertiesResponse](http://docs.oasis-open.org/wsrf/2004/11/wsrf-WS-ResourceProperties-1.2-draft-05.wsdl/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 MUST be:

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

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

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

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

\</GenericDiskDriveProperties\>

## 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 DeleteResourceProperties request message MUST follow the WS-Resource
Access Pattern. The wsa:Action MUST contain the URI

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

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

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

::: Definition
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

::: Definition
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-1/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 DeleteResourcePropertyDocument
request message:

ResourceUnknownFault:

-   The resource identified in the message (which follows the
    WS-Resource Access Pattern) is not known to the Web service. This
    fault is specified by the WS-Resource \[WS-Resource\] specification.

InvalidModification:

-   The contents of the DeleteResourceProperties request component
    causes the resource properties document to no longer be able to
    validate.

UnableToModifyResourceProperty:

-   A resource property identified by the DeleteResourceProperties
    request is not modifiable.

InvalidResourcePropertyQName:

-   A resource property QName does not identify a resource property.

DeleteResourcePropertiesRequestFailed:

-   One or more components of the DeleteResourceProperties request
    failed.

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.

### Example SOAP Encoding of the DeleteResourceProperties Message Exchange

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

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

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

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

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

\</GenericDiskDriveProperties\>

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-1/DeleteResourceProperties/DeleteResourcePropertiesRequest](http://docs.oasis-open.org/wsrf/2004/11/wsrf-WS-ResourceProperties-1.2-draft-05.wsdl/DeleteResourceProperties/DeleteResourcePropertiesResponse)

\</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-1/DeleteResourceProperties/DeleteResourcePropertiesResponse](http://docs.oasis-open.org/wsrf/2004/11/wsrf-WS-ResourceProperties-1.2-draft-05.wsdl/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 MUST be:

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

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

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

\</GenericDiskDriveProperties\>

# 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 encapsulatethe
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.

## 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 may contain five
SetRequestComponents. Each of these components would result in the
creation of a separate message artifact. A PutResourcePropertyDocument
request may 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 Topic and TopicSpace
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 Topics and resource properties,
and examining the set of Topics 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 Topic and TopicSpace 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 TopicSpace element MUST be
    defined. The TopicSpace element defines a topic space intended to
    contain topics related to value changes of resource properties
    declared in that XML namespace.

    -   The value of the TopicSpace 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
        TopicSpace element SHOULD have the value
        "ResourcePropertiesTopicSpace".

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

    -   Notification messages reflecting changes to the resource
        property are associated with this Topic.

    -   The value of the Topic element's name attribute MUST be the same
        as the NCName of the resource property element.

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

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

3.  The WS-Resource acting as the NotificationProducer MUST include
    Topics defined in 2, as part of the value of its "Topics" resource
    property element. One such Topic 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 Topic 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

::: Definition
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

::: Definition
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

::: Definition
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".
:::

## Value Changes on Any Resource Property

In addition to the Topics 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 TopicSpace
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
Topic's QName in the value of its wsnt:Topics 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.

# 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.

# 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.

## 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.

## 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, 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
"ResourceChangePropertyValueNotification" topic). It should also be
noted that a requestor will be able to query the value of a property
through the QueryResourceProperty operation, or by using a
domain-specific operation corresponding to a resource property (e.g.,
getNumberOfBlocks) if one exists. Therefore, the authorization policy on
QueryResourceProperty 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 QueryResourceProperty 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.

# References

## 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.

**\[URI\]** T. Berners-Lee, R. Fielding, L. Masinter, \"Uniform Resource
Identifiers (URI): Generic Syntax,\" RFC 2396, MIT/LCS, U.C. Irvine,
Xerox Corporation, August 1998.

**\[WS-Addressing\]** <http://www.w3.org/TR/ws-addr-core>

**\[WS-BaseNotification\]**
http://docs.[oasis](http://docs.oasis-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-04.pdf)-open.org/wsn/2004/06/wsn-WS-BaseNotification-1.2-draft-04.pdf

**\[****WS-Resource\]**
http://docs.oasis-open.org/wsrf/wsrf-ws_resource-1.2-spec-cd-01.pdf

**\[WS-ResourceLifetime\]**
http://docs.oasis-open.org/wsrf/wsrf-ws_resource_lifetime-1.2-spec-cd-01.pdf

**\[WS-Topics\]**
<http://docs.oasis-open.org/wsn/2004/06/wsn-WS-Topics-1.2-draft-01.pdf>

**\[XML-Infoset\]** http://www.w3.org/TR/xml-infoset/

**\[XPATH\]** http://www.w3.org/TR/xpath

## 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/wsdl12/

# Acknowledgments {#acknowledgments .AppendixHeading1}

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), David Martin
(IBM), Samuel Meder (ArgonneNational 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), Matsunori Satomi
(Hitachi), Igor Sedukhin (Computer Associates), Hitoshi Sekine (Ricoh
Company, Ltd.), Frank Siebenlist (ArgonneNational Laboratory), Alex Sim
(Lawrence Berkeley National Laboratory), David Snelling (Fujitsu), Latha
Srinivasan (Hewlett-Packard), Jem Treadwell (Hewlett-Packard), Steve
Tuecke (ArgonneNational 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).

# XML Schema {#xml-schema .AppendixHeading1}

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-1

\<?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-1\"

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

elementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\"

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

\>

\<xsd:import

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

schemaLocation=\"http://docs.oasis-open.org/wsrf/bf-1.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=\"InsertResourcePropertyRequestFailedFaultType\"\>

\<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=\"InsertResourcePropertyRequestFailedFault\"

type=

\"wsrf-rp:InsertResourcePropertyRequestFailedFaultType\"/\>

\<xsd:complexType
name=\"UpdateResourcePropertyRequestFailedFaultType\"\>

\<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=\"UpdateResourcePropertyRequestFailedFault\"

type=\"wsrf-rp:UpdateResourcePropertyRequestFailedFaultType\"/\>

\<xsd:complexType
name=\"DeleteResourcePropertyRequestFailedFaultType\"\>

\<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=\"DeleteResourcePropertyRequestFailedFault\"

type=\"wsrf-rp:DeleteResourcePropertyRequestFailedFaultType\"/\>

\<!\-- ======== 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\>

# WSDL 1.1 {#wsdl-1.1 .AppendixHeading1}

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

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

\<?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/03/addressing](http://schemas.xmlsoap.org/ws/2004/08/addressing)\"

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

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

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

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

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

\>

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

\<wsdl:import

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

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

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

\<wsdl:types\>

\<xsd:schema\>

\<xsd:import

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

schemaLocation=\"http://docs.oasis-open.org/wsrf/rp-1.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=\"InsertResourcePropertyRequestFailedFault\"\>

\<part name=\"InsertResourcePropertyRequestFailedFault\"

element=\"wsrf-rp:InsertResourcePropertyRequestFailedFault\" /\>

\</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=\"UpdateResourcePropertyRequestFailedFault\"\>

\<part name=\"UpdateResourcePropertyRequestFailedFault\"

element=\"wsrf-rp:UpdateResourcePropertyRequestFailedFault\" /\>

\</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=\"DeleteResourcePropertyRequestFailedFault\"\>

\<part name=\"DeleteResourcePropertyRequestFailedFault\"

element=\"wsrf-rp:DeleteResourcePropertyRequestFailedFault\" /\>

\</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: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=\"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=\"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=\"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=\"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=\"InvalidModificationFault\"

message=\"wsrf-rpw:InvalidModificationFault\" /\>

\<wsdl:fault name=\"UnableToModifyResourcePropertyFault\"

message=\"wsrf-rpw:UnableToModifyResourcePropertyFault\" /\>

\<wsdl:fault name=\"InvalidResourcePropertyQNameFault\"

message=\"wsrf-rpw:InvalidResourcePropertyQNameFault\" /\>

\<wsdl:fault name=\"InsertResourcePropertyRequestFailedFault\"

message=\"wsrf-rpw:InsertResourcePropertyRequestFailedFault\" /\>

\</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=\"InvalidModificationFault\"

message=\"wsrf-rpw:InvalidModificationFault\" /\>

\<wsdl:fault name=\"UnableToModifyResourcePropertyFault\"

message=\"wsrf-rpw:UnableToModifyResourcePropertyFault\" /\>

\<wsdl:fault name=\"InvalidResourcePropertyQNameFault\"

message=\"wsrf-rpw:InvalidResourcePropertyQNameFault\" /\>

\<wsdl:fault name=\"UpdateResourcePropertyRequestFailedFault\"

message=\"wsrf-rpw:UpdateResourcePropertyRequestFailedFault\" /\>

\</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=\"InvalidModificationFault\"

message=\"wsrf-rpw:InvalidModificationFault\" /\>

\<wsdl:fault name=\"UnableToModifyResourcePropertyFault\"

message=\"wsrf-rpw:UnableToModifyResourcePropertyFault\" /\>

\<wsdl:fault name=\"InvalidResourcePropertyQNameFault\"

message=\"wsrf-rpw:InvalidResourcePropertyQNameFault\" /\>

\<wsdl:fault name=\"DeleteResourcePropertyRequestFailedFault\"

message=\"wsrf-rpw:DeleteResourcePropertyRequestFailedFault\" /\>

\</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=\"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\>

# Revision History {#revision-history .AppendixHeading1}

+--------+------------+----------------+------------------------------+
| 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,  | Mods to draft 01, including  |
|        |            | Jem Treadwell  | 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  | 2004-09-17 | Steve Graham   | WSRF15, WSRF16, WSRF21       |
| (wd    |            |                |                              |
| -05.b) |            |                |                              |
+--------+------------+----------------+------------------------------+
| w      | 2004-11-22 | Jem Treadwell  | Confirm WSRF15. WSRF16,      |
| d-05.c |            |                | WSRF21, fix up some small    |
|        |            | Steve Graham   | typos (Jem), verify typos    |
|        |            |                | fixes are correct and        |
|        |            |                | reversion to 05.c (sgg)      |
+--------+------------+----------------+------------------------------+
| w      | 2004-11-22 | Steve Graham   | Incorporate Chairman's       |
| d-05.d |            |                | 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       |
+--------+------------+----------------+------------------------------+
| w      | 2004-11-26 | Ian Robinson   | Handful of typos corrected.  |
| d-05.e |            |                |                              |
+--------+------------+----------------+------------------------------+
| wd-05  | 2004-11-30 | Steve Graham   | Final typos accepted, PDF    |
|        |            |                | generated.                   |
+--------+------------+----------------+------------------------------+
| w      | 2005-02-18 | Steve Graham   | WSRF25, WSRF51, WSRF55,      |
| d-06.a |            |                | WSRF62, WSRF63, WSRF68,      |
|        |            |                | WSRF72, WSRF79, WSRF81,      |
|        |            |                | WSRF83, WSRF86, WSRF93,      |
|        |            |                | WSRF95,WSRF96                |
+--------+------------+----------------+------------------------------+
| w      | 2005-02-25 | Jem Treadwell  | Few minor typos etc.         |
| d-06.b |            |                | corrected.                   |
+--------+------------+----------------+------------------------------+
| w      | 2005-03-07 | Jem Treadwell  | Updated wsa namespace        |
| d-06.c |            |                | reference.                   |
+--------+------------+----------------+------------------------------+
| w      | 2005-03-24 | Ian Robinson   | Added                        |
| d-06.d |            |                | R                            |
|        |            |                | esourcePropertyChangeFailure |
|        |            |                | type to schema               |
+--------+------------+----------------+------------------------------+
| w      | 2005-05-16 | Steve Graham   | 91, 92 (no changes           |
| d-07.a |            |                | required), 97, 98, 99, 101,  |
|        |            |                | 102, 103                     |
+--------+------------+----------------+------------------------------+
| w      | 2005-05-17 | Steve Graham   | 100, 109                     |
| d-07.c |            |                |                              |
+--------+------------+----------------+------------------------------+
| w      | 2005-05-17 | Steve Graham   | 113                          |
| d-07.d |            |                |                              |
+--------+------------+----------------+------------------------------+
| w      | 2005-05-18 | Steve Graham   | Updates to 114, per Ian      |
| d-07.e |            |                | Robinson and F2F discussion. |
+--------+------------+----------------+------------------------------+

# Notices {#notices .AppendixHeading1}

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 (2004). 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.