| draft-reschke-webdav-search-18.txt | draft-reschke-webdav-search-latest.txt | |||
|---|---|---|---|---|
| Network Working Group J. Reschke, Ed. | Network Working Group J. Reschke, Ed. | |||
| Internet-Draft greenbytes | Internet-Draft greenbytes | |||
| Intended status: Standards Track S. Reddy | Intended status: Standards Track S. Reddy | |||
| Expires: March 3, 2009 Mitrix | Expires: May 5, 2009 Mitrix | |||
| J. Davis | J. Davis | |||
| A. Babich | A. Babich | |||
| IBM | IBM | |||
| August 30, 2008 | November 2008 | |||
| Web Distributed Authoring and Versioning (WebDAV) SEARCH | Web Distributed Authoring and Versioning (WebDAV) SEARCH | |||
| draft-reschke-webdav-search-18 | draft-reschke-webdav-search-latest | |||
| Status of this Memo | Status of this Memo | |||
| By submitting this Internet-Draft, each author represents that any | By submitting this Internet-Draft, each author represents that any | |||
| applicable patent or other IPR claims of which he or she is aware | applicable patent or other IPR claims of which he or she is aware | |||
| have been or will be disclosed, and any of which he or she becomes | have been or will be disclosed, and any of which he or she becomes | |||
| aware will be disclosed, in accordance with Section 6 of BCP 79. | aware will be disclosed, in accordance with Section 6 of BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
| skipping to change at page 1, line 39 ¶ | skipping to change at page 1, line 39 ¶ | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
| http://www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
| The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
| http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
| This Internet-Draft will expire on March 3, 2009. | This Internet-Draft will expire on May 5, 2009. | |||
| Abstract | Abstract | |||
| This document specifies a set of methods, headers and properties | This document specifies a set of methods, headers, and properties | |||
| composing WebDAV SEARCH, an application of the HTTP/1.1 protocol to | composing Web Distributed Authoring and Versioning (WebDAV) SEARCH, | |||
| efficiently search for DAV resources based upon a set of client- | an application of the HTTP/1.1 protocol to efficiently search for DAV | |||
| supplied criteria. | resources based upon a set of client-supplied criteria. | |||
| Editorial Note (To be removed by RFC Editor before publication) | ||||
| Please send comments to the Distributed Authoring and Versioning | ||||
| (WebDAV) DASL mailing list at <mailto:www-webdav-dasl@w3.org>, which | ||||
| may be joined by sending a message with subject "subscribe" to | ||||
| <mailto:www-webdav-dasl-request@w3.org>. Discussions of the WebDAV | ||||
| DASL mailing list are archived at | ||||
| <http://lists.w3.org/Archives/Public/www-webdav-dasl/>. | ||||
| An issues list and XML and HTML versions of this draft are available | ||||
| from <http://greenbytes.de/tech/webdav/#draft-reschke-webdav-search>. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 1.1. DASL . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 1.1. DASL . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 1.2. Relationship to DAV . . . . . . . . . . . . . . . . . . . 6 | 1.2. Relationship to DAV . . . . . . . . . . . . . . . . . . . 5 | |||
| 1.3. Terms . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 1.3. Terms . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 1.4. Notational Conventions . . . . . . . . . . . . . . . . . . 8 | 1.4. Notational Conventions . . . . . . . . . . . . . . . . . . 7 | |||
| 1.5. Note on Usage of 'DAV:' XML Namespace . . . . . . . . . . 9 | 1.5. Note on Usage of 'DAV:' XML Namespace . . . . . . . . . . 8 | |||
| 1.6. An Overview of DASL at Work . . . . . . . . . . . . . . . 9 | 1.6. An Overview of DASL at Work . . . . . . . . . . . . . . . 8 | |||
| 2. The SEARCH Method . . . . . . . . . . . . . . . . . . . . . . 9 | 2. The SEARCH Method . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 2.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 2.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 2.2. The Request . . . . . . . . . . . . . . . . . . . . . . . 9 | 2.2. The Request . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 2.2.1. The Request-URI . . . . . . . . . . . . . . . . . . . 10 | 2.2.1. The Request-URI . . . . . . . . . . . . . . . . . . . 9 | |||
| 2.2.2. The Request Body . . . . . . . . . . . . . . . . . . . 10 | 2.2.2. The Request Body . . . . . . . . . . . . . . . . . . . 9 | |||
| 2.3. The Successful 207 (Multistatus) Response . . . . . . . . 11 | 2.3. The Successful 207 (Multistatus) Response . . . . . . . . 10 | |||
| 2.3.1. Result Set Truncation . . . . . . . . . . . . . . . . 11 | 2.3.1. Result Set Truncation . . . . . . . . . . . . . . . . 10 | |||
| 2.3.2. Extending the PROPFIND Response . . . . . . . . . . . 12 | 2.3.2. Extending the PROPFIND Response . . . . . . . . . . . 11 | |||
| 2.3.3. Example: A Simple Request and Response . . . . . . . . 12 | 2.3.3. Example: A Simple Request and Response . . . . . . . . 11 | |||
| 2.3.4. Example: Result Set Truncation . . . . . . . . . . . . 13 | 2.3.4. Example: Result Set Truncation . . . . . . . . . . . . 12 | |||
| 2.4. Unsuccessful Responses . . . . . . . . . . . . . . . . . . 14 | 2.4. Unsuccessful Responses . . . . . . . . . . . . . . . . . . 13 | |||
| 2.4.1. Example of an Invalid Scope . . . . . . . . . . . . . 14 | 2.4.1. Example of an Invalid Scope . . . . . . . . . . . . . 13 | |||
| 3. Discovery of Supported Query Grammars . . . . . . . . . . . . 15 | 3. Discovery of Supported Query Grammars . . . . . . . . . . . . 14 | |||
| 3.1. The OPTIONS Method . . . . . . . . . . . . . . . . . . . . 15 | 3.1. The OPTIONS Method . . . . . . . . . . . . . . . . . . . . 14 | |||
| 3.2. The DASL Response Header . . . . . . . . . . . . . . . . . 16 | 3.2. The DASL Response Header . . . . . . . . . . . . . . . . . 15 | |||
| 3.3. DAV:supported-query-grammar-set (protected) . . . . . . . 16 | 3.3. DAV:supported-query-grammar-set (Protected) . . . . . . . 15 | |||
| 3.4. Example: Grammar Discovery . . . . . . . . . . . . . . . . 16 | 3.4. Example: Grammar Discovery . . . . . . . . . . . . . . . . 15 | |||
| 4. Query Schema Discovery: QSD . . . . . . . . . . . . . . . . . 19 | 4. Query Schema Discovery: QSD . . . . . . . . . . . . . . . . . 18 | |||
| 4.1. Additional SEARCH Semantics . . . . . . . . . . . . . . . 19 | 4.1. Additional SEARCH Semantics . . . . . . . . . . . . . . . 18 | |||
| 4.1.1. Example of Query Schema Discovery . . . . . . . . . . 20 | 4.1.1. Example of Query Schema Discovery . . . . . . . . . . 19 | |||
| 5. The DAV:basicsearch Grammar . . . . . . . . . . . . . . . . . 21 | 5. The DAV:basicsearch Grammar . . . . . . . . . . . . . . . . . 20 | |||
| 5.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . 21 | 5.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 5.2. The DAV:basicsearch DTD . . . . . . . . . . . . . . . . . 22 | 5.2. The DAV:basicsearch DTD . . . . . . . . . . . . . . . . . 21 | |||
| 5.2.1. Example Query . . . . . . . . . . . . . . . . . . . . 24 | 5.2.1. Example Query . . . . . . . . . . . . . . . . . . . . 23 | |||
| 5.3. DAV:select . . . . . . . . . . . . . . . . . . . . . . . . 25 | 5.3. DAV:select . . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 5.4. DAV:from . . . . . . . . . . . . . . . . . . . . . . . . . 25 | 5.4. DAV:from . . . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 5.4.1. Relationship to the Request-URI . . . . . . . . . . . 25 | 5.4.1. Relationship to the Request-URI . . . . . . . . . . . 24 | |||
| 5.4.2. Scope . . . . . . . . . . . . . . . . . . . . . . . . 26 | 5.4.2. Scope . . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 5.5. DAV:where . . . . . . . . . . . . . . . . . . . . . . . . 26 | 5.5. DAV:where . . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 5.5.1. Use of Three-Valued Logic in Queries . . . . . . . . . 26 | 5.5.1. Use of Three-Valued Logic in Queries . . . . . . . . . 25 | |||
| 5.5.2. Handling Optional Operators . . . . . . . . . . . . . 26 | 5.5.2. Handling Optional Operators . . . . . . . . . . . . . 25 | |||
| 5.5.3. Treatment of NULL Values . . . . . . . . . . . . . . . 26 | 5.5.3. Treatment of NULL Values . . . . . . . . . . . . . . . 25 | |||
| 5.5.4. Treatment of Properties with mixed/element Content . . 27 | 5.5.4. Treatment of Properties with Mixed/Element Content . . 26 | |||
| 5.5.5. Example: Testing for Equality . . . . . . . . . . . . 27 | 5.5.5. Example: Testing for Equality . . . . . . . . . . . . 26 | |||
| 5.5.6. Example: Relative Comparisons . . . . . . . . . . . . 27 | 5.5.6. Example: Relative Comparisons . . . . . . . . . . . . 26 | |||
| 5.6. DAV:orderby . . . . . . . . . . . . . . . . . . . . . . . 28 | 5.6. DAV:orderby . . . . . . . . . . . . . . . . . . . . . . . 27 | |||
| 5.6.1. Example of Sorting . . . . . . . . . . . . . . . . . . 28 | 5.6.1. Example of Sorting . . . . . . . . . . . . . . . . . . 27 | |||
| 5.7. Boolean Operators: DAV:and, DAV:or, and DAV:not . . . . . 28 | 5.7. Boolean Operators: DAV:and, DAV:or, and DAV:not . . . . . 27 | |||
| 5.8. DAV:eq . . . . . . . . . . . . . . . . . . . . . . . . . . 29 | 5.8. DAV:eq . . . . . . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 5.9. DAV:lt, DAV:lte, DAV:gt, DAV:gte . . . . . . . . . . . . . 29 | 5.9. DAV:lt, DAV:lte, DAV:gt, DAV:gte . . . . . . . . . . . . . 28 | |||
| 5.10. DAV:literal . . . . . . . . . . . . . . . . . . . . . . . 29 | 5.10. DAV:literal . . . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 5.11. DAV:typed-literal (optional) . . . . . . . . . . . . . . . 29 | 5.11. DAV:typed-literal (Optional) . . . . . . . . . . . . . . . 28 | |||
| 5.11.1. Example for Typed Numerical Comparison . . . . . . . . 30 | 5.11.1. Example for Typed Numerical Comparison . . . . . . . . 29 | |||
| 5.12. Support for Matching xml:lang Attributes on Properties . . 30 | 5.12. Support for Matching xml:lang Attributes on Properties . . 29 | |||
| 5.12.1. DAV:language-defined (optional) . . . . . . . . . . . 31 | 5.12.1. DAV:language-defined (Optional) . . . . . . . . . . . 30 | |||
| 5.12.2. DAV:language-matches (optional) . . . . . . . . . . . 31 | 5.12.2. DAV:language-matches (Optional) . . . . . . . . . . . 30 | |||
| 5.12.3. Example of Language-Aware Matching . . . . . . . . . . 31 | 5.12.3. Example of Language-Aware Matching . . . . . . . . . . 30 | |||
| 5.13. DAV:is-collection . . . . . . . . . . . . . . . . . . . . 31 | 5.13. DAV:is-collection . . . . . . . . . . . . . . . . . . . . 30 | |||
| 5.13.1. Example of DAV:is-collection . . . . . . . . . . . . . 32 | 5.13.1. Example of DAV:is-collection . . . . . . . . . . . . . 31 | |||
| 5.14. DAV:is-defined . . . . . . . . . . . . . . . . . . . . . . 32 | 5.14. DAV:is-defined . . . . . . . . . . . . . . . . . . . . . . 31 | |||
| 5.15. DAV:like . . . . . . . . . . . . . . . . . . . . . . . . . 32 | 5.15. DAV:like . . . . . . . . . . . . . . . . . . . . . . . . . 31 | |||
| 5.15.1. Syntax for the Literal Pattern . . . . . . . . . . . . 33 | 5.15.1. Syntax for the Literal Pattern . . . . . . . . . . . . 32 | |||
| 5.15.2. Example of DAV:like . . . . . . . . . . . . . . . . . 33 | 5.15.2. Example of DAV:like . . . . . . . . . . . . . . . . . 32 | |||
| 5.16. DAV:contains . . . . . . . . . . . . . . . . . . . . . . . 33 | 5.16. DAV:contains . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
| 5.16.1. Result Scoring (DAV:score Element) . . . . . . . . . . 34 | 5.16.1. Result Scoring (DAV:score Element) . . . . . . . . . . 33 | |||
| 5.16.2. Ordering by Score . . . . . . . . . . . . . . . . . . 35 | 5.16.2. Ordering by Score . . . . . . . . . . . . . . . . . . 34 | |||
| 5.16.3. Examples . . . . . . . . . . . . . . . . . . . . . . . 35 | 5.16.3. Examples . . . . . . . . . . . . . . . . . . . . . . . 34 | |||
| 5.17. Limiting the Result Set . . . . . . . . . . . . . . . . . 35 | 5.17. Limiting the Result Set . . . . . . . . . . . . . . . . . 34 | |||
| 5.17.1. Relationship to Result Ordering . . . . . . . . . . . 35 | 5.17.1. Relationship to Result Ordering . . . . . . . . . . . 34 | |||
| 5.18. The 'caseless' XML Attribute . . . . . . . . . . . . . . . 36 | 5.18. The 'caseless' XML Attribute . . . . . . . . . . . . . . . 35 | |||
| 5.19. Query Schema for DAV:basicsearch . . . . . . . . . . . . . 36 | 5.19. Query Schema for DAV:basicsearch . . . . . . . . . . . . . 35 | |||
| 5.19.1. DTD for DAV:basicsearch QSD . . . . . . . . . . . . . 36 | 5.19.1. DTD for DAV:basicsearch QSD . . . . . . . . . . . . . 35 | |||
| 5.19.2. DAV:propdesc Element . . . . . . . . . . . . . . . . . 37 | 5.19.2. DAV:propdesc Element . . . . . . . . . . . . . . . . . 36 | |||
| 5.19.3. The DAV:datatype Property Description . . . . . . . . 37 | 5.19.3. The DAV:datatype Property Description . . . . . . . . 36 | |||
| 5.19.4. The DAV:searchable Property Description . . . . . . . 38 | 5.19.4. The DAV:searchable Property Description . . . . . . . 37 | |||
| 5.19.5. The DAV:selectable Property Description . . . . . . . 38 | 5.19.5. The DAV:selectable Property Description . . . . . . . 37 | |||
| 5.19.6. The DAV:sortable Property Description . . . . . . . . 38 | 5.19.6. The DAV:sortable Property Description . . . . . . . . 37 | |||
| 5.19.7. The DAV:caseless Property Description . . . . . . . . 38 | 5.19.7. The DAV:caseless Property Description . . . . . . . . 37 | |||
| 5.19.8. The DAV:operators XML Element . . . . . . . . . . . . 38 | 5.19.8. The DAV:operators XML Element . . . . . . . . . . . . 37 | |||
| 5.19.9. Example of Query Schema for DAV:basicsearch . . . . . 40 | 5.19.9. Example of Query Schema for DAV:basicsearch . . . . . 39 | |||
| 6. Internationalization Considerations . . . . . . . . . . . . . 40 | 6. Internationalization Considerations . . . . . . . . . . . . . 39 | |||
| 7. Security Considerations . . . . . . . . . . . . . . . . . . . 41 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 40 | |||
| 7.1. Implications of XML External Entities . . . . . . . . . . 41 | 7.1. Implications of XML External Entities . . . . . . . . . . 40 | |||
| 8. Scalability . . . . . . . . . . . . . . . . . . . . . . . . . 42 | 8. Scalability . . . . . . . . . . . . . . . . . . . . . . . . . 41 | |||
| 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 42 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 41 | |||
| 9.1. HTTP Headers . . . . . . . . . . . . . . . . . . . . . . . 42 | 9.1. HTTP Headers . . . . . . . . . . . . . . . . . . . . . . . 41 | |||
| 9.1.1. DASL . . . . . . . . . . . . . . . . . . . . . . . . . 42 | 9.1.1. DASL . . . . . . . . . . . . . . . . . . . . . . . . . 41 | |||
| 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 42 | 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 41 | |||
| 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 43 | 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 42 | |||
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 43 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 42 | |||
| 12.1. Normative References . . . . . . . . . . . . . . . . . . . 43 | 12.1. Normative References . . . . . . . . . . . . . . . . . . . 42 | |||
| 12.2. Informative References . . . . . . . . . . . . . . . . . . 44 | 12.2. Informative References . . . . . . . . . . . . . . . . . . 43 | |||
| Appendix A. Three-Valued Logic in DAV:basicsearch . . . . . . . . 45 | Appendix A. Three-Valued Logic in DAV:basicsearch . . . . . . . . 44 | |||
| Appendix B. Candidates for Future Protocol Extensions . . . . . . 46 | Appendix B. Candidates for Future Protocol Extensions . . . . . . 45 | |||
| B.1. Collation Support . . . . . . . . . . . . . . . . . . . . 46 | B.1. Collation Support . . . . . . . . . . . . . . . . . . . . 45 | |||
| B.2. Count . . . . . . . . . . . . . . . . . . . . . . . . . . 47 | B.2. Count . . . . . . . . . . . . . . . . . . . . . . . . . . 46 | |||
| B.3. Diagnostics for Unsupported Queries . . . . . . . . . . . 47 | B.3. Diagnostics for Unsupported Queries . . . . . . . . . . . 46 | |||
| B.4. Language Matching . . . . . . . . . . . . . . . . . . . . 47 | B.4. Language Matching . . . . . . . . . . . . . . . . . . . . 46 | |||
| B.5. Matching Media Types . . . . . . . . . . . . . . . . . . . 47 | B.5. Matching Media Types . . . . . . . . . . . . . . . . . . . 46 | |||
| B.6. Query by Name . . . . . . . . . . . . . . . . . . . . . . 48 | B.6. Query by Name . . . . . . . . . . . . . . . . . . . . . . 47 | |||
| B.7. Result Paging . . . . . . . . . . . . . . . . . . . . . . 48 | B.7. Result Paging . . . . . . . . . . . . . . . . . . . . . . 47 | |||
| B.8. Search Scope Discovery . . . . . . . . . . . . . . . . . . 48 | B.8. Search Scope Discovery . . . . . . . . . . . . . . . . . . 47 | |||
| Appendix C. Change Log (to be removed by RFC Editor before | Appendix C. Open issues (to be removed by RFC Editor prior to | |||
| publication) . . . . . . . . . . . . . . . . . . . . 48 | publication) . . . . . . . . . . . . . . . . . . . . 47 | |||
| C.1. From draft-davis-dasl-protocol-xxx . . . . . . . . . . . . 48 | C.1. edit . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 | |||
| C.2. since start of draft-reschke-webdav-search . . . . . . . . 50 | C.2. auth48 . . . . . . . . . . . . . . . . . . . . . . . . . . 47 | |||
| C.3. since draft-reschke-webdav-search-00 . . . . . . . . . . . 52 | Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 | |||
| C.4. since draft-reschke-webdav-search-01 . . . . . . . . . . . 52 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 49 | |||
| C.5. since draft-reschke-webdav-search-02 . . . . . . . . . . . 52 | Intellectual Property and Copyright Statements . . . . . . . . . . 51 | |||
| C.6. since draft-reschke-webdav-search-03 . . . . . . . . . . . 53 | ||||
| C.7. since draft-reschke-webdav-search-04 . . . . . . . . . . . 53 | ||||
| C.8. since draft-reschke-webdav-search-05 . . . . . . . . . . . 54 | ||||
| C.9. since draft-reschke-webdav-search-06 . . . . . . . . . . . 54 | ||||
| C.10. since draft-reschke-webdav-search-07 . . . . . . . . . . . 55 | ||||
| C.11. since draft-reschke-webdav-search-08 . . . . . . . . . . . 55 | ||||
| C.12. since draft-reschke-webdav-search-09 . . . . . . . . . . . 55 | ||||
| C.13. since draft-reschke-webdav-search-10 . . . . . . . . . . . 56 | ||||
| C.14. since draft-reschke-webdav-search-11 . . . . . . . . . . . 56 | ||||
| C.15. since draft-reschke-webdav-search-12 . . . . . . . . . . . 56 | ||||
| C.16. since draft-reschke-webdav-search-13 . . . . . . . . . . . 56 | ||||
| C.17. since draft-reschke-webdav-search-14 . . . . . . . . . . . 56 | ||||
| C.18. since draft-reschke-webdav-search-15 . . . . . . . . . . . 57 | ||||
| C.19. since draft-reschke-webdav-search-16 . . . . . . . . . . . 57 | ||||
| C.20. since draft-reschke-webdav-search-17 . . . . . . . . . . . 57 | ||||
| Appendix D. Resolved issues (to be removed by RFC Editor | ||||
| before publication) . . . . . . . . . . . . . . . . . 58 | ||||
| D.1. safeness . . . . . . . . . . . . . . . . . . . . . . . . . 58 | ||||
| D.2. ordering-vs-limiting . . . . . . . . . . . . . . . . . . . 58 | ||||
| Appendix E. Open issues (to be removed by RFC Editor prior to | ||||
| publication) . . . . . . . . . . . . . . . . . . . . 58 | ||||
| E.1. edit . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 | ||||
| Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 60 | ||||
| Intellectual Property and Copyright Statements . . . . . . . . . . 62 | ||||
| 1. Introduction | 1. Introduction | |||
| 1.1. DASL | 1.1. DASL | |||
| This document defines Web Distributed Authoring and Versioning | This document defines Web Distributed Authoring and Versioning | |||
| (WebDAV) SEARCH, an application of HTTP/1.1 forming a lightweight | (WebDAV) SEARCH, an application of HTTP/1.1 forming a lightweight | |||
| search protocol to transport queries and result sets that allows | search protocol to transport queries and result sets that allows | |||
| clients to make use of server-side search facilities. It is based on | clients to make use of server-side search facilities. It is based on | |||
| the expired internet draft for DAV Searching & Locating [DASL]. | earlier work done in the IETF DASL Working Group (see Section 10). | |||
| [DASLREQ] describes the motivation for DASL. In this specification, | In this specification, the terms "WebDAV SEARCH" and "DASL" are used | |||
| the terms "WebDAV SEARCH" and "DASL" are used interchangeably. | interchangeably. | |||
| DASL minimizes the complexity of clients so as to facilitate | DASL minimizes the complexity of clients so as to facilitate | |||
| widespread deployment of applications capable of utilizing the DASL | widespread deployment of applications capable of utilizing the DASL | |||
| search mechanisms. | search mechanisms. | |||
| DASL consists of: | DASL consists of: | |||
| o the SEARCH method and the request/response formats defined for it | o the SEARCH method and the request/response formats defined for it | |||
| (Section 2), | (Section 2), | |||
| o feature discovery through the "DASL" response header and the | o feature discovery through the "DASL" response header and the | |||
| optional DAV:supported-grammar-set property (Section 3), | optional DAV:supported-grammar-set property (Section 3), | |||
| o optional grammar schema discovery (Section 4) and | o optional grammar schema discovery (Section 4), and | |||
| o one mandatory grammar: DAV:basicsearch (Section 5). | o one mandatory grammar: DAV:basicsearch (Section 5). | |||
| 1.2. Relationship to DAV | 1.2. Relationship to DAV | |||
| DASL relies on the resource and property model defined by [RFC4918]. | DASL relies on the resource and property model defined by [RFC4918]. | |||
| DASL does not alter this model. Instead, DASL allows clients to | DASL does not alter this model. Instead, DASL allows clients to | |||
| access DAV-modeled resources through server-side search. | access DAV-modeled resources through server-side search. | |||
| 1.3. Terms | 1.3. Terms | |||
| This document uses the terms defined in [RFC2616], in [RFC4918], in | This document uses the terms defined in [RFC2616], [RFC4918], | |||
| [RFC3253] and in this section. | [RFC3253], and in this section. | |||
| "Criteria" | "Criteria" | |||
| An expression against which each resource in the search scope is | An expression against which each resource in the search scope is | |||
| evaluated. | evaluated. | |||
| "Query" | "Query" | |||
| A query is a combination of a search scope, search criteria, | A query is a combination of a search scope, search criteria, | |||
| result record definition, sort specification, and a search | result record definition, sort specification, and a search | |||
| skipping to change at page 8, line 20 ¶ | skipping to change at page 7, line 20 ¶ | |||
| 1.4. Notational Conventions | 1.4. Notational Conventions | |||
| This specification uses the Augmented Backus-Naur Form (ABNF) | This specification uses the Augmented Backus-Naur Form (ABNF) | |||
| notation of [RFC5234], unless explicitly stated otherwise. | notation of [RFC5234], unless explicitly stated otherwise. | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
| This document uses XML DTD fragments ([XML], Section 3.2) as a purely | This document uses XML DTD fragments ([XML], Section 3.2) as a purely | |||
| notational convention. WebDAV request and response bodies can not be | notational convention. WebDAV request and response bodies cannot be | |||
| validated by a DTD due to the specific extensibility rules defined in | validated by a DTD due to the specific extensibility rules defined in | |||
| Section 17 of [RFC4918] and due to the fact that all XML elements | Section 17 of [RFC4918] and due to the fact that all XML elements | |||
| defined by this specification use the XML namespace name "DAV:". In | defined by this specification use the XML namespace name "DAV:". In | |||
| particular: | particular: | |||
| 1. element names use the "DAV:" namespace, | 1. element names use the "DAV:" namespace, | |||
| 2. element ordering is irrelevant unless explicitly stated, | 2. element ordering is irrelevant unless explicitly stated, | |||
| 3. extension elements (elements not already defined as valid child | 3. extension elements (elements not already defined as valid child | |||
| skipping to change at page 9, line 7 ¶ | skipping to change at page 8, line 7 ¶ | |||
| Similarly, when an XML element type in the namespace | Similarly, when an XML element type in the namespace | |||
| "http://www.w3.org/2001/XMLSchema" is referenced in this document | "http://www.w3.org/2001/XMLSchema" is referenced in this document | |||
| outside of the context of an XML fragment, the string "xs:" will be | outside of the context of an XML fragment, the string "xs:" will be | |||
| prefixed to the element type. | prefixed to the element type. | |||
| This document inherits, and sometimes extends, DTD productions from | This document inherits, and sometimes extends, DTD productions from | |||
| Section 14 of [RFC4918]. | Section 14 of [RFC4918]. | |||
| 1.5. Note on Usage of 'DAV:' XML Namespace | 1.5. Note on Usage of 'DAV:' XML Namespace | |||
| This specification defines elements, properties and condition names | This specification defines elements, properties, and condition names | |||
| in the XML namespace "DAV:". In general, only specifications | in the XML namespace "DAV:". In general, only specifications | |||
| authored by IETF working groups are supposed to do this. In this | authored by IETF working groups are supposed to do this. In this | |||
| case an exception was made, because WebDAV SEARCH started its life in | case an exception was made, because WebDAV SEARCH started its life in | |||
| the IETF DASL working group (<http://www.webdav.org/dasl/>, and at | the IETF DASL working group (<http://www.webdav.org/dasl/>, and at | |||
| the time the working group closed down there was already significant | the time the working group closed down there was already significant | |||
| deployment of this specification. | deployment of this specification. | |||
| 1.6. An Overview of DASL at Work | 1.6. An Overview of DASL at Work | |||
| One can express the basic usage of DASL in the following steps: | One can express the basic usage of DASL in the following steps: | |||
| skipping to change at page 10, line 13 ¶ | skipping to change at page 9, line 13 ¶ | |||
| Request-URI. | Request-URI. | |||
| 2.2.1. The Request-URI | 2.2.1. The Request-URI | |||
| The Request-URI identifies the search arbiter. Any HTTP resource may | The Request-URI identifies the search arbiter. Any HTTP resource may | |||
| function as search arbiter. It is not a new type of resource (in the | function as search arbiter. It is not a new type of resource (in the | |||
| sense of DAV:resourcetype as defined in [RFC4918], Section 15.9), nor | sense of DAV:resourcetype as defined in [RFC4918], Section 15.9), nor | |||
| does it have to be a WebDAV-compliant resource. | does it have to be a WebDAV-compliant resource. | |||
| The SEARCH method defines no relationship between the arbiter and the | The SEARCH method defines no relationship between the arbiter and the | |||
| scope of the search, rather the particular query grammar used in the | scope of the search; rather, the particular query grammar used in the | |||
| query defines the relationship. For example, a query grammar may | query defines the relationship. For example, a query grammar may | |||
| force the Request-URI to correspond exactly to the search scope. | force the Request-URI to correspond exactly to the search scope. | |||
| 2.2.2. The Request Body | 2.2.2. The Request Body | |||
| The server MUST process a text/xml or application/xml request body, | The server MUST process a text/xml or application/xml request body, | |||
| and MAY process request bodies in other formats. See [RFC3023] for | and MAY process request bodies in other formats. See [RFC3023] for | |||
| guidance on packaging XML in requests. | guidance on packaging XML in requests. | |||
| Marshalling: | Marshalling: | |||
| skipping to change at page 11, line 15 ¶ | skipping to change at page 10, line 15 ¶ | |||
| (DAV:search-scope-valid): the supplied search scope must be valid. | (DAV:search-scope-valid): the supplied search scope must be valid. | |||
| There can be various reasons for a search scope to be invalid, | There can be various reasons for a search scope to be invalid, | |||
| including unsupported URI schemes and communication problems. | including unsupported URI schemes and communication problems. | |||
| Servers MAY add [RFC4918] compliant DAV:response elements as | Servers MAY add [RFC4918] compliant DAV:response elements as | |||
| content to the condition element indicating the precise reason for | content to the condition element indicating the precise reason for | |||
| the failure. | the failure. | |||
| 2.3. The Successful 207 (Multistatus) Response | 2.3. The Successful 207 (Multistatus) Response | |||
| If the server returns 207 (Multistatus), then the search proceeded | If the server returns 207 (Multistatus), then the search proceeded | |||
| successfully and the response MUST use the WebDAV multistatus format | successfully, and the response MUST use the WebDAV multistatus format | |||
| ([RFC4918], Section 13). The results of this method SHOULD NOT be | ([RFC4918], Section 13). The results of this method SHOULD NOT be | |||
| cached. | cached. | |||
| There MUST be one DAV:response for each resource that matched the | There MUST be one DAV:response for each resource that matched the | |||
| search criteria. For each such response, the DAV:href element | search criteria. For each such response, the DAV:href element | |||
| contains the URI of the resource, and the response MUST include a | contains the URI of the resource, and the response MUST include a | |||
| DAV:propstat element. | DAV:propstat element. | |||
| Note: the WebDAV multistatus format requires at least one DAV: | Note: the WebDAV multistatus format requires at least one DAV: | |||
| response child element. This specification relaxes that | response child element. This specification relaxes that | |||
| restriction so that empty results can be represented. | restriction so that empty results can be represented. | |||
| Note that for each matching resource found there may be multiple URIs | Note that for each matching resource found, there may be multiple | |||
| within the search scope mapped to it. In this case, a server SHOULD | URIs within the search scope mapped to it. In this case, a server | |||
| report only one of these URIs. Clients can use the live property | SHOULD report only one of these URIs. Clients can use the live | |||
| DAV:resource-id defined in Section 3.1 of [draft-ietf-webdav-bind] to | property DAV:resource-id, defined in Section 3.1 of [WEBDAV-BIND] to | |||
| identify possible duplicates. | identify possible duplicates. | |||
| 2.3.1. Result Set Truncation | 2.3.1. Result Set Truncation | |||
| A server MAY limit the number of resources in a reply, for example to | A server MAY limit the number of resources in a reply, for example, | |||
| limit the amount of resources expended in processing a query. If it | to limit the amount of resources expended in processing a query. If | |||
| does so, the reply MUST use status code 207, return a DAV:multistatus | it does so, the reply MUST use status code 207, return a DAV: | |||
| response body and indicate a status of 507 (Insufficient Storage) for | multistatus response body, and indicate a status of 507 (Insufficient | |||
| the search arbiter URI. It SHOULD include the partial results. | Storage) for the search arbiter URI. It SHOULD include the partial | |||
| results. | ||||
| When a result set is truncated, there may be many more resources that | When a result set is truncated, there may be many more resources that | |||
| satisfy the search criteria but that were not examined. | satisfy the search criteria but that were not examined. | |||
| If partial results are included and the client requested an ordered | If partial results are included and the client requested an ordered | |||
| result set in the original request, then any partial results that are | result set in the original request, then any partial results that are | |||
| returned MUST be ordered as the client directed. | returned MUST be ordered as the client directed. | |||
| Note that the partial results returned MAY be any subset of the | Note that the partial results returned MAY be any subset of the | |||
| result set that would have satisfied the original query. | result set that would have satisfied the original query. | |||
| 2.3.2. Extending the PROPFIND Response | 2.3.2. Extending the PROPFIND Response | |||
| A response MAY include more information than PROPFIND defines so long | A response MAY include more information than PROPFIND defines, so | |||
| as the extra information does not invalidate the PROPFIND response. | long as the extra information does not invalidate the PROPFIND | |||
| Query grammars SHOULD define how the response matches the PROPFIND | response. Query grammars SHOULD define how the response matches the | |||
| response. | PROPFIND response. | |||
| 2.3.3. Example: A Simple Request and Response | 2.3.3. Example: A Simple Request and Response | |||
| This example demonstrates the request and response framework. The | This example demonstrates the request and response framework. The | |||
| following XML document shows a simple (hypothetical) natural language | following XML document shows a simple (hypothetical) natural language | |||
| query. The name of the query element is natural-language-query in | query. The name of the query element is natural-language-query in | |||
| the XML namespace "http://example.com/foo". The actual query is | the XML namespace "http://example.com/foo". The actual query is | |||
| "Find the locations of good Thai restaurants in Los Angeles". For | "Find the locations of good Thai restaurants in Los Angeles". For | |||
| this hypothetical query, the arbiter returns two properties for each | this hypothetical query, the arbiter returns two properties for each | |||
| selected resource. | selected resource. | |||
| skipping to change at page 14, line 35 ¶ | skipping to change at page 13, line 35 ¶ | |||
| Only first two matching records were returned | Only first two matching records were returned | |||
| </D:responsedescription> | </D:responsedescription> | |||
| </D:response> | </D:response> | |||
| </D:multistatus> | </D:multistatus> | |||
| 2.4. Unsuccessful Responses | 2.4. Unsuccessful Responses | |||
| If a SEARCH request could not be executed or the attempt to execute | If a SEARCH request could not be executed or the attempt to execute | |||
| it resulted in an error, the server MUST indicate the failure with an | it resulted in an error, the server MUST indicate the failure with an | |||
| appropriate status code and SHOULD add a response body as defined in | appropriate status code and SHOULD add a response body as defined in | |||
| [RFC3253], Section 1.6. Unless otherwise stated, condition elements | Section 1.6 of [RFC3253]. Unless otherwise stated, condition | |||
| are empty, however specific condition elements MAY include additional | elements are empty; however, specific condition elements MAY include | |||
| child elements that describe the error condition in more detail. | additional child elements that describe the error condition in more | |||
| detail. | ||||
| 2.4.1. Example of an Invalid Scope | 2.4.1. Example of an Invalid Scope | |||
| In the example below, a request failed because the scope identifies a | In the example below, a request failed because the scope identifies a | |||
| HTTP resource that was not found. | HTTP resource that was not found. | |||
| >> Response: | >> Response: | |||
| HTTP/1.1 409 Conflict | HTTP/1.1 409 Conflict | |||
| Content-Type: text/xml; charset="utf-8" | Content-Type: text/xml; charset="utf-8" | |||
| skipping to change at page 15, line 32 ¶ | skipping to change at page 14, line 32 ¶ | |||
| Servers MUST support discovery of the query grammars supported by a | Servers MUST support discovery of the query grammars supported by a | |||
| search arbiter resource. | search arbiter resource. | |||
| Clients can determine which query grammars are supported by an | Clients can determine which query grammars are supported by an | |||
| arbiter by invoking OPTIONS on the search arbiter. If the resource | arbiter by invoking OPTIONS on the search arbiter. If the resource | |||
| supports SEARCH, then the DASL response header will appear in the | supports SEARCH, then the DASL response header will appear in the | |||
| response. The DASL response header lists the supported grammars. | response. The DASL response header lists the supported grammars. | |||
| Servers supporting the WebDAV extensions [RFC3253] and/or [RFC3744] | Servers supporting the WebDAV extensions [RFC3253] and/or [RFC3744] | |||
| MUST also | MUST also: | |||
| o report SEARCH in the live property DAV:supported-method-set for | o report SEARCH in the live property DAV:supported-method-set for | |||
| all search arbiter resources and | all search arbiter resources, and | |||
| o support the live property DAV:supported-query-grammar-set as | o support the live property DAV:supported-query-grammar-set as | |||
| defined in Section 3.3. | defined in Section 3.3. | |||
| 3.1. The OPTIONS Method | 3.1. The OPTIONS Method | |||
| The OPTIONS method allows the client to discover if a resource | The OPTIONS method allows the client to discover if a resource | |||
| supports the SEARCH method and to determine the list of search | supports the SEARCH method and to determine the list of search | |||
| grammars supported for that resource. | grammars supported for that resource. | |||
| skipping to change at page 16, line 15 ¶ | skipping to change at page 15, line 15 ¶ | |||
| DASL servers MUST include the DASL header in the OPTIONS response. | DASL servers MUST include the DASL header in the OPTIONS response. | |||
| This header identifies the search grammars supported by that | This header identifies the search grammars supported by that | |||
| resource. | resource. | |||
| 3.2. The DASL Response Header | 3.2. The DASL Response Header | |||
| DASLHeader = "DASL" ":" 1#Coded-URL | DASLHeader = "DASL" ":" 1#Coded-URL | |||
| Coded-URL = <defined in Section 10.1 of [RFC4918]> | Coded-URL = <defined in Section 10.1 of [RFC4918]> | |||
| (This grammar uses the augmented BNF format defined in Section 2.1 of | (This grammar uses the augmented BNF format defined in Section 2.1 of | |||
| [RFC2616]) | [RFC2616].) | |||
| The DASL response header indicates server support for query grammars | The DASL response header indicates server support for query grammars | |||
| in the OPTIONS method. The value is a list of URIs that indicate the | in the OPTIONS method. The value is a list of URIs that indicate the | |||
| types of supported grammars. Note that although the URIs can be used | types of supported grammars. Note that although the URIs can be used | |||
| to identify each supported search grammar, there is not necessarily a | to identify each supported search grammar, there is not necessarily a | |||
| direct relationship between the URI and the XML element name that can | direct relationship between the URI and the XML element name that can | |||
| be used in XML based SEARCH requests (the element name itself is | be used in XML based SEARCH requests (the element name itself is | |||
| identified by its namespace name (a URI reference) and the element's | identified by its namespace name (a URI reference) and the element's | |||
| local name). | local name). | |||
| Note: this header field value is defined as a comma-separated list | Note: this header field value is defined as a comma-separated list | |||
| ([RFC2616], Section 4.2), thus grammar URIs can appear in multiple | ([RFC2616], Section 4.2); thus, grammar URIs can appear in | |||
| header instances, separated by commas, or both. | multiple header instances, separated by commas, or both. | |||
| For example: | For example: | |||
| DASL: <http://foobar.example/syntax1>, | DASL: <http://foobar.example/syntax1>, | |||
| <http://akuma.example/syntax2>, <DAV:basicsearch> | <http://akuma.example/syntax2>, <DAV:basicsearch> | |||
| DASL: <http://example.com/foo/natural-language-query> | DASL: <http://example.com/foo/natural-language-query> | |||
| 3.3. DAV:supported-query-grammar-set (protected) | 3.3. DAV:supported-query-grammar-set (Protected) | |||
| This WebDAV property is required for any server supporting either | This WebDAV property is required for any server supporting either | |||
| [RFC3253] and/or [RFC3744] and identifies the XML based query | [RFC3253] and/or [RFC3744] and identifies the XML-based query | |||
| grammars that are supported by the search arbiter resource. | grammars that are supported by the search arbiter resource. | |||
| <!ELEMENT supported-query-grammar-set (supported-query-grammar*)> | <!ELEMENT supported-query-grammar-set (supported-query-grammar*)> | |||
| <!ELEMENT supported-query-grammar (grammar)> | <!ELEMENT supported-query-grammar (grammar)> | |||
| <!ELEMENT grammar ANY> | <!ELEMENT grammar ANY> | |||
| <!-- ANY value: a query grammar element type --> | <!-- ANY value: a query grammar element type --> | |||
| 3.4. Example: Grammar Discovery | 3.4. Example: Grammar Discovery | |||
| This example shows that the server supports search on the /somefolder | This example shows that the server supports search on the /somefolder | |||
| skipping to change at page 19, line 4 ¶ | skipping to change at page 18, line 4 ¶ | |||
| <supported-method name="UNLOCK" /> | <supported-method name="UNLOCK" /> | |||
| </supported-method-set> | </supported-method-set> | |||
| </prop> | </prop> | |||
| <status>HTTP/1.1 200 OK</status> | <status>HTTP/1.1 200 OK</status> | |||
| </propstat> | </propstat> | |||
| </response> | </response> | |||
| </multistatus> | </multistatus> | |||
| Note that the query grammar element names marshalled as part of the | Note that the query grammar element names marshalled as part of the | |||
| DAV:supported-query-grammar-set can be directly used as element names | DAV:supported-query-grammar-set can be directly used as element names | |||
| in an XML based query. | in an XML-based query. | |||
| 4. Query Schema Discovery: QSD | 4. Query Schema Discovery: QSD | |||
| Servers MAY support the discovery of the schema for a query grammar. | Servers MAY support the discovery of the schema for a query grammar. | |||
| The DASL response header and the DAV:supported-query-grammar-set | The DASL response header and the DAV:supported-query-grammar-set | |||
| property provide means for clients to discover the set of query | property provide means for clients to discover the set of query | |||
| grammars supported by a resource. This alone is not sufficient | grammars supported by a resource. This alone is not sufficient | |||
| information for a client to generate a query. For example, the DAV: | information for a client to generate a query. For example, the DAV: | |||
| basicsearch grammar defines a set of queries consisting of a set of | basicsearch grammar defines a set of queries consisting of a set of | |||
| skipping to change at page 19, line 32 ¶ | skipping to change at page 18, line 32 ¶ | |||
| optional operator that can be used to express content-based queries | optional operator that can be used to express content-based queries | |||
| in a proprietary syntax. QSD allows a client to discover these | in a proprietary syntax. QSD allows a client to discover these | |||
| operators and their syntax. The set of discoverable quantities will | operators and their syntax. The set of discoverable quantities will | |||
| differ from grammar to grammar, but each grammar can define a means | differ from grammar to grammar, but each grammar can define a means | |||
| for a client to discover what can be discovered. | for a client to discover what can be discovered. | |||
| In general, the schema for a given query grammar depends on both the | In general, the schema for a given query grammar depends on both the | |||
| resource (the arbiter) and the scope. A given resource might have | resource (the arbiter) and the scope. A given resource might have | |||
| access to one set of properties for one potential scope, and another | access to one set of properties for one potential scope, and another | |||
| set for a different scope. For example, consider a server able to | set for a different scope. For example, consider a server able to | |||
| search two distinct collections, one holding cooking recipes, the | search two distinct collections: one holding cooking recipes, the | |||
| other design documents for nuclear weapons. While both collections | other design documents for nuclear weapons. While both collections | |||
| might support properties such as author, title, and date, the first | might support properties such as author, title, and date, the first | |||
| might also define properties such as calories and preparation time, | might also define properties such as calories and preparation time, | |||
| while the second defined properties such as yield and applicable | while the second defined properties such as yield and applicable | |||
| patents. Two distinct arbiters indexing the same collection might | patents. Two distinct arbiters indexing the same collection might | |||
| also have access to different properties. For example, the recipe | also have access to different properties. For example, the recipe | |||
| collection mentioned above might also be indexed by a value-added | collection mentioned above might also be indexed by a value-added | |||
| server that also stored the names of chefs who had tested the recipe. | server that also stored the names of chefs who had tested the recipe. | |||
| Note also that the available query schema might also depend on other | Note also that the available query schema might also depend on other | |||
| factors, such as the identity of the principal conducting the search, | factors, such as the identity of the principal conducting the search, | |||
| skipping to change at page 20, line 11 ¶ | skipping to change at page 19, line 11 ¶ | |||
| expressing the possible query schema. A client retrieves the schema | expressing the possible query schema. A client retrieves the schema | |||
| for a given query grammar on an arbiter resource with a given scope | for a given query grammar on an arbiter resource with a given scope | |||
| by invoking the SEARCH method on that arbiter with that grammar and | by invoking the SEARCH method on that arbiter with that grammar and | |||
| scope and with a root element of DAV:query-schema-discovery rather | scope and with a root element of DAV:query-schema-discovery rather | |||
| than DAV:searchrequest. | than DAV:searchrequest. | |||
| Marshalling: | Marshalling: | |||
| The request body MUST be a DAV:query-schema-discovery element. | The request body MUST be a DAV:query-schema-discovery element. | |||
| <!ELEMENT query-schema-discovery ANY> | <!ELEMENT query-schema-discovery ANY> | |||
| <!-- ANY value: XML element specifying the query grammar | <!-- ANY value: XML element specifying the query grammar | |||
| and the scope --> | and the scope --> | |||
| The response body takes the form of a DAV:multistatus element | The response body takes the form of a DAV:multistatus element | |||
| ([RFC4918], Section 13), where DAV:response is extended to hold | ([RFC4918], Section 13), where DAV:response is extended to hold | |||
| the returned query grammar inside a DAV:query-schema container | the returned query grammar inside a DAV:query-schema container | |||
| element. | element. | |||
| <!ELEMENT response (href, status, query-schema?, | <!ELEMENT response (href, status, query-schema?, | |||
| responsedescription?) > | responsedescription?) > | |||
| <!ELEMENT query-schema ANY> | <!ELEMENT query-schema ANY> | |||
| The content of this container is an XML element whose name and syntax | The content of this container is an XML element whose name and syntax | |||
| depend upon the grammar, and whose value may (and likely will) vary | depend upon the grammar, and whose value may (and likely will) vary | |||
| depending upon the grammar, arbiter, and scope. | depending upon the grammar, arbiter, and scope. | |||
| 4.1.1. Example of Query Schema Discovery | 4.1.1. Example of Query Schema Discovery | |||
| In this example, the arbiter is recipes.example, the grammar is DAV: | In this example, the arbiter is recipes.example, the grammar is DAV: | |||
| basicsearch, the scope is also recipes.example. | basicsearch, the scope is also recipes.example. | |||
| skipping to change at page 25, line 47 ¶ | skipping to change at page 24, line 47 ¶ | |||
| When the child element DAV:include-versions is present, the search | When the child element DAV:include-versions is present, the search | |||
| scope will include all versions (see [RFC3253], Section 2.2.1) of all | scope will include all versions (see [RFC3253], Section 2.2.1) of all | |||
| version-controlled resources in scope. Servers that do support | version-controlled resources in scope. Servers that do support | |||
| versioning but do not support the DAV:include-versions feature MUST | versioning but do not support the DAV:include-versions feature MUST | |||
| signal an error if it is used in a query (see Section 2.2.2, | signal an error if it is used in a query (see Section 2.2.2, | |||
| precondition DAV:search-scope-valid). | precondition DAV:search-scope-valid). | |||
| 5.4.1. Relationship to the Request-URI | 5.4.1. Relationship to the Request-URI | |||
| If the DAV:scope element is an URI ([RFC3986], Section 3), the scope | If the DAV:scope element is a URI ([RFC3986], Section 3), the scope | |||
| is exactly that URI. | is exactly that URI. | |||
| If the DAV:scope element is a relative reference ([RFC3986], Section | If the DAV:scope element is a relative reference ([RFC3986], Section | |||
| 4.2), the scope is taken to be relative to the Request-URI. | 4.2), the scope is taken to be relative to the Request-URI. | |||
| 5.4.2. Scope | 5.4.2. Scope | |||
| A Scope can be an arbitrary URI reference. | A Scope can be an arbitrary URI reference. | |||
| Servers, of course, may support only particular scopes. This may | Servers, of course, may support only particular scopes. This may | |||
| include limitations for particular schemes such as "http:" or "ftp:" | include limitations for particular schemes such as "http:" or "ftp:" | |||
| or certain URI namespaces. However, WebDAV compliant search arbiters | or certain URI namespaces. However, WebDAV-compliant search arbiters | |||
| minimally SHOULD support scopes that match their own URI. | minimally SHOULD support scopes that match their own URI. | |||
| 5.5. DAV:where | 5.5. DAV:where | |||
| The DAV:where element defines the search condition for inclusion of | The DAV:where element defines the search condition for inclusion of | |||
| resources in the result set. The value of this element is an XML | resources in the result set. The value of this element is an XML | |||
| element that defines a search operator that evaluates to one of the | element that defines a search operator that evaluates to one of the | |||
| Boolean truth values TRUE, FALSE, or UNKNOWN. The search operator | Boolean truth values TRUE, FALSE, or UNKNOWN. The search operator | |||
| contained by DAV:where may itself contain and evaluate additional | contained by DAV:where may itself contain and evaluate additional | |||
| search operators as operands, which in turn may contain and evaluate | search operators as operands, which in turn may contain and evaluate | |||
| additional search operators as operands, etc. recursively. | additional search operators as operands, etc., recursively. | |||
| 5.5.1. Use of Three-Valued Logic in Queries | 5.5.1. Use of Three-Valued Logic in Queries | |||
| Each operator defined for use in the where clause that returns a | Each operator defined for use in the where clause that returns a | |||
| Boolean value MUST evaluate to TRUE, FALSE, or UNKNOWN. The resource | Boolean value MUST evaluate to TRUE, FALSE, or UNKNOWN. The resource | |||
| under scan is included as a member of the result set if and only if | under scan is included as a member of the result set if and only if | |||
| the search condition evaluates to TRUE. | the search condition evaluates to TRUE. | |||
| Consult Appendix A for details on the application of three-valued | Consult Appendix A for details on the application of three-valued | |||
| logic in query expressions. | logic in query expressions. | |||
| 5.5.2. Handling Optional Operators | 5.5.2. Handling Optional Operators | |||
| If a query contains an operator that is not supported by the server, | If a query contains an operator that is not supported by the server, | |||
| then the server MUST respond with a 422 (Unprocessable Entity) status | then the server MUST respond with a 422 (Unprocessable Entity) status | |||
| code. | code. | |||
| 5.5.3. Treatment of NULL Values | 5.5.3. Treatment of NULL Values | |||
| If a PROPFIND for a property value would yield a non-2xx (see | If a PROPFIND for a property value would yield a non-2xx (see Section | |||
| [RFC2616], Section 10.2) response for that property, then that | 10.2 of [RFC2616]) response for that property, then that property is | |||
| property is considered NULL. | considered NULL. | |||
| NULL values are "less than" all other values in comparisons. | NULL values are "less than" all other values in comparisons. | |||
| Empty strings (zero length strings) are not NULL values. An empty | Empty strings (zero length strings) are not NULL values. An empty | |||
| string is "less than" a string with length greater than zero. | string is "less than" a string with length greater than zero. | |||
| The DAV:is-defined operator is defined to test if the value of a | The DAV:is-defined operator is defined to test if the value of a | |||
| property is not NULL. | property is not NULL. | |||
| 5.5.4. Treatment of Properties with mixed/element Content | 5.5.4. Treatment of Properties with Mixed/Element Content | |||
| Comparisons of properties that do not have simple types (text-only | Comparisons of properties that do not have simple types (text-only | |||
| content) is out-of-scope for the standard operators defined for DAV: | content) is out of scope for the standard operators defined for DAV: | |||
| basicsearch and therefore is defined to be UNKNOWN (as per | basicsearch and therefore is defined to be UNKNOWN (as per | |||
| Appendix A). For querying the DAV:resourcetype property, see | Appendix A). For querying the DAV:resourcetype property, see | |||
| Section 5.13. | Section 5.13. | |||
| 5.5.5. Example: Testing for Equality | 5.5.5. Example: Testing for Equality | |||
| The example shows a single operator (DAV:eq) applied in the criteria. | The example shows a single operator (DAV:eq) applied in the criteria. | |||
| <d:where xmlns:d='DAV:'> | <d:where xmlns:d='DAV:'> | |||
| <d:eq> | <d:eq> | |||
| skipping to change at page 28, line 21 ¶ | skipping to change at page 27, line 21 ¶ | |||
| appears before another in the result set. Comparisons are applied in | appears before another in the result set. Comparisons are applied in | |||
| the order they occur in the DAV:orderby element, earlier comparisons | the order they occur in the DAV:orderby element, earlier comparisons | |||
| being more significant. | being more significant. | |||
| The comparisons defined here use only a single property from each | The comparisons defined here use only a single property from each | |||
| resource, compared using the same ordering as the DAV:lt operator | resource, compared using the same ordering as the DAV:lt operator | |||
| (ascending) or DAV:gt operator (descending). If neither direction is | (ascending) or DAV:gt operator (descending). If neither direction is | |||
| specified, the default is DAV:ascending. | specified, the default is DAV:ascending. | |||
| In the context of the DAV:orderby element, null values are considered | In the context of the DAV:orderby element, null values are considered | |||
| to collate before any actual (i.e., non null) value, including | to collate before any actual (i.e., non-null) value, including | |||
| strings of zero length (this is compatible with [SQL99]). | strings of zero length (this is compatible with [SQL99]). | |||
| The "caseless" attribute may be used to indicate case-sensitivity for | The "caseless" attribute may be used to indicate case-sensitivity for | |||
| comparisons (Section 5.18). | comparisons (Section 5.18). | |||
| 5.6.1. Example of Sorting | 5.6.1. Example of Sorting | |||
| This sort orders first by last name of the author, and then by size, | This sort orders first by last name of the author and then by size, | |||
| in descending order, so that for each author, the largest works | in descending order, so that for each author, the largest works | |||
| appear first. | appear first. | |||
| <d:orderby xmlns:d='DAV:' xmlns:r='http://example.com/ns'> | <d:orderby xmlns:d='DAV:' xmlns:r='http://example.com/ns'> | |||
| <d:order> | <d:order> | |||
| <d:prop><r:lastname/></d:prop> | <d:prop><r:lastname/></d:prop> | |||
| <d:ascending/> | <d:ascending/> | |||
| </d:order> | </d:order> | |||
| <d:order> | <d:order> | |||
| <d:prop><d:getcontentlength/></d:prop> | <d:prop><d:getcontentlength/></d:prop> | |||
| skipping to change at page 29, line 18 ¶ | skipping to change at page 28, line 18 ¶ | |||
| The DAV:eq operator provides simple equality matching on property | The DAV:eq operator provides simple equality matching on property | |||
| values. | values. | |||
| The "caseless" attribute may be used with this element | The "caseless" attribute may be used with this element | |||
| (Section 5.18). | (Section 5.18). | |||
| 5.9. DAV:lt, DAV:lte, DAV:gt, DAV:gte | 5.9. DAV:lt, DAV:lte, DAV:gt, DAV:gte | |||
| The DAV:lt, DAV:lte, DAV:gt, and DAV:gte operators provide | The DAV:lt, DAV:lte, DAV:gt, and DAV:gte operators provide | |||
| comparisons on property values, using less-than, less-than or equal, | comparisons on property values, using less-than, less-than or equal, | |||
| greater-than, and greater-than or equal respectively. The "caseless" | greater-than, and greater-than or equal, respectively. The | |||
| attribute may be used with these elements (Section 5.18). | "caseless" attribute may be used with these elements (Section 5.18). | |||
| 5.10. DAV:literal | 5.10. DAV:literal | |||
| DAV:literal allows literal values to be placed in an expression. | DAV:literal allows literal values to be placed in an expression. | |||
| White space in literal values is significant in comparisons. For | White space in literal values is significant in comparisons. For | |||
| consistency with [RFC4918], clients SHOULD NOT specify the attribute | consistency with [RFC4918], clients SHOULD NOT specify the attribute | |||
| "xml:space" (Section 2.10 of [XML]) to override this behavior. | "xml:space" (Section 2.10 of [XML]) to override this behavior. | |||
| In comparisons, the contents of DAV:literal SHOULD be treated as | In comparisons, the contents of DAV:literal SHOULD be treated as | |||
| string, with the following exceptions: | string, with the following exceptions: | |||
| o when operand for a comparison with a DAV:getcontentlength | o when operand for a comparison with a DAV:getcontentlength | |||
| property, it SHOULD be treated as an unsigned integer value (the | property, it SHOULD be treated as an unsigned integer value (the | |||
| behavior for values not in this format is undefined), | behavior for values not in this format is undefined), | |||
| o when operand for a comparison with a DAV:creationdate or DAV: | o when operand for a comparison with a DAV:creationdate or DAV: | |||
| getlastmodified property, it SHOULD be treated as a date value in | getlastmodified property, it SHOULD be treated as a date value in | |||
| the ISO-8601 subset defined for the DAV:creationdate property (see | the ISO-8601 subset defined for the DAV:creationdate property (see | |||
| [RFC4918], Section 15.1; the behavior of values not in this format | Section 15.1 of [RFC4918]; the behavior of values not in this | |||
| is undefined), | format is undefined), | |||
| o when operand for a comparison with a property for which the type | o when operand for a comparison with a property for which the type | |||
| is known and when compatible with that type, it MAY be treated | is known and when compatible with that type, it MAY be treated | |||
| according to this type. | according to this type. | |||
| 5.11. DAV:typed-literal (optional) | 5.11. DAV:typed-literal (Optional) | |||
| There are situations in which a client may want to force a comparison | There are situations in which a client may want to force a comparison | |||
| not to be string-based (as defined for DAV:literal). In these cases, | not to be string-based (as defined for DAV:literal). In these cases, | |||
| a typed comparison can be enforced by using DAV:typed-literal | a typed comparison can be enforced by using DAV:typed-literal | |||
| instead. | instead. | |||
| <!ELEMENT typed-literal (#PCDATA)> | <!ELEMENT typed-literal (#PCDATA)> | |||
| The data type is specified using the xsi:type attribute defined in | The data type is specified using the xsi:type attribute defined in | |||
| [XS1], Section 2.6.1. If the type is not specified, it defaults to | Section 2.6.1 of [XS1]. If the type is not specified, it defaults to | |||
| "xs:string". | "xs:string". | |||
| A server MUST reject a request with an unknown type with a status of | A server MUST reject a request using an unknown type with a status of | |||
| 422 (Unprocessable Entity). It SHOULD reject a request if the value | 422 (Unprocessable Entity). It SHOULD reject a request if the value | |||
| provided in DAV:typed-literal can not be cast to the specified type. | provided in DAV:typed-literal cannot be cast to the specified type. | |||
| The comparison evaluates to UNKNOWN if the property value can not be | The comparison evaluates to UNKNOWN if the property value cannot be | |||
| cast to the specified datatype (see [XPATHFUNC], Section 17). | cast to the specified datatype (see [XPATHFUNC], Section 17). | |||
| 5.11.1. Example for Typed Numerical Comparison | 5.11.1. Example for Typed Numerical Comparison | |||
| Consider a set of resources with the dead property "edits" in the | Consider a set of resources with the dead property "edits" in the | |||
| namespace "http://ns.example.org": | namespace "http://ns.example.org": | |||
| +-----+----------------+ | +-----+----------------+ | |||
| | URI | property value | | | URI | property value | | |||
| +-----+----------------+ | +-----+----------------+ | |||
| skipping to change at page 30, line 45 ¶ | skipping to change at page 29, line 45 ¶ | |||
| <lt xmlns="DAV:" | <lt xmlns="DAV:" | |||
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |||
| xmlns:xs="http://www.w3.org/2001/XMLSchema"> | xmlns:xs="http://www.w3.org/2001/XMLSchema"> | |||
| <prop><edits xmlns="http://ns.example.org"/></prop> | <prop><edits xmlns="http://ns.example.org"/></prop> | |||
| <typed-literal xsi:type="xs:integer">3</typed-literal> | <typed-literal xsi:type="xs:integer">3</typed-literal> | |||
| </lt> | </lt> | |||
| will evaluate to TRUE for the resources "/a" and "/b" (their property | will evaluate to TRUE for the resources "/a" and "/b" (their property | |||
| values can be parsed as type xs:integer, and the numerical comparison | values can be parsed as type xs:integer, and the numerical comparison | |||
| evaluates to true), to FALSE for "/c" (property value is compatible, | evaluates to true), to FALSE for "/c" (property value is compatible, | |||
| but numerical comparison evaluates to false) and UNKNOWN for "/d" and | but numerical comparison evaluates to false), and UNKNOWN for "/d" | |||
| "/e" (the property either is undefined, or its value can not be | and "/e" (the property either is undefined, or its value cannot be | |||
| parsed as xs:integer). | parsed as xs:integer). | |||
| 5.12. Support for Matching xml:lang Attributes on Properties | 5.12. Support for Matching xml:lang Attributes on Properties | |||
| The following two optional operators can be used to express | The following two optional operators can be used to express | |||
| conditions on the language of a property value (as expressed using | conditions on the language of a property value (as expressed using | |||
| the xml:lang attribute). | the xml:lang attribute). | |||
| 5.12.1. DAV:language-defined (optional) | 5.12.1. DAV:language-defined (Optional) | |||
| <!ELEMENT language-defined (prop)> | <!ELEMENT language-defined (prop)> | |||
| This operator evaluates to TRUE if the language for the value of the | This operator evaluates to TRUE if the language for the value of the | |||
| given property is known, FALSE if it isn't and UNKNOWN if the | given property is known, FALSE if it isn't, and UNKNOWN if the | |||
| property itself is not defined. | property itself is not defined. | |||
| 5.12.2. DAV:language-matches (optional) | 5.12.2. DAV:language-matches (Optional) | |||
| <!ELEMENT language-matches (prop, literal)> | <!ELEMENT language-matches (prop, literal)> | |||
| This operator evaluates to TRUE if the language for the value of the | This operator evaluates to TRUE if the language for the value of the | |||
| given property is known and matches the language name given in the | given property is known and matches the language name given in the | |||
| <literal> element, FALSE if it doesn't match and UNKNOWN if the | <literal> element, FALSE if it doesn't match, and UNKNOWN if the | |||
| property itself is not defined. | property itself is not defined. | |||
| Languages are considered to match if they are the same, or if the | Languages are considered to match if they are the same, or if the | |||
| language of the property value is a sublanguage of the language | language of the property value is a sublanguage of the language | |||
| specified in the <literal> element (see [XPATH], Section 4.3, "lang | specified in the <literal> element (see Section 4.3 of [XPATH], "lang | |||
| function"). | function"). | |||
| 5.12.3. Example of Language-Aware Matching | 5.12.3. Example of Language-Aware Matching | |||
| The expression below will evaluate to TRUE if the property "foobar" | The expression below will evaluate to TRUE if the property "foobar" | |||
| exists and its language is either unknown, English or a sublanguage | exists and its language is either unknown, English, or a sublanguage | |||
| of English. | of English. | |||
| <or xmlns="DAV:"> | <or xmlns="DAV:"> | |||
| <not> | <not> | |||
| <language-defined> | <language-defined> | |||
| <prop><foobar/></prop> | <prop><foobar/></prop> | |||
| </language-defined> | </language-defined> | |||
| </not> | </not> | |||
| <language-matches> | <language-matches> | |||
| <prop><foobar/></prop> | <prop><foobar/></prop> | |||
| skipping to change at page 32, line 12 ¶ | skipping to change at page 31, line 12 ¶ | |||
| resource is a collection (that is, whether its DAV:resourcetype | resource is a collection (that is, whether its DAV:resourcetype | |||
| element contains the element DAV:collection). | element contains the element DAV:collection). | |||
| Rationale: This operator is provided in lieu of defining generic | Rationale: This operator is provided in lieu of defining generic | |||
| structure queries, which would suffice for this and for many more | structure queries, which would suffice for this and for many more | |||
| powerful queries, but seems inappropriate to standardize at this | powerful queries, but seems inappropriate to standardize at this | |||
| time. | time. | |||
| 5.13.1. Example of DAV:is-collection | 5.13.1. Example of DAV:is-collection | |||
| This example shows a search criterion that picks out all and only the | This example shows a search criterion that picks out all, and only, | |||
| resources in the scope that are collections. | the resources in the scope that are collections. | |||
| <where xmlns="DAV:"> | <where xmlns="DAV:"> | |||
| <is-collection/> | <is-collection/> | |||
| </where> | </where> | |||
| 5.14. DAV:is-defined | 5.14. DAV:is-defined | |||
| The DAV:is-defined operator allows clients to determine whether a | The DAV:is-defined operator allows clients to determine whether a | |||
| property is defined on a resource. The meaning of "defined on a | property is defined on a resource. The meaning of "defined on a | |||
| resource" is found in Section 5.5.3. | resource" is found in Section 5.5.3. | |||
| skipping to change at page 33, line 23 ¶ | skipping to change at page 32, line 23 ¶ | |||
| zeroormore = "%" | zeroormore = "%" | |||
| escapechar = "\" | escapechar = "\" | |||
| escapeseq = escapechar ( exactlyone / zeroormore / escapechar ) | escapeseq = escapechar ( exactlyone / zeroormore / escapechar ) | |||
| ; character: see [XML], Section 2.2, minus wildcard / escapechar | ; character: see [XML], Section 2.2, minus wildcard / escapechar | |||
| character = HTAB / LF / CR ; whitespace | character = HTAB / LF / CR ; whitespace | |||
| character =/ %x20-24 / %x26-5B / %x5D-5E / %x60-D7FF | character =/ %x20-24 / %x26-5B / %x5D-5E / %x60-D7FF | |||
| character =/ %xE000-FFFD / %x10000-10FFFF | character =/ %xE000-FFFD / %x10000-10FFFF | |||
| (Note that the ABNF above is defined in terms of Unicode code points | (Note that the ABNF above is defined in terms of Unicode code points | |||
| ([UNICODE5]); when an query is transmitted as XML document WebDAV, | ([UNICODE5]); when a query is transmitted as an XML document over | |||
| these characters are typically encoded in UTF-8 or UTF-16.) | WebDAV, these characters are typically encoded in UTF-8 or UTF-16.) | |||
| The value for the literal is composed of wildcards separated by | The value for the literal is composed of wildcards separated by | |||
| segments of text. Wildcards may begin or end the literal. | segments of text. Wildcards may begin or end the literal. | |||
| The "_" wildcard matches exactly one character. | The "_" wildcard matches exactly one character. | |||
| The "%" wildcard matches zero or more characters | The "%" wildcard matches zero or more characters. | |||
| The "\" character is an escape sequence so that the literal can | The "\" character is an escape sequence so that the literal can | |||
| include "_" and "%". To include the "\" character in the pattern, | include "_" and "%". To include the "\" character in the pattern, | |||
| the escape sequence "\\" is used. | the escape sequence "\\" is used. | |||
| 5.15.2. Example of DAV:like | 5.15.2. Example of DAV:like | |||
| This example shows how a client might use DAV:like to identify those | This example shows how a client might use DAV:like to identify those | |||
| resources whose content type was a subtype of image. | resources whose content type was a subtype of image. | |||
| skipping to change at page 34, line 4 ¶ | skipping to change at page 33, line 4 ¶ | |||
| <D:like caseless="yes"> | <D:like caseless="yes"> | |||
| <D:prop><D:getcontenttype/></D:prop> | <D:prop><D:getcontenttype/></D:prop> | |||
| <D:literal>image/%</D:literal> | <D:literal>image/%</D:literal> | |||
| </D:like> | </D:like> | |||
| </D:where> | </D:where> | |||
| 5.16. DAV:contains | 5.16. DAV:contains | |||
| The DAV:contains operator is an optional operator that provides | The DAV:contains operator is an optional operator that provides | |||
| content-based search capability. This operator implicitly searches | content-based search capability. This operator implicitly searches | |||
| against the text content of a resource, not against content of | against the text content of a resource, not against the content of | |||
| properties. The DAV:contains operator is intentionally not overly | properties. The DAV:contains operator is intentionally not overly | |||
| constrained, in order to allow the server to do the best job it can | constrained, in order to allow the server to do the best job it can | |||
| in performing the search. | in performing the search. | |||
| The DAV:contains operator evaluates to a Boolean value. It evaluates | The DAV:contains operator evaluates to a Boolean value. It evaluates | |||
| to TRUE if the content of the resource satisfies the search. | to TRUE if the content of the resource satisfies the search. | |||
| Otherwise, it evaluates to FALSE. | Otherwise, it evaluates to FALSE. | |||
| Within the DAV:contains XML element, the client provides a phrase: a | Within the DAV:contains XML element, the client provides a phrase: a | |||
| single word or whitespace delimited sequence of words. Servers MAY | single word or whitespace delimited sequence of words. Servers MAY | |||
| ignore punctuation in a phrase. Case-sensitivity is at the | ignore punctuation in a phrase. Case-sensitivity is at the | |||
| discretion of the server implementation. | discretion of the server implementation. | |||
| The following non-exhaustive list enumerate things that may or may | The following non-exhaustive list enumerates things that may or may | |||
| not be done as part of the search: Phonetic methods such as "soundex" | not be done as part of the search: Phonetic methods such as "soundex" | |||
| may or may not be used. Word stemming may or may not be performed. | may or may not be used. Word stemming may or may not be performed. | |||
| Thesaurus expansion of words may or may not be done. Right or left | Thesaurus expansion of words may or may not be done. Right or left | |||
| truncation may or may not be performed. The search may be case | truncation may or may not be performed. The search may be case | |||
| insensitive or case sensitive. The word or words may or may not be | insensitive or case sensitive. The word or words may or may not be | |||
| interpreted as names. Multiple words may or may not be required to | interpreted as names. Multiple words may or may not be required to | |||
| be adjacent or "near" each other. Multiple words may or may not be | be adjacent or "near" each other. Multiple words may or may not be | |||
| required to occur in the same order. Multiple words may or may not | required to occur in the same order. Multiple words may or may not | |||
| be treated as a phrase. The search may or may not be interpreted as | be treated as a phrase. The search may or may not be interpreted as | |||
| a request to find documents "similar" to the string operand. | a request to find documents "similar" to the string operand. | |||
| Character canonicalization such as that done by the Unicode collation | Character canonicalization such as that done by the Unicode collation | |||
| algorithm may or may not be applied. | algorithm may or may not be applied. | |||
| 5.16.1. Result Scoring (DAV:score Element) | 5.16.1. Result Scoring (DAV:score Element) | |||
| Servers SHOULD indicate scores for the DAV:contains condition by | Servers SHOULD indicate scores for the DAV:contains condition by | |||
| adding a DAV:score XML element to the DAV:response element. Its | adding a DAV:score XML element to the DAV:response element. Its | |||
| value is defined only in the context of a particular query result. | value is defined only in the context of a particular query result. | |||
| The value is a string representing the score, an integer from zero to | The value is a string representing the score, an integer from zero to | |||
| 10000 inclusive, where a higher value indicates a higher score (e.g. | 10000 inclusive, where a higher value indicates a higher score (e.g., | |||
| more relevant). | more relevant). | |||
| Modified DTD fragment for DAV:propstat: | Modified DTD fragment for DAV:propstat: | |||
| <!ELEMENT response (href, ((href*, status)|(propstat+)), | <!ELEMENT response (href, ((href*, status)|(propstat+)), | |||
| responsedescription?, score?) > | responsedescription?, score?) > | |||
| <!ELEMENT score (#PCDATA) > | <!ELEMENT score (#PCDATA) > | |||
| Clients should note that, in general, it is not meaningful to compare | Clients should note that, in general, it is not meaningful to compare | |||
| the numeric values of scores from two different query results unless | the numeric values of scores from two different query results unless | |||
| skipping to change at page 36, line 23 ¶ | skipping to change at page 35, line 23 ¶ | |||
| as defined in Section 5.18 of the Unicode Standard ([UNICODE5]). | as defined in Section 5.18 of the Unicode Standard ([UNICODE5]). | |||
| Support for the "caseless" attribute is optional. A server should | Support for the "caseless" attribute is optional. A server should | |||
| respond with a status of 422 if it is used but cannot be supported. | respond with a status of 422 if it is used but cannot be supported. | |||
| 5.19. Query Schema for DAV:basicsearch | 5.19. Query Schema for DAV:basicsearch | |||
| The DAV:basicsearch grammar defines a search criteria that is a | The DAV:basicsearch grammar defines a search criteria that is a | |||
| Boolean-valued expression, and allows for an arbitrary set of | Boolean-valued expression, and allows for an arbitrary set of | |||
| properties to be included in the result record. The result set may | properties to be included in the result record. The result set may | |||
| be sorted on a set of property values. Accordingly the DTD for | be sorted on a set of property values. Accordingly, the DTD for | |||
| schema discovery for this grammar allows the server to express: | schema discovery for this grammar allows the server to express: | |||
| 1. the set of properties that may be either searched, returned, or | 1. the set of properties that may be either searched, returned, or | |||
| used to sort, and a hint about the data type of such properties | used to sort, and a hint about the data type of such properties. | |||
| 2. the set of optional operators defined by the resource. | 2. the set of optional operators defined by the resource. | |||
| 5.19.1. DTD for DAV:basicsearch QSD | 5.19.1. DTD for DAV:basicsearch QSD | |||
| <!ELEMENT basicsearchschema (properties, operators)> | <!ELEMENT basicsearchschema (properties, operators)> | |||
| <!ELEMENT any-other-property EMPTY> | <!ELEMENT any-other-property EMPTY> | |||
| <!ELEMENT properties (propdesc*)> | <!ELEMENT properties (propdesc*)> | |||
| <!ELEMENT propdesc ((prop|any-other-property), datatype?, | <!ELEMENT propdesc ((prop|any-other-property), datatype?, | |||
| searchable?, selectable?, sortable?, | searchable?, selectable?, sortable?, | |||
| skipping to change at page 38, line 38 ¶ | skipping to change at page 37, line 38 ¶ | |||
| This element indicates that the property may appear in the DAV: | This element indicates that the property may appear in the DAV: | |||
| orderby element. | orderby element. | |||
| <!ELEMENT sortable EMPTY> | <!ELEMENT sortable EMPTY> | |||
| 5.19.7. The DAV:caseless Property Description | 5.19.7. The DAV:caseless Property Description | |||
| This element only applies to properties whose data type is "xs: | This element only applies to properties whose data type is "xs: | |||
| string" and derived data types as per the DAV:datatype property | string" and derived data types as per the DAV:datatype property | |||
| description. Its presence indicates that compares performed for | description. Its presence indicates that comparisons performed for | |||
| searches, and the comparisons for ordering results on the string | searches, and the comparisons for ordering results on the string | |||
| property will be caseless (the default is character-by-character). | property will be caseless (the default is character by character). | |||
| <!ELEMENT caseless EMPTY> | <!ELEMENT caseless EMPTY> | |||
| 5.19.8. The DAV:operators XML Element | 5.19.8. The DAV:operators XML Element | |||
| The DAV:operators element describes every optional operator supported | The DAV:operators element describes every optional operator supported | |||
| in a query. (Mandatory operators are not listed since they are | in a query. (Mandatory operators are not listed since they are | |||
| mandatory and permit no variation in syntax.). All optional | mandatory and permit no variation in syntax.) All optional operators | |||
| operators that are supported MUST be listed in the DAV:operators | that are supported MUST be listed in the DAV:operators element. | |||
| element. | ||||
| The listing for an operator, contained in an DAV:opdesc element, | The listing for an operator, contained in an DAV:opdesc element, | |||
| consists of the operator (as an empty element), followed by one | consists of the operator (as an empty element), followed by one | |||
| element for each operand. The operand MUST be either DAV:operand- | element for each operand. The operand MUST be either DAV:operand- | |||
| property, DAV:operand-literal or DAV:operand-typed-literal, which | property, DAV:operand-literal, or DAV:operand-typed-literal, which | |||
| indicate that the operand in the corresponding position is a | indicate that the operand in the corresponding position is a | |||
| property, a literal value or a typed literal value, respectively. If | property, a literal value, or a typed literal value, respectively. | |||
| an operator is polymorphic (allows more than one operand syntax) then | If an operator is polymorphic (allows more than one operand syntax) | |||
| each permitted syntax MUST be listed separately. | then each permitted syntax MUST be listed separately. | |||
| The DAV:opdesc element MAY have a "allow-pcdata" attribute | The DAV:opdesc element MAY have a "allow-pcdata" attribute | |||
| (defaulting to "no"). A value of "yes" indicates that the operator | (defaulting to "no"). A value of "yes" indicates that the operator | |||
| can contain character data, as it is the case with DAV:contains (see | can contain character data, as it is the case with DAV:contains (see | |||
| Section 5.16). Definition of additional operators using this format | Section 5.16). Definition of additional operators using this format | |||
| is NOT RECOMMENDED. | is NOT RECOMMENDED. | |||
| <operators xmlns='DAV:'> | <operators xmlns='DAV:'> | |||
| <opdesc> | <opdesc> | |||
| <like/><operand-property/><operand-literal/> | <like/><operand-property/><operand-literal/> | |||
| skipping to change at page 41, line 4 ¶ | skipping to change at page 40, line 4 ¶ | |||
| and DAV:like are supported. | and DAV:like are supported. | |||
| Note: The schema discovery defined here does not provide for | Note: The schema discovery defined here does not provide for | |||
| discovery of supported values of the "caseless" attribute. This | discovery of supported values of the "caseless" attribute. This | |||
| may require that the reply also list the mandatory operators. | may require that the reply also list the mandatory operators. | |||
| 6. Internationalization Considerations | 6. Internationalization Considerations | |||
| Properties may be language-tagged using the xml:lang attribute (see | Properties may be language-tagged using the xml:lang attribute (see | |||
| [RFC4918], Section 4.3). The optional operators DAV:language-defined | [RFC4918], Section 4.3). The optional operators DAV:language-defined | |||
| (Section 5.12.1) and DAV:language-matches (Section 5.12.2) allow to | (Section 5.12.1) and DAV:language-matches (Section 5.12.2) allow the | |||
| express conditions on the language tagging information. | expression of conditions on the language tagging information. | |||
| 7. Security Considerations | 7. Security Considerations | |||
| This section is provided to detail issues concerning security | This section is provided to detail issues concerning security | |||
| implications of which DASL applications need to be aware. All of the | implications of which DASL applications need to be aware. All of the | |||
| security considerations of HTTP/1.1 ([RFC2616] and WebDAV ([RFC4918]) | security considerations of HTTP/1.1 ([RFC2616] and WebDAV ([RFC4918]) | |||
| also apply to DASL. In addition, this section will include security | also apply to DASL. In addition, this section will include security | |||
| risks inherent in searching and retrieval of resource properties and | risks inherent in the search and retrieval of resource properties and | |||
| content. | content. | |||
| A query MUST NOT allow clients to retrieve information that wouldn't | A query MUST NOT allow clients to retrieve information that wouldn't | |||
| have been available through the GET or PROPFIND methods in the first | have been available through the GET or PROPFIND methods in the first | |||
| place. In particular: | place. In particular: | |||
| o Query constraints on WebDAV properties for which the client does | o Query constraints on WebDAV properties for which the client does | |||
| not have read access need to be evaluated as if the property did | not have read access need to be evaluated as if the property did | |||
| not exist (see Section 5.5.3). | not exist (see Section 5.5.3). | |||
| o Query constraints on content (as with DAV:contains, defined in | o Query constraints on content (as with DAV:contains, defined in | |||
| Section 5.16) for which the client does not have read access need | Section 5.16) for which the client does not have read access need | |||
| to be evaluated as if a GET would return a 4xx status code. | to be evaluated as if a GET would return a 4xx status code. | |||
| A server should prepare for denial of service attacks. For example a | A server should prepare for denial-of-service attacks. For example a | |||
| client may issue a query for which the result set is expensive to | client may issue a query for which the result set is expensive to | |||
| calculate or transmit because many resources match or must be | calculate or transmit because many resources match or must be | |||
| evaluated. | evaluated. | |||
| 7.1. Implications of XML External Entities | 7.1. Implications of XML External Entities | |||
| XML supports a facility known as "external entities", defined in | XML supports a facility known as "external entities", defined in | |||
| Section 4.2.2 of [XML], which instruct an XML processor to retrieve | Section 4.2.2 of [XML], which instruct an XML processor to retrieve | |||
| and perform an inline include of XML located at a particular URI. An | and perform an inline include of XML located at a particular URI. An | |||
| external XML entity can be used to append or modify the document type | external XML entity can be used to append or modify the document type | |||
| skipping to change at page 42, line 9 ¶ | skipping to change at page 41, line 9 ¶ | |||
| External XML entities have no inherent trustworthiness and are | External XML entities have no inherent trustworthiness and are | |||
| subject to all the attacks that are endemic to any HTTP GET request. | subject to all the attacks that are endemic to any HTTP GET request. | |||
| Furthermore, it is possible for an external XML entity to modify the | Furthermore, it is possible for an external XML entity to modify the | |||
| DTD, and hence affect the final form of an XML document, in the worst | DTD, and hence affect the final form of an XML document, in the worst | |||
| case significantly modifying its semantics, or exposing the XML | case significantly modifying its semantics, or exposing the XML | |||
| processor to the security risks discussed in [RFC3023]. Therefore, | processor to the security risks discussed in [RFC3023]. Therefore, | |||
| implementers must be aware that external XML entities should be | implementers must be aware that external XML entities should be | |||
| treated as untrustworthy. | treated as untrustworthy. | |||
| There is also the scalability risk that would accompany a widely | There is also the scalability risk that would accompany a widely | |||
| deployed application which made use of external XML entities. In | deployed application that made use of external XML entities. In this | |||
| this situation, it is possible that there would be significant | situation, it is possible that there would be significant numbers of | |||
| numbers of requests for one external XML entity, potentially | requests for one external XML entity, potentially overloading any | |||
| overloading any server which fields requests for the resource | server that fields requests for the resource containing the external | |||
| containing the external XML entity. | XML entity. | |||
| 8. Scalability | 8. Scalability | |||
| Query grammars are identified by URIs. Applications SHOULD NOT | Query grammars are identified by URIs. Applications SHOULD NOT | |||
| attempt to retrieve these URIs even if they appear to be retrievable | attempt to retrieve these URIs even if they appear to be retrievable | |||
| (for example, those that begin with "http://") | (for example, those that begin with "http://"). | |||
| 9. IANA Considerations | 9. IANA Considerations | |||
| This document uses the namespace defined in Section 21 of [RFC4918] | This document uses the namespace defined in Section 21 of [RFC4918] | |||
| for XML elements. | for XML elements. | |||
| 9.1. HTTP Headers | 9.1. HTTP Headers | |||
| This document specifies the HTTP header listed below, to be added to | This document specifies the HTTP header listed below, which has been | |||
| the permanent HTTP header registry defined in [RFC3864]. | added to the permanent HTTP header registry defined in [RFC3864]. | |||
| 9.1.1. DASL | 9.1.1. DASL | |||
| Header field name: DASL | Header field name: DASL | |||
| Applicable protocol: http | Applicable protocol: http | |||
| Status: standard | Status: standard | |||
| Author/Change controller: IETF | Author/Change controller: IETF | |||
| Specification document: this specification (Section 3.2) | Specification document: this specification (Section 3.2) | |||
| 10. Contributors | 10. Contributors | |||
| This document is based on prior work on the DASL protocol done by the | This document is based on prior work on the DASL protocol done by the | |||
| WebDAV DASL working group until the year 2000 -- namely by Alan | WebDAV DASL working group until the year 2000 -- namely by Alan | |||
| Babich, Jim Davis, Rick Henderson, Dale Lowry, Saveen Reddy and | Babich, Jim Davis, Rick Henderson, Dale Lowry, Saveen Reddy, Surendra | |||
| Surendra Reddy. | Reddy, and Judith Slein (see <http://www.webdav.org/dasl/> for the | |||
| working group's web site, | ||||
| <http://purl.org/NET/webdav/dasl-references/reqs> for a requirements | ||||
| document, and | ||||
| <http://purl.org/NET/webdav/dasl-references/dasl-protocol-00> for an | ||||
| early version of the specification). | ||||
| 11. Acknowledgements | 11. Acknowledgements | |||
| This document has benefited from thoughtful discussion by Lisa | This document has benefited from thoughtful discussion by Lisa | |||
| Dusseault, Javier Godoy, Sung Kim, Chris Newman, Elias Sinderson, | Dusseault, Javier Godoy, Sung Kim, Chris Newman, Elias Sinderson, | |||
| Martin Wallmer, Keith Wannamaker, Jim Whitehead and Kevin Wiggen. | Martin Wallmer, Keith Wannamaker, Jim Whitehead, and Kevin Wiggen. | |||
| 12. References | 12. References | |||
| 12.1. Normative References | 12.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [RFC2616] Fielding, R., Gettys, J., Mogul, J., Nielsen, H., | [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | |||
| Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext | Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext | |||
| Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. | Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. | |||
| [RFC3023] Makoto, M., St.Laurent, S., and D. Kohn, "XML Media | [RFC3023] Murata, M., St. Laurent, S., and D. Kohn, "XML Media | |||
| Types", RFC 3023, January 2001. | Types", RFC 3023, January 2001. | |||
| [RFC3253] Clemm, G., Amsden, J., Ellison, T., Kaler, C., and J. | [RFC3253] Clemm, G., Amsden, J., Ellison, T., Kaler, C., and J. | |||
| Whitehead, "Versioning Extensions to WebDAV", RFC 3253, | Whitehead, "Versioning Extensions to WebDAV (Web | |||
| Distributed Authoring and Versioning)", RFC 3253, | ||||
| March 2002. | March 2002. | |||
| [RFC3744] Clemm, G., Reschke, J., Sedlar, E., and J. Whitehead, "Web | [RFC3744] Clemm, G., Reschke, J., Sedlar, E., and J. Whitehead, "Web | |||
| Distributed Authoring and Versioning (WebDAV) Access | Distributed Authoring and Versioning (WebDAV) Access | |||
| Control Protocol", RFC 3744, May 2004. | Control Protocol", RFC 3744, May 2004. | |||
| [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | |||
| Resource Identifier (URI): Generic Syntax", STD 66, | Resource Identifier (URI): Generic Syntax", STD 66, | |||
| RFC 3986, January 2005. | RFC 3986, January 2005. | |||
| skipping to change at page 44, line 21 ¶ | skipping to change at page 43, line 28 ¶ | |||
| [XS1] Thompson, H., Beech, D., Maloney, M., Mendelsohn, N., and | [XS1] Thompson, H., Beech, D., Maloney, M., Mendelsohn, N., and | |||
| World Wide Web Consortium, "XML Schema Part 1: | World Wide Web Consortium, "XML Schema Part 1: | |||
| Structures", W3C REC-xmlschema-1-20041028, October 2004, | Structures", W3C REC-xmlschema-1-20041028, October 2004, | |||
| <http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/>. | <http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/>. | |||
| [XS2] Biron, P., Malhotra, A., and World Wide Web Consortium, | [XS2] Biron, P., Malhotra, A., and World Wide Web Consortium, | |||
| "XML Schema Part 2: Datatypes Second Edition", W3C REC- | "XML Schema Part 2: Datatypes Second Edition", W3C REC- | |||
| xmlschema-2-20041028, October 2004, | xmlschema-2-20041028, October 2004, | |||
| <http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/>. | <http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/>. | |||
| 12.2. Informative References | 12.2. Informative References | |||
| [BCP47] Phillips, A. and M. Davis, "Matching of Language Tags", | [BCP47] Phillips, A. and M. Davis, "Matching of Language Tags", | |||
| BCP 47, RFC 4647, September 2006. | BCP 47, RFC 4647, September 2006. | |||
| [DASL] Reddy, S., Lowry, D., Reddy, S., Henderson, R., Davis, J., | [RFC3864] Klyne, G., Nottingham, M., and J. Mogul, "Registration | |||
| and A. Babich, "DAV Searching & Locating", | ||||
| draft-ietf-dasl-protocol-00 (work in progress), July 1999. | ||||
| [DASLREQ] Davis, J., Reddy, S., and J. Slein, "Requirements for DAV | ||||
| Searching and Locating", February 1999, <http:// | ||||
| www.webdav.org/dasl/requirements/ | ||||
| draft-dasl-requirements-01.html>. | ||||
| This is an updated version of the Internet Draft | ||||
| "draft-ietf-dasl-requirements-00", but obviously never was | ||||
| submitted to the IETF. | ||||
| [RFC3864] Klyne, G., Nottingham, M., and J. Mogul, "Registration | ||||
| Procedures for Message Header Fields", BCP 90, RFC 3864, | Procedures for Message Header Fields", BCP 90, RFC 3864, | |||
| September 2004. | September 2004. | |||
| [RFC4437] Whitehead, J., Clemm, G., and J. Reschke, Ed., "Web | [RFC4437] Whitehead, J., Clemm, G., and J. Reschke, Ed., "Web | |||
| Distributed Authoring and Versioning (WebDAV) | Distributed Authoring and Versioning (WebDAV) | |||
| Redirect Reference Resources", RFC 4437, March 2006. | Redirect Reference Resources", RFC 4437, March 2006. | |||
| [RFC4790] Newman, C., Duerst, M., and A. Gulbrandsen, "Internet | [RFC4790] Newman, C., Duerst, M., and A. Gulbrandsen, "Internet | |||
| Application Protocol Collation Registry", RFC 4790, | Application Protocol Collation Registry", RFC 4790, | |||
| March 2007. | March 2007. | |||
| [SQL99] Milton, J., "Database Language SQL Part 2: Foundation | [SQL99] Milton, J., "Database Language SQL Part 2: Foundation | |||
| (SQL/Foundation)", ISO ISO/IEC 9075-2:1999 (E), July 1999. | (SQL/Foundation)", ISO ISO/IEC 9075-2:1999 (E), July 1999. | |||
| [UNICODE5] | [UNICODE5] | |||
| The Unicode Consortium, "The Unicode Standard - Version | The Unicode Consortium, "The Unicode Standard - Version | |||
| 5.0", Addison-Wesley , November 2006, | 5.0", Addison-Wesley , November 2006, | |||
| <http://www.unicode.org/versions/Unicode5.0.0/>. | <http://www.unicode.org/versions/Unicode5.0.0/>. | |||
| ISBN 0321480910 [1] | ISBN 0321480910 [1] | |||
| [draft-ietf-webdav-bind] | [WEBDAV-BIND] | |||
| Clemm, G., Crawford, J., Reschke, J., Ed., and J. | Clemm, G., Crawford, J., Reschke, J., Ed., and J. | |||
| Whitehead, "Binding Extensions to Web Distributed | Whitehead, "Binding Extensions to Web Distributed | |||
| Authoring and Versioning (WebDAV)", | Authoring and Versioning (WebDAV)", October 2008. | |||
| draft-ietf-webdav-bind-20 (work in progress), | ||||
| November 2007. | ||||
| URIs | URIs | |||
| [1] <urn:isbn:0321480910> | [1] <urn:isbn:0321480910> | |||
| Appendix A. Three-Valued Logic in DAV:basicsearch | Appendix A. Three-Valued Logic in DAV:basicsearch | |||
| ANSI standard three valued logic is used when evaluating the search | ANSI standard three-valued logic is used when evaluating the search | |||
| condition (as defined in the ANSI standard SQL specifications, for | condition (as defined in the ANSI standard SQL specifications, for | |||
| example in ANSI X3.135-1992, section 8.12, pp. 188-189, section 8.2, | example, in ANSI X3.135-1992, Section 8.12, pp. 188-189, Section 8.2, | |||
| p. 169, General Rule 1)a), etc.). | p. 169, General Rule 1)a), etc.). | |||
| ANSI standard three valued logic is undoubtedly the most widely | ANSI standard three-valued logic is undoubtedly the most widely | |||
| practiced method of dealing with the issues of properties in the | practiced method of dealing with the issues of properties in the | |||
| search condition not having a value (e.g., being null or not defined) | search condition not having a value (e.g., being null or not defined) | |||
| for the resource under scan, and with undefined expressions in the | for the resource under scan, and with undefined expressions in the | |||
| search condition (e.g., division by zero, etc.). Three valued logic | search condition (e.g., division by zero, etc.). Three valued logic | |||
| works as follows. | works as follows. | |||
| Undefined expressions are expressions for which the value of the | Undefined expressions are expressions for which the value of the | |||
| expression is not defined. Undefined expressions are a completely | expression is not defined. Undefined expressions are a completely | |||
| separate concept from the truth value UNKNOWN, which is, in fact, | separate concept from the truth value UNKNOWN, which is, in fact, | |||
| well defined. Property names and literal constants are considered | well defined. Property names and literal constants are considered | |||
| skipping to change at page 46, line 11 ¶ | skipping to change at page 45, line 4 ¶ | |||
| undefined. | undefined. | |||
| There are no manifest constants to explicitly represent undefined | There are no manifest constants to explicitly represent undefined | |||
| number, string, or datetime values. | number, string, or datetime values. | |||
| Since a Boolean value is ultimately returned by the search condition, | Since a Boolean value is ultimately returned by the search condition, | |||
| arithmetic, string, and datetime expressions are always arguments to | arithmetic, string, and datetime expressions are always arguments to | |||
| other operators. Examples of operators that convert arithmetic, | other operators. Examples of operators that convert arithmetic, | |||
| string, and datetime expressions to Boolean values are the six | string, and datetime expressions to Boolean values are the six | |||
| relational operators ("greater than", "less than", "equals", etc.). | relational operators ("greater than", "less than", "equals", etc.). | |||
| If either or both operands of a relational operator have undefined | If either or both operands of a relational operator have undefined | |||
| values, then the relational operator evaluates to UNKNOWN. | values, then the relational operator evaluates to UNKNOWN. | |||
| Otherwise, the relational operator evaluates to TRUE or FALSE, | Otherwise, the relational operator evaluates to TRUE or FALSE, | |||
| depending upon the outcome of the comparison. | depending upon the outcome of the comparison. | |||
| The Boolean operators DAV:and, DAV:or and DAV:not are evaluated | The Boolean operators DAV:and, DAV:or, and DAV:not are evaluated | |||
| according to the following rules: | according to the following rules: | |||
| not UNKNOWN = UNKNOWN | not UNKNOWN = UNKNOWN | |||
| UNKNOWN and TRUE = UNKNOWN | UNKNOWN and TRUE = UNKNOWN | |||
| UNKNOWN and FALSE = FALSE | UNKNOWN and FALSE = FALSE | |||
| UNKNOWN and UNKNOWN = UNKNOWN | UNKNOWN and UNKNOWN = UNKNOWN | |||
| UNKNOWN or TRUE = TRUE | UNKNOWN or TRUE = TRUE | |||
| UNKNOWN or FALSE = UNKNOWN | UNKNOWN or FALSE = UNKNOWN | |||
| UNKNOWN or UNKNOWN = UNKNOWN | UNKNOWN or UNKNOWN = UNKNOWN | |||
| Appendix B. Candidates for Future Protocol Extensions | Appendix B. Candidates for Future Protocol Extensions | |||
| This Section summarizes issues which have been raised during the | This section summarizes issues that have been raised during the | |||
| development of this specification, but for which no resolution could | development of this specification, but for which no resolution could | |||
| be found with the constraints in place. Future revisions of this | be found with the constraints in place. Future revisions of this | |||
| specification should revisit these issues, though. | specification should revisit these issues, though. | |||
| B.1. Collation Support | B.1. Collation Support | |||
| Matching and sorting of textual data relies on collations. With | Matching and sorting of textual data relies on collations. With | |||
| respect to WebDAV SEARCH, a combination of various design approaches | respect to WebDAV SEARCH, a combination of various design approaches | |||
| could be used: | could be used: | |||
| skipping to change at page 48, line 36 ¶ | skipping to change at page 47, line 33 ¶ | |||
| requests, and remove the result through a DELETE request. | requests, and remove the result through a DELETE request. | |||
| B.8. Search Scope Discovery | B.8. Search Scope Discovery | |||
| Given a Search Arbiter resource, there's currently no way to discover | Given a Search Arbiter resource, there's currently no way to discover | |||
| programmatically the supported sets of search scopes. Future | programmatically the supported sets of search scopes. Future | |||
| revisions of this specification could specify a scope discovery | revisions of this specification could specify a scope discovery | |||
| mechanism, similar to the Query Schema Discovery defined in | mechanism, similar to the Query Schema Discovery defined in | |||
| Section 4. | Section 4. | |||
| Appendix C. Change Log (to be removed by RFC Editor before publication) | Appendix C. Open issues (to be removed by RFC Editor prior to | |||
| C.1. From draft-davis-dasl-protocol-xxx | ||||
| Feb 14, 1998 Initial Draft | ||||
| Feb 28, 1998 Referring to DASL as an extension to HTTP/1.1 rather | ||||
| than DAV. | ||||
| Added new sections "Notational Conventions", "Protocol Model", | ||||
| "Security Considerations". | ||||
| Changed section 3 to "Elements of Protocol". | ||||
| Added some stuff to introduction. | ||||
| Added "result set" terminology. | ||||
| Added "IANA Considerations". | ||||
| Mar 9, 1998 Moved sub-headings of "Elements of Protocol" to first | ||||
| level and removed "Elements of Protocol" Heading. | ||||
| Added an sentence in introduction explaining that this is a | ||||
| "sketch" of a protocol. | ||||
| Mar 11, 1998 Added orderby, data typing, three valued logic, query | ||||
| schema property, and element definitions for schema for | ||||
| basicsearch. | ||||
| April 8, 1998 - made changes based on last week's DASL BOF. | ||||
| May 8, 1998 Removed most of DAV:searcherror; converted to DAV: | ||||
| searchredirect | ||||
| Altered DAV:basicsearch grammar to use avoid use of ANY in DTD | ||||
| June 17, 1998 -Added details on Query Schema Discovery | ||||
| -Shortened list of data types | ||||
| June 23, 1998 moved data types before change history | ||||
| rewrote the data types section | ||||
| removed the casesensitive element and replace with the | ||||
| casesensitive attribute | ||||
| added the casesensitive attribute to the DTD for all operations | ||||
| that might work on a string | ||||
| Jul 20, 1998 A series of changes. See Author's meeting minutes for | ||||
| details. | ||||
| July 28, 1998 Changes as per author's meeting. QSD uses SEARCH, not | ||||
| PROPFIND. | ||||
| Moved text around to keep concepts nearby. | ||||
| Boolean literals are 1 and 0, not T and F. | ||||
| contains changed to contentspassthrough. | ||||
| Renamed rank to score. | ||||
| July 28, 1998 Added Dale Lowry as Author | ||||
| September 4, 1998 Added 422 as response when query lists | ||||
| unimplemented operators. | ||||
| DAV:literal declares a default value for xml:space, 'preserve' | ||||
| (see XML spec, section 2.10) | ||||
| moved to new XML namespace syntax | ||||
| September 22, 1998 Changed "simplesearch" to "basicsearch" | ||||
| Changed isnull to isdefined | ||||
| Defined NULLness as having a 404 or 403 response | ||||
| used ENTITY syntax in DTD | ||||
| Added redirect | ||||
| October 9, 1998 Fixed a series of typographical and formatting | ||||
| errors. | ||||
| Modified the section of three-valued logic to use a table rather | ||||
| than a text description of the role of UNKNOWN in expressions. | ||||
| November 2, 1998 Added the DAV:contains operator. | ||||
| Removed the DAV:contentpassthrough operator. | ||||
| November 18, 1998 Various author comments for submission | ||||
| June 3, 1999 Cosmetic and minor editorial changes only. Fix nits | ||||
| reported by Jim Whitehead in email of April 26, 1999. Converted | ||||
| to HTML from Word 97, manually. | ||||
| April 20, 2000 Removed redirection feature, since 301/302 suffices. | ||||
| Removed Query Schema Discovery (former chapter 4). Everyone | ||||
| agrees this is a useful feature, but it is apparently too | ||||
| difficult to define at this time, and it is not essential for | ||||
| DASL. | ||||
| C.2. since start of draft-reschke-webdav-search | ||||
| October 09, 2001 Added Julian Reschke as author. | ||||
| Chapter about QSD re-added. | ||||
| Formatted into RFC2629-compliant XML document. | ||||
| Added first comments. | ||||
| ID version number kicked up to draft-dasl-protocol-03. | ||||
| October 17, 2001 Updated address information for Jim Davis. | ||||
| Added issue of datatype vocabularies. | ||||
| Updated issue descriptions for grammar discovery, added issues on | ||||
| query schema DTD. | ||||
| Fixed typos in XML examples. | ||||
| December 17, 2001 Re-introduced split between normative and non- | ||||
| normative references. | ||||
| January 05, 2002 Version bumped up to 04. Started work on resolving | ||||
| the issues identified in the previous version. | ||||
| January 14, 2002 Fixed some XML typos. | ||||
| January 22, 2002 Closed issues naming-of-elements. Fixed query | ||||
| search DTD and added option to discover properties of "other" | ||||
| (non-listed) properties. | ||||
| January 25, 2002 Changed into private submission and added reference | ||||
| to historic DASL draft. Marked reference to DASL requirements | ||||
| non-normative. | ||||
| Updated reference to latest deltav spec. | ||||
| January 29, 2002 Added feedback from and updated contact info for | ||||
| Alan Babich. | ||||
| Included open issues collected in | ||||
| http://www.webdav.org/dasl/protocol/issues.html. | ||||
| February 8, 2002 Made sure that all artwork fits into 72 characters | ||||
| wide text. | ||||
| February 18, 2002 Changed Insufficient storage handling | ||||
| (multistatus). Moved is-collection to operators and added to DTD. | ||||
| Made scope/depth mandatory. | ||||
| February 20, 2002 Updated reference to SQL99. | ||||
| February 28, 2002 "Non-normative References" -> "Informative | ||||
| References". Abstract updated. Consistently specify a charset | ||||
| when using text/xml (no change bars). Do not attempt to define | ||||
| PROPFIND's entity encoding (take out specific references to text/ | ||||
| xml). Remove irrelevant headers (Connection:) from examples (no | ||||
| change bars). Added issue on querying based on DAV:href. Updated | ||||
| introduction to indicate relationship to DASL draft. Updated HTTP | ||||
| reference from RFC2068 to RFC2616. Updated XML reference to XML | ||||
| 1.0 2nd edition. | ||||
| March 1, 2002 Removed superfluous namespace decl in 2.4.2. Reopened | ||||
| JW14 and suggest to drop xml:space support. | ||||
| March 3, 2002 Removed "xml:space" feature on DAV:literal. Added | ||||
| issue about string comparison vs. collations vs. xml:lang. | ||||
| Updated some of the open issues with details from JimW's original | ||||
| mail in April 1999. Resolved scope vs relative URI references. | ||||
| Resolved issues about DAV:ascending (added to index) and the BNF | ||||
| for DAV:like (changed "octets" to "characters"). | ||||
| March 8, 2002 Updated reference to DeltaV (now RFC3253). Added | ||||
| Martin Wallmer's comments, moved JW5 into DAV:basicsearch section. | ||||
| March 11, 2002 Closed open issues regaring the type of search | ||||
| arbiters (JW3) and their discovery (JW9). Rephrased requirements | ||||
| on multistatus response bodies (propstat only if properties were | ||||
| selected, removed requirement for responsedescription). | ||||
| March 23, 2002 RFC2376 -> RFC3023. Added missing first names of | ||||
| authors. OPTIONS added to example for DAV:supported-method-set. | ||||
| C.3. since draft-reschke-webdav-search-00 | ||||
| March 29, 2002 Abstract doesn't refer to DASL WG anymore. | ||||
| April 7, 2002 Fixed section title (wrong property name supported- | ||||
| search-grammar-set. Changed DAV:casesensitve to "casesensitive" | ||||
| (it wasn't in the DAV: namespace after all). | ||||
| May 28, 2002 Updated some issues with Jim Davis's comments. | ||||
| June 10, 2002 Added proposal for different method for query schema | ||||
| discovery, not using pseudo-properties. | ||||
| June 25, 2002 QSD marshalling rewritten. Added issue "isdefined- | ||||
| optional". | ||||
| C.4. since draft-reschke-webdav-search-01 | ||||
| July 04, 2002 Added issue "scope-collection". | ||||
| July 08, 2002 Closed issue "scope-collection". | ||||
| August 12, 2002 Added issues "results-vs-binds" and "select- | ||||
| allprop". | ||||
| October 22, 2002 Added issue "undefined-expressions". | ||||
| November 18, 2002 Changed example host names (no change tracking). | ||||
| November 25, 2002 Updated issue "DB2/DB7". Closed issues "undefined | ||||
| expressions", "isdefined-optional" and "select-allprop". | ||||
| C.5. since draft-reschke-webdav-search-02 | ||||
| November 27, 2002 Added issues "undefined-properties", "like- | ||||
| exactlyone" and "like-wildcard-adjacent". Closed issue "query-on- | ||||
| href". Added acknowledgments section. | ||||
| November 28, 2002 Closed issue "like-exactlyone". Added issue | ||||
| "mixed-content-properties". | ||||
| December 14, 2002 Closed issues "undefined-properties", "results-vs- | ||||
| binds", "mixed-content-properties". Updated issue "like-wildcard- | ||||
| adjacent". Added informative reference to BIND draft. Updated | ||||
| reference to ACL draft. | ||||
| January 9, 2003 Removed duplicate section on invalid scopes. Added | ||||
| comments to some open issues. Closed issues JW25/26, score- | ||||
| pseudo-property and null-ordering. | ||||
| January 10, 2003 Issue limit-vs-ordering plus resolution. Closed | ||||
| issue JW17/JW24b. | ||||
| January 14, 2003 New issue order-precedence. Started resolution of | ||||
| DB2/DB7. | ||||
| January 15, 2003 Started spec of DAV:typed-literal. | ||||
| January 17, 2003 Fix one DAV:like/DAV:getcontenttype example (add / | ||||
| to like expression, make case-insensitive). | ||||
| January 28, 2003 Update issue(s) result-truncation, JW24d. Fixed | ||||
| response headers in OPTIONS example. Added issue qsd-optional. | ||||
| Closed issue(s) order-precedence, case-insensitivity-name. | ||||
| February 07, 2003 Added issue scope-vs-versions. score-pseudo- | ||||
| property: allow DAV:orderby to explicitly specify DAV:score. | ||||
| C.6. since draft-reschke-webdav-search-03 | ||||
| April 24, 2003 Fixed two "?" vs "_" issues (not updated in last | ||||
| draft). | ||||
| June 13, 2003 Improve index. | ||||
| C.7. since draft-reschke-webdav-search-04 | ||||
| July 7, 2003 Typo fixed (propstat without status element). | ||||
| August 11, 2003 Remove superfluous IP and copyright sections. | ||||
| September 09, 2003 Added issues "2.4-multiple-uris" and "5.1-name- | ||||
| filtering". | ||||
| October 06, 2003 Fix misplaced section end in 5.11, add table | ||||
| formatting. Enhance table formatting in 5.18.3. Updated ACL and | ||||
| BIND references. Added XPATH reference. Closed issue JW24d by | ||||
| adding new optional operators. Updated more open issues, added | ||||
| issues from January meeting. Add K. Wiggen to Acknowledgements. | ||||
| Add Contributors section for the authors of the original draft. | ||||
| Close issue "scope-vs-versions" (optional feature added). Close | ||||
| (new) issue "1.3-import-DTD-terminology". Add issue "1.3-import- | ||||
| requirements-terminology". | ||||
| October 07, 2003 Typos fixed. Moved statement about DAV: namespace | ||||
| usage into separate (sub-)section. Closed "1.3-import- | ||||
| requirements-terminology". Update I18N Considerations with new | ||||
| xml:lang support info (see issue JW24d). Close issue "DB2/DB7" | ||||
| (remaining typing issues are now summarized in issue "typed- | ||||
| literal"). Fix misplaced section end in section 7. Started | ||||
| change to use RFC3253-style method definitions and error | ||||
| marshalling. | ||||
| October 08, 2003 Remove obsolete language that allowed reporting | ||||
| invalid scopes and such inside multistatus. Add new issue "5.4.2- | ||||
| scope-vs-redirects". | ||||
| C.8. since draft-reschke-webdav-search-05 | ||||
| October 11, 2003 Separate DAV:basicsearch DTD into separate figures | ||||
| for better maintainability. Update DTD with language-* operators | ||||
| and typed-literal element (optional). | ||||
| October 14, 2003 Close issue "5.4.2-multiple-scope". | ||||
| November 04, 2003 Update reference from CaseMap to UNICODE4, section | ||||
| 5.18. | ||||
| November 16, 2003 Updated issue "5.1-name-filtering". | ||||
| November 24, 2003 Reformatted scope description (collection vs. non- | ||||
| collection). | ||||
| November 30, 2003 Add issue "5_media_type_match". | ||||
| February 6, 2004 Updated all references. | ||||
| C.9. since draft-reschke-webdav-search-06 | ||||
| July 05, 2004 Fix table in Appendix "Three-Valued Logic in DAV: | ||||
| basicsearch". | ||||
| September 14, 2004 Fix inconsistent DTD in section 5.2 and 5.4 for | ||||
| scope element. | ||||
| September 30, 2004 Rewrite editorial note and abstract. Update | ||||
| references (remove unneeded XMLNS, update ref to ACL and BIND | ||||
| specs). | ||||
| C.10. since draft-reschke-webdav-search-07 | ||||
| October 01, 2004 Fix previous section heading (no change tracking). | ||||
| October 13, 2004 Fix DTD entry for is-collection. | ||||
| November 1, 2004 Fix DTD fragment query-schema-discovery. | ||||
| December 11, 2004 Update BIND reference. | ||||
| January 01, 2005 Fix DASL and DASLREQ references. | ||||
| February 06, 2005 Update XS2 reference. | ||||
| February 11, 2005 Rewrite "like" and "DASL" (response header) | ||||
| grammar in ABNF. | ||||
| May 5, 2005 Update references. Close issue "abnf" (only use ABNF | ||||
| when applicable). | ||||
| C.11. since draft-reschke-webdav-search-08 | ||||
| May 06, 2005 Fix document title. | ||||
| September 25, 2005 Update BIND reference. | ||||
| October 05, 2005 Update RFC4234 reference. | ||||
| October 22, 2005 Author's address update. | ||||
| February 12, 2006 Update BIND reference. | ||||
| March 16, 2006 Add typed literals to QSD. | ||||
| August 20, 2006 Update XML reference. | ||||
| August 28, 2006 Add issues "5.3-select-count" (open) and "5.4- | ||||
| clarify-depth" (resolved). Update BIND reference (again). | ||||
| C.12. since draft-reschke-webdav-search-09 | ||||
| December 1, 2006 Fix ABNF for DASL header. | ||||
| December 16, 2006 Close issue "qsd-optional", leave QSD optional. | ||||
| Close issue "2.4-multiple-uris", suggesting that servers should | ||||
| only return one response element per resource in case of multiple | ||||
| bindings. Add and resolve issues "authentication" and "cleanup- | ||||
| iana" (adding the header registration for "DASL"). Re-write | ||||
| rational for using the DAV: namespace, although this is a non-WG | ||||
| submission. | ||||
| January 4, 2007 Close issue "JW16b/JW24a", being related to | ||||
| "language-comparison". Add Appendix B. Close issues "language- | ||||
| comparison", "5_media_type_match", "5.1-name-filtering" and "5.3- | ||||
| select-count" as "won't fix", and add appendices accordingly. | ||||
| January 24, 2007 Update BIND reference. Close issue "5.4.2-scope- | ||||
| vs-redirects". Close issue "typed-literal": specify in terms of | ||||
| the XPATH 2.9 casting mechanism. Close issue "1.3-apply- | ||||
| condition-code-terminology" (no changes). | ||||
| C.13. since draft-reschke-webdav-search-10 | ||||
| January 29, 2007 Issue "result-truncation": Add appendix describing | ||||
| the open issue of Result Paging. Describe the mechanism of | ||||
| marshalling truncated results in a new normative subsection (leave | ||||
| the actual example where it was). Add and resolve issues | ||||
| "rfc2606-compliance" and "response-format". Update contact | ||||
| information for Alan Babich, Jim Davis and Surendra Reddy (no | ||||
| change tracking). | ||||
| February 8, 2007 Update BIND reference. | ||||
| C.14. since draft-reschke-webdav-search-11 | ||||
| Update: draft-newman-i18n-comparator-14 is RFC4790. Update: RFC2518 | ||||
| replaced by draft-ietf-webdav-rfc2518bis. Updated BIND reference. | ||||
| Minor tweaks to intro (document organization and relation to DASL). | ||||
| C.15. since draft-reschke-webdav-search-12 | ||||
| Update: draft-ietf-webdav-rfc2518bis replaced by RFC4918. Updated | ||||
| BIND reference. | ||||
| C.16. since draft-reschke-webdav-search-13 | ||||
| Open and close issue "qsd-req-validity". Updated BIND reference. | ||||
| C.17. since draft-reschke-webdav-search-14 | ||||
| RFC4234 obsoleted by RFC5234. | ||||
| Add and resolve issues "5.19.8-opdesc-vs-contains" and "dtd". | ||||
| Add clarifications about the behaviour when literal values are not | ||||
| compatible with the type of a comparison. | ||||
| C.18. since draft-reschke-webdav-search-15 | ||||
| Minor editorial improvements. | ||||
| Fix description of DAV:scope/DAV:href to use proper URI terminology, | ||||
| add reference to RFC 3986. | ||||
| Clarify list nature of DASL header. | ||||
| Clarify that the DAV:like pattern ABNF is defined in terms of Unicode | ||||
| code points. | ||||
| Update to UNICODE5. | ||||
| Aim for standards track (affects introduction to Appendix B). Thus, | ||||
| make the dependency on [RFC4437] clearly optional, and make the | ||||
| reference informative. Also, mention BCP 47 as candidate for future | ||||
| changes to language matching. | ||||
| Mention definition of additional condition codes as candidate for | ||||
| future changes. | ||||
| Consider DAV:contains in Security Considerations. | ||||
| Update Surendra's and Alan's contact information. | ||||
| Mention search scope discovery as future extensions. Add a SHOULD | ||||
| level requirement for DAV:basicsearch search arbiters to support | ||||
| their own URI as search scope. | ||||
| C.19. since draft-reschke-webdav-search-16 | ||||
| In DASL header registration tepmplate, set "Status" to "standard". | ||||
| Add missing bracket in DTD (Section 4.1). Fix broken and missing XML | ||||
| namespace declarations in examples. | ||||
| C.20. since draft-reschke-webdav-search-17 | ||||
| Typo fixed ("SHOULD not" -> "SHOULD NOT"). Fixed namespace name | ||||
| "http://jennicam.org" to use a RFC 2606 compliant domain. | ||||
| State that SEARCH is a safe method. | ||||
| Clarify that the DASL header should be added to the permanent | ||||
| registry. | ||||
| Add and resolve issue "ordering-vs-limiting". | ||||
| Appendix D. Resolved issues (to be removed by RFC Editor before | ||||
| publication) | publication) | |||
| Issues that were either rejected or resolved in this version of this | C.1. edit | |||
| document. | ||||
| D.1. safeness | ||||
| In Section 2: | ||||
| Type: edit | Type: edit | |||
| <http://www.w3.org/mid/4894155E.2000807@gmx.de> | julian.reschke@greenbytes.de (2004-07-05): Umbrella issue for | |||
| editorial fixes/enhancements. | ||||
| julian.reschke@greenbytes.de (2008-08-02): State that the SEARCH | ||||
| method is safe. | ||||
| Resolution (2008-08-03): Done. | ||||
| D.2. ordering-vs-limiting | ||||
| In Section 5.17.1: | ||||
| Type: change | ||||
| jbarone@xythos.com (2008-08-04): I read this to mean that the full | ||||
| results should first be ordered by the server, and then send back the | ||||
| requested limit. This seems to contradict what's specified in | ||||
| section 2.3.1, where the results are limited and then ordered (if I'm | ||||
| reading it correctly). I think these 2 sections should be consistent | ||||
| with each other. | ||||
| Resolution (2008-08-17): Relax requirement to SHOULD. | ||||
| Appendix E. Open issues (to be removed by RFC Editor prior to | ||||
| publication) | ||||
| E.1. edit | C.2. auth48 | |||
| Type: edit | Type: edit | |||
| julian.reschke@greenbytes.de (2004-07-05): Umbrella issue for | julian.reschke@greenbytes.de (2008-10-10): Umbrella issue for changes | |||
| editorial fixes/enhancements. | made during the RFC Editor's AUTH48 period. | |||
| Index | Index | |||
| C | C | |||
| caseless attribute 28-29, 36 | caseless attribute 27-28, 35 | |||
| Condition Names | Condition Names | |||
| DAV:search-grammar-discovery-supported (pre) 10 | DAV:search-grammar-discovery-supported (pre) 9 | |||
| DAV:search-grammar-supported (pre) 10 | DAV:search-grammar-supported (pre) 9 | |||
| DAV:search-multiple-scope-supported (pre) 10 | DAV:search-multiple-scope-supported (pre) 9 | |||
| DAV:search-scope-valid (pre) 11 | DAV:search-scope-valid (pre) 10 | |||
| Criteria 6 | Criteria 5 | |||
| D | D | |||
| DAV:and 28 | DAV:and 27 | |||
| DAV:ascending 28 | DAV:ascending 27 | |||
| DAV:contains 33 | DAV:contains 32 | |||
| DAV:depth 25 | DAV:depth 24 | |||
| DAV:descending 28 | DAV:descending 27 | |||
| DAV:eq 29 | DAV:eq 28 | |||
| caseless attribute 29 | caseless attribute 28 | |||
| DAV:from 25 | DAV:from 24 | |||
| DAV:gt 29 | DAV:gt 28 | |||
| DAV:gte 29 | DAV:gte 28 | |||
| DAV:include-versions 25 | DAV:include-versions 24 | |||
| DAV:is-collection 31 | DAV:is-collection 30 | |||
| DAV:is-defined 32 | DAV:is-defined 31 | |||
| DAV:language-defined 31 | DAV:language-defined 30 | |||
| DAV:language-matches 31 | DAV:language-matches 30 | |||
| DAV:like 32 | DAV:like 31 | |||
| DAV:limit 35 | DAV:limit 34 | |||
| DAV:literal 29 | DAV:literal 28 | |||
| DAV:lt 29 | DAV:lt 28 | |||
| DAV:lte 29 | DAV:lte 28 | |||
| DAV:not 28 | DAV:not 27 | |||
| DAV:nresults 35 | DAV:nresults 34 | |||
| DAV:or 28 | DAV:or 27 | |||
| DAV:orderby 28 | DAV:orderby 27 | |||
| DAV:scope 25 | DAV:scope 24 | |||
| DAV:score 34 | DAV:score 33 | |||
| relationship to DAV:orderby 35 | relationship to DAV:orderby 34 | |||
| DAV:search-grammar-discovery-supported precondition 10 | DAV:search-grammar-discovery-supported precondition 9 | |||
| DAV:search-grammar-supported precondition 10 | DAV:search-grammar-supported precondition 9 | |||
| DAV:search-multiple-scope-supported precondition 10 | DAV:search-multiple-scope-supported precondition 9 | |||
| DAV:search-scope-valid precondition 11 | DAV:search-scope-valid precondition 10 | |||
| DAV:select 25 | DAV:select 24 | |||
| DAV:supported-query-grammar-set property 16 | DAV:supported-query-grammar-set property 15 | |||
| DAV:typed-literal 29 | DAV:typed-literal 28 | |||
| DAV:where 26 | DAV:where 25 | |||
| M | M | |||
| Methods | Methods | |||
| SEARCH 9 | SEARCH 8 | |||
| O | O | |||
| OPTIONS method 15 | OPTIONS method 14 | |||
| DASL response header 16 | DASL response header 15 | |||
| P | P | |||
| Properties | Properties | |||
| DAV:supported-query-grammar-set 16 | DAV:supported-query-grammar-set 15 | |||
| Q | Q | |||
| Query 6 | Query 5 | |||
| Query Grammar 7 | Query Grammar 6 | |||
| Query Grammar Discovery 15 | Query Grammar Discovery 14 | |||
| using live property 16 | using live property 15 | |||
| using OPTIONS 15 | using OPTIONS 14 | |||
| Query Schema 7 | Query Schema 6 | |||
| R | R | |||
| Result 7 | Result 6 | |||
| Result Record 7 | Result Record 6 | |||
| Result Record Definition 7 | Result Record Definition 6 | |||
| Result Set 7 | Result Set 6 | |||
| Result Set Truncation | Result Set Truncation | |||
| Example 11 | Example 10 | |||
| S | S | |||
| Scope 7 | Scope 6 | |||
| Search Arbiter 7 | Search Arbiter 6 | |||
| SEARCH method 9 | SEARCH method 8 | |||
| Search Modifier 7 | Search Modifier 6 | |||
| Sort Specification 8 | Sort Specification 7 | |||
| Authors' Addresses | Authors' Addresses | |||
| Julian F. Reschke (editor) | Julian F. Reschke (editor) | |||
| greenbytes GmbH | greenbytes GmbH | |||
| Hafenweg 16 | Hafenweg 16 | |||
| Muenster, NW 48155 | Muenster, NW 48155 | |||
| Germany | Germany | |||
| Phone: +49 251 2807760 | Phone: +49 251 2807760 | |||
| End of changes. 104 change blocks. | ||||
| 826 lines changed or deleted | 311 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||