idnits 2.17.1 draft-reschke-webdav-search-13.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** It looks like you're using RFC 3978 boilerplate. You should update this to the boilerplate described in the IETF Trust License Policy document (see https://trustee.ietf.org/license-info), which is required now. -- Found old boilerplate from RFC 3978, Section 5.1 on line 20. -- Found old boilerplate from RFC 3978, Section 5.5, updated by RFC 4748 on line 2553. -- Found old boilerplate from RFC 3979, Section 5, paragraph 1 on line 2564. -- Found old boilerplate from RFC 3979, Section 5, paragraph 2 on line 2571. -- Found old boilerplate from RFC 3979, Section 5, paragraph 3 on line 2577. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust Copyright Line does not match the current year == Using lowercase 'not' together with uppercase 'MUST', 'SHALL', 'SHOULD', or 'RECOMMENDED' is not an accepted usage according to RFC 2119. Please use uppercase 'NOT' together with RFC 2119 keywords (if that is what you mean). Found 'SHOULD not' in this paragraph: Query grammars are identified by URIs. Applications SHOULD not attempt to retrieve these URIs even if they appear to be retrievable (for example, those that begin with "http://") -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (July 5, 2007) is 6139 days in the past. Is this intentional? Checking references for intended status: Experimental ---------------------------------------------------------------------------- ** Obsolete normative reference: RFC 2616 (Obsoleted by RFC 7230, RFC 7231, RFC 7232, RFC 7233, RFC 7234, RFC 7235) ** Obsolete normative reference: RFC 3023 (Obsoleted by RFC 7303) ** Obsolete normative reference: RFC 4234 (Obsoleted by RFC 5234) -- No information found for draft-dasl-requirements - is the name correct? Summary: 4 errors (**), 0 flaws (~~), 2 warnings (==), 8 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group J. Reschke, Ed. 3 Internet-Draft greenbytes 4 Intended status: Experimental S. Reddy 5 Expires: January 6, 2008 Optena 6 J. Davis 8 A. Babich 9 Filenet 10 July 5, 2007 12 Web Distributed Authoring and Versioning (WebDAV) SEARCH 13 draft-reschke-webdav-search-13 15 Status of this Memo 17 By submitting this Internet-Draft, each author represents that any 18 applicable patent or other IPR claims of which he or she is aware 19 have been or will be disclosed, and any of which he or she becomes 20 aware will be disclosed, in accordance with Section 6 of BCP 79. 22 Internet-Drafts are working documents of the Internet Engineering 23 Task Force (IETF), its areas, and its working groups. Note that 24 other groups may also distribute working documents as Internet- 25 Drafts. 27 Internet-Drafts are draft documents valid for a maximum of six months 28 and may be updated, replaced, or obsoleted by other documents at any 29 time. It is inappropriate to use Internet-Drafts as reference 30 material or to cite them other than as "work in progress." 32 The list of current Internet-Drafts can be accessed at 33 http://www.ietf.org/ietf/1id-abstracts.txt. 35 The list of Internet-Draft Shadow Directories can be accessed at 36 http://www.ietf.org/shadow.html. 38 This Internet-Draft will expire on January 6, 2008. 40 Copyright Notice 42 Copyright (C) The IETF Trust (2007). 44 Abstract 46 This document specifies a set of methods, headers, properties and 47 content-types composing WebDAV SEARCH, an application of the HTTP/1.1 48 protocol to efficiently search for DAV resources based upon a set of 49 client-supplied criteria. 51 Editorial Note (To be removed by RFC Editor before publication) 53 Please send comments to the Distributed Authoring and Versioning 54 (WebDAV) DASL mailing list at , which 55 may be joined by sending a message with subject "subscribe" to 56 . Discussions of the WebDAV 57 DASL mailing list are archived at 58 . 60 An issues list and XML and HTML versions of this draft are available 61 from . 63 Table of Contents 65 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5 66 1.1. DASL . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 67 1.2. Relationship to DAV . . . . . . . . . . . . . . . . . . . 5 68 1.3. Terms . . . . . . . . . . . . . . . . . . . . . . . . . . 5 69 1.4. Notational Conventions . . . . . . . . . . . . . . . . . . 7 70 1.5. Note on Usage of 'DAV:' XML Namespace . . . . . . . . . . 7 71 1.6. An Overview of DASL at Work . . . . . . . . . . . . . . . 8 72 2. The SEARCH Method . . . . . . . . . . . . . . . . . . . . . . 8 73 2.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . 8 74 2.2. The Request . . . . . . . . . . . . . . . . . . . . . . . 8 75 2.2.1. The Request-URI . . . . . . . . . . . . . . . . . . . 8 76 2.2.2. The Request Body . . . . . . . . . . . . . . . . . . . 9 77 2.3. The Successful 207 (Multistatus) Response . . . . . . . . 9 78 2.3.1. Result Set Truncation . . . . . . . . . . . . . . . . 10 79 2.3.2. Extending the PROPFIND Response . . . . . . . . . . . 10 80 2.3.3. Example: A Simple Request and Response . . . . . . . . 10 81 2.3.4. Example: Result Set Truncation . . . . . . . . . . . . 11 82 2.4. Unsuccessful Responses . . . . . . . . . . . . . . . . . . 12 83 2.4.1. Example of an Invalid Scope . . . . . . . . . . . . . 12 84 3. Discovery of Supported Query Grammars . . . . . . . . . . . . 13 85 3.1. The OPTIONS Method . . . . . . . . . . . . . . . . . . . . 13 86 3.2. The DASL Response Header . . . . . . . . . . . . . . . . . 14 87 3.3. DAV:supported-query-grammar-set (protected) . . . . . . . 14 88 3.4. Example: Grammar Discovery . . . . . . . . . . . . . . . . 14 89 4. Query Schema Discovery: QSD . . . . . . . . . . . . . . . . . 17 90 4.1. Additional SEARCH Semantics . . . . . . . . . . . . . . . 17 91 4.1.1. Example of Query Schema Discovery . . . . . . . . . . 18 92 5. The DAV:basicsearch Grammar . . . . . . . . . . . . . . . . . 19 93 5.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . 19 94 5.2. The DAV:basicsearch DTD . . . . . . . . . . . . . . . . . 20 95 5.2.1. Example Query . . . . . . . . . . . . . . . . . . . . 22 97 5.3. DAV:select . . . . . . . . . . . . . . . . . . . . . . . . 23 98 5.4. DAV:from . . . . . . . . . . . . . . . . . . . . . . . . . 23 99 5.4.1. Relationship to the Request-URI . . . . . . . . . . . 23 100 5.4.2. Scope . . . . . . . . . . . . . . . . . . . . . . . . 24 101 5.5. DAV:where . . . . . . . . . . . . . . . . . . . . . . . . 24 102 5.5.1. Use of Three-Valued Logic in Queries . . . . . . . . . 24 103 5.5.2. Handling Optional Operators . . . . . . . . . . . . . 24 104 5.5.3. Treatment of NULL Values . . . . . . . . . . . . . . . 24 105 5.5.4. Treatment of Properties with mixed/element Content . . 25 106 5.5.5. Example: Testing for Equality . . . . . . . . . . . . 25 107 5.5.6. Example: Relative Comparisons . . . . . . . . . . . . 25 108 5.6. DAV:orderby . . . . . . . . . . . . . . . . . . . . . . . 26 109 5.6.1. Example of Sorting . . . . . . . . . . . . . . . . . . 26 110 5.7. Boolean Operators: DAV:and, DAV:or, and DAV:not . . . . . 26 111 5.8. DAV:eq . . . . . . . . . . . . . . . . . . . . . . . . . . 27 112 5.9. DAV:lt, DAV:lte, DAV:gt, DAV:gte . . . . . . . . . . . . . 27 113 5.10. DAV:literal . . . . . . . . . . . . . . . . . . . . . . . 27 114 5.11. DAV:typed-literal (optional) . . . . . . . . . . . . . . . 27 115 5.11.1. Example for Typed Numerical Comparison . . . . . . . . 28 116 5.12. Support for Matching xml:lang Attributes on Properties . . 28 117 5.12.1. DAV:language-defined (optional) . . . . . . . . . . . 29 118 5.12.2. DAV:language-matches (optional) . . . . . . . . . . . 29 119 5.12.3. Example of Language-Aware Matching . . . . . . . . . . 29 120 5.13. DAV:is-collection . . . . . . . . . . . . . . . . . . . . 29 121 5.13.1. Example of DAV:is-collection . . . . . . . . . . . . . 30 122 5.14. DAV:is-defined . . . . . . . . . . . . . . . . . . . . . . 30 123 5.15. DAV:like . . . . . . . . . . . . . . . . . . . . . . . . . 30 124 5.15.1. Syntax for the Literal Pattern . . . . . . . . . . . . 31 125 5.15.2. Example of DAV:like . . . . . . . . . . . . . . . . . 31 126 5.16. DAV:contains . . . . . . . . . . . . . . . . . . . . . . . 31 127 5.16.1. Result Scoring (DAV:score Element) . . . . . . . . . . 32 128 5.16.2. Ordering by Score . . . . . . . . . . . . . . . . . . 32 129 5.16.3. Examples . . . . . . . . . . . . . . . . . . . . . . . 33 130 5.17. Limiting the Result Set . . . . . . . . . . . . . . . . . 33 131 5.17.1. Relationship to Result Ordering . . . . . . . . . . . 33 132 5.18. The 'caseless' XML Attribute . . . . . . . . . . . . . . . 33 133 5.19. Query Schema for DAV:basicsearch . . . . . . . . . . . . . 34 134 5.19.1. DTD for DAV:basicsearch QSD . . . . . . . . . . . . . 34 135 5.19.2. DAV:propdesc Element . . . . . . . . . . . . . . . . . 34 136 5.19.3. The DAV:datatype Property Description . . . . . . . . 35 137 5.19.4. The DAV:searchable Property Description . . . . . . . 35 138 5.19.5. The DAV:selectable Property Description . . . . . . . 36 139 5.19.6. The DAV:sortable Property Description . . . . . . . . 36 140 5.19.7. The DAV:caseless Property Description . . . . . . . . 36 141 5.19.8. The DAV:operators XML Element . . . . . . . . . . . . 36 142 5.19.9. Example of Query Schema for DAV:basicsearch . . . . . 37 143 6. Internationalization Considerations . . . . . . . . . . . . . 37 144 7. Security Considerations . . . . . . . . . . . . . . . . . . . 38 145 7.1. Implications of XML External Entities . . . . . . . . . . 38 146 8. Scalability . . . . . . . . . . . . . . . . . . . . . . . . . 39 147 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 39 148 9.1. HTTP Headers . . . . . . . . . . . . . . . . . . . . . . . 39 149 9.1.1. DASL . . . . . . . . . . . . . . . . . . . . . . . . . 39 150 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 39 151 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 39 152 12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 40 153 12.1. Normative References . . . . . . . . . . . . . . . . . . . 40 154 12.2. Informative References . . . . . . . . . . . . . . . . . . 41 155 Appendix A. Three-Valued Logic in DAV:basicsearch . . . . . . . . 42 156 Appendix B. Unresolved Issues . . . . . . . . . . . . . . . . . . 43 157 B.1. Collation Support . . . . . . . . . . . . . . . . . . . . 43 158 B.2. Count . . . . . . . . . . . . . . . . . . . . . . . . . . 44 159 B.3. Matching Media Types . . . . . . . . . . . . . . . . . . . 44 160 B.4. Query by Name . . . . . . . . . . . . . . . . . . . . . . 44 161 B.5. Result Paging . . . . . . . . . . . . . . . . . . . . . . 44 162 Appendix C. Change Log (to be removed by RFC Editor before 163 publication) . . . . . . . . . . . . . . . . . . . . 44 164 C.1. From draft-davis-dasl-protocol-xxx . . . . . . . . . . . . 45 165 C.2. since start of draft-reschke-webdav-search . . . . . . . . 46 166 C.3. since draft-reschke-webdav-search-00 . . . . . . . . . . . 48 167 C.4. since draft-reschke-webdav-search-01 . . . . . . . . . . . 48 168 C.5. since draft-reschke-webdav-search-02 . . . . . . . . . . . 49 169 C.6. since draft-reschke-webdav-search-03 . . . . . . . . . . . 49 170 C.7. since draft-reschke-webdav-search-04 . . . . . . . . . . . 49 171 C.8. since draft-reschke-webdav-search-05 . . . . . . . . . . . 50 172 C.9. since draft-reschke-webdav-search-06 . . . . . . . . . . . 51 173 C.10. since draft-reschke-webdav-search-07 . . . . . . . . . . . 51 174 C.11. since draft-reschke-webdav-search-08 . . . . . . . . . . . 51 175 C.12. since draft-reschke-webdav-search-09 . . . . . . . . . . . 52 176 C.13. since draft-reschke-webdav-search-10 . . . . . . . . . . . 52 177 C.14. since draft-reschke-webdav-search-11 . . . . . . . . . . . 52 178 C.15. since draft-reschke-webdav-search-12 . . . . . . . . . . . 53 179 Appendix D. Resolved issues (to be removed by RFC Editor 180 before publication) . . . . . . . . . . . . . . . . . 53 181 D.1. rfc4918 . . . . . . . . . . . . . . . . . . . . . . . . . 53 182 Appendix E. Open issues (to be removed by RFC Editor prior to 183 publication) . . . . . . . . . . . . . . . . . . . . 53 184 E.1. edit . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 185 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 186 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 55 187 Intellectual Property and Copyright Statements . . . . . . . . . . 57 189 1. Introduction 191 1.1. DASL 193 This document defines Web Distributed Authoring and Versioning 194 (WebDAV) SEARCH, an application of HTTP/1.1 forming a lightweight 195 search protocol to transport queries and result sets that allows 196 clients to make use of server-side search facilities. It is based on 197 the expired internet draft for DAV Searching & Locating [DASL]. 198 [DASLREQ] describes the motivation for DASL. In this specification, 199 the terms "WebDAV SEARCH" and "DASL" are used interchangeably. 201 DASL minimizes the complexity of clients so as to facilitate 202 widespread deployment of applications capable of utilizing the DASL 203 search mechanisms. 205 DASL consists of: 207 o the SEARCH method and the request/response formats defined for it 208 (Section 2), 210 o feature discovery through the "DASL" response header and the 211 optional DAV:supported-grammar-set property (Section 3), 213 o optional grammar schema discovery (Section 4) and 215 o one mandatory grammar: DAV:basicsearch (Section 5). 217 1.2. Relationship to DAV 219 DASL relies on the resource and property model defined by [RFC4918]. 220 DASL does not alter this model. Instead, DASL allows clients to 221 access DAV-modeled resources through server-side search. 223 1.3. Terms 225 This document uses the terms defined in [RFC2616], in [RFC4918], in 226 [RFC3253] and in this section. 228 Criteria 230 An expression against which each resource in the search scope is 231 evaluated. 233 Query 235 A query is a combination of a search scope, search criteria, 236 result record definition, sort specification, and a search 237 modifier. 239 Query Grammar 241 A set of definitions of XML elements, attributes, and constraints 242 on their relations and values that defines a set of queries and 243 the intended semantics. 245 Query Schema 247 A listing, for any given grammar and scope, of the properties and 248 operators that may be used in a query with that grammar and scope. 250 Result 252 A result is a result set, optionally augmented with other 253 information describing the search as a whole. 255 Result Record 257 A description of a resource. A result record is a set of 258 properties, and possibly other descriptive information. 260 Result Record Definition 262 A specification of the set of properties to be returned in the 263 result record. 265 Result Set 267 A set of records, one for each resource for which the search 268 criteria evaluated to True. 270 Scope 272 A set of resources to be searched. 274 Search Modifier 276 An instruction that governs the execution of the query but is not 277 part of the search scope, result record definition, the search 278 criteria, or the sort specification. An example of a search 279 modifier is one that controls how much time the server can spend 280 on the query before giving a response. 282 Sort Specification 283 A specification of an ordering on the result records in the result 284 set. 286 1.4. Notational Conventions 288 This specification uses the Augmented Backus-Naur Form (ABNF) 289 notation of [RFC4234], unless explicitly stated otherwise. 291 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 292 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 293 document are to be interpreted as described in [RFC2119]. 295 This document uses XML DTD fragments as a purely notational 296 convention. WebDAV request and response bodies can not be validated 297 due to the specific extensibility rules defined in Section 17 of 298 [RFC4918] and due to the fact that all XML elements defined by this 299 specification use the XML namespace name "DAV:". In particular: 301 1. element names use the "DAV:" namespace, 303 2. element ordering is irrelevant unless explicitly stated, 305 3. extension elements (elements not already defined as valid child 306 elements) may be added anywhere, except when explicitly stated 307 otherwise, 309 4. extension attributes (attributes not already defined as valid for 310 this element) may be added anywhere, except when explicitly 311 stated otherwise. 313 When an XML element type in the "DAV:" namespace is referenced in 314 this document outside of the context of an XML fragment, the string 315 "DAV:" will be prefixed to the element type. 317 Similarly, when an XML element type in the namespace 318 "http://www.w3.org/2001/XMLSchema" is referenced in this document 319 outside of the context of an XML fragment, the string "xs:" will be 320 prefixed to the element type. 322 1.5. Note on Usage of 'DAV:' XML Namespace 324 This specification defines elements, properties and condition names 325 in the XML namespace "DAV:". In general, only specifications 326 authored by IETF working groups are supposed to do this. In this 327 case an exception was made, because WebDAV SEARCH started its life in 328 the IETF DASL working group (, and at 329 the time the working group closed down there was already significant 330 deployment of this specification. 332 1.6. An Overview of DASL at Work 334 One can express the basic usage of DASL in the following steps: 336 o The client constructs a query using the DAV:basicsearch grammar. 338 o The client invokes the SEARCH method on a resource that will 339 perform the search (the search arbiter) and includes a text/xml or 340 application/xml request entity that contains the query. 342 o The search arbiter performs the query. 344 o The search arbiter sends the results of the query back to the 345 client in the response. The server MUST send an entity that 346 matches the WebDAV multistatus format ([RFC4918], Section 13). 348 2. The SEARCH Method 350 2.1. Overview 352 The client invokes the SEARCH method to initiate a server-side 353 search. The body of the request defines the query. The server MUST 354 emit an entity matching the WebDAV multistatus format ([RFC4918], 355 Section 13). 357 The SEARCH method plays the role of transport mechanism for the query 358 and the result set. It does not define the semantics of the query. 359 The type of the query defines the semantics. 361 2.2. The Request 363 The client invokes the SEARCH method on the resource named by the 364 Request-URI. 366 2.2.1. The Request-URI 368 The Request-URI identifies the search arbiter. Any HTTP resource may 369 function as search arbiter. It is not a new type of resource (in the 370 sense of DAV:resourcetype as defined in [RFC4918], Section 15.9), nor 371 does it have to be a WebDAV-compliant resource. 373 The SEARCH method defines no relationship between the arbiter and the 374 scope of the search, rather the particular query grammar used in the 375 query defines the relationship. For example, a query grammar may 376 force the Request-URI to correspond exactly to the search scope. 378 2.2.2. The Request Body 380 The server MUST process a text/xml or application/xml request body, 381 and MAY process request bodies in other formats. See [RFC3023] for 382 guidance on packaging XML in requests. 384 Marshalling: 386 If a request body with content type text/xml or application/xml is 387 included, it MUST be either a DAV:searchrequest or a DAV:query- 388 schema-discovery XML element. Its single child element identifies 389 the query grammar. 391 For DAV:searchrequest, the definition of search criteria, the 392 result record, and any other details needed to perform the search 393 depend on the individual search grammar. 395 For DAV:query-schema-discovery, the semantics is defined in 396 Section 4. 398 Preconditions: 400 (DAV:search-grammar-discovery-supported): when an XML request body 401 is present and has a DAV:query-schema-discovery document element, 402 the server MUST support the query schema discovery mechanism 403 described in Section 4. 405 (DAV:search-grammar-supported): when an XML request body is 406 present, the search grammar identified by the document element's 407 child element must be a supported search grammar. 409 (DAV:search-multiple-scope-supported): if the SEARCH request 410 specified multiple scopes, the server MUST support this optional 411 feature. 413 (DAV:search-scope-valid): the supplied search scope must be valid. 414 There can be various reasons for a search scope to be invalid, 415 including unsupported URI schemes and communication problems. 416 Servers MAY add [RFC4918] compliant DAV:response elements as 417 content to the condition element indicating the precise reason for 418 the failure. 420 2.3. The Successful 207 (Multistatus) Response 422 If the server returns 207 (Multistatus), then the search proceeded 423 successfully and the response MUST use the WebDAV multistatus format 424 ([RFC4918], Section 13). The results of this method SHOULD NOT be 425 cached. 427 There MUST be one DAV:response for each resource that matched the 428 search criteria. For each such response, the DAV:href element 429 contains the URI of the resource, and the response MUST include a 430 DAV:propstat element. 432 Note: the WebDAV multistatus format requires at least one DAV: 433 response child element. This specification relaxes that 434 restriction so that empty results can be represented. 436 Note that for each matching resource found there may be multiple URIs 437 within the search scope mapped to it. In this case, a server SHOULD 438 report only one of these URIs. Clients can use the live property 439 DAV:resource-id defined in Section 3.1 of [draft-ietf-webdav-bind] to 440 identify possible duplicates. 442 2.3.1. Result Set Truncation 444 A server MAY limit the number of resources in a reply, for example to 445 limit the amount of resources expended in processing a query. If it 446 does so, the reply MUST use status code 207, return a DAV:multistatus 447 response body and indicate a status of 507 (Insufficient Storage) for 448 the search arbiter URI. It SHOULD include the partial results. 450 When a result set is truncated, there may be many more resources that 451 satisfy the search criteria but that were not examined. 453 If partial results are included and the client requested an ordered 454 result set in the original request, then any partial results that are 455 returned MUST be ordered as the client directed. 457 Note that the partial results returned MAY be any subset of the 458 result set that would have satisfied the original query. 460 2.3.2. Extending the PROPFIND Response 462 A response MAY include more information than PROPFIND defines so long 463 as the extra information does not invalidate the PROPFIND response. 464 Query grammars SHOULD define how the response matches the PROPFIND 465 response. 467 2.3.3. Example: A Simple Request and Response 469 This example demonstrates the request and response framework. The 470 following XML document shows a simple (hypothetical) natural language 471 query. The name of the query element is natural-language-query in 472 the XML namespace "http://example.com/foo". The actual query is 473 "Find the locations of good Thai restaurants in Los Angeles". For 474 this hypothetical query, the arbiter returns two properties for each 475 selected resource. 477 >> Request: 479 SEARCH / HTTP/1.1 480 Host: example.org 481 Content-Type: application/xml 482 Content-Length: xxx 484 485 486 487 Find the locations of good Thai restaurants in Los Angeles 488 489 491 >> Response: 493 HTTP/1.1 207 Multi-Status 494 Content-Type: text/xml; charset="utf-8" 495 Content-Length: xxx 497 498 500 501 http://siamiam.example/ 502 503 504 259 W. Hollywood 505 4 506 507 HTTP/1.1 200 OK 508 509 510 512 2.3.4. Example: Result Set Truncation 514 In the example below, the server returns just two results, and then 515 indicates that the result is truncated by adding a DAV:response 516 element for the search arbiter resource with 507 (Insufficient 517 Storage) status. 519 >> Request: 521 SEARCH / HTTP/1.1 522 Host: example.net 523 Content-Type: text/xml; charset="utf-8" 524 Content-Length: xxx 526 ... the query goes here ... 528 >> Response: 530 HTTP/1.1 207 Multistatus 531 Content-Type: text/xml; charset="utf-8" 532 Content-Length: xxx 534 535 536 537 http://www.example.net/sounds/unbrokenchain.au 538 HTTP/1.1 200 OK 539 540 541 http://tech.mit.example/archive96/photos/Lesh1.jpg 542 HTTP/1.1 200 OK 543 544 545 http://example.net 546 HTTP/1.1 507 Insufficient Storage 547 548 Only first two matching records were returned 549 550 551 553 2.4. Unsuccessful Responses 555 If a SEARCH request could not be executed or the attempt to execute 556 it resulted in an error, the server MUST indicate the failure with an 557 appropriate status code and SHOULD add a response body as defined in 558 [RFC3253], Section 1.6. Unless otherwise stated, condition elements 559 are empty, however specific conditions element MAY include additional 560 child elements that describe the error condition in more detail. 562 2.4.1. Example of an Invalid Scope 564 In the example below, a request failed because the scope identifies a 565 HTTP resource that was not found. 567 >> Response: 569 HTTP/1.1 409 Conflict 570 Content-Type: text/xml; charset="utf-8" 571 Content-Length: xxx 573 574 575 576 577 http://www.example.com/X 578 HTTP/1.1 404 Object Not Found 579 580 581 583 3. Discovery of Supported Query Grammars 585 Servers MUST support discovery of the query grammars supported by a 586 search arbiter resource. 588 Clients can determine which query grammars are supported by an 589 arbiter by invoking OPTIONS on the search arbiter. If the resource 590 supports SEARCH, then the DASL response header will appear in the 591 response. The DASL response header lists the supported grammars. 593 Servers supporting the WebDAV extensions [RFC3253] and/or [RFC3744] 594 MUST also 596 o report SEARCH in the live property DAV:supported-method-set for 597 all search arbiter resources and 599 o support the live property DAV:supported-query-grammar-set as 600 defined in Section 3.3. 602 3.1. The OPTIONS Method 604 The OPTIONS method allows the client to discover if a resource 605 supports the SEARCH method and to determine the list of search 606 grammars supported for that resource. 608 The client issues the OPTIONS method against a resource named by the 609 Request-URI. This is a normal invocation of OPTIONS as defined in 610 Section 9.2 of [RFC2616]. 612 If a resource supports the SEARCH method, then the server MUST list 613 SEARCH in the Allow header defined in Section 14.7 of [RFC2616]. 615 DASL servers MUST include the DASL header in the OPTIONS response. 616 This header identifies the search grammars supported by that 617 resource. 619 3.2. The DASL Response Header 621 DASLHeader = "DASL" ":" 1#Coded-URL 622 Coded-URL = 624 (This grammar uses the augmented BNF format defined in Section 2.1 of 625 [RFC2616]) 627 The DASL response header indicates server support for a query grammar 628 in the OPTIONS method. The value is a URI that indicates the type of 629 grammar. Note that although the URI can be used to identify each 630 supported search grammar, there is not necessarily a direct 631 relationship between the URI and the XML element name that can be 632 used in XML based SEARCH requests (the element name itself is 633 identified by its namespace name (a URI reference) and the element's 634 local name). 636 This header MAY be repeated. 638 For example: 640 DASL: 641 DASL: 642 DASL: 643 DASL: 645 3.3. DAV:supported-query-grammar-set (protected) 647 This WebDAV property is required for any server supporting either 648 [RFC3253] and/or [RFC3744] and identifies the XML based query 649 grammars that are supported by the search arbiter resource. 651 652 653 655 ANY value: a query grammar element type 657 3.4. Example: Grammar Discovery 659 This example shows that the server supports search on the /somefolder 660 resource with the query grammars: DAV:basicsearch, 661 http://foobar.example/syntax1 and http://akuma.example/syntax2. Note 662 that every server MUST support DAV:basicsearch. 664 >> Request: 666 OPTIONS /somefolder HTTP/1.1 667 Host: example.org 669 >> Response: 671 HTTP/1.1 200 OK 672 Allow: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, COPY, MOVE 673 Allow: MKCOL, PROPFIND, PROPPATCH, LOCK, UNLOCK, SEARCH 674 DASL: 675 DASL: 676 DASL: 678 This example shows the equivalent taking advantage of a server's 679 support for DAV:supported-method-set and DAV:supported-query-grammar- 680 set. 682 >> Request: 684 PROPFIND /somefolder HTTP/1.1 685 Host: example.org 686 Depth: 0 687 Content-Type: text/xml; charset="utf-8" 688 Content-Length: xxx 690 691 692 693 694 695 696 697 >> Response: 699 HTTP/1.1 207 Multi-Status 700 Content-Type: text/xml; charset="utf-8" 701 Content-Length: xxx 703 704 705 706 http://example.org/somefolder 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 HTTP/1.1 200 OK 739 740 741 743 Note that the query grammar element names marshalled as part of the 744 DAV:supported-query-grammar-set can be directly used as element names 745 in an XML based query. 747 4. Query Schema Discovery: QSD 749 Servers MAY support the discovery of the schema for a query grammar. 751 The DASL response header and the DAV:supported-query-grammar-set 752 property provide means for clients to discover the set of query 753 grammars supported by a resource. This alone is not sufficient 754 information for a client to generate a query. For example, the DAV: 755 basicsearch grammar defines a set of queries consisting of a set of 756 operators applied to a set of properties and values, but the grammar 757 itself does not specify which properties may be used in the query. 758 QSD for the DAV:basicsearch grammar allows a client to discover the 759 set of properties that are searchable, selectable, and sortable. 760 Moreover, although the DAV:basicsearch grammar defines a minimal set 761 of operators, it is possible that a resource might support additional 762 operators in a query. For example, a resource might support a 763 optional operator that can be used to express content-based queries 764 in a proprietary syntax. QSD allows a client to discover these 765 operators and their syntax. The set of discoverable quantities will 766 differ from grammar to grammar, but each grammar can define a means 767 for a client to discover what can be discovered. 769 In general, the schema for a given query grammar depends on both the 770 resource (the arbiter) and the scope. A given resource might have 771 access to one set of properties for one potential scope, and another 772 set for a different scope. For example, consider a server able to 773 search two distinct collections, one holding cooking recipes, the 774 other design documents for nuclear weapons. While both collections 775 might support properties such as author, title, and date, the first 776 might also define properties such as calories and preparation time, 777 while the second defined properties such as yield and applicable 778 patents. Two distinct arbiters indexing the same collection might 779 also have access to different properties. For example, the recipe 780 collection mentioned above might also indexed by a value-added server 781 that also stored the names of chefs who had tested the recipe. Note 782 also that the available query schema might also depend on other 783 factors, such as the identity of the principal conducting the search, 784 but these factors are not exposed in this protocol. 786 4.1. Additional SEARCH Semantics 788 Each query grammar supported by DASL defines its own syntax for 789 expressing the possible query schema. A client retrieves the schema 790 for a given query grammar on an arbiter resource with a given scope 791 by invoking the SEARCH method on that arbiter with that grammar and 792 scope and with a root element of DAV:query-schema-discovery rather 793 than DAV:searchrequest. 795 Marshalling: 797 The request body MUST be DAV:query-schema-discovery element. 799 800 802 The response body takes the form of a DAV:multistatus element 803 ([RFC4918], Section 13), where DAV:response is extended to hold 804 the returned query grammar inside a DAV:query-schema container 805 element. 807 809 811 The content of this container is an XML element whose name and syntax 812 depend upon the grammar, and whose value may (and likely will) vary 813 depending upon the grammar, arbiter, and scope. 815 4.1.1. Example of Query Schema Discovery 817 In this example, the arbiter is recipes.example, the grammar is DAV: 818 basicsearch, the scope is also recipes.example. 820 >> Request: 822 SEARCH / HTTP/1.1 823 Host: recipes.example 824 Content-Type: application/xml 825 Content-Length: xxx 827 828 829 830 831 832 http://recipes.example 833 infinity 834 835 836 837 838 >> Response: 840 HTTP/1.1 207 Multistatus 841 Content-Type: application/xml 842 Content-Length: xxx 844 845 846 847 http://recipes.example 848 HTTP/1.1 200 OK 849 850 851 853 854 855 856 858 The query schema for DAV:basicsearch is defined in Section 5.19. 860 5. The DAV:basicsearch Grammar 862 5.1. Introduction 864 DAV:basicsearch uses an extensible XML syntax that allows clients to 865 express search requests that are generally useful for WebDAV 866 scenarios. DASL-extended servers MUST accept this grammar, and MAY 867 accept other grammars. 869 DAV:basicsearch has several components: 871 o DAV:select provides the result record definition. 873 o DAV:from defines the scope. 875 o DAV:where defines the criteria. 877 o DAV:orderby defines the sort order of the result set. 879 o DAV:limit provides constraints on the query as a whole. 881 5.2. The DAV:basicsearch DTD 883 885 887 889 891 893 894 895 897 898 899 900 902 903 905 908 910 912 914 916 917 919 920 922 923 925 926 928 929 931 932 933 935 936 938 939 941 942 944 945 947 948 950 951 953 955 956 958 5.2.1. Example Query 960 This query retrieves the content length values for all resources 961 located under the server's "/container1/" URI namespace whose length 962 exceeds 10000. 964 965 966 967 968 969 970 971 /container1/ 972 infinity 973 974 975 976 977 978 10000 979 980 981 982 983 984 985 986 987 988 990 5.3. DAV:select 992 DAV:select defines the result record, which is a set of properties 993 and values. This document defines two possible values: DAV:allprop 994 and DAV:prop, both defined in Section 14 of [RFC4918]. 996 5.4. DAV:from 998 999 1001 DAV:from defines the query scope. This contains one or more DAV: 1002 scope elements. Support for multiple scope elements is optional, 1003 however servers MUST fail a request specifying multiple DAV:scope 1004 elements if they can't support it (see Section 2.2.2, precondition 1005 DAV:search-multiple-scope-supported). The scope element contains 1006 mandatory DAV:href and DAV:depth elements. 1008 DAV:href indicates the URI to use as a scope. 1010 When the scope is a collection, if DAV:depth is "0", the search 1011 includes only the collection. When it is "1", the search includes 1012 the collection and its immediate children. When it is "infinity", it 1013 includes the collection and all its progeny. 1015 When the scope is not a collection, the depth is ignored and the 1016 search applies just to the resource itself. 1018 If the search includes a redirect reference resource (see [RFC4437]), 1019 it applies only to that resource, not to its target. 1021 When the child element DAV:include-versions is present, the search 1022 scope will include all versions (see [RFC3253], Section 2.2.1) of all 1023 version-controlled resources in scope. Servers that do support 1024 versioning but do not support the DAV:include-versions feature MUST 1025 signal an error if it is used in a query. 1027 5.4.1. Relationship to the Request-URI 1029 If the DAV:scope element is an absolute URI, the scope is exactly 1030 that URI. 1032 If the DAV:scope element is is an absolute URI reference, the scope 1033 is taken to be relative to the Request-URI. 1035 5.4.2. Scope 1037 A Scope can be an arbitrary URI. 1039 Servers, of course, may support only particular scopes. This may 1040 include limitations for particular schemes such as "http:" or "ftp:" 1041 or certain URI namespaces. 1043 5.5. DAV:where 1045 The DAV:where element defines the search condition for inclusion of 1046 resources in the result set. The value of this element is an XML 1047 element that defines a search operator that evaluates to one of the 1048 Boolean truth values TRUE, FALSE, or UNKNOWN. The search operator 1049 contained by DAV:where may itself contain and evaluate additional 1050 search operators as operands, which in turn may contain and evaluate 1051 additional search operators as operands, etc. recursively. 1053 5.5.1. Use of Three-Valued Logic in Queries 1055 Each operator defined for use in the where clause that returns a 1056 Boolean value MUST evaluate to TRUE, FALSE, or UNKNOWN. The resource 1057 under scan is included as a member of the result set if and only if 1058 the search condition evaluates to TRUE. 1060 Consult Appendix A for details on the application of three-valued 1061 logic in query expressions. 1063 5.5.2. Handling Optional Operators 1065 If a query contains an operator that is not supported by the server, 1066 then the server MUST respond with a 422 (Unprocessable Entity) status 1067 code. 1069 5.5.3. Treatment of NULL Values 1071 If a PROPFIND for a property value would yield a non-2xx (see 1072 [RFC2616], Section 10.2) response for that property, then that 1073 property is considered NULL. 1075 NULL values are "less than" all other values in comparisons. 1077 Empty strings (zero length strings) are not NULL values. An empty 1078 string is "less than" a string with length greater than zero. 1080 The DAV:is-defined operator is defined to test if the value of a 1081 property is NULL. 1083 5.5.4. Treatment of Properties with mixed/element Content 1085 Comparisons of properties that do not have simple types (text-only 1086 content) is out-of-scope for the standard operators defined for DAV: 1087 basicsearch and therefore is defined to be UNKNOWN (as per 1088 Appendix A). For querying the DAV:resourcetype property, see 1089 Section 5.13. 1091 5.5.5. Example: Testing for Equality 1093 The example shows a single operator (DAV:eq) applied in the criteria. 1095 1096 1097 1098 1099 1100 100 1101 1102 1104 5.5.6. Example: Relative Comparisons 1106 The example shows a more complex operation involving several 1107 operators (DAV:and, DAV:eq, DAV:gt) applied in the criteria. This 1108 DAV:where expression matches those resources that are "image/gifs" 1109 over 4K in size. 1111 1112 1113 1114 1115 1116 1117 image/gif 1118 1119 1120 1121 1122 1123 4096 1124 1125 1126 1128 5.6. DAV:orderby 1130 The DAV:orderby element specifies the ordering of the result set. It 1131 contains one or more DAV:order elements, each of which specifies a 1132 comparison between two items in the result set. Informally, a 1133 comparison specifies a test that determines whether one resource 1134 appears before another in the result set. Comparisons are applied in 1135 the order they occur in the DAV:orderby element, earlier comparisons 1136 being more significant. 1138 The comparisons defined here use only a single property from each 1139 resource, compared using the same ordering as the DAV:lt operator 1140 (ascending) or DAV:gt operator (descending). If neither direction is 1141 specified, the default is DAV:ascending. 1143 In the context of the DAV:orderby element, null values are considered 1144 to collate before any actual (i.e., non null) value, including 1145 strings of zero length (this is compatible with [SQL99]). 1147 The "caseless" attribute may be used to indicate case-sensitivity for 1148 comparisons. 1150 5.6.1. Example of Sorting 1152 This sort orders first by last name of the author, and then by size, 1153 in descending order, so that for each author, the largest works 1154 appear first. 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1167 5.7. Boolean Operators: DAV:and, DAV:or, and DAV:not 1169 The DAV:and operator performs a logical AND operation on the 1170 expressions it contains. 1172 The DAV:or operator performs a logical OR operation on the values it 1173 contains. 1175 The DAV:not operator performs a logical NOT operation on the values 1176 it contains. 1178 5.8. DAV:eq 1180 The DAV:eq operator provides simple equality matching on property 1181 values. 1183 The "caseless" attribute may be used with this element. 1185 5.9. DAV:lt, DAV:lte, DAV:gt, DAV:gte 1187 The DAV:lt, DAV:lte, DAV:gt, and DAV:gte operators provide 1188 comparisons on property values, using less-than, less-than or equal, 1189 greater-than, and greater-than or equal respectively. The "caseless" 1190 attribute may be used with these elements. 1192 5.10. DAV:literal 1194 DAV:literal allows literal values to be placed in an expression. 1196 White space in literal values is significant in comparisons. For 1197 consistency with [RFC4918], clients SHOULD NOT specify the attribute 1198 "xml:space" (Section 2.10 of [XML]) to override this behavior. 1200 In comparisons, the contents of DAV:literal SHOULD be treated as 1201 string, with the following exceptions: 1203 o when operand for a comparison with a DAV:getcontentlength 1204 property, it SHOULD be treated as an integer value (the behavior 1205 for non-integer values is undefined), 1207 o when operand for a comparison with a DAV:creationdate or DAV: 1208 getlastmodified property, it SHOULD be treated as a date value in 1209 the ISO-8601 subset defined for the DAV:creationdate property 1210 ([RFC4918], Section 15.1). 1212 o when operand for a comparison with a property for which the type 1213 is known, it MAY be treated according to this type. 1215 5.11. DAV:typed-literal (optional) 1217 There are situations in which a client may want to force a comparison 1218 not to be string-based (as defined for DAV:literal). In these cases, 1219 a typed comparison can be enforced by using DAV:typed-literal 1220 instead. 1222 1223 The data type is specified using the xsi:type attribute defined in 1224 [XS1], Section 2.6.1. If the type is not specified, it defaults to 1225 "xs:string". 1227 A server MUST reject a request with an unknown type. 1229 The comparison evaluates to UNDEFINED if the property value can not 1230 be cast to the specified datatype (see [XPATHFUNC], Section 17). 1232 5.11.1. Example for Typed Numerical Comparison 1234 Consider a set of resources with the dead property "edits" in the 1235 namespace "http://ns.example.org": 1237 +-----+----------------+ 1238 | URI | property value | 1239 +-----+----------------+ 1240 | /a | "-1" | 1241 | /b | "01" | 1242 | /c | "3" | 1243 | /d | "test" | 1244 | /e | (undefined) | 1245 +-----+----------------+ 1247 The expression 1249 1252 1253 3 1254 1256 will evaluate to TRUE for the resources "/a" and "/b" (their property 1257 values can be parsed as type xs:number, and the numerical comparison 1258 evaluates to true), to FALSE for "/c" (property value is compatible, 1259 but numerical comparison evaluates to false) and UNKNOWN for "/d" and 1260 "/e" (the property either is undefined, or its value can not be 1261 parsed as xs:number). 1263 5.12. Support for Matching xml:lang Attributes on Properties 1265 The following two optional operators can be used to express 1266 conditions on the language of a property value (as expressed using 1267 the xml:lang attribute). 1269 5.12.1. DAV:language-defined (optional) 1271 1273 This operator evaluates to TRUE if the language for the value of the 1274 given property is known, FALSE if it isn't and UNKNOWN if the 1275 property itself is not defined. 1277 5.12.2. DAV:language-matches (optional) 1279 1281 This operator evaluates to TRUE if the language for the value of the 1282 given property is known and matches the language name given in the 1283 element, FALSE if it doesn't match and UNKNOWN if the 1284 property itself is not defined. 1286 Languages are considered to match if they are the same, or if the 1287 language of the property value is a sublanguage of the language 1288 specified in the element (see [XPATH], Section 4.3, "lang 1289 function"). 1291 5.12.3. Example of Language-Aware Matching 1293 The expression below will evaluate to TRUE if the property "foobar" 1294 exists and its language is either unknown, English or a sublanguage 1295 of English. 1297 1298 1299 1300 1301 1302 1303 1304 1305 en 1306 1307 1309 5.13. DAV:is-collection 1311 The DAV:is-collection operator allows clients to determine whether a 1312 resource is a collection (that is, whether its DAV:resourcetype 1313 element contains the element DAV:collection). 1315 Rationale: This operator is provided in lieu of defining generic 1316 structure queries, which would suffice for this and for many more 1317 powerful queries, but seems inappropriate to standardize at this 1318 time. 1320 5.13.1. Example of DAV:is-collection 1322 This example shows a search criterion that picks out all and only the 1323 resources in the scope that are collections. 1325 1326 1327 1329 5.14. DAV:is-defined 1331 The DAV:is-defined operator allows clients to determine whether a 1332 property is defined on a resource. The meaning of "defined on a 1333 resource" is found in Section 5.5.3. 1335 Example: 1337 1338 1339 1341 5.15. DAV:like 1343 The DAV:like is an optional operator intended to give simple 1344 wildcard-based pattern matching ability to clients. 1346 The operator takes two arguments. 1348 The first argument is a DAV:prop element identifying a single 1349 property to evaluate. 1351 The second argument is a DAV:literal element that gives the pattern 1352 matching string. 1354 5.15.1. Syntax for the Literal Pattern 1356 pattern = [wildcard] 0*( text [wildcard] ) 1358 wildcard = exactlyone / zeroormore 1359 text = 1*( character / escapeseq ) 1361 exactlyone = "_" 1362 zeroormore = "%" 1363 escapechar = "\" 1364 escapeseq = "\" ( exactlyone / zeroormore / escapechar ) 1366 ; character: see [XML], Section 2.2, minus wildcard / escapechar 1367 character = HTAB / LF / CR ; whitespace 1368 character =/ %x20-24 / %x26-5B / %x5D-5E / %x60-D7FF 1369 character =/ %xE000-FFFD / %x10000-10FFFF 1371 The value for the literal is composed of wildcards separated by 1372 segments of text. Wildcards may begin or end the literal. 1374 The "_" wildcard matches exactly one character. 1376 The "%" wildcard matches zero or more characters 1378 The "\" character is an escape sequence so that the literal can 1379 include "_" and "%". To include the "\" character in the pattern, 1380 the escape sequence "\\" is used. 1382 5.15.2. Example of DAV:like 1384 This example shows how a client might use DAV:like to identify those 1385 resources whose content type was a subtype of image. 1387 1388 1389 1390 image/% 1391 1392 1394 5.16. DAV:contains 1396 The DAV:contains operator is an optional operator that provides 1397 content-based search capability. This operator implicitly searches 1398 against the text content of a resource, not against content of 1399 properties. The DAV:contains operator is intentionally not overly 1400 constrained, in order to allow the server to do the best job it can 1401 in performing the search. 1403 The DAV:contains operator evaluates to a Boolean value. It evaluates 1404 to TRUE if the content of the resource satisfies the search. 1405 Otherwise, it evaluates to FALSE. 1407 Within the DAV:contains XML element, the client provides a phrase: a 1408 single word or whitespace delimited sequence of words. Servers MAY 1409 ignore punctuation in a phrase. Case-sensitivity is left to the 1410 server. 1412 The following things may or may not be done as part of the search: 1413 Phonetic methods such as "soundex" may or may not be used. Word 1414 stemming may or may not be performed. Thesaurus expansion of words 1415 may or may not be done. Right or left truncation may or may not be 1416 performed. The search may be case insensitive or case sensitive. 1417 The word or words may or may not be interpreted as names. Multiple 1418 words may or may not be required to be adjacent or "near" each other. 1419 Multiple words may or may not be required to occur in the same order. 1420 Multiple words may or may not be treated as a phrase. The search may 1421 or may not be interpreted as a request to find documents "similar" to 1422 the string operand. 1424 5.16.1. Result Scoring (DAV:score Element) 1426 Servers SHOULD indicate scores for the DAV:contains condition by 1427 adding a DAV:score XML element to the DAV:response element. Its 1428 value is defined only in the context of a particular query result. 1429 The value is a string representing the score, an integer from zero to 1430 10000 inclusive, where a higher value indicates a higher score (e.g. 1431 more relevant). 1433 Modified DTD fragment for DAV:propstat: 1435 1437 1439 Clients should note that, in general, it is not meaningful to compare 1440 the numeric values of scores from two different query results unless 1441 both were executed by the same underlying search system on the same 1442 collection of resources. 1444 5.16.2. Ordering by Score 1446 To order search results by their score, the DAV:score element may be 1447 added as child to the DAV:orderby element (in place of a DAV:prop 1448 element). 1450 5.16.3. Examples 1452 The example below shows a search for the phrase "Peter Forsberg". 1454 Depending on its support for content-based searching, a server MAY 1455 treat this as a search for documents that contain the words "Peter" 1456 and "Forsberg". 1458 1459 Peter Forsberg 1460 1462 The example below shows a search for resources that contain "Peter" 1463 and "Forsberg". 1465 1466 1467 Peter 1468 Forsberg 1469 1470 1472 5.17. Limiting the Result Set 1474 1475 ;only digits 1477 The DAV:limit XML element contains requested limits from the client 1478 to limit the size of the reply or amount of effort expended by the 1479 server. The DAV:nresults XML element contains a requested maximum 1480 number of DAV:response elements to be returned in the response body. 1481 The server MAY disregard this limit. The value of this element is an 1482 integer. 1484 5.17.1. Relationship to Result Ordering 1486 If the result set is both limited by DAV:limit and ordered according 1487 to DAV:orderby, the results that are included in the response 1488 document must be those that order highest. 1490 5.18. The 'caseless' XML Attribute 1492 The "caseless" attribute allows clients to specify caseless matching 1493 behavior instead of character-by-character matching for DAV: 1494 basicsearch operators. 1496 The possible values for "caseless" are "yes" or "no". The default 1497 value is server-specified. Caseless matching SHOULD be implemented 1498 as defined in section 5.18 of the Unicode Standard ([UNICODE4]). 1500 Support for the "caseless" attribute is optional. A server should 1501 respond with a status of 422 if it is used but cannot be supported. 1503 5.19. Query Schema for DAV:basicsearch 1505 The DAV:basicsearch grammar defines a search criteria that is a 1506 Boolean-valued expression, and allows for an arbitrary set of 1507 properties to be included in the result record. The result set may 1508 be sorted on a set of property values. Accordingly the DTD for 1509 schema discovery for this grammar allows the server to express: 1511 1. the set of properties that may be either searched, returned, or 1512 used to sort, and a hint about the data type of such properties 1514 2. the set of optional operators defined by the resource. 1516 5.19.1. DTD for DAV:basicsearch QSD 1518 1519 1520 1521 1524 1525 1526 1527 1528 1530 The DAV:properties element holds a list of descriptions of 1531 properties. 1533 The DAV:operators element describes the optional operators that may 1534 be used in a DAV:where element. 1536 5.19.2. DAV:propdesc Element 1538 Each instance of a DAV:propdesc element describes the property or 1539 properties in the DAV:prop element it contains. All subsequent 1540 elements are descriptions that apply to those properties. All 1541 descriptions are optional and may appear in any order. Servers 1542 SHOULD support all the descriptions defined here, and MAY define 1543 others. 1545 DASL defines five descriptions. The first, DAV:datatype, provides a 1546 hint about the type of the property value, and may be useful to a 1547 user interface prompting for a value. The remaining four (DAV: 1548 searchable, DAV:selectable, DAV:sortable, and DAV:caseless) identify 1549 portions of the query (DAV:where, DAV:select, and DAV:orderby, 1550 respectively). If a property has a description for a section, then 1551 the server MUST allow the property to be used in that section. These 1552 descriptions are optional. If a property does not have such a 1553 description, or is not described at all, then the server MAY still 1554 allow the property to be used in the corresponding section. 1556 5.19.2.1. DAV:any-other-property 1558 This element can be used in place of DAV:prop to describe properties 1559 of WebDAV properties not mentioned in any other DAV:prop element. 1560 For instance, this can be used to indicate that all other properties 1561 are searchable and selectable without giving details about their 1562 types (a typical scenario for dead properties). 1564 5.19.3. The DAV:datatype Property Description 1566 The DAV:datatype element contains a single XML element that provides 1567 a hint about the domain of the property, which may be useful to a 1568 user interface prompting for a value to be used in a query. Data 1569 types are identified by an element name. Where appropriate, a server 1570 SHOULD use the simple data types defined in [XS2]. 1572 1574 Examples from [XS2], Section 3: 1576 +----------------+---------------------+ 1577 | Qualified name | Example | 1578 +----------------+---------------------+ 1579 | xs:boolean | true, false, 1, 0 | 1580 | xs:string | Foobar | 1581 | xs:dateTime | 1994-11-05T08:15:5Z | 1582 | xs:float | .314159265358979E+1 | 1583 | xs:integer | -259, 23 | 1584 +----------------+---------------------+ 1586 If the data type of a property is not given, then the data type 1587 defaults to xs:string. 1589 5.19.4. The DAV:searchable Property Description 1591 1593 If this element is present, then the server MUST allow this property 1594 to appear within a DAV:where element where an operator allows a 1595 property. Allowing a search does not mean that the property is 1596 guaranteed to be defined on every resource in the scope, it only 1597 indicates the server's willingness to check. 1599 5.19.5. The DAV:selectable Property Description 1601 1603 This element indicates that the property may appear in the DAV:select 1604 element. 1606 5.19.6. The DAV:sortable Property Description 1608 This element indicates that the property may appear in the DAV: 1609 orderby element. 1611 1613 5.19.7. The DAV:caseless Property Description 1615 This element only applies to properties whose data type is "xs: 1616 string" and derived data types as per the DAV:datatype property 1617 description. Its presence indicates that compares performed for 1618 searches, and the comparisons for ordering results on the string 1619 property will be caseless (the default is character-by-character). 1621 1623 5.19.8. The DAV:operators XML Element 1625 The DAV:operators element describes every optional operator supported 1626 in a query. (Mandatory operators are not listed since they are 1627 mandatory and permit no variation in syntax.). All optional 1628 operators that are supported MUST be listed in the DAV:operators 1629 element. The listing for an operator consists of the operator (as an 1630 empty element), followed by one element for each operand. The 1631 operand MUST be either DAV:operand-property, DAV:operand-literal or 1632 DAV:operand-typed-literal, which indicate that the operand in the 1633 corresponding position is a property, a literal value or a typed 1634 literal value, respectively. If an operator is polymorphic (allows 1635 more than one operand syntax) then each permitted syntax MUST be 1636 listed separately. 1638 1639 1640 1641 1643 1645 5.19.9. Example of Query Schema for DAV:basicsearch 1647 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1675 This response lists four properties. The data type of the last three 1676 properties is not given, so it defaults to xs:string. All are 1677 selectable, and the first three may be searched. All but the last 1678 may be used in a sort. Of the optional DAV operators, DAV:is-defined 1679 and DAV:like are supported. 1681 Note: The schema discovery defined here does not provide for 1682 discovery of supported values of the "caseless" attribute. This may 1683 require that the reply also list the mandatory operators. 1685 6. Internationalization Considerations 1687 Properties may be language-tagged using the xml:lang attribute (see 1688 [RFC4918], Section 4.3). The optional operators DAV:language-defined 1689 (Section 5.12.1) and DAV:language-matches (Section 5.12.2) allow to 1690 express conditions on the language tagging information. 1692 7. Security Considerations 1694 This section is provided to detail issues concerning security 1695 implications of which DASL applications need to be aware. All of the 1696 security considerations of HTTP/1.1 also apply to DASL. In addition, 1697 this section will include security risks inherent in searching and 1698 retrieval of resource properties and content. 1700 A query must not allow one to retrieve information about values or 1701 existence of properties that one could not obtain via PROPFIND. (e.g. 1702 by use in DAV:orderby, or in expressions on properties.) 1704 A server should prepare for denial of service attacks. For example a 1705 client may issue a query for which the result set is expensive to 1706 calculate or transmit because many resources match or must be 1707 evaluated. 1709 7.1. Implications of XML External Entities 1711 XML supports a facility known as "external entities", defined in 1712 Section 4.2.2 of [XML], which instruct an XML processor to retrieve 1713 and perform an inline include of XML located at a particular URI. An 1714 external XML entity can be used to append or modify the document type 1715 declaration (DTD) associated with an XML document. An external XML 1716 entity can also be used to include XML within the content of an XML 1717 document. For non-validating XML, such as the XML used in this 1718 specification, including an external XML entity is not required by 1719 [XML]. However, [XML] does state that an XML processor may, at its 1720 discretion, include the external XML entity. 1722 External XML entities have no inherent trustworthiness and are 1723 subject to all the attacks that are endemic to any HTTP GET request. 1724 Furthermore, it is possible for an external XML entity to modify the 1725 DTD, and hence affect the final form of an XML document, in the worst 1726 case significantly modifying its semantics, or exposing the XML 1727 processor to the security risks discussed in [RFC3023]. Therefore, 1728 implementers must be aware that external XML entities should be 1729 treated as untrustworthy. 1731 There is also the scalability risk that would accompany a widely 1732 deployed application which made use of external XML entities. In 1733 this situation, it is possible that there would be significant 1734 numbers of requests for one external XML entity, potentially 1735 overloading any server which fields requests for the resource 1736 containing the external XML entity. 1738 8. Scalability 1740 Query grammars are identified by URIs. Applications SHOULD not 1741 attempt to retrieve these URIs even if they appear to be retrievable 1742 (for example, those that begin with "http://") 1744 9. IANA Considerations 1746 This document uses the namespace defined in Section 21 of [RFC4918] 1747 for XML elements. 1749 9.1. HTTP Headers 1751 This document specifies the HTTP header listed below, to be added to 1752 the HTTP header registry defined in [RFC3864]. 1754 9.1.1. DASL 1756 Header field name: DASL 1758 Applicable protocol: http 1760 Status: Experimental 1762 Author/Change controller: IETF 1764 Specification document: this specification (Section 3.2) 1766 10. Contributors 1768 This document is based on prior work on the DASL protocol done by the 1769 WebDAV DASL working group until the year 2000 -- namely by Alan 1770 Babich, Jim Davis, Rick Henderson, Dale Lowry, Saveen Reddy and 1771 Surendra Reddy. 1773 11. Acknowledgements 1775 This document has benefited from thoughtful discussion by Lisa 1776 Dusseault, Sung Kim, Elias Sinderson, Martin Wallmer, Keith 1777 Wannamaker, Jim Whitehead and Kevin Wiggen. 1779 12. References 1780 12.1. Normative References 1782 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1783 Requirement Levels", BCP 14, RFC 2119, March 1997. 1785 [RFC2616] Fielding, R., Gettys, J., Mogul, J., Nielsen, H., 1786 Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext 1787 Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. 1789 [RFC3023] Makoto, M., St.Laurent, S., and D. Kohn, "XML Media 1790 Types", RFC 3023, January 2001. 1792 [RFC3253] Clemm, G., Amsden, J., Ellison, T., Kaler, C., and J. 1793 Whitehead, "Versioning Extensions to WebDAV", RFC 3253, 1794 March 2002. 1796 [RFC3744] Clemm, G., Reschke, J., Sedlar, E., and J. Whitehead, "Web 1797 Distributed Authoring and Versioning (WebDAV) Access 1798 Control Protocol", RFC 3744, May 2004. 1800 [RFC4234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax 1801 Specifications: ABNF", RFC 4234, October 2005. 1803 [RFC4437] Whitehead, J., Clemm, G., and J. Reschke, Ed., "Web 1804 Distributed Authoring and Versioning (WebDAV) 1805 Redirect Reference Resources", RFC 4437, March 2006. 1807 [RFC4918] Dusseault, L., Ed., "HTTP Extensions for Web Distributed 1808 Authoring and Versioning (WebDAV)", RFC 4918, June 2007. 1810 [XML] Bray, T., Paoli, J., Sperberg-McQueen, C., Maler, E., and 1811 F. Yergeau, "Extensible Markup Language (XML) 1.0 (Fourth 1812 Edition)", W3C REC-xml-20060816, August 2006, 1813 . 1815 [XPATH] Clark, J. and S. DeRose, "XML Path Language (XPath) 1816 Version 1.0", W3C REC-xpath-19991116, November 1999, 1817 . 1819 [XPATHFUNC] 1820 Malhotra, A., Melton, J., and N. Walsh, "XQuery 1.0 and 1821 XPath 2.0 Functions and Operators", W3C REC-xpath- 1822 functions-20070123, January 2007, 1823 . 1825 [XS1] Thompson, H., Beech, D., Maloney, M., Mendelsohn, N., and 1826 World Wide Web Consortium, "XML Schema Part 1: 1827 Structures", W3C REC-xmlschema-1-20041028, October 2004, 1828 . 1830 [XS2] Biron, P., Malhotra, A., and World Wide Web Consortium, 1831 "XML Schema Part 2: Datatypes Second Edition", W3C REC- 1832 xmlschema-2-20041028, October 2004, 1833 . 1835 12.2. Informative References 1837 [DASL] Reddy, S., Lowry, D., Reddy, S., Henderson, R., Davis, J., 1838 and A. Babich, "DAV Searching & Locating", 1839 draft-ietf-dasl-protocol-00 (work in progress), July 1999. 1841 [DASLREQ] Davis, J., Reddy, S., and J. Slein, "Requirements for DAV 1842 Searching and Locating", February 1999, . 1846 This is an updated version of the Internet Draft 1847 "draft-ietf-dasl-requirements-00", but obviously never was 1848 submitted to the IETF. 1850 [RFC3864] Klyne, G., Nottingham, M., and J. Mogul, "Registration 1851 Procedures for Message Header Fields", BCP 90, RFC 3864, 1852 September 2004. 1854 [RFC4790] Newman, C., Duerst, M., and A. Gulbrandsen, "Internet 1855 Application Protocol Collation Registry", RFC 4790, 1856 March 2007. 1858 [SQL99] Milton, J., "Database Language SQL Part 2: Foundation 1859 (SQL/Foundation)", ISO ISO/IEC 9075-2:1999 (E), July 1999. 1861 [UNICODE4] 1862 The Unicode Consortium, "The Unicode Standard - Version 1863 4.0", Addison-Wesley , August 2003, 1864 . 1866 ISBN 0321185781 [1] 1868 [draft-ietf-webdav-bind] 1869 Clemm, G., Crawford, J., Reschke, J., Ed., and J. 1870 Whitehead, "Binding Extensions to Web Distributed 1871 Authoring and Versioning (WebDAV)", 1872 draft-ietf-webdav-bind-19 (work in progress), July 2007. 1874 URIs 1876 [1] 1878 Appendix A. Three-Valued Logic in DAV:basicsearch 1880 ANSI standard three valued logic is used when evaluating the search 1881 condition (as defined in the ANSI standard SQL specifications, for 1882 example in ANSI X3.135-1992, section 8.12, pp. 188-189, section 8.2, 1883 p. 169, General Rule 1)a), etc.). 1885 ANSI standard three valued logic is undoubtedly the most widely 1886 practiced method of dealing with the issues of properties in the 1887 search condition not having a value (e.g., being null or not defined) 1888 for the resource under scan, and with undefined expressions in the 1889 search condition (e.g., division by zero, etc.). Three valued logic 1890 works as follows. 1892 Undefined expressions are expressions for which the value of the 1893 expression is not defined. Undefined expressions are a completely 1894 separate concept from the truth value UNKNOWN, which is, in fact, 1895 well defined. Property names and literal constants are considered 1896 expressions for purposes of this section. If a property in the 1897 current resource under scan has not been set to a value, then the 1898 value of that property is undefined for the resource under scan. 1899 DASL 1.0 has no arithmetic division operator, but if it did, division 1900 by zero would be an undefined arithmetic expression. 1902 If any subpart of an arithmetic, string, or datetime subexpression is 1903 undefined, the whole arithmetic, string, or datetime subexpression is 1904 undefined. 1906 There are no manifest constants to explicitly represent undefined 1907 number, string, or datetime values. 1909 Since a Boolean value is ultimately returned by the search condition, 1910 arithmetic, string, and datetime expressions are always arguments to 1911 other operators. Examples of operators that convert arithmetic, 1912 string, and datetime expressions to Boolean values are the six 1913 relational operators ("greater than", "less than", "equals", etc.). 1914 If either or both operands of a relational operator have undefined 1915 values, then the relational operator evaluates to UNKNOWN. 1916 Otherwise, the relational operator evaluates to TRUE or FALSE, 1917 depending upon the outcome of the comparison. 1919 The Boolean operators DAV:and, DAV:or and DAV:not are evaluated 1920 according to the following rules: 1922 not UNKNOWN = UNKNOWN 1923 UNKNOWN and TRUE = UNKNOWN 1925 UNKNOWN and FALSE = FALSE 1927 UNKNOWN and UNKNOWN = UNKNOWN 1929 UNKNOWN or TRUE = TRUE 1931 UNKNOWN or FALSE = UNKNOWN 1933 UNKNOWN or UNKNOWN = UNKNOWN 1935 Appendix B. Unresolved Issues 1937 This Section summarizes issues which have been raised during the 1938 development of this specification, but for which no resolution could 1939 be found with the constraints in place. At the time of this writing, 1940 not resolving these issues and publishing as "Experimental" seemed to 1941 make more sense than not publishing at all. Future revisions of this 1942 specification should revisit these issues, though. 1944 B.1. Collation Support 1946 Matching and sorting of textual data relies on collations. With 1947 respect to WebDAV SEARCH, a combination of various design approaches 1948 could be used: 1950 o Require server support for specific collations. 1952 o Require that the server can advertise which collations it 1953 supports. 1955 o Allow a client to select the collation to be used. 1957 In practice, the current implementations of WebDAV SEARCH usually 1958 rely on backends they do not control, and for which collation 1959 information may not be available. To make things worse, 1960 implementations of the DAV:basicsearch grammar frequently need to 1961 combine data from multiple underlying stores (such as properties and 1962 full text content), and thus collation support may vary based on the 1963 operator or property. 1965 Another open issue is what collation formalism to support. At the 1966 time of this writing, the two specifications below seem to provide 1967 the necessary framework and thus may be the base for future work on 1968 collation support in WebDAV SEARCH: 1970 1. "Internet Application Protocol Collation Registry" ([RFC4790]). 1972 2. "XQuery 1.0 and XPath 2.0 Functions and Operators" ([XPATHFUNC], 1973 Section 7.3.1). 1975 B.2. Count 1977 DAV:basicsearch does not allow a request that returns the count of 1978 matching resources. 1980 A protocol extension would need to extend DAV:select, and also modify 1981 the DAV:multistatus response format. 1983 B.3. Matching Media Types 1985 Matching media types using the DAV:getcontenttype property and the 1986 DAV:like operator is hard due to DAV:getcontenttype also allowing 1987 parameters. A new operator specifically designed for the purpose of 1988 matching media types probably would simplify things a lot. See 1990 for a specific proposal. 1992 B.4. Query by Name 1994 DAV:basicsearch operates on the properties (and optionally the 1995 contents) of resources, and thus doesn't really allow matching on 1996 parts of the resource's URI. See for a proposed extension 1998 covering this use case. 2000 B.5. Result Paging 2002 A frequently discussed feature is the ability to specifically request 2003 the "next" set of results, when either the server decided to truncate 2004 the result, or the client explicitly asked for a limited set (for 2005 instance, using the DAV:limit element defined in Section 5.17). 2007 In this case, it would be desirable if the server could keep the full 2008 query result, and provide a new URI identifying a separate result 2009 resource, allowing the client to retrieve additional data through GET 2010 requests, and remove the result through a DELETE request. 2012 Appendix C. Change Log (to be removed by RFC Editor before publication) 2013 C.1. From draft-davis-dasl-protocol-xxx 2015 Feb 14, 1998 Initial Draft 2017 Feb 28, 1998 Referring to DASL as an extension to HTTP/1.1 rather 2018 than DAV. 2019 Added new sections "Notational Conventions", "Protocol Model", 2020 "Security Considerations". 2021 Changed section 3 to "Elements of Protocol". 2022 Added some stuff to introduction. 2023 Added "result set" terminology. 2024 Added "IANA Considerations". 2026 Mar 9, 1998 Moved sub-headings of "Elements of Protocol" to first 2027 level and removed "Elements of Protocol" Heading. 2028 Added an sentence in introduction explaining that this is a 2029 "sketch" of a protocol. 2031 Mar 11, 1998 Added orderby, data typing, three valued logic, query 2032 schema property, and element definitions for schema for 2033 basicsearch. 2035 April 8, 1998 - made changes based on last week's DASL BOF. 2037 May 8, 1998 Removed most of DAV:searcherror; converted to DAV: 2038 searchredirect 2039 Altered DAV:basicsearch grammar to use avoid use of ANY in DTD 2041 June 17, 1998 -Added details on Query Schema Discovery 2042 -Shortened list of data types 2044 June 23, 1998 moved data types before change history 2045 rewrote the data types section 2046 removed the casesensitive element and replace with the 2047 casesensitive attribute 2048 added the casesensitive attribute to the DTD for all operations 2049 that might work on a string 2051 Jul 20, 1998 A series of changes. See Author's meeting minutes for 2052 details. 2054 July 28, 1998 Changes as per author's meeting. QSD uses SEARCH, not 2055 PROPFIND. 2056 Moved text around to keep concepts nearby. 2057 Boolean literals are 1 and 0, not T and F. 2058 contains changed to contentspassthrough. 2059 Renamed rank to score. 2061 July 28, 1998 Added Dale Lowry as Author 2063 September 4, 1998 Added 422 as response when query lists 2064 unimplemented operators. 2065 DAV:literal declares a default value for xml:space, 'preserve' 2066 (see XML spec, section 2.10) 2067 moved to new XML namespace syntax 2069 September 22, 1998 Changed "simplesearch" to "basicsearch" 2070 Changed isnull to isdefined 2071 Defined NULLness as having a 404 or 403 response 2072 used ENTITY syntax in DTD 2073 Added redirect 2075 October 9, 1998 Fixed a series of typographical and formatting 2076 errors. 2077 Modified the section of three-valued logic to use a table rather 2078 than a text description of the role of UNKNOWN in expressions. 2080 November 2, 1998 Added the DAV:contains operator. 2081 Removed the DAV:contentpassthrough operator. 2083 November 18, 1998 Various author comments for submission 2085 June 3, 1999 Cosmetic and minor editorial changes only. Fix nits 2086 reported by Jim Whitehead in email of April 26, 1999. Converted 2087 to HTML from Word 97, manually. 2089 April 20, 2000 Removed redirection feature, since 301/302 suffices. 2090 Removed Query Schema Discovery (former chapter 4). Everyone 2091 agrees this is a useful feature, but it is apparently too 2092 difficult to define at this time, and it is not essential for 2093 DASL. 2095 C.2. since start of draft-reschke-webdav-search 2097 October 09, 2001 Added Julian Reschke as author. 2098 Chapter about QSD re-added. 2099 Formatted into RFC2629-compliant XML document. 2100 Added first comments. 2101 ID version number kicked up to draft-dasl-protocol-03. 2103 October 17, 2001 Updated address information for Jim Davis. 2104 Added issue of datatype vocabularies. 2105 Updated issue descriptions for grammar discovery, added issues on 2106 query schema DTD. 2107 Fixed typos in XML examples. 2109 December 17, 2001 Re-introduced split between normative and non- 2110 normative references. 2112 January 05, 2002 Version bumped up to 04. Started work on resolving 2113 the issues identified in the previous version. 2115 January 14, 2002 Fixed some XML typos. 2117 January 22, 2002 Closed issues naming-of-elements. Fixed query 2118 search DTD and added option to discover properties of "other" 2119 (non-listed) properties. 2121 January 25, 2002 Changed into private submission and added reference 2122 to historic DASL draft. Marked reference to DASL requirements 2123 non-normative. 2124 Updated reference to latest deltav spec. 2126 January 29, 2002 Added feedback from and updated contact info for 2127 Alan Babich. 2128 Included open issues collected in 2129 http://www.webdav.org/dasl/protocol/issues.html. 2131 February 8, 2002 Made sure that all artwork fits into 72 characters 2132 wide text. 2134 February 18, 2002 Changed Insufficient storage handling 2135 (multistatus). Moved is-collection to operators and added to DTD. 2136 Made scope/depth mandatory. 2138 February 20, 2002 Updated reference to SQL99. 2140 February 28, 2002 "Non-normative References" -> "Informative 2141 References". Abstract updated. Consistently specify a charset 2142 when using text/xml (no change bars). Do not attempt to define 2143 PROPFIND's entity encoding (take out specific references to text/ 2144 xml). Remove irrelevant headers (Connection:) from examples (no 2145 change bars). Added issue on querying based on DAV:href. Updated 2146 introduction to indicate relationship to DASL draft. Updated HTTP 2147 reference from RFC2068 to RFC2616. Updated XML reference to XML 2148 1.0 2nd edition. 2150 March 1, 2002 Removed superfluous namespace decl in 2.4.2. Reopened 2151 JW14 and suggest to drop xml:space support. 2153 March 3, 2002 Removed "xml:space" feature on DAV:literal. Added 2154 issue about string comparison vs. collations vs. xml:lang. 2155 Updated some of the open issues with details from JimW's original 2156 mail in April 1999. Resolved scope vs relative URI references. 2158 Resolved issues about DAV:ascending (added to index) and the BNF 2159 for DAV:like (changed "octets" to "characters"). 2161 March 8, 2002 Updated reference to DeltaV (now RFC3253). Added 2162 Martin Wallmer's comments, moved JW5 into DAV:basicsearch section. 2164 March 11, 2002 Closed open issues regaring the type of search 2165 arbiters (JW3) and their discovery (JW9). Rephrased requirements 2166 on multistatus response bodies (propstat only if properties were 2167 selected, removed requirement for responsedescription). 2169 March 23, 2002 RFC2376 -> RFC3023. Added missing first names of 2170 authors. OPTIONS added to example for DAV:supported-method-set. 2172 C.3. since draft-reschke-webdav-search-00 2174 March 29, 2002 Abstract doesn't refer to DASL WG anymore. 2176 April 7, 2002 Fixed section title (wrong property name supported- 2177 search-grammar-set. Changed DAV:casesensitve to "casesensitive" 2178 (it wasn't in the DAV: namespace after all). 2180 May 28, 2002 Updated some issues with Jim Davis's comments. 2182 June 10, 2002 Added proposal for different method for query schema 2183 discovery, not using pseudo-properties. 2185 June 25, 2002 QSD marshalling rewritten. Added issue "isdefined- 2186 optional". 2188 C.4. since draft-reschke-webdav-search-01 2190 July 04, 2002 Added issue "scope-collection". 2192 July 08, 2002 Closed issue "scope-collection". 2194 August 12, 2002 Added issues "results-vs-binds" and "select- 2195 allprop". 2197 October 22, 2002 Added issue "undefined-expressions". 2199 November 18, 2002 Changed example host names (no change tracking). 2201 November 25, 2002 Updated issue "DB2/DB7". Closed issues "undefined 2202 expressions", "isdefined-optional" and "select-allprop". 2204 C.5. since draft-reschke-webdav-search-02 2206 November 27, 2002 Added issues "undefined-properties", "like- 2207 exactlyone" and "like-wildcard-adjacent". Closed issue "query-on- 2208 href". Added acknowledgments section. 2210 November 28, 2002 Closed issue "like-exactlyone". Added issue 2211 "mixed-content-properties". 2213 December 14, 2002 Closed issues "undefined-properties", "results-vs- 2214 binds", "mixed-content-properties". Updated issue "like-wildcard- 2215 adjacent". Added informative reference to BIND draft. Updated 2216 reference to ACL draft. 2218 January 9, 2003 Removed duplicate section on invalid scopes. Added 2219 comments to some open issues. Closed issues JW25/26, score- 2220 pseudo-property and null-ordering. 2222 January 10, 2003 Issue limit-vs-ordering plus resolution. Closed 2223 issue JW17/JW24b. 2225 January 14, 2003 New issue order-precedence. Started resolution of 2226 DB2/DB7. 2228 January 15, 2003 Started spec of DAV:typed-literal. 2230 January 17, 2003 Fix one DAV:like/DAV:getcontenttype example (add / 2231 to like expression, make case-insensitive). 2233 January 28, 2003 Update issue(s) result-truncation, JW24d. Fixed 2234 response headers in OPTIONS example. Added issue qsd-optional. 2235 Closed issue(s) order-precedence, case-insensitivity-name. 2237 February 07, 2003 Added issue scope-vs-versions. score-pseudo- 2238 property: allow DAV:orderby to explicitly specify DAV:score. 2240 C.6. since draft-reschke-webdav-search-03 2242 April 24, 2003 Fixed two "?" vs "_" issues (not updated in last 2243 draft). 2245 June 13, 2003 Improve index. 2247 C.7. since draft-reschke-webdav-search-04 2248 July 7, 2003 Typo fixed (propstat without status element). 2250 August 11, 2003 Remove superfluous IP and copyright sections. 2252 September 09, 2003 Added issues "2.4-multiple-uris" and "5.1-name- 2253 filtering". 2255 October 06, 2003 Fix misplaced section end in 5.11, add table 2256 formatting. Enhance table formatting in 5.18.3. Updated ACL and 2257 BIND references. Added XPATH reference. Closed issue JW24d by 2258 adding new optional operators. Updated more open issues, added 2259 issues from January meeting. Add K. Wiggen to Acknowledgements. 2260 Add Contributors section for the authors of the original draft. 2261 Close issue "scope-vs-versions" (optional feature added). Close 2262 (new) issue "1.3-import-DTD-terminology". Add issue "1.3-import- 2263 requirements-terminology". 2265 October 07, 2003 Typos fixed. Moved statement about DAV: namespace 2266 usage into separate (sub-)section. Closed "1.3-import- 2267 requirements-terminology". Update I18N Considerations with new 2268 xml:lang support info (see issue JW24d). Close issue "DB2/DB7" 2269 (remaining typing issues are now summarized in issue "typed- 2270 literal"). Fix misplaced section end in section 7. Started 2271 change to use RFC3253-style method definitions and error 2272 marshalling. 2274 October 08, 2003 Remove obsolete language that allowed reporting 2275 invalid scopes and such inside multistatus. Add new issue "5.4.2- 2276 scope-vs-redirects". 2278 C.8. since draft-reschke-webdav-search-05 2280 October 11, 2003 Separate DAV:basicsearch DTD into separate figures 2281 for better maintainability. Update DTD with language-* operators 2282 and typed-literal element (optional). 2284 October 14, 2003 Close issue "5.4.2-multiple-scope". 2286 November 04, 2003 Update reference from CaseMap to UNICODE4, section 2287 5.18. 2289 November 16, 2003 Updated issue "5.1-name-filtering". 2291 November 24, 2003 Reformatted scope description (collection vs. non- 2292 collection). 2294 November 30, 2003 Add issue "5_media_type_match". 2296 February 6, 2004 Updated all references. 2298 C.9. since draft-reschke-webdav-search-06 2300 July 05, 2004 Fix table in Appendix "Three-Valued Logic in DAV: 2301 basicsearch". 2303 September 14, 2004 Fix inconsistent DTD in section 5.2 and 5.4 for 2304 scope element. 2306 September 30, 2004 Rewrite editorial note and abstract. Update 2307 references (remove unneeded XMLNS, update ref to ACL and BIND 2308 specs). 2310 C.10. since draft-reschke-webdav-search-07 2312 October 01, 2004 Fix previous section heading (no change tracking). 2314 October 13, 2004 Fix DTD entry for is-collection. 2316 November 1, 2004 Fix DTD fragment query-schema-discovery. 2318 December 11, 2004 Update BIND reference. 2320 January 01, 2005 Fix DASL and DASLREQ references. 2322 February 06, 2005 Update XS2 reference. 2324 February 11, 2005 Rewrite "like" and "DASL" (response header) 2325 grammar in ABNF. 2327 May 5, 2005 Update references. Close issue "abnf" (only use ABNF 2328 when applicable). 2330 C.11. since draft-reschke-webdav-search-08 2332 May 06, 2005 Fix document title. 2334 September 25, 2005 Update BIND reference. 2336 October 05, 2005 Update RFC4234 reference. 2338 October 22, 2005 Author's address update. 2340 February 12, 2006 Update BIND reference. 2342 March 16, 2006 Add typed literals to QSD. 2344 August 20, 2006 Update XML reference. 2346 August 28, 2006 Add issues "5.3-select-count" (open) and "5.4- 2347 clarify-depth" (resolved). Update BIND reference (again). 2349 C.12. since draft-reschke-webdav-search-09 2351 December 1, 2006 Fix ABNF for DASL header. 2353 December 16, 2006 Close issue "qsd-optional", leave QSD optional. 2354 Close issue "2.4-multiple-uris", suggesting that servers should 2355 only return one response element per resource in case of multiple 2356 bindings. Add and resolve issues "authentication" and "cleanup- 2357 iana" (adding the header registration for "DASL"). Re-write 2358 rational for using the DAV: namespace, although this is a non-WG 2359 submission. 2361 January 4, 2007 Close issue "JW16b/JW24a", being related to 2362 "language-comparison". Add Appendix B. Close issues "language- 2363 comparison", "5_media_type_match", "5.1-name-filtering" and "5.3- 2364 select-count" as "won't fix", and add appendices accordingly. 2366 January 24, 2007 Update BIND reference. Close issue "5.4.2-scope- 2367 vs-redirects". Close issue "typed-literal": specify in terms of 2368 the XPATH 2.9 casting mechanism. Close issue "1.3-apply- 2369 condition-code-terminology" (no changes). 2371 C.13. since draft-reschke-webdav-search-10 2373 January 29, 2007 Issue "result-truncation": Add appendix describing 2374 the open issue of Result Paging. Describe the mechanism of 2375 marshalling truncated results in a new normative subsection (leave 2376 the actual example where it was). Add and resolve issues 2377 "rfc2606-compliance" and "response-format". Update contact 2378 information for Alan Babich, Jim Davis and Surendra Reddy (no 2379 change tracking). 2381 February 8, 2007 Update BIND reference. 2383 C.14. since draft-reschke-webdav-search-11 2385 Update: draft-newman-i18n-comparator-14 is RFC4790. Update: RFC2518 2386 replaced by draft-ietf-webdav-rfc2518bis. Updated BIND reference. 2387 Minor tweaks to intro (document organization and relation to DASL). 2389 C.15. since draft-reschke-webdav-search-12 2391 Update: draft-ietf-webdav-rfc2518bis replaced by RFC4918. Updated 2392 BIND reference. 2394 Appendix D. Resolved issues (to be removed by RFC Editor before 2395 publication) 2397 Issues that were either rejected or resolved in this version of this 2398 document. 2400 D.1. rfc4918 2402 Type: edit 2404 julian.reschke@greenbytes.de (2007-06-30): Update RFC2518bis 2405 reference to RFC4918. 2407 Resolution (2007-06-30): Done. 2409 Appendix E. Open issues (to be removed by RFC Editor prior to 2410 publication) 2412 E.1. edit 2414 Type: edit 2416 julian.reschke@greenbytes.de (2004-07-05): Umbrella issue for 2417 editorial fixes/enhancements. 2419 Index 2421 C 2422 caseless attribute 27, 33 2423 Condition Names 2424 DAV:search-grammar-discovery-supported (pre) 9 2425 DAV:search-grammar-supported (pre) 9 2426 DAV:search-multiple-scope-supported (pre) 9 2427 DAV:search-scope-valid (pre) 9 2428 Criteria 5 2430 D 2431 DAV:and 26 2432 DAV:ascending 26 2433 DAV:contains 31 2434 DAV:depth 23 2435 DAV:descending 26 2436 DAV:eq 27 2437 caseless attribute 27 2438 DAV:from 23 2439 DAV:gt 27 2440 DAV:gte 27 2441 DAV:include-versions 23 2442 DAV:is-collection 29 2443 DAV:is-defined 30 2444 DAV:language-defined 29 2445 DAV:language-matches 29 2446 DAV:like 30 2447 DAV:limit 33 2448 DAV:literal 27 2449 DAV:lt 27 2450 DAV:lte 27 2451 DAV:not 26 2452 DAV:nresults 33 2453 DAV:or 26 2454 DAV:orderby 26 2455 DAV:scope 23 2456 DAV:score 32 2457 relationship to DAV:orderby 33 2458 DAV:search-grammar-discovery-supported precondition 9 2459 DAV:search-grammar-supported precondition 9 2460 DAV:search-multiple-scope-supported precondition 9 2461 DAV:search-scope-valid precondition 9 2462 DAV:select 23 2463 DAV:supported-query-grammar-set property 14 2464 DAV:typed-literal 27 2465 DAV:where 24 2467 M 2468 Methods 2469 SEARCH 8 2471 O 2472 OPTIONS method 13 2473 DASL response header 14 2475 P 2476 Properties 2477 DAV:supported-query-grammar-set 14 2479 Q 2480 Query Grammar Discovery 13 2481 using live property 14 2482 using OPTIONS 13 2483 Query Grammar 6 2484 Query Schema 6 2485 Query 5 2487 R 2488 Result Record Definition 6 2489 Result Record 6 2490 Result Set Truncation 2491 Example 10 2492 Result Set 6 2493 Result 6 2495 S 2496 Scope 6 2497 SEARCH method 8 2498 Search Modifier 6 2499 Sort Specification 6 2501 Authors' Addresses 2503 Julian F. Reschke (editor) 2504 greenbytes GmbH 2505 Hafenweg 16 2506 Muenster, NW 48155 2507 Germany 2509 Phone: +49 251 2807760 2510 Email: julian.reschke@greenbytes.de 2511 URI: http://greenbytes.de/tech/webdav/ 2513 Surendra Reddy 2514 Optena Corporation 2515 2860 Zanker Road, Suite 201 2516 San Jose, CA 95134 2517 U.S.A. 2519 Phone: +1 408 321 9006 2520 Email: skreddy@optena.com 2521 Jim Davis 2522 27 Borden Street 2523 Toronto, Ontario M5S 2M8 2524 Canada 2526 Phone: +1 416 929 5854 2527 Email: jrd3@alum.mit.edu 2528 URI: http://www.econetwork.net/~jdavis 2530 Alan Babich 2531 Filenet, an IBM company 2532 3565 Harbor Blvd. 2533 Costa Mesa, CA 92626 2534 U.S.A. 2536 Phone: +1 714 327 3403 2537 Email: ababich@us.ibm.com 2539 Full Copyright Statement 2541 Copyright (C) The IETF Trust (2007). 2543 This document is subject to the rights, licenses and restrictions 2544 contained in BCP 78, and except as set forth therein, the authors 2545 retain all their rights. 2547 This document and the information contained herein are provided on an 2548 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS 2549 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND 2550 THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS 2551 OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF 2552 THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED 2553 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 2555 Intellectual Property 2557 The IETF takes no position regarding the validity or scope of any 2558 Intellectual Property Rights or other rights that might be claimed to 2559 pertain to the implementation or use of the technology described in 2560 this document or the extent to which any license under such rights 2561 might or might not be available; nor does it represent that it has 2562 made any independent effort to identify any such rights. Information 2563 on the procedures with respect to rights in RFC documents can be 2564 found in BCP 78 and BCP 79. 2566 Copies of IPR disclosures made to the IETF Secretariat and any 2567 assurances of licenses to be made available, or the result of an 2568 attempt made to obtain a general license or permission for the use of 2569 such proprietary rights by implementers or users of this 2570 specification can be obtained from the IETF on-line IPR repository at 2571 http://www.ietf.org/ipr. 2573 The IETF invites any interested party to bring to its attention any 2574 copyrights, patents or patent applications, or other proprietary 2575 rights that may cover technology that may be required to implement 2576 this standard. Please address the information to the IETF at 2577 ietf-ipr@ietf.org. 2579 Acknowledgment 2581 Funding for the RFC Editor function is provided by the IETF 2582 Administrative Support Activity (IASA).