idnits 2.17.1 draft-reschke-webdav-search-12.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 2559. -- Found old boilerplate from RFC 3979, Section 5, paragraph 1 on line 2570. -- Found old boilerplate from RFC 3979, Section 5, paragraph 2 on line 2577. -- Found old boilerplate from RFC 3979, Section 5, paragraph 3 on line 2583. 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 (April 3, 2007) is 6233 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: October 5, 2007 Optena 6 J. Davis 8 A. Babich 9 Filenet 10 April 3, 2007 12 Web Distributed Authoring and Versioning (WebDAV) SEARCH 13 draft-reschke-webdav-search-12 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 October 5, 2007. 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 . . . . . . . . 10 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 . . . . . . . . 11 81 2.3.4. Example: Result Set Truncation . . . . . . . . . . . . 12 82 2.4. Unsuccessful Responses . . . . . . . . . . . . . . . . . . 12 83 2.4.1. Example of an Invalid Scope . . . . . . . . . . . . . 13 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 . . . . . . . . . . . . . . . . 15 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) . . . . . . . . . . . . . . . . . . . . 45 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 . . . . . . . . . . . 50 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 . . . . . . . . . . . 53 178 Appendix D. Resolved issues (to be removed by RFC Editor 179 before publication) . . . . . . . . . . . . . . . . . 53 180 D.1. update-webdav . . . . . . . . . . . . . . . . . . . . . . 53 181 Appendix E. Open issues (to be removed by RFC Editor prior to 182 publication) . . . . . . . . . . . . . . . . . . . . 53 183 E.1. edit . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 184 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 185 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 55 186 Intellectual Property and Copyright Statements . . . . . . . . . . 57 188 1. Introduction 190 1.1. DASL 192 This document defines Web Distributed Authoring and Versioning 193 (WebDAV) SEARCH, an application of HTTP/1.1 forming a lightweight 194 search protocol to transport queries and result sets that allows 195 clients to make use of server-side search facilities. It is based on 196 the expired internet draft for DAV Searching & Locating [DASL]. 197 [DASLREQ] describes the motivation for DASL. In this specification, 198 the terms "WebDAV SEARCH" and "DASL" are used interchangeably. 200 DASL minimizes the complexity of clients so as to facilitate 201 widespread deployment of applications capable of utilizing the DASL 202 search mechanisms. 204 DASL consists of: 206 o the SEARCH method and the request/response formats defined for it 207 (Section 2), 209 o feature discovery through the "DASL" response header and the 210 optional DAV:supported-grammar-set property (Section 3), 212 o optional grammar schema discovery (Section 4) and 214 o one mandatory grammar: DAV:basicsearch (Section 5). 216 1.2. Relationship to DAV 218 DASL relies on the resource and property model defined by 219 [draft-ietf-webdav-rfc2518bis]. DASL does not alter this model. 220 Instead, DASL allows clients to access DAV-modeled resources through 221 server-side search. 223 1.3. Terms 225 This document uses the terms defined in [RFC2616], in 226 [draft-ietf-webdav-rfc2518bis], in [RFC3253] and in this section. 228 Criteria 230 An expression against which each resource in the search scope is 231 evaluated. 233 Query 234 A query is a combination of a search scope, search criteria, 235 result record definition, sort specification, and a search 236 modifier. 238 Query Grammar 240 A set of definitions of XML elements, attributes, and constraints 241 on their relations and values that defines a set of queries and 242 the intended semantics. 244 Query Schema 246 A listing, for any given grammar and scope, of the properties and 247 operators that may be used in a query with that grammar and scope. 249 Result 251 A result is a result set, optionally augmented with other 252 information describing the search as a whole. 254 Result Record 256 A description of a resource. A result record is a set of 257 properties, and possibly other descriptive information. 259 Result Record Definition 261 A specification of the set of properties to be returned in the 262 result record. 264 Result Set 266 A set of records, one for each resource for which the search 267 criteria evaluated to True. 269 Scope 271 A set of resources to be searched. 273 Search Modifier 275 An instruction that governs the execution of the query but is not 276 part of the search scope, result record definition, the search 277 criteria, or the sort specification. An example of a search 278 modifier is one that controls how much time the server can spend 279 on the query before giving a response. 281 Sort Specification 282 A specification of an ordering on the result records in the result 283 set. 285 1.4. Notational Conventions 287 This specification uses the Augmented Backus-Naur Form (ABNF) 288 notation of [RFC4234], unless explicitly stated otherwise. 290 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 291 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 292 document are to be interpreted as described in [RFC2119]. 294 This document uses XML DTD fragments as a purely notational 295 convention. WebDAV request and response bodies can not be validated 296 due to the specific extensibility rules defined in Section 17 of 297 [draft-ietf-webdav-rfc2518bis] and due to the fact that all XML 298 elements defined by this specification use the XML namespace name 299 "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 347 ([draft-ietf-webdav-rfc2518bis], Section 13). 349 2. The SEARCH Method 351 2.1. Overview 353 The client invokes the SEARCH method to initiate a server-side 354 search. The body of the request defines the query. The server MUST 355 emit an entity matching the WebDAV multistatus format 356 ([draft-ietf-webdav-rfc2518bis], Section 13). 358 The SEARCH method plays the role of transport mechanism for the query 359 and the result set. It does not define the semantics of the query. 360 The type of the query defines the semantics. 362 2.2. The Request 364 The client invokes the SEARCH method on the resource named by the 365 Request-URI. 367 2.2.1. The Request-URI 369 The Request-URI identifies the search arbiter. Any HTTP resource may 370 function as search arbiter. It is not a new type of resource (in the 371 sense of DAV:resourcetype as defined in 372 [draft-ietf-webdav-rfc2518bis], Section 15.9), nor does it have to be 373 a WebDAV-compliant resource. 375 The SEARCH method defines no relationship between the arbiter and the 376 scope of the search, rather the particular query grammar used in the 377 query defines the relationship. For example, a query grammar may 378 force the Request-URI to correspond exactly to the search scope. 380 2.2.2. The Request Body 382 The server MUST process a text/xml or application/xml request body, 383 and MAY process request bodies in other formats. See [RFC3023] for 384 guidance on packaging XML in requests. 386 Marshalling: 388 If a request body with content type text/xml or application/xml is 389 included, it MUST be either a DAV:searchrequest or a DAV:query- 390 schema-discovery XML element. Its single child element identifies 391 the query grammar. 393 For DAV:searchrequest, the definition of search criteria, the 394 result record, and any other details needed to perform the search 395 depend on the individual search grammar. 397 For DAV:query-schema-discovery, the semantics is defined in 398 Section 4. 400 Preconditions: 402 (DAV:search-grammar-discovery-supported): when an XML request body 403 is present and has a DAV:query-schema-discovery document element, 404 the server MUST support the query schema discovery mechanism 405 described in Section 4. 407 (DAV:search-grammar-supported): when an XML request body is 408 present, the search grammar identified by the document element's 409 child element must be a supported search grammar. 411 (DAV:search-multiple-scope-supported): if the SEARCH request 412 specified multiple scopes, the server MUST support this optional 413 feature. 415 (DAV:search-scope-valid): the supplied search scope must be valid. 416 There can be various reasons for a search scope to be invalid, 417 including unsupported URI schemes and communication problems. 418 Servers MAY add [draft-ietf-webdav-rfc2518bis] compliant DAV: 419 response elements as content to the condition element indicating 420 the precise reason for the failure. 422 2.3. The Successful 207 (Multistatus) Response 424 If the server returns 207 (Multistatus), then the search proceeded 425 successfully and the response MUST use the WebDAV multistatus format 426 ([draft-ietf-webdav-rfc2518bis], Section 13). The results of this 427 method SHOULD NOT be cached. 429 There MUST be one DAV:response for each resource that matched the 430 search criteria. For each such response, the DAV:href element 431 contains the URI of the resource, and the response MUST include a 432 DAV:propstat element. 434 Note: the WebDAV multistatus format requires at least one DAV: 435 response child element. This specification relaxes that 436 restriction so that empty results can be represented. 438 Note that for each matching resource found there may be multiple URIs 439 within the search scope mapped to it. In this case, a server SHOULD 440 report only one of these URIs. Clients can use the live property 441 DAV:resource-id defined in Section 3.1 of [draft-ietf-webdav-bind] to 442 identify possible duplicates. 444 2.3.1. Result Set Truncation 446 A server MAY limit the number of resources in a reply, for example to 447 limit the amount of resources expended in processing a query. If it 448 does so, the reply MUST use status code 207, return a DAV:multistatus 449 response body and indicate a status of 507 (Insufficient Storage) for 450 the search arbiter URI. It SHOULD include the partial results. 452 When a result set is truncated, there may be many more resources that 453 satisfy the search criteria but that were not examined. 455 If partial results are included and the client requested an ordered 456 result set in the original request, then any partial results that are 457 returned MUST be ordered as the client directed. 459 Note that the partial results returned MAY be any subset of the 460 result set that would have satisfied the original query. 462 2.3.2. Extending the PROPFIND Response 464 A response MAY include more information than PROPFIND defines so long 465 as the extra information does not invalidate the PROPFIND response. 466 Query grammars SHOULD define how the response matches the PROPFIND 467 response. 469 2.3.3. Example: A Simple Request and Response 471 This example demonstrates the request and response framework. The 472 following XML document shows a simple (hypothetical) natural language 473 query. The name of the query element is natural-language-query in 474 the XML namespace "http://example.com/foo". The actual query is 475 "Find the locations of good Thai restaurants in Los Angeles". For 476 this hypothetical query, the arbiter returns two properties for each 477 selected resource. 479 >> Request: 481 SEARCH / HTTP/1.1 482 Host: example.org 483 Content-Type: application/xml 484 Content-Length: xxx 486 487 488 489 Find the locations of good Thai restaurants in Los Angeles 490 491 493 >> Response: 495 HTTP/1.1 207 Multi-Status 496 Content-Type: text/xml; charset="utf-8" 497 Content-Length: xxx 499 500 502 503 http://siamiam.example/ 504 505 506 259 W. Hollywood 507 4 508 509 HTTP/1.1 200 OK 510 511 512 514 2.3.4. Example: Result Set Truncation 516 In the example below, the server returns just two results, and then 517 indicates that the result is truncated by adding a DAV:response 518 element for the search arbiter resource with 507 (Insufficient 519 Storage) status. 521 >> Request: 523 SEARCH / HTTP/1.1 524 Host: example.net 525 Content-Type: text/xml; charset="utf-8" 526 Content-Length: xxx 528 ... the query goes here ... 530 >> Response: 532 HTTP/1.1 207 Multistatus 533 Content-Type: text/xml; charset="utf-8" 534 Content-Length: xxx 536 537 538 539 http://www.example.net/sounds/unbrokenchain.au 540 HTTP/1.1 200 OK 541 542 543 http://tech.mit.example/archive96/photos/Lesh1.jpg 544 HTTP/1.1 200 OK 545 546 547 http://example.net 548 HTTP/1.1 507 Insufficient Storage 549 550 Only first two matching records were returned 551 552 553 555 2.4. Unsuccessful Responses 557 If a SEARCH request could not be executed or the attempt to execute 558 it resulted in an error, the server MUST indicate the failure with an 559 appropriate status code and SHOULD add a response body as defined in 560 [RFC3253], Section 1.6. Unless otherwise stated, condition elements 561 are empty, however specific conditions element MAY include additional 562 child elements that describe the error condition in more detail. 564 2.4.1. Example of an Invalid Scope 566 In the example below, a request failed because the scope identifies a 567 HTTP resource that was not found. 569 >> Response: 571 HTTP/1.1 409 Conflict 572 Content-Type: text/xml; charset="utf-8" 573 Content-Length: xxx 575 576 577 578 579 http://www.example.com/X 580 HTTP/1.1 404 Object Not Found 581 582 583 585 3. Discovery of Supported Query Grammars 587 Servers MUST support discovery of the query grammars supported by a 588 search arbiter resource. 590 Clients can determine which query grammars are supported by an 591 arbiter by invoking OPTIONS on the search arbiter. If the resource 592 supports SEARCH, then the DASL response header will appear in the 593 response. The DASL response header lists the supported grammars. 595 Servers supporting the WebDAV extensions [RFC3253] and/or [RFC3744] 596 MUST also 598 o report SEARCH in the live property DAV:supported-method-set for 599 all search arbiter resources and 601 o support the live property DAV:supported-query-grammar-set as 602 defined in Section 3.3. 604 3.1. The OPTIONS Method 606 The OPTIONS method allows the client to discover if a resource 607 supports the SEARCH method and to determine the list of search 608 grammars supported for that resource. 610 The client issues the OPTIONS method against a resource named by the 611 Request-URI. This is a normal invocation of OPTIONS as defined in 612 Section 9.2 of [RFC2616]. 614 If a resource supports the SEARCH method, then the server MUST list 615 SEARCH in the Allow header defined in Section 14.7 of [RFC2616]. 617 DASL servers MUST include the DASL header in the OPTIONS response. 618 This header identifies the search grammars supported by that 619 resource. 621 3.2. The DASL Response Header 623 DASLHeader = "DASL" ":" 1#Coded-URL 624 Coded-URL = 626 (This grammar uses the augmented BNF format defined in Section 2.1 of 627 [RFC2616]) 629 The DASL response header indicates server support for a query grammar 630 in the OPTIONS method. The value is a URI that indicates the type of 631 grammar. Note that although the URI can be used to identify each 632 supported search grammar, there is not necessarily a direct 633 relationship between the URI and the XML element name that can be 634 used in XML based SEARCH requests (the element name itself is 635 identified by its namespace name (a URI reference) and the element's 636 local name). 638 This header MAY be repeated. 640 For example: 642 DASL: 643 DASL: 644 DASL: 645 DASL: 647 3.3. DAV:supported-query-grammar-set (protected) 649 This WebDAV property is required for any server supporting either 650 [RFC3253] and/or [RFC3744] and identifies the XML based query 651 grammars that are supported by the search arbiter resource. 653 654 655 657 ANY value: a query grammar element type 659 3.4. Example: Grammar Discovery 661 This example shows that the server supports search on the /somefolder 662 resource with the query grammars: DAV:basicsearch, 663 http://foobar.example/syntax1 and http://akuma.example/syntax2. Note 664 that every server MUST support DAV:basicsearch. 666 >> Request: 668 OPTIONS /somefolder HTTP/1.1 669 Host: example.org 671 >> Response: 673 HTTP/1.1 200 OK 674 Allow: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, COPY, MOVE 675 Allow: MKCOL, PROPFIND, PROPPATCH, LOCK, UNLOCK, SEARCH 676 DASL: 677 DASL: 678 DASL: 680 This example shows the equivalent taking advantage of a server's 681 support for DAV:supported-method-set and DAV:supported-query-grammar- 682 set. 684 >> Request: 686 PROPFIND /somefolder HTTP/1.1 687 Host: example.org 688 Depth: 0 689 Content-Type: text/xml; charset="utf-8" 690 Content-Length: xxx 692 693 694 695 696 697 698 699 >> Response: 701 HTTP/1.1 207 Multi-Status 702 Content-Type: text/xml; charset="utf-8" 703 Content-Length: xxx 705 706 707 708 http://example.org/somefolder 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 739 740 HTTP/1.1 200 OK 741 742 743 745 Note that the query grammar element names marshalled as part of the 746 DAV:supported-query-grammar-set can be directly used as element names 747 in an XML based query. 749 4. Query Schema Discovery: QSD 751 Servers MAY support the discovery of the schema for a query grammar. 753 The DASL response header and the DAV:supported-query-grammar-set 754 property provide means for clients to discover the set of query 755 grammars supported by a resource. This alone is not sufficient 756 information for a client to generate a query. For example, the DAV: 757 basicsearch grammar defines a set of queries consisting of a set of 758 operators applied to a set of properties and values, but the grammar 759 itself does not specify which properties may be used in the query. 760 QSD for the DAV:basicsearch grammar allows a client to discover the 761 set of properties that are searchable, selectable, and sortable. 762 Moreover, although the DAV:basicsearch grammar defines a minimal set 763 of operators, it is possible that a resource might support additional 764 operators in a query. For example, a resource might support a 765 optional operator that can be used to express content-based queries 766 in a proprietary syntax. QSD allows a client to discover these 767 operators and their syntax. The set of discoverable quantities will 768 differ from grammar to grammar, but each grammar can define a means 769 for a client to discover what can be discovered. 771 In general, the schema for a given query grammar depends on both the 772 resource (the arbiter) and the scope. A given resource might have 773 access to one set of properties for one potential scope, and another 774 set for a different scope. For example, consider a server able to 775 search two distinct collections, one holding cooking recipes, the 776 other design documents for nuclear weapons. While both collections 777 might support properties such as author, title, and date, the first 778 might also define properties such as calories and preparation time, 779 while the second defined properties such as yield and applicable 780 patents. Two distinct arbiters indexing the same collection might 781 also have access to different properties. For example, the recipe 782 collection mentioned above might also indexed by a value-added server 783 that also stored the names of chefs who had tested the recipe. Note 784 also that the available query schema might also depend on other 785 factors, such as the identity of the principal conducting the search, 786 but these factors are not exposed in this protocol. 788 4.1. Additional SEARCH Semantics 790 Each query grammar supported by DASL defines its own syntax for 791 expressing the possible query schema. A client retrieves the schema 792 for a given query grammar on an arbiter resource with a given scope 793 by invoking the SEARCH method on that arbiter with that grammar and 794 scope and with a root element of DAV:query-schema-discovery rather 795 than DAV:searchrequest. 797 Marshalling: 799 The request body MUST be DAV:query-schema-discovery element. 801 802 804 The response body takes the form of a DAV:multistatus element 805 ([draft-ietf-webdav-rfc2518bis], Section 13), where DAV:response 806 is extended to hold the returned query grammar inside a DAV:query- 807 schema container element. 809 811 813 The content of this container is an XML element whose name and syntax 814 depend upon the grammar, and whose value may (and likely will) vary 815 depending upon the grammar, arbiter, and scope. 817 4.1.1. Example of Query Schema Discovery 819 In this example, the arbiter is recipes.example, the grammar is DAV: 820 basicsearch, the scope is also recipes.example. 822 >> Request: 824 SEARCH / HTTP/1.1 825 Host: recipes.example 826 Content-Type: application/xml 827 Content-Length: xxx 829 830 831 832 833 834 http://recipes.example 835 infinity 836 837 838 839 840 >> Response: 842 HTTP/1.1 207 Multistatus 843 Content-Type: application/xml 844 Content-Length: xxx 846 847 848 849 http://recipes.example 850 HTTP/1.1 200 OK 851 852 853 855 856 857 858 860 The query schema for DAV:basicsearch is defined in Section 5.19. 862 5. The DAV:basicsearch Grammar 864 5.1. Introduction 866 DAV:basicsearch uses an extensible XML syntax that allows clients to 867 express search requests that are generally useful for WebDAV 868 scenarios. DASL-extended servers MUST accept this grammar, and MAY 869 accept other grammars. 871 DAV:basicsearch has several components: 873 o DAV:select provides the result record definition. 875 o DAV:from defines the scope. 877 o DAV:where defines the criteria. 879 o DAV:orderby defines the sort order of the result set. 881 o DAV:limit provides constraints on the query as a whole. 883 5.2. The DAV:basicsearch DTD 885 887 889 891 893 895 896 897 899 900 901 902 904 905 907 910 912 914 916 918 919 921 922 924 925 927 928 930 931 933 934 935 937 938 940 941 943 944 946 947 949 950 952 953 955 957 958 960 5.2.1. Example Query 962 This query retrieves the content length values for all resources 963 located under the server's "/container1/" URI namespace whose length 964 exceeds 10000. 966 967 968 969 970 971 972 973 /container1/ 974 infinity 975 976 977 978 979 980 10000 981 982 983 984 985 986 987 988 989 990 992 5.3. DAV:select 994 DAV:select defines the result record, which is a set of properties 995 and values. This document defines two possible values: DAV:allprop 996 and DAV:prop, both defined in Section 14 of 997 [draft-ietf-webdav-rfc2518bis]. 999 5.4. DAV:from 1001 1002 1004 DAV:from defines the query scope. This contains one or more DAV: 1005 scope elements. Support for multiple scope elements is optional, 1006 however servers MUST fail a request specifying multiple DAV:scope 1007 elements if they can't support it (see Section 2.2.2, precondition 1008 DAV:search-multiple-scope-supported). The scope element contains 1009 mandatory DAV:href and DAV:depth elements. 1011 DAV:href indicates the URI to use as a scope. 1013 When the scope is a collection, if DAV:depth is "0", the search 1014 includes only the collection. When it is "1", the search includes 1015 the collection and its immediate children. When it is "infinity", it 1016 includes the collection and all its progeny. 1018 When the scope is not a collection, the depth is ignored and the 1019 search applies just to the resource itself. 1021 If the search includes a redirect reference resource (see [RFC4437]), 1022 it applies only to that resource, not to its target. 1024 When the child element DAV:include-versions is present, the search 1025 scope will include all versions (see [RFC3253], Section 2.2.1) of all 1026 version-controlled resources in scope. Servers that do support 1027 versioning but do not support the DAV:include-versions feature MUST 1028 signal an error if it is used in a query. 1030 5.4.1. Relationship to the Request-URI 1032 If the DAV:scope element is an absolute URI, the scope is exactly 1033 that URI. 1035 If the DAV:scope element is is an absolute URI reference, the scope 1036 is taken to be relative to the Request-URI. 1038 5.4.2. Scope 1040 A Scope can be an arbitrary URI. 1042 Servers, of course, may support only particular scopes. This may 1043 include limitations for particular schemes such as "http:" or "ftp:" 1044 or certain URI namespaces. 1046 5.5. DAV:where 1048 The DAV:where element defines the search condition for inclusion of 1049 resources in the result set. The value of this element is an XML 1050 element that defines a search operator that evaluates to one of the 1051 Boolean truth values TRUE, FALSE, or UNKNOWN. The search operator 1052 contained by DAV:where may itself contain and evaluate additional 1053 search operators as operands, which in turn may contain and evaluate 1054 additional search operators as operands, etc. recursively. 1056 5.5.1. Use of Three-Valued Logic in Queries 1058 Each operator defined for use in the where clause that returns a 1059 Boolean value MUST evaluate to TRUE, FALSE, or UNKNOWN. The resource 1060 under scan is included as a member of the result set if and only if 1061 the search condition evaluates to TRUE. 1063 Consult Appendix A for details on the application of three-valued 1064 logic in query expressions. 1066 5.5.2. Handling Optional Operators 1068 If a query contains an operator that is not supported by the server, 1069 then the server MUST respond with a 422 (Unprocessable Entity) status 1070 code. 1072 5.5.3. Treatment of NULL Values 1074 If a PROPFIND for a property value would yield a non-2xx (see 1075 [RFC2616], Section 10.2) response for that property, then that 1076 property is considered NULL. 1078 NULL values are "less than" all other values in comparisons. 1080 Empty strings (zero length strings) are not NULL values. An empty 1081 string is "less than" a string with length greater than zero. 1083 The DAV:is-defined operator is defined to test if the value of a 1084 property is NULL. 1086 5.5.4. Treatment of Properties with mixed/element Content 1088 Comparisons of properties that do not have simple types (text-only 1089 content) is out-of-scope for the standard operators defined for DAV: 1090 basicsearch and therefore is defined to be UNKNOWN (as per 1091 Appendix A). For querying the DAV:resourcetype property, see 1092 Section 5.13. 1094 5.5.5. Example: Testing for Equality 1096 The example shows a single operator (DAV:eq) applied in the criteria. 1098 1099 1100 1101 1102 1103 100 1104 1105 1107 5.5.6. Example: Relative Comparisons 1109 The example shows a more complex operation involving several 1110 operators (DAV:and, DAV:eq, DAV:gt) applied in the criteria. This 1111 DAV:where expression matches those resources that are "image/gifs" 1112 over 4K in size. 1114 1115 1116 1117 1118 1119 1120 image/gif 1121 1122 1123 1124 1125 1126 4096 1127 1128 1129 1131 5.6. DAV:orderby 1133 The DAV:orderby element specifies the ordering of the result set. It 1134 contains one or more DAV:order elements, each of which specifies a 1135 comparison between two items in the result set. Informally, a 1136 comparison specifies a test that determines whether one resource 1137 appears before another in the result set. Comparisons are applied in 1138 the order they occur in the DAV:orderby element, earlier comparisons 1139 being more significant. 1141 The comparisons defined here use only a single property from each 1142 resource, compared using the same ordering as the DAV:lt operator 1143 (ascending) or DAV:gt operator (descending). If neither direction is 1144 specified, the default is DAV:ascending. 1146 In the context of the DAV:orderby element, null values are considered 1147 to collate before any actual (i.e., non null) value, including 1148 strings of zero length (this is compatible with [SQL99]). 1150 The "caseless" attribute may be used to indicate case-sensitivity for 1151 comparisons. 1153 5.6.1. Example of Sorting 1155 This sort orders first by last name of the author, and then by size, 1156 in descending order, so that for each author, the largest works 1157 appear first. 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1170 5.7. Boolean Operators: DAV:and, DAV:or, and DAV:not 1172 The DAV:and operator performs a logical AND operation on the 1173 expressions it contains. 1175 The DAV:or operator performs a logical OR operation on the values it 1176 contains. 1178 The DAV:not operator performs a logical NOT operation on the values 1179 it contains. 1181 5.8. DAV:eq 1183 The DAV:eq operator provides simple equality matching on property 1184 values. 1186 The "caseless" attribute may be used with this element. 1188 5.9. DAV:lt, DAV:lte, DAV:gt, DAV:gte 1190 The DAV:lt, DAV:lte, DAV:gt, and DAV:gte operators provide 1191 comparisons on property values, using less-than, less-than or equal, 1192 greater-than, and greater-than or equal respectively. The "caseless" 1193 attribute may be used with these elements. 1195 5.10. DAV:literal 1197 DAV:literal allows literal values to be placed in an expression. 1199 White space in literal values is significant in comparisons. For 1200 consistency with [draft-ietf-webdav-rfc2518bis], clients SHOULD NOT 1201 specify the attribute "xml:space" (Section 2.10 of [XML]) to override 1202 this behavior. 1204 In comparisons, the contents of DAV:literal SHOULD be treated as 1205 string, with the following exceptions: 1207 o when operand for a comparison with a DAV:getcontentlength 1208 property, it SHOULD be treated as an integer value (the behavior 1209 for non-integer values is undefined), 1211 o when operand for a comparison with a DAV:creationdate or DAV: 1212 getlastmodified property, it SHOULD be treated as a date value in 1213 the ISO-8601 subset defined for the DAV:creationdate property 1214 ([draft-ietf-webdav-rfc2518bis], Section 15.1). 1216 o when operand for a comparison with a property for which the type 1217 is known, it MAY be treated according to this type. 1219 5.11. DAV:typed-literal (optional) 1221 There are situations in which a client may want to force a comparison 1222 not to be string-based (as defined for DAV:literal). In these cases, 1223 a typed comparison can be enforced by using DAV:typed-literal 1224 instead. 1226 1227 The data type is specified using the xsi:type attribute defined in 1228 [XS1], Section 2.6.1. If the type is not specified, it defaults to 1229 "xs:string". 1231 A server MUST reject a request with an unknown type. 1233 The comparison evaluates to UNDEFINED if the property value can not 1234 be cast to the specified datatype (see [XPATHFUNC], Section 17). 1236 5.11.1. Example for Typed Numerical Comparison 1238 Consider a set of resources with the dead property "edits" in the 1239 namespace "http://ns.example.org": 1241 +-----+----------------+ 1242 | URI | property value | 1243 +-----+----------------+ 1244 | /a | "-1" | 1245 | /b | "01" | 1246 | /c | "3" | 1247 | /d | "test" | 1248 | /e | (undefined) | 1249 +-----+----------------+ 1251 The expression 1253 1256 1257 3 1258 1260 will evaluate to TRUE for the resources "/a" and "/b" (their property 1261 values can be parsed as type xs:number, and the numerical comparison 1262 evaluates to true), to FALSE for "/c" (property value is compatible, 1263 but numerical comparison evaluates to false) and UNKNOWN for "/d" and 1264 "/e" (the property either is undefined, or its value can not be 1265 parsed as xs:number). 1267 5.12. Support for Matching xml:lang Attributes on Properties 1269 The following two optional operators can be used to express 1270 conditions on the language of a property value (as expressed using 1271 the xml:lang attribute). 1273 5.12.1. DAV:language-defined (optional) 1275 1277 This operator evaluates to TRUE if the language for the value of the 1278 given property is known, FALSE if it isn't and UNKNOWN if the 1279 property itself is not defined. 1281 5.12.2. DAV:language-matches (optional) 1283 1285 This operator evaluates to TRUE if the language for the value of the 1286 given property is known and matches the language name given in the 1287 element, FALSE if it doesn't match and UNKNOWN if the 1288 property itself is not defined. 1290 Languages are considered to match if they are the same, or if the 1291 language of the property value is a sublanguage of the language 1292 specified in the element (see [XPATH], Section 4.3, "lang 1293 function"). 1295 5.12.3. Example of Language-Aware Matching 1297 The expression below will evaluate to TRUE if the property "foobar" 1298 exists and its language is either unknown, English or a sublanguage 1299 of English. 1301 1302 1303 1304 1305 1306 1307 1308 1309 en 1310 1311 1313 5.13. DAV:is-collection 1315 The DAV:is-collection operator allows clients to determine whether a 1316 resource is a collection (that is, whether its DAV:resourcetype 1317 element contains the element DAV:collection). 1319 Rationale: This operator is provided in lieu of defining generic 1320 structure queries, which would suffice for this and for many more 1321 powerful queries, but seems inappropriate to standardize at this 1322 time. 1324 5.13.1. Example of DAV:is-collection 1326 This example shows a search criterion that picks out all and only the 1327 resources in the scope that are collections. 1329 1330 1331 1333 5.14. DAV:is-defined 1335 The DAV:is-defined operator allows clients to determine whether a 1336 property is defined on a resource. The meaning of "defined on a 1337 resource" is found in Section 5.5.3. 1339 Example: 1341 1342 1343 1345 5.15. DAV:like 1347 The DAV:like is an optional operator intended to give simple 1348 wildcard-based pattern matching ability to clients. 1350 The operator takes two arguments. 1352 The first argument is a DAV:prop element identifying a single 1353 property to evaluate. 1355 The second argument is a DAV:literal element that gives the pattern 1356 matching string. 1358 5.15.1. Syntax for the Literal Pattern 1360 pattern = [wildcard] 0*( text [wildcard] ) 1362 wildcard = exactlyone / zeroormore 1363 text = 1*( character / escapeseq ) 1365 exactlyone = "_" 1366 zeroormore = "%" 1367 escapechar = "\" 1368 escapeseq = "\" ( exactlyone / zeroormore / escapechar ) 1370 ; character: see [XML], Section 2.2, minus wildcard / escapechar 1371 character = HTAB / LF / CR ; whitespace 1372 character =/ %x20-24 / %x26-5B / %x5D-5E / %x60-D7FF 1373 character =/ %xE000-FFFD / %x10000-10FFFF 1375 The value for the literal is composed of wildcards separated by 1376 segments of text. Wildcards may begin or end the literal. 1378 The "_" wildcard matches exactly one character. 1380 The "%" wildcard matches zero or more characters 1382 The "\" character is an escape sequence so that the literal can 1383 include "_" and "%". To include the "\" character in the pattern, 1384 the escape sequence "\\" is used. 1386 5.15.2. Example of DAV:like 1388 This example shows how a client might use DAV:like to identify those 1389 resources whose content type was a subtype of image. 1391 1392 1393 1394 image/% 1395 1396 1398 5.16. DAV:contains 1400 The DAV:contains operator is an optional operator that provides 1401 content-based search capability. This operator implicitly searches 1402 against the text content of a resource, not against content of 1403 properties. The DAV:contains operator is intentionally not overly 1404 constrained, in order to allow the server to do the best job it can 1405 in performing the search. 1407 The DAV:contains operator evaluates to a Boolean value. It evaluates 1408 to TRUE if the content of the resource satisfies the search. 1409 Otherwise, it evaluates to FALSE. 1411 Within the DAV:contains XML element, the client provides a phrase: a 1412 single word or whitespace delimited sequence of words. Servers MAY 1413 ignore punctuation in a phrase. Case-sensitivity is left to the 1414 server. 1416 The following things may or may not be done as part of the search: 1417 Phonetic methods such as "soundex" may or may not be used. Word 1418 stemming may or may not be performed. Thesaurus expansion of words 1419 may or may not be done. Right or left truncation may or may not be 1420 performed. The search may be case insensitive or case sensitive. 1421 The word or words may or may not be interpreted as names. Multiple 1422 words may or may not be required to be adjacent or "near" each other. 1423 Multiple words may or may not be required to occur in the same order. 1424 Multiple words may or may not be treated as a phrase. The search may 1425 or may not be interpreted as a request to find documents "similar" to 1426 the string operand. 1428 5.16.1. Result Scoring (DAV:score Element) 1430 Servers SHOULD indicate scores for the DAV:contains condition by 1431 adding a DAV:score XML element to the DAV:response element. Its 1432 value is defined only in the context of a particular query result. 1433 The value is a string representing the score, an integer from zero to 1434 10000 inclusive, where a higher value indicates a higher score (e.g. 1435 more relevant). 1437 Modified DTD fragment for DAV:propstat: 1439 1441 1443 Clients should note that, in general, it is not meaningful to compare 1444 the numeric values of scores from two different query results unless 1445 both were executed by the same underlying search system on the same 1446 collection of resources. 1448 5.16.2. Ordering by Score 1450 To order search results by their score, the DAV:score element may be 1451 added as child to the DAV:orderby element (in place of a DAV:prop 1452 element). 1454 5.16.3. Examples 1456 The example below shows a search for the phrase "Peter Forsberg". 1458 Depending on its support for content-based searching, a server MAY 1459 treat this as a search for documents that contain the words "Peter" 1460 and "Forsberg". 1462 1463 Peter Forsberg 1464 1466 The example below shows a search for resources that contain "Peter" 1467 and "Forsberg". 1469 1470 1471 Peter 1472 Forsberg 1473 1474 1476 5.17. Limiting the Result Set 1478 1479 ;only digits 1481 The DAV:limit XML element contains requested limits from the client 1482 to limit the size of the reply or amount of effort expended by the 1483 server. The DAV:nresults XML element contains a requested maximum 1484 number of DAV:response elements to be returned in the response body. 1485 The server MAY disregard this limit. The value of this element is an 1486 integer. 1488 5.17.1. Relationship to Result Ordering 1490 If the result set is both limited by DAV:limit and ordered according 1491 to DAV:orderby, the results that are included in the response 1492 document must be those that order highest. 1494 5.18. The 'caseless' XML Attribute 1496 The "caseless" attribute allows clients to specify caseless matching 1497 behavior instead of character-by-character matching for DAV: 1498 basicsearch operators. 1500 The possible values for "caseless" are "yes" or "no". The default 1501 value is server-specified. Caseless matching SHOULD be implemented 1502 as defined in section 5.18 of the Unicode Standard ([UNICODE4]). 1504 Support for the "caseless" attribute is optional. A server should 1505 respond with a status of 422 if it is used but cannot be supported. 1507 5.19. Query Schema for DAV:basicsearch 1509 The DAV:basicsearch grammar defines a search criteria that is a 1510 Boolean-valued expression, and allows for an arbitrary set of 1511 properties to be included in the result record. The result set may 1512 be sorted on a set of property values. Accordingly the DTD for 1513 schema discovery for this grammar allows the server to express: 1515 1. the set of properties that may be either searched, returned, or 1516 used to sort, and a hint about the data type of such properties 1518 2. the set of optional operators defined by the resource. 1520 5.19.1. DTD for DAV:basicsearch QSD 1522 1523 1524 1525 1528 1529 1530 1531 1532 1534 The DAV:properties element holds a list of descriptions of 1535 properties. 1537 The DAV:operators element describes the optional operators that may 1538 be used in a DAV:where element. 1540 5.19.2. DAV:propdesc Element 1542 Each instance of a DAV:propdesc element describes the property or 1543 properties in the DAV:prop element it contains. All subsequent 1544 elements are descriptions that apply to those properties. All 1545 descriptions are optional and may appear in any order. Servers 1546 SHOULD support all the descriptions defined here, and MAY define 1547 others. 1549 DASL defines five descriptions. The first, DAV:datatype, provides a 1550 hint about the type of the property value, and may be useful to a 1551 user interface prompting for a value. The remaining four (DAV: 1552 searchable, DAV:selectable, DAV:sortable, and DAV:caseless) identify 1553 portions of the query (DAV:where, DAV:select, and DAV:orderby, 1554 respectively). If a property has a description for a section, then 1555 the server MUST allow the property to be used in that section. These 1556 descriptions are optional. If a property does not have such a 1557 description, or is not described at all, then the server MAY still 1558 allow the property to be used in the corresponding section. 1560 5.19.2.1. DAV:any-other-property 1562 This element can be used in place of DAV:prop to describe properties 1563 of WebDAV properties not mentioned in any other DAV:prop element. 1564 For instance, this can be used to indicate that all other properties 1565 are searchable and selectable without giving details about their 1566 types (a typical scenario for dead properties). 1568 5.19.3. The DAV:datatype Property Description 1570 The DAV:datatype element contains a single XML element that provides 1571 a hint about the domain of the property, which may be useful to a 1572 user interface prompting for a value to be used in a query. Data 1573 types are identified by an element name. Where appropriate, a server 1574 SHOULD use the simple data types defined in [XS2]. 1576 1578 Examples from [XS2], Section 3: 1580 +----------------+---------------------+ 1581 | Qualified name | Example | 1582 +----------------+---------------------+ 1583 | xs:boolean | true, false, 1, 0 | 1584 | xs:string | Foobar | 1585 | xs:dateTime | 1994-11-05T08:15:5Z | 1586 | xs:float | .314159265358979E+1 | 1587 | xs:integer | -259, 23 | 1588 +----------------+---------------------+ 1590 If the data type of a property is not given, then the data type 1591 defaults to xs:string. 1593 5.19.4. The DAV:searchable Property Description 1595 1597 If this element is present, then the server MUST allow this property 1598 to appear within a DAV:where element where an operator allows a 1599 property. Allowing a search does not mean that the property is 1600 guaranteed to be defined on every resource in the scope, it only 1601 indicates the server's willingness to check. 1603 5.19.5. The DAV:selectable Property Description 1605 1607 This element indicates that the property may appear in the DAV:select 1608 element. 1610 5.19.6. The DAV:sortable Property Description 1612 This element indicates that the property may appear in the DAV: 1613 orderby element. 1615 1617 5.19.7. The DAV:caseless Property Description 1619 This element only applies to properties whose data type is "xs: 1620 string" and derived data types as per the DAV:datatype property 1621 description. Its presence indicates that compares performed for 1622 searches, and the comparisons for ordering results on the string 1623 property will be caseless (the default is character-by-character). 1625 1627 5.19.8. The DAV:operators XML Element 1629 The DAV:operators element describes every optional operator supported 1630 in a query. (Mandatory operators are not listed since they are 1631 mandatory and permit no variation in syntax.). All optional 1632 operators that are supported MUST be listed in the DAV:operators 1633 element. The listing for an operator consists of the operator (as an 1634 empty element), followed by one element for each operand. The 1635 operand MUST be either DAV:operand-property, DAV:operand-literal or 1636 DAV:operand-typed-literal, which indicate that the operand in the 1637 corresponding position is a property, a literal value or a typed 1638 literal value, respectively. If an operator is polymorphic (allows 1639 more than one operand syntax) then each permitted syntax MUST be 1640 listed separately. 1642 1643 1644 1645 1647 1649 5.19.9. Example of Query Schema for DAV:basicsearch 1651 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1679 This response lists four properties. The data type of the last three 1680 properties is not given, so it defaults to xs:string. All are 1681 selectable, and the first three may be searched. All but the last 1682 may be used in a sort. Of the optional DAV operators, DAV:is-defined 1683 and DAV:like are supported. 1685 Note: The schema discovery defined here does not provide for 1686 discovery of supported values of the "caseless" attribute. This may 1687 require that the reply also list the mandatory operators. 1689 6. Internationalization Considerations 1691 Properties may be language-tagged using the xml:lang attribute (see 1692 [draft-ietf-webdav-rfc2518bis], Section 4.3). The optional operators 1693 DAV:language-defined (Section 5.12.1) and DAV:language-matches 1694 (Section 5.12.2) allow to express conditions on the language tagging 1695 information. 1697 7. Security Considerations 1699 This section is provided to detail issues concerning security 1700 implications of which DASL applications need to be aware. All of the 1701 security considerations of HTTP/1.1 also apply to DASL. In addition, 1702 this section will include security risks inherent in searching and 1703 retrieval of resource properties and content. 1705 A query must not allow one to retrieve information about values or 1706 existence of properties that one could not obtain via PROPFIND. (e.g. 1707 by use in DAV:orderby, or in expressions on properties.) 1709 A server should prepare for denial of service attacks. For example a 1710 client may issue a query for which the result set is expensive to 1711 calculate or transmit because many resources match or must be 1712 evaluated. 1714 7.1. Implications of XML External Entities 1716 XML supports a facility known as "external entities", defined in 1717 Section 4.2.2 of [XML], which instruct an XML processor to retrieve 1718 and perform an inline include of XML located at a particular URI. An 1719 external XML entity can be used to append or modify the document type 1720 declaration (DTD) associated with an XML document. An external XML 1721 entity can also be used to include XML within the content of an XML 1722 document. For non-validating XML, such as the XML used in this 1723 specification, including an external XML entity is not required by 1724 [XML]. However, [XML] does state that an XML processor may, at its 1725 discretion, include the external XML entity. 1727 External XML entities have no inherent trustworthiness and are 1728 subject to all the attacks that are endemic to any HTTP GET request. 1729 Furthermore, it is possible for an external XML entity to modify the 1730 DTD, and hence affect the final form of an XML document, in the worst 1731 case significantly modifying its semantics, or exposing the XML 1732 processor to the security risks discussed in [RFC3023]. Therefore, 1733 implementers must be aware that external XML entities should be 1734 treated as untrustworthy. 1736 There is also the scalability risk that would accompany a widely 1737 deployed application which made use of external XML entities. In 1738 this situation, it is possible that there would be significant 1739 numbers of requests for one external XML entity, potentially 1740 overloading any server which fields requests for the resource 1741 containing the external XML entity. 1743 8. Scalability 1745 Query grammars are identified by URIs. Applications SHOULD not 1746 attempt to retrieve these URIs even if they appear to be retrievable 1747 (for example, those that begin with "http://") 1749 9. IANA Considerations 1751 This document uses the namespace defined in Section 21 of 1752 [draft-ietf-webdav-rfc2518bis] for XML elements. 1754 9.1. HTTP Headers 1756 This document specifies the HTTP header listed below, to be added to 1757 the HTTP header registry defined in [RFC3864]. 1759 9.1.1. DASL 1761 Header field name: DASL 1763 Applicable protocol: http 1765 Status: Experimental 1767 Author/Change controller: IETF 1769 Specification document: this specification (Section 3.2) 1771 10. Contributors 1773 This document is based on prior work on the DASL protocol done by the 1774 WebDAV DASL working group until the year 2000 -- namely by Alan 1775 Babich, Jim Davis, Rick Henderson, Dale Lowry, Saveen Reddy and 1776 Surendra Reddy. 1778 11. Acknowledgements 1780 This document has benefited from thoughtful discussion by Lisa 1781 Dusseault, Sung Kim, Elias Sinderson, Martin Wallmer, Keith 1782 Wannamaker, Jim Whitehead and Kevin Wiggen. 1784 12. References 1786 12.1. Normative References 1788 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1789 Requirement Levels", BCP 14, RFC 2119, March 1997. 1791 [RFC2616] Fielding, R., Gettys, J., Mogul, J., Nielsen, H., 1792 Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext 1793 Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. 1795 [RFC3023] Makoto, M., St.Laurent, S., and D. Kohn, "XML Media 1796 Types", RFC 3023, January 2001. 1798 [RFC3253] Clemm, G., Amsden, J., Ellison, T., Kaler, C., and J. 1799 Whitehead, "Versioning Extensions to WebDAV", RFC 3253, 1800 March 2002. 1802 [RFC3744] Clemm, G., Reschke, J., Sedlar, E., and J. Whitehead, "Web 1803 Distributed Authoring and Versioning (WebDAV) Access 1804 Control Protocol", RFC 3744, May 2004. 1806 [RFC4234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax 1807 Specifications: ABNF", RFC 4234, October 2005. 1809 [RFC4437] Whitehead, J., Clemm, G., and J. Reschke, Ed., "Web 1810 Distributed Authoring and Versioning (WebDAV) 1811 Redirect Reference Resources", RFC 4437, March 2006. 1813 [XML] Bray, T., Paoli, J., Sperberg-McQueen, C., Maler, E., and 1814 F. Yergeau, "Extensible Markup Language (XML) 1.0 (Fourth 1815 Edition)", W3C REC-xml-20060816, August 2006, 1816 . 1818 [XPATH] Clark, J. and S. DeRose, "XML Path Language (XPath) 1819 Version 1.0", W3C REC-xpath-19991116, November 1999, 1820 . 1822 [XPATHFUNC] 1823 Malhotra, A., Melton, J., and N. Walsh, "XQuery 1.0 and 1824 XPath 2.0 Functions and Operators", W3C REC-xpath- 1825 functions-20070123, January 2007, 1826 . 1828 [XS1] Thompson, H., Beech, D., Maloney, M., Mendelsohn, N., and 1829 World Wide Web Consortium, "XML Schema Part 1: 1830 Structures", W3C REC-xmlschema-1-20041028, October 2004, 1831 . 1833 [XS2] Biron, P., Malhotra, A., and World Wide Web Consortium, 1834 "XML Schema Part 2: Datatypes Second Edition", W3C REC- 1835 xmlschema-2-20041028, October 2004, 1836 . 1838 [draft-ietf-webdav-rfc2518bis] 1839 Dusseault, L., Ed., "HTTP Extensions for Distributed 1840 Authoring - WebDAV RFC2518 bis", 1841 draft-ietf-webdav-rfc2518bis-18 (work in progress), 1842 February 2007. 1844 12.2. Informative References 1846 [DASL] Reddy, S., Lowry, D., Reddy, S., Henderson, R., Davis, J., 1847 and A. Babich, "DAV Searching & Locating", 1848 draft-ietf-dasl-protocol-00 (work in progress), July 1999. 1850 [DASLREQ] Davis, J., Reddy, S., and J. Slein, "Requirements for DAV 1851 Searching and Locating", February 1999, . 1855 This is an updated version of the Internet Draft 1856 "draft-ietf-dasl-requirements-00", but obviously never was 1857 submitted to the IETF. 1859 [RFC3864] Klyne, G., Nottingham, M., and J. Mogul, "Registration 1860 Procedures for Message Header Fields", BCP 90, RFC 3864, 1861 September 2004. 1863 [RFC4790] Newman, C., Duerst, M., and A. Gulbrandsen, "Internet 1864 Application Protocol Collation Registry", RFC 4790, 1865 March 2007. 1867 [SQL99] Milton, J., "Database Language SQL Part 2: Foundation 1868 (SQL/Foundation)", ISO ISO/IEC 9075-2:1999 (E), July 1999. 1870 [UNICODE4] 1871 The Unicode Consortium, "The Unicode Standard - Version 1872 4.0", Addison-Wesley , August 2003, 1873 . 1875 ISBN 0321185781 [1] 1877 [draft-ietf-webdav-bind] 1878 Clemm, G., Crawford, J., Reschke, J., Ed., and J. 1879 Whitehead, "Binding Extensions to Web Distributed 1880 Authoring and Versioning (WebDAV)", 1881 draft-ietf-webdav-bind-18 (work in progress), March 2007. 1883 URIs 1885 [1] 1887 Appendix A. Three-Valued Logic in DAV:basicsearch 1889 ANSI standard three valued logic is used when evaluating the search 1890 condition (as defined in the ANSI standard SQL specifications, for 1891 example in ANSI X3.135-1992, section 8.12, pp. 188-189, section 8.2, 1892 p. 169, General Rule 1)a), etc.). 1894 ANSI standard three valued logic is undoubtedly the most widely 1895 practiced method of dealing with the issues of properties in the 1896 search condition not having a value (e.g., being null or not defined) 1897 for the resource under scan, and with undefined expressions in the 1898 search condition (e.g., division by zero, etc.). Three valued logic 1899 works as follows. 1901 Undefined expressions are expressions for which the value of the 1902 expression is not defined. Undefined expressions are a completely 1903 separate concept from the truth value UNKNOWN, which is, in fact, 1904 well defined. Property names and literal constants are considered 1905 expressions for purposes of this section. If a property in the 1906 current resource under scan has not been set to a value, then the 1907 value of that property is undefined for the resource under scan. 1908 DASL 1.0 has no arithmetic division operator, but if it did, division 1909 by zero would be an undefined arithmetic expression. 1911 If any subpart of an arithmetic, string, or datetime subexpression is 1912 undefined, the whole arithmetic, string, or datetime subexpression is 1913 undefined. 1915 There are no manifest constants to explicitly represent undefined 1916 number, string, or datetime values. 1918 Since a Boolean value is ultimately returned by the search condition, 1919 arithmetic, string, and datetime expressions are always arguments to 1920 other operators. Examples of operators that convert arithmetic, 1921 string, and datetime expressions to Boolean values are the six 1922 relational operators ("greater than", "less than", "equals", etc.). 1923 If either or both operands of a relational operator have undefined 1924 values, then the relational operator evaluates to UNKNOWN. 1925 Otherwise, the relational operator evaluates to TRUE or FALSE, 1926 depending upon the outcome of the comparison. 1928 The Boolean operators DAV:and, DAV:or and DAV:not are evaluated 1929 according to the following rules: 1931 not UNKNOWN = UNKNOWN 1933 UNKNOWN and TRUE = UNKNOWN 1935 UNKNOWN and FALSE = FALSE 1937 UNKNOWN and UNKNOWN = UNKNOWN 1939 UNKNOWN or TRUE = TRUE 1941 UNKNOWN or FALSE = UNKNOWN 1943 UNKNOWN or UNKNOWN = UNKNOWN 1945 Appendix B. Unresolved Issues 1947 This Section summarizes issues which have been raised during the 1948 development of this specification, but for which no resolution could 1949 be found with the constraints in place. At the time of this writing, 1950 not resolving these issues and publishing as "Experimental" seemed to 1951 make more sense than not publishing at all. Future revisions of this 1952 specification should revisit these issues, though. 1954 B.1. Collation Support 1956 Matching and sorting of textual data relies on collations. With 1957 respect to WebDAV SEARCH, a combination of various design approaches 1958 could be used: 1960 o Require server support for specific collations. 1962 o Require that the server can advertise which collations it 1963 supports. 1965 o Allow a client to select the collation to be used. 1967 In practice, the current implementations of WebDAV SEARCH usually 1968 rely on backends they do not control, and for which collation 1969 information may not be available. To make things worse, 1970 implementations of the DAV:basicsearch grammar frequently need to 1971 combine data from multiple underlying stores (such as properties and 1972 full text content), and thus collation support may vary based on the 1973 operator or property. 1975 Another open issue is what collation formalism to support. At the 1976 time of this writing, the two specifications below seem to provide 1977 the necessary framework and thus may be the base for future work on 1978 collation support in WebDAV SEARCH: 1980 1. "Internet Application Protocol Collation Registry" ([RFC4790]). 1982 2. "XQuery 1.0 and XPath 2.0 Functions and Operators" ([XPATHFUNC], 1983 Section 7.3.1). 1985 B.2. Count 1987 DAV:basicsearch does not allow a request that returns the count of 1988 matching resources. 1990 A protocol extension would need to extend DAV:select, and also modify 1991 the DAV:multistatus response format. 1993 B.3. Matching Media Types 1995 Matching media types using the DAV:getcontenttype property and the 1996 DAV:like operator is hard due to DAV:getcontenttype also allowing 1997 parameters. A new operator specifically designed for the purpose of 1998 matching media types probably would simplify things a lot. See 2000 for a specific proposal. 2002 B.4. Query by Name 2004 DAV:basicsearch operates on the properties (and optionally the 2005 contents) of resources, and thus doesn't really allow matching on 2006 parts of the resource's URI. See for a proposed extension 2008 covering this use case. 2010 B.5. Result Paging 2012 A frequently discussed feature is the ability to specifically request 2013 the "next" set of results, when either the server decided to truncate 2014 the result, or the client explicitly asked for a limited set (for 2015 instance, using the DAV:limit element defined in Section 5.17). 2017 In this case, it would be desirable if the server could keep the full 2018 query result, and provide a new URI identifying a separate result 2019 resource, allowing the client to retrieve additional data through GET 2020 requests, and remove the result through a DELETE request. 2022 Appendix C. Change Log (to be removed by RFC Editor before publication) 2024 C.1. From draft-davis-dasl-protocol-xxx 2026 Feb 14, 1998 Initial Draft 2028 Feb 28, 1998 Referring to DASL as an extension to HTTP/1.1 rather 2029 than DAV. 2030 Added new sections "Notational Conventions", "Protocol Model", 2031 "Security Considerations". 2032 Changed section 3 to "Elements of Protocol". 2033 Added some stuff to introduction. 2034 Added "result set" terminology. 2035 Added "IANA Considerations". 2037 Mar 9, 1998 Moved sub-headings of "Elements of Protocol" to first 2038 level and removed "Elements of Protocol" Heading. 2039 Added an sentence in introduction explaining that this is a 2040 "sketch" of a protocol. 2042 Mar 11, 1998 Added orderby, data typing, three valued logic, query 2043 schema property, and element definitions for schema for 2044 basicsearch. 2046 April 8, 1998 - made changes based on last week's DASL BOF. 2048 May 8, 1998 Removed most of DAV:searcherror; converted to DAV: 2049 searchredirect 2050 Altered DAV:basicsearch grammar to use avoid use of ANY in DTD 2052 June 17, 1998 -Added details on Query Schema Discovery 2053 -Shortened list of data types 2055 June 23, 1998 moved data types before change history 2056 rewrote the data types section 2057 removed the casesensitive element and replace with the 2058 casesensitive attribute 2059 added the casesensitive attribute to the DTD for all operations 2060 that might work on a string 2062 Jul 20, 1998 A series of changes. See Author's meeting minutes for 2063 details. 2065 July 28, 1998 Changes as per author's meeting. QSD uses SEARCH, not 2066 PROPFIND. 2067 Moved text around to keep concepts nearby. 2068 Boolean literals are 1 and 0, not T and F. 2069 contains changed to contentspassthrough. 2071 Renamed rank to score. 2073 July 28, 1998 Added Dale Lowry as Author 2075 September 4, 1998 Added 422 as response when query lists 2076 unimplemented operators. 2077 DAV:literal declares a default value for xml:space, 'preserve' 2078 (see XML spec, section 2.10) 2079 moved to new XML namespace syntax 2081 September 22, 1998 Changed "simplesearch" to "basicsearch" 2082 Changed isnull to isdefined 2083 Defined NULLness as having a 404 or 403 response 2084 used ENTITY syntax in DTD 2085 Added redirect 2087 October 9, 1998 Fixed a series of typographical and formatting 2088 errors. 2089 Modified the section of three-valued logic to use a table rather 2090 than a text description of the role of UNKNOWN in expressions. 2092 November 2, 1998 Added the DAV:contains operator. 2093 Removed the DAV:contentpassthrough operator. 2095 November 18, 1998 Various author comments for submission 2097 June 3, 1999 Cosmetic and minor editorial changes only. Fix nits 2098 reported by Jim Whitehead in email of April 26, 1999. Converted 2099 to HTML from Word 97, manually. 2101 April 20, 2000 Removed redirection feature, since 301/302 suffices. 2102 Removed Query Schema Discovery (former chapter 4). Everyone 2103 agrees this is a useful feature, but it is apparently too 2104 difficult to define at this time, and it is not essential for 2105 DASL. 2107 C.2. since start of draft-reschke-webdav-search 2109 October 09, 2001 Added Julian Reschke as author. 2110 Chapter about QSD re-added. 2111 Formatted into RFC2629-compliant XML document. 2112 Added first comments. 2113 ID version number kicked up to draft-dasl-protocol-03. 2115 October 17, 2001 Updated address information for Jim Davis. 2116 Added issue of datatype vocabularies. 2117 Updated issue descriptions for grammar discovery, added issues on 2118 query schema DTD. 2120 Fixed typos in XML examples. 2122 December 17, 2001 Re-introduced split between normative and non- 2123 normative references. 2125 January 05, 2002 Version bumped up to 04. Started work on resolving 2126 the issues identified in the previous version. 2128 January 14, 2002 Fixed some XML typos. 2130 January 22, 2002 Closed issues naming-of-elements. Fixed query 2131 search DTD and added option to discover properties of "other" 2132 (non-listed) properties. 2134 January 25, 2002 Changed into private submission and added reference 2135 to historic DASL draft. Marked reference to DASL requirements 2136 non-normative. 2137 Updated reference to latest deltav spec. 2139 January 29, 2002 Added feedback from and updated contact info for 2140 Alan Babich. 2141 Included open issues collected in 2142 http://www.webdav.org/dasl/protocol/issues.html. 2144 February 8, 2002 Made sure that all artwork fits into 72 characters 2145 wide text. 2147 February 18, 2002 Changed Insufficient storage handling 2148 (multistatus). Moved is-collection to operators and added to DTD. 2149 Made scope/depth mandatory. 2151 February 20, 2002 Updated reference to SQL99. 2153 February 28, 2002 "Non-normative References" -> "Informative 2154 References". Abstract updated. Consistently specify a charset 2155 when using text/xml (no change bars). Do not attempt to define 2156 PROPFIND's entity encoding (take out specific references to text/ 2157 xml). Remove irrelevant headers (Connection:) from examples (no 2158 change bars). Added issue on querying based on DAV:href. Updated 2159 introduction to indicate relationship to DASL draft. Updated HTTP 2160 reference from RFC2068 to RFC2616. Updated XML reference to XML 2161 1.0 2nd edition. 2163 March 1, 2002 Removed superfluous namespace decl in 2.4.2. Reopened 2164 JW14 and suggest to drop xml:space support. 2166 March 3, 2002 Removed "xml:space" feature on DAV:literal. Added 2167 issue about string comparison vs. collations vs. xml:lang. 2168 Updated some of the open issues with details from JimW's original 2169 mail in April 1999. Resolved scope vs relative URI references. 2170 Resolved issues about DAV:ascending (added to index) and the BNF 2171 for DAV:like (changed "octets" to "characters"). 2173 March 8, 2002 Updated reference to DeltaV (now RFC3253). Added 2174 Martin Wallmer's comments, moved JW5 into DAV:basicsearch section. 2176 March 11, 2002 Closed open issues regaring the type of search 2177 arbiters (JW3) and their discovery (JW9). Rephrased requirements 2178 on multistatus response bodies (propstat only if properties were 2179 selected, removed requirement for responsedescription). 2181 March 23, 2002 RFC2376 -> RFC3023. Added missing first names of 2182 authors. OPTIONS added to example for DAV:supported-method-set. 2184 C.3. since draft-reschke-webdav-search-00 2186 March 29, 2002 Abstract doesn't refer to DASL WG anymore. 2188 April 7, 2002 Fixed section title (wrong property name supported- 2189 search-grammar-set. Changed DAV:casesensitve to "casesensitive" 2190 (it wasn't in the DAV: namespace after all). 2192 May 28, 2002 Updated some issues with Jim Davis's comments. 2194 June 10, 2002 Added proposal for different method for query schema 2195 discovery, not using pseudo-properties. 2197 June 25, 2002 QSD marshalling rewritten. Added issue "isdefined- 2198 optional". 2200 C.4. since draft-reschke-webdav-search-01 2202 July 04, 2002 Added issue "scope-collection". 2204 July 08, 2002 Closed issue "scope-collection". 2206 August 12, 2002 Added issues "results-vs-binds" and "select- 2207 allprop". 2209 October 22, 2002 Added issue "undefined-expressions". 2211 November 18, 2002 Changed example host names (no change tracking). 2213 November 25, 2002 Updated issue "DB2/DB7". Closed issues "undefined 2214 expressions", "isdefined-optional" and "select-allprop". 2216 C.5. since draft-reschke-webdav-search-02 2218 November 27, 2002 Added issues "undefined-properties", "like- 2219 exactlyone" and "like-wildcard-adjacent". Closed issue "query-on- 2220 href". Added acknowledgments section. 2222 November 28, 2002 Closed issue "like-exactlyone". Added issue 2223 "mixed-content-properties". 2225 December 14, 2002 Closed issues "undefined-properties", "results-vs- 2226 binds", "mixed-content-properties". Updated issue "like-wildcard- 2227 adjacent". Added informative reference to BIND draft. Updated 2228 reference to ACL draft. 2230 January 9, 2003 Removed duplicate section on invalid scopes. Added 2231 comments to some open issues. Closed issues JW25/26, score- 2232 pseudo-property and null-ordering. 2234 January 10, 2003 Issue limit-vs-ordering plus resolution. Closed 2235 issue JW17/JW24b. 2237 January 14, 2003 New issue order-precedence. Started resolution of 2238 DB2/DB7. 2240 January 15, 2003 Started spec of DAV:typed-literal. 2242 January 17, 2003 Fix one DAV:like/DAV:getcontenttype example (add / 2243 to like expression, make case-insensitive). 2245 January 28, 2003 Update issue(s) result-truncation, JW24d. Fixed 2246 response headers in OPTIONS example. Added issue qsd-optional. 2247 Closed issue(s) order-precedence, case-insensitivity-name. 2249 February 07, 2003 Added issue scope-vs-versions. score-pseudo- 2250 property: allow DAV:orderby to explicitly specify DAV:score. 2252 C.6. since draft-reschke-webdav-search-03 2254 April 24, 2003 Fixed two "?" vs "_" issues (not updated in last 2255 draft). 2257 June 13, 2003 Improve index. 2259 C.7. since draft-reschke-webdav-search-04 2261 July 7, 2003 Typo fixed (propstat without status element). 2263 August 11, 2003 Remove superfluous IP and copyright sections. 2265 September 09, 2003 Added issues "2.4-multiple-uris" and "5.1-name- 2266 filtering". 2268 October 06, 2003 Fix misplaced section end in 5.11, add table 2269 formatting. Enhance table formatting in 5.18.3. Updated ACL and 2270 BIND references. Added XPATH reference. Closed issue JW24d by 2271 adding new optional operators. Updated more open issues, added 2272 issues from January meeting. Add K. Wiggen to Acknowledgements. 2273 Add Contributors section for the authors of the original draft. 2274 Close issue "scope-vs-versions" (optional feature added). Close 2275 (new) issue "1.3-import-DTD-terminology". Add issue "1.3-import- 2276 requirements-terminology". 2278 October 07, 2003 Typos fixed. Moved statement about DAV: namespace 2279 usage into separate (sub-)section. Closed "1.3-import- 2280 requirements-terminology". Update I18N Considerations with new 2281 xml:lang support info (see issue JW24d). Close issue "DB2/DB7" 2282 (remaining typing issues are now summarized in issue "typed- 2283 literal"). Fix misplaced section end in section 7. Started 2284 change to use RFC3253-style method definitions and error 2285 marshalling. 2287 October 08, 2003 Remove obsolete language that allowed reporting 2288 invalid scopes and such inside multistatus. Add new issue "5.4.2- 2289 scope-vs-redirects". 2291 C.8. since draft-reschke-webdav-search-05 2293 October 11, 2003 Separate DAV:basicsearch DTD into separate figures 2294 for better maintainability. Update DTD with language-* operators 2295 and typed-literal element (optional). 2297 October 14, 2003 Close issue "5.4.2-multiple-scope". 2299 November 04, 2003 Update reference from CaseMap to UNICODE4, section 2300 5.18. 2302 November 16, 2003 Updated issue "5.1-name-filtering". 2304 November 24, 2003 Reformatted scope description (collection vs. non- 2305 collection). 2307 November 30, 2003 Add issue "5_media_type_match". 2309 February 6, 2004 Updated all references. 2311 C.9. since draft-reschke-webdav-search-06 2313 July 05, 2004 Fix table in Appendix "Three-Valued Logic in DAV: 2314 basicsearch". 2316 September 14, 2004 Fix inconsistent DTD in section 5.2 and 5.4 for 2317 scope element. 2319 September 30, 2004 Rewrite editorial note and abstract. Update 2320 references (remove unneeded XMLNS, update ref to ACL and BIND 2321 specs). 2323 C.10. since draft-reschke-webdav-search-07 2325 October 01, 2004 Fix previous section heading (no change tracking). 2327 October 13, 2004 Fix DTD entry for is-collection. 2329 November 1, 2004 Fix DTD fragment query-schema-discovery. 2331 December 11, 2004 Update BIND reference. 2333 January 01, 2005 Fix DASL and DASLREQ references. 2335 February 06, 2005 Update XS2 reference. 2337 February 11, 2005 Rewrite "like" and "DASL" (response header) 2338 grammar in ABNF. 2340 May 5, 2005 Update references. Close issue "abnf" (only use ABNF 2341 when applicable). 2343 C.11. since draft-reschke-webdav-search-08 2345 May 06, 2005 Fix document title. 2347 September 25, 2005 Update BIND reference. 2349 October 05, 2005 Update RFC4234 reference. 2351 October 22, 2005 Author's address update. 2353 February 12, 2006 Update BIND reference. 2355 March 16, 2006 Add typed literals to QSD. 2357 August 20, 2006 Update XML reference. 2359 August 28, 2006 Add issues "5.3-select-count" (open) and "5.4- 2360 clarify-depth" (resolved). Update BIND reference (again). 2362 C.12. since draft-reschke-webdav-search-09 2364 December 1, 2006 Fix ABNF for DASL header. 2366 December 16, 2006 Close issue "qsd-optional", leave QSD optional. 2367 Close issue "2.4-multiple-uris", suggesting that servers should 2368 only return one response element per resource in case of multiple 2369 bindings. Add and resolve issues "authentication" and "cleanup- 2370 iana" (adding the header registration for "DASL"). Re-write 2371 rational for using the DAV: namespace, although this is a non-WG 2372 submission. 2374 January 4, 2007 Close issue "JW16b/JW24a", being related to 2375 "language-comparison". Add Appendix B. Close issues "language- 2376 comparison", "5_media_type_match", "5.1-name-filtering" and "5.3- 2377 select-count" as "won't fix", and add appendices accordingly. 2379 January 24, 2007 Update BIND reference. Close issue "5.4.2-scope- 2380 vs-redirects". Close issue "typed-literal": specify in terms of 2381 the XPATH 2.9 casting mechanism. Close issue "1.3-apply- 2382 condition-code-terminology" (no changes). 2384 C.13. since draft-reschke-webdav-search-10 2386 January 29, 2007 Issue "result-truncation": Add appendix describing 2387 the open issue of Result Paging. Describe the mechanism of 2388 marshalling truncated results in a new normative subsection (leave 2389 the actual example where it was). Add and resolve issues 2390 "rfc2606-compliance" and "response-format". Update contact 2391 information for Alan Babich, Jim Davis and Surendra Reddy (no 2392 change tracking). 2394 February 8, 2007 Update BIND reference. 2396 C.14. since draft-reschke-webdav-search-11 2398 Update: draft-newman-i18n-comparator-14 is RFC4790. Update: RFC2518 2399 replaced by draft-ietf-webdav-rfc2518bis. Updated BIND reference. 2400 Minox tweaks to intro (document organization and relation to DASL). 2402 Appendix D. Resolved issues (to be removed by RFC Editor before 2403 publication) 2405 Issues that were either rejected or resolved in this version of this 2406 document. 2408 D.1. update-webdav 2410 Type: edit 2412 julian.reschke@greenbytes.de (2007-03-10): Update reference from 2413 RFC2518 to draft-ietf-webdav-rfc2518bis. 2415 Appendix E. Open issues (to be removed by RFC Editor prior to 2416 publication) 2418 E.1. edit 2420 Type: edit 2422 julian.reschke@greenbytes.de (2004-07-05): Umbrella issue for 2423 editorial fixes/enhancements. 2425 Index 2427 C 2428 caseless attribute 27, 33 2429 Condition Names 2430 DAV:search-grammar-discovery-supported (pre) 9 2431 DAV:search-grammar-supported (pre) 9 2432 DAV:search-multiple-scope-supported (pre) 9 2433 DAV:search-scope-valid (pre) 9 2434 Criteria 5 2436 D 2437 DAV:and 26 2438 DAV:ascending 26 2439 DAV:contains 31 2440 DAV:depth 23 2441 DAV:descending 26 2442 DAV:eq 27 2443 caseless attribute 27 2444 DAV:from 23 2445 DAV:gt 27 2446 DAV:gte 27 2447 DAV:include-versions 23 2448 DAV:is-collection 29 2449 DAV:is-defined 30 2450 DAV:language-defined 29 2451 DAV:language-matches 29 2452 DAV:like 30 2453 DAV:limit 33 2454 DAV:literal 27 2455 DAV:lt 27 2456 DAV:lte 27 2457 DAV:not 26 2458 DAV:nresults 33 2459 DAV:or 26 2460 DAV:orderby 26 2461 DAV:scope 23 2462 DAV:score 32 2463 relationship to DAV:orderby 33 2464 DAV:search-grammar-discovery-supported precondition 9 2465 DAV:search-grammar-supported precondition 9 2466 DAV:search-multiple-scope-supported precondition 9 2467 DAV:search-scope-valid precondition 9 2468 DAV:select 23 2469 DAV:supported-query-grammar-set property 14 2470 DAV:typed-literal 27 2471 DAV:where 24 2473 M 2474 Methods 2475 SEARCH 8 2477 O 2478 OPTIONS method 13 2479 DASL response header 14 2481 P 2482 Properties 2483 DAV:supported-query-grammar-set 14 2485 Q 2486 Query Grammar Discovery 13 2487 using live property 14 2488 using OPTIONS 13 2489 Query Grammar 6 2490 Query Schema 6 2491 Query 5 2493 R 2494 Result Record Definition 6 2495 Result Record 6 2496 Result Set Truncation 2497 Example 10 2498 Result Set 6 2499 Result 6 2501 S 2502 Scope 6 2503 SEARCH method 8 2504 Search Modifier 6 2505 Sort Specification 6 2507 Authors' Addresses 2509 Julian F. Reschke (editor) 2510 greenbytes GmbH 2511 Hafenweg 16 2512 Muenster, NW 48155 2513 Germany 2515 Phone: +49 251 2807760 2516 Email: julian.reschke@greenbytes.de 2517 URI: http://greenbytes.de/tech/webdav/ 2519 Surendra Reddy 2520 Optena Corporation 2521 2860 Zanker Road, Suite 201 2522 San Jose, CA 95134 2523 U.S.A. 2525 Phone: +1 408 321 9006 2526 Email: skreddy@optena.com 2527 Jim Davis 2528 27 Borden Street 2529 Toronto, Ontario M5S 2M8 2530 Canada 2532 Phone: +1 416 929 5854 2533 Email: jrd3@alum.mit.edu 2534 URI: http://www.econetwork.net/~jdavis 2536 Alan Babich 2537 Filenet, an IBM company 2538 3565 Harbor Blvd. 2539 Costa Mesa, CA 92626 2540 U.S.A. 2542 Phone: +1 714 327 3403 2543 Email: ababich@us.ibm.com 2545 Full Copyright Statement 2547 Copyright (C) The IETF Trust (2007). 2549 This document is subject to the rights, licenses and restrictions 2550 contained in BCP 78, and except as set forth therein, the authors 2551 retain all their rights. 2553 This document and the information contained herein are provided on an 2554 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS 2555 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND 2556 THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS 2557 OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF 2558 THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED 2559 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 2561 Intellectual Property 2563 The IETF takes no position regarding the validity or scope of any 2564 Intellectual Property Rights or other rights that might be claimed to 2565 pertain to the implementation or use of the technology described in 2566 this document or the extent to which any license under such rights 2567 might or might not be available; nor does it represent that it has 2568 made any independent effort to identify any such rights. Information 2569 on the procedures with respect to rights in RFC documents can be 2570 found in BCP 78 and BCP 79. 2572 Copies of IPR disclosures made to the IETF Secretariat and any 2573 assurances of licenses to be made available, or the result of an 2574 attempt made to obtain a general license or permission for the use of 2575 such proprietary rights by implementers or users of this 2576 specification can be obtained from the IETF on-line IPR repository at 2577 http://www.ietf.org/ipr. 2579 The IETF invites any interested party to bring to its attention any 2580 copyrights, patents or patent applications, or other proprietary 2581 rights that may cover technology that may be required to implement 2582 this standard. Please address the information to the IETF at 2583 ietf-ipr@ietf.org. 2585 Acknowledgment 2587 Funding for the RFC Editor function is provided by the IETF 2588 Administrative Support Activity (IASA).