idnits 2.17.1 draft-nottingham-atompub-fiql-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** It looks like you're using RFC 3978 boilerplate. You should update this to the boilerplate described in the IETF Trust License Policy document (see https://trustee.ietf.org/license-info), which is required now. -- Found old boilerplate from RFC 3978, Section 5.1 on line 15. -- Found old boilerplate from RFC 3978, Section 5.5, updated by RFC 4748 on line 663. -- Found old boilerplate from RFC 3979, Section 5, paragraph 1 on line 674. -- Found old boilerplate from RFC 3979, Section 5, paragraph 2 on line 681. -- Found old boilerplate from RFC 3979, Section 5, paragraph 3 on line 687. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust Copyright Line does not match the current year == Line 251 has weird spacing: '...on>Just sta...' == The document seems to lack the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords -- however, there's a paragraph with a matching beginning. Boilerplate error? (The document does seem to have the reference to RFC 2119 which the ID-Checklist requires). -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (December 12, 2007) is 5979 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- == Outdated reference: A later version (-08) exists of draft-gregorio-uritemplate-00 ** Obsolete normative reference: RFC 2616 (Obsoleted by RFC 7230, RFC 7231, RFC 7232, RFC 7233, RFC 7234, RFC 7235) ** Obsolete normative reference: RFC 4234 (Obsoleted by RFC 5234) Summary: 3 errors (**), 0 flaws (~~), 4 warnings (==), 7 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group M. Nottingham 3 Internet-Draft December 12, 2007 4 Intended status: Informational 5 Expires: June 14, 2008 7 FIQL: The Feed Item Query Language 8 draft-nottingham-atompub-fiql-00 10 Status of This Memo 12 By submitting this Internet-Draft, each author represents that any 13 applicable patent or other IPR claims of which he or she is aware 14 have been or will be disclosed, and any of which he or she becomes 15 aware will be disclosed, in accordance with Section 6 of BCP 79. 17 Internet-Drafts are working documents of the Internet Engineering 18 Task Force (IETF), its areas, and its working groups. Note that 19 other groups may also distribute working documents as Internet- 20 Drafts. 22 Internet-Drafts are draft documents valid for a maximum of six months 23 and may be updated, replaced, or obsoleted by other documents at any 24 time. It is inappropriate to use Internet-Drafts as reference 25 material or to cite them other than as "work in progress." 27 The list of current Internet-Drafts can be accessed at 28 http://www.ietf.org/ietf/1id-abstracts.txt. 30 The list of Internet-Draft Shadow Directories can be accessed at 31 http://www.ietf.org/shadow.html. 33 This Internet-Draft will expire on June 14, 2008. 35 Copyright Notice 37 Copyright (C) The IETF Trust (2007). 39 Abstract 41 The Feed Item Query Language is a simple but flexible, URI-friendly 42 syntax for expressing filters across the entries in a Web feed. It 43 also specifies a mechanism to allow feeds to indicate what types of 44 queries are supported. 46 Table of Contents 48 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 49 2. Notational Conventions . . . . . . . . . . . . . . . . . . . . 3 50 3. FIQL Queries . . . . . . . . . . . . . . . . . . . . . . . . . 4 51 3.1. FIQL Expressions . . . . . . . . . . . . . . . . . . . . . 4 52 3.2. FIQL Constraints . . . . . . . . . . . . . . . . . . . . . 4 53 3.2.1. Selectors . . . . . . . . . . . . . . . . . . . . . . 5 54 3.2.2. FIQL Comparison Types . . . . . . . . . . . . . . . . 5 55 4. Feed Queries and HTTP . . . . . . . . . . . . . . . . . . . . 9 56 5. Feed Extensions for Queries . . . . . . . . . . . . . . . . . 10 57 5.1. The fq:interface element . . . . . . . . . . . . . . . . . 10 58 5.2. The fq:index element . . . . . . . . . . . . . . . . . . . 11 59 6. Security Considerations . . . . . . . . . . . . . . . . . . . 12 60 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 61 8. Normative References . . . . . . . . . . . . . . . . . . . . . 12 62 Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 13 63 Appendix B. Default Element Comparison Types . . . . . . . . . . 14 64 B.1. Atom 1.0 . . . . . . . . . . . . . . . . . . . . . . . . . 14 65 B.2. RSS 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . 14 66 Appendix C. Collected ABNF . . . . . . . . . . . . . . . . . . . 15 68 1. Introduction 70 The Feed Item Query Language (FIQL, pronounced "fickle") is a simple 71 but flexible, URI-friendly syntax for expressing filters across the 72 entries in a syndicated feed. For example, 74 title==foo*;(updated=lt=-P1D,title==*bar) 76 will return all entries in a feed that meet the following criteria; 78 o have a title beginning with "foo", AND 79 o have been updated in the last day OR have a title ending with 80 "bar". 82 This specification defines an extensible syntax for FIQL queries (in 83 Section 3), explains their use in HTTP (Section 4), and defines feed 84 extensions for discovering and describing query interfaces 85 (Section 5). 87 2. Notational Conventions 89 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 90 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 91 document are to be interpreted as described in BCP 14 [RFC2119], as 92 scoped to those conformance targets. 94 This specification uses XML Namespaces [W3C.REC-xml-names-19990114] 95 to uniquely identify XML element names. It uses the following 96 namespace prefix for the indicated namespace URI; 98 "fq": "http://purl.org/syndication/query" 100 This specification uses terms from the XML Infoset 101 [W3C.REC-xml-infoset-20040204]. However, this specification uses a 102 shorthand; the phrase "Information Item" is omitted when naming 103 Element Information Items. Therefore, when this specification uses 104 the term "element," it is referring to an Element Information Item in 105 Infoset terms. 107 This specification uses the Augmented Backus-Naur Form (ABNF) 108 notation of [RFC4234], including the DIGIT rule from the core. 109 Additionally, the unreserved, gen-delims, and pct-encoded rules are 110 included from [RFC3986], and QName from [W3C.REC-xml-names-19990114]. 111 The complete syntax is collected in Appendix C. 113 Although they refer to Atom [RFC4287] normatively, the mechanisms 114 described herein can be used with similar syndication formats, such 115 as the various flavours of RSS. 117 3. FIQL Queries 119 A FIQL query's input is a string of Unicode characters in the form of 120 an expression. 122 The output of an FIQL query is a feed that has the same head section 123 as the input feed, but that only contains entries that match the 124 given expression (that is, those that yield True). 126 3.1. FIQL Expressions 128 An FIQL expression is composed of one or more constraints, related to 129 each other with Boolean operators. 131 FIQL expressions yield Boolean values: True or False. 133 expression = [ "(" ] 134 ( constraint / expression ) 135 [ operator ( constraint / expression ) ] 136 [ ")" ] 137 operator = ";" / "," 139 o ";" is the Boolean AND operator; it yields True for a particular 140 entry if both operands evaluate to True, otherwise False. 141 o "," is the Boolean OR operator; it yields True if either operand 142 evaluates to True, otherwise False. 144 By default, the AND operator takes precedence (i.e., it is evaluated 145 before any OR operators are). However, a parenthesised expression 146 can be used to change precedence, yielding whatever the contained 147 expression yields. 149 3.2. FIQL Constraints 151 A FIQL constraint is composed of a selector, which identifies a 152 portion of an entry's content, and an optional comparison/argument 153 pair, which refines the constraint. When processed, a constraint 154 yields a Boolean value. 156 constraint = selector [ comparison argument ] 157 selector = 1*( unreserved / pct-encoded ) 158 comparison = ( ( "=" 1*ALPHA ) / fiql-delim ) "=" 159 argument = 1*arg-char 160 arg-char = unreserved / pct-encoded / fiql-delim / "=" 161 fiql-delim = "!" / "$" / "'" / "*" / "+" 163 3.2.1. Selectors 165 A selector identifies the portion of an entry that a constraint 166 applies to. When evaluated against an entry in the feed, it returns 167 one or more node-sets [W3C.REC-xpath-19991116] from the entry, 168 whether they be elements, attributes or textual content. 170 By default, a selector is treated as an XML QName 171 [W3C.REC-xml-names-19990114] which selects any and all child elements 172 of the entry element which share the same syntax (i.e., the same 173 prefix and localname; the namespace URI is not considered), along 174 with their descendant content if any. 176 For example, given the entry 178 180 Test 181 182 183 184 185 186 187 189 o "title" selects the text "Test". 190 o "ex:foo" selects both the "bar" and "baz" elements. 192 This behaviour can be overridden by by explicitly defining a selector 193 in the feed; see Section 5. 195 3.2.2. FIQL Comparison Types 197 Constraints with comparison operators are evaluated according to the 198 comparison type associated with the selector. This can be determined 199 by (in order of precedence): 201 1. An explicit type associated with it by the feed (see Section 5), 202 or 203 2. A default type defined by the specification of the selected 204 entry-level metadata element, or 205 3. A default type for the entry-level metadata element, as specified 206 in Appendix B, or 207 4. Falling back to the simple textual type (see Section 3.2.2.1). 209 A constraint with no comparison operator will yield True if the 210 selector matches any node. 212 This specification defines a number of comparison types below, and 213 allows extension types to be identified with URIs. 215 3.2.2.1. Simple Textual Comparisons 217 Simple text comparisons allow for case insensitive, non-language- 218 specific searching of the textual content of selected nodes. 220 text-arg = [ "*" ] 1*arg-char [ "*" ] 222 Two comparison operators are applicable to simple text comparisons; 224 o "==" yields True if the string value (as per XPath) of any 225 selected node matches the argument; otherwise False. 226 o "!=" yields True if the string value of every selected node does 227 not match the argument; otherwise False. 229 A match occurs when the text in question is character-by-character 230 equivalent with the argument, after observing the following rules, in 231 order: 233 1. Both the argument and the selected node's content MUST have their 234 encodings (percent-encoding and entity encoding, respectively) 235 removed, to produce Unicode strings. 236 2. Leading and trailing white space MUST be stripped from the 237 selected node's string. White space within the selected node's 238 string MUST be collapsed to single space characters. 239 3. Both strings MUST have locale-independent case folding applied, 240 as specified in Section 5.18 of [unicode]. 241 4. Both strings MUST have Normalization Form C [unicode-norm] 242 applied. 243 5. If the argument string begins or ends with an asterisk character 244 ("*"), it acts as a wild card, matching any characters preceding 245 or following (respectively) that position. 247 For example, given the entry: 249 250 Hello world 251 Just starting. 252 253 Mark Nottingham 254 255 256 This is just the start. 257 258 259 260 "title==Hello%20World" yields True 261 "title!=Hello" yields True 262 "title==Hello*" yields True 263 "title==hello*" yields True 264 "author==Mark*" yields True 265 "author==*Nottingham yields True 266 "description==*start*" yields True 267 "description==*Just*" yields True 268 "description==Just%20starting." yields True 269 "content==*just%20the%20start*" yields True 270 "description=="*just" yields False 272 This comparison type can be identied with the URI 273 "http://purl.org/syndication/query/simple-text". 275 3.2.2.2. Date Comparisons 277 Date comparisons allow both relative and absolute comparison of date- 278 related values in the string-value of selected nodes. 280 date-arg = dateTime / duration ; as defined in XML Schema Datatypes 282 Four operators are relevant to date comparisons; 284 o "==" yields True if the point in time specified in the argument 285 matches that indicated by the string-value of the selected node; 286 otherwise False. 287 o "!=" yields True if the point in time specified in the argument 288 does not match that indicated by the string-value of the selected 289 node; otherwise False. 290 o "=lt=" yields True if the point in time specified in the argument 291 follows that indicated by the string-value of the selected node; 292 otherwise False. 293 o "=le=" yields True if the point in time specified in the argument 294 follows that indicated by the string-value of the selected node, 295 or is equal to it; otherwise False. 296 o "=gt=" yields True if the point in time specified in the argument 297 precedes that indicated by the string-value of the selected node; 298 otherwise False. 299 o "=ge=" yields True if the point in time specified in the argument 300 precedes that indicated by the string-value of the selected node, 301 or is equal to it; otherwise False. 303 A point in time can be specified in two ways; 305 o Absolutely, expressed as an XML Schema dateTime 306 [W3C.REC-xmlschema-2-20010502]. 308 o Relatively, expressed as an XML Schema duration 309 [W3C.REC-xmlschema-2-20010502]. By default, such arguments are 310 relative to the time that the query is processed. 312 White space in the string value of the selected node MUST be ignored. 314 For example, given an entry 316 317 Hello World 318 2003-12-13T18:30:02Z 319 320 322 "updated==2003-12-13T18:30:02Z" yields True 323 "updated=gt=2003-12-13T00:00:00Z" yields True 324 "updated=lt=2005-01-01T00:00:00Z yields True 325 "updated=gt=-P1D12H" yields False 326 "updated=gt=-P5Y" yields True 328 (assuming processing on July 1st, 2006) 330 This specification does not define the appropriate behaviour if a 331 selector with a date type returns multiple nodes. 333 This comparison type can be identied with the URI 334 "http://purl.org/syndication/query/date". 336 3.2.2.3. Numeric Comparisons 338 Numeric comparison allows filtering of numeric values. 340 number-arg = [ "+" / "-" ] 1*DIGIT [ "." 1*DIGIT ] 342 Four operators are relevant to numeric comparisons; 344 o "==" yields True if the string-value of the selected node is 345 numerically equal to the argument; otherwise False. 346 o "!=" yields True if the string-value of the selected node is not 347 numerically equal to the argument; otherwise False. 348 o "=lt=" yields True if the string-value of the selected node 349 evaluates as numerically less than the argument; otherwise, False. 350 o "=le=" yields True if the string-value of the selected node 351 evaluates as numerically less than the argument, or as equal to 352 it; otherwise, False. 353 o "=gt=" yields True if the string-value of the selected node 354 evaluates as numerically greater than the argument; otherwise, 355 False. 357 o "=ge=" yields True if the string-value of the selected node 358 evaluates as numerically greater than the argument, or as equal to 359 it; otherwise, False. 361 White space in the string-value of selected node MUST be ignored. 363 For example, given an entry 365 366 Hello World 367 123 368 456 370 "x:foo==123" yields True 371 "x:foo==123.00" yields True 372 "x:foo!=123.1" yields True 373 "x:foo=lt=200" yields True 374 "x:bar==456" yields True 375 "x:foo=gt=500" yields False 377 This specification does not define the appropriate behaviour if a 378 selector with a numeric type returns multiple nodes. 380 This comparison type can be identied with the URI 381 "http://purl.org/syndication/query/numeric". 383 4. Feed Queries and HTTP 385 Although FIQL can be used in many contexts, it is optimised and 386 intended for use in the query component [RFC3986] of an HTTP 387 [RFC2616] URI. E.g., 389 http://example.com/feed.atom?query=title==*new*,author==bob* 390 http://example.org/feed.rss?title==*great*;ex:rating=gt=4 392 Note that a FIQL query can be used as the entire query component, or 393 as a sub-component. In the latter case, it is important to account 394 for any encoding conventions to be used with the sub-component; for 395 example, if queries are generated from HTML forms, the sub-component 396 will not be a bare FIQL query, but instead an encoded one. 398 The output of a HTTP query SHOULD be returned in the HTTP response 399 body, with an appropriate media type. HTTP resources SHOULD return a 400 400 Bad Request status code if an FIQL expression includes an 401 unsupported or unknown selector. 403 5. Feed Extensions for Queries 405 Although FIQL is suitable for use with unmodified Web feeds, it is 406 often desirable to override default comparison types, and to 407 advertise what item elements are available for queries. 409 This can be accomplished using a top-level feed metadata extension, 410 fq:interface. For example, 412 415 example 416 417 http://example.org/ 418 2006-09-12T12:28:02Z 419 422 423 425 427 428 429 test entry 430 something... 431 http://example.org/1124 432 2003-12-13T18:30:02Z 433 15.4 434 435 437 Here, the fq:interface element indicates that queries can be made at 438 the URI template "http://www.example.org/feed-search?{fiql-exp}", 439 where {fiql-exp} is replaced with the desired FIQL expression. 440 Expressions will support the selectors "title", "ex:foo" and "ex: 441 bar", and the latter two will be compared as a date and number, 442 respectively. 444 5.1. The fq:interface element 446 The fq:interface element describes an interface that processes 447 queries for the feed it occurs in. One or more fq:interface elements 448 MAY occur in a feed's head section. 450 It MUST have a "template" attribute, whose content is a URI template, 451 as defined in [I-D.gregorio-uritemplate]. This template SHOULD have 452 exactly one variable, "fiql-exp", that indicates where a FIQL 453 expression should occur. If it does not have a "fiql-exp" variable, 454 it MUST have some other variable that indicates how to submit queries 455 (e.g., using another query language). 457 For example, given a feed with the fq:interface declaration: 459 461 someone desiring to search for all entries with a title would use 462 this URI: 464 http://www.example.com/search?title 466 fq:interface MAY have any number of fq:index child elements. 467 Additional extension elements and attributes MAY also occur. 469 5.2. The fq:index element 471 The fq:index element indicates a selector that is available for use 472 in queries. Optionally, it can override its default type, and refine 473 it with an XPath expression. 475 It MUST have a "name" attribute, containing a selector (see 476 Section 3.2) to be used to reference the indexed element. 478 It MAY have a "path" attribute, containing an XPath 479 [W3C.REC-xpath-19991116] expression that yields the selected node(s) 480 when evaluated with an entry's element as the context node. 482 It MAY have a "type" attribute, containing a URI indicating the 483 comparison type that will be applied to that selector. 485 For example, 487 488 490 492 494 Here, the ex:foo element can compared using the simple textual 495 algorithm described in Section 3.2.2.1 with the "ex:foo" selector, or 496 using a (here, fictional) case-insensitive extension selector "foo- 497 case-insensitive". 499 Or, 501 502 504 506 Here, queries using the selector "foo-num" will be evaluated against 507 the content(s) of the "num" attribute of the "ex:bar" child element 508 of "ex:foo". 510 By default, fq:index is an empty element; however, comparison types 511 MAY define extension elements and attributes. 513 6. Security Considerations 515 Servers processing queries should be aware of the potential resource 516 and security issues of allowing arbitrarily long and complex queries. 517 Nothing in this specification requires queries to be successfully 518 processed; e.g., a HTTP response may respond with a 403 Forbidden 519 status code if they believe a request to be a security risk. 521 7. IANA Considerations 523 This memo has no registration requirements. 525 8. Normative References 527 [I-D.gregorio-uritemplate] Gregorio, J., "URI Template", 528 draft-gregorio-uritemplate-00 (work 529 in progress), October 2006. 531 [RFC2119] Bradner, S., "Key words for use in 532 RFCs to Indicate Requirement Levels", 533 BCP 14, RFC 2119, March 1997. 535 [RFC2616] Fielding, R., Gettys, J., Mogul, J., 536 Frystyk, H., Masinter, L., Leach, P., 537 and T. Berners-Lee, "Hypertext 538 Transfer Protocol -- HTTP/1.1", 539 RFC 2616, June 1999. 541 [RFC3986] Berners-Lee, T., Fielding, R., and L. 542 Masinter, "Uniform Resource 543 Identifier (URI): Generic Syntax", 544 STD 66, RFC 3986, January 2005. 546 [RFC4234] Crocker, D. and P. Overell, 547 "Augmented BNF for Syntax 548 Specifications: ABNF", RFC 4234, 549 October 2005. 551 [RFC4287] Nottingham, M. and R. Sayre, "The 552 Atom Syndication Format", RFC 4287, 553 December 2005. 555 [W3C.REC-xml-infoset-20040204] Cowan, J. and R. Tobin, "XML 556 Information Set (Second Edition)", 557 W3C REC REC-xml-infoset-20040204, 558 February 2004. 560 [W3C.REC-xml-names-19990114] Bray, T., Hollander, D., and A. 561 Layman, "Namespaces in XML", W3C 562 REC REC-xml-names-19990114, 563 January 1999. 565 [W3C.REC-xmlschema-2-20010502] Biron, P. and A. Malhotra, "XML 566 Schema Part 2: Datatypes", W3C 567 REC REC-xmlschema-2-20010502, 568 May 2001. 570 [W3C.REC-xpath-19991116] Clark, J. and S. DeRose, "XML Path 571 Language (XPath) Version 1.0", W3C 572 REC REC-xpath-19991116, 573 November 1999. 575 [unicode] The Unicode Consortium, "The Unicode 576 Standard, Version 4.1.0", 2003, . 580 [unicode-norm] Davis, M. and M. Duerst, "Unicode 581 Normalization Forms", 10 2006, . 584 Appendix A. Acknowledgements 586 Thanks to Wendell Craig Baker, Dave Beckett, Jason Douglas, Tom 587 Gordon, Hugo Haas, John Nienart, Addison Phillips, Pasha Sadri, 588 Jayavel Shanmugasundaram, Tex Texin, Evan Torrie, and Chris Westin 589 for their suggestions. The author takes all responsibility for 590 errors and omissions. 592 Appendix B. Default Element Comparison Types 594 Below are a selection of default comparison types for existing 595 elements. 597 B.1. Atom 1.0 599 o atom:author - simple text (Section 3.2.2.1) 600 o atom:category - simple text (Section 3.2.2.1) 601 o atom:content - simple text (Section 3.2.2.1) 602 o atom:contributor - simple text (Section 3.2.2.1) 603 o atom:id - simple text (Section 3.2.2.1) 604 o atom:link - simple text (Section 3.2.2.1) 605 o atom:published - date (Section 3.2.2.2) 606 o atom:rights - simple text (Section 3.2.2.1) 607 o atom:source - simple text (Section 3.2.2.1) 608 o atom:summary - simple text (Section 3.2.2.1) 609 o atom:title - simple text (Section 3.2.2.1) 610 o atom:updated - date (Section 3.2.2.2) 612 B.2. RSS 2.0 614 o title - simple text (Section 3.2.2.1) 615 o link - simple text (Section 3.2.2.1) 616 o description - simple text (Section 3.2.2.1) 617 o author - simple text (Section 3.2.2.1) 618 o category - simple text (Section 3.2.2.1) 619 o comments - simple text (Section 3.2.2.1) 620 o enclosure - simple text (Section 3.2.2.1) 621 o guid - simple text (Section 3.2.2.1) 622 o pubDate - date (Section 3.2.2.2) 623 o source - simple text (Section 3.2.2.1) 625 Appendix C. Collected ABNF 627 expression = [ "(" ] 628 ( constraint / expression ) 629 [ operator ( constraint / expression ) ] 630 [ ")" ] 631 operator = ";" / "," 632 constraint = selector [ comparison argument ] 633 selector = 1*( unreserved / pct-encoded ) 634 comparison = ( ( "=" 1*ALPHA ) / fiql-delim ) "=" 635 argument = 1*arg-char 636 arg-char = unreserved / pct-encoded / fiql-delim / "=" 637 fiql-delim = "!" / "$" / "'" / "*" / "+" 638 text-arg = [ "*" ] 1*arg-char [ "*" ] 639 date-arg = dateTime / duration ; as defined in XML Schema Datatypes 640 number-arg = [ "+" / "-" ] 1*DIGIT [ "." 1*DIGIT ] 642 Author's Address 644 Mark Nottingham 646 EMail: mnot@mnot.net 647 URI: http://www.mnot.net/ 649 Full Copyright Statement 651 Copyright (C) The IETF Trust (2007). 653 This document is subject to the rights, licenses and restrictions 654 contained in BCP 78, and except as set forth therein, the authors 655 retain all their rights. 657 This document and the information contained herein are provided on an 658 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS 659 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND 660 THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS 661 OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF 662 THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED 663 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 665 Intellectual Property 667 The IETF takes no position regarding the validity or scope of any 668 Intellectual Property Rights or other rights that might be claimed to 669 pertain to the implementation or use of the technology described in 670 this document or the extent to which any license under such rights 671 might or might not be available; nor does it represent that it has 672 made any independent effort to identify any such rights. Information 673 on the procedures with respect to rights in RFC documents can be 674 found in BCP 78 and BCP 79. 676 Copies of IPR disclosures made to the IETF Secretariat and any 677 assurances of licenses to be made available, or the result of an 678 attempt made to obtain a general license or permission for the use of 679 such proprietary rights by implementers or users of this 680 specification can be obtained from the IETF on-line IPR repository at 681 http://www.ietf.org/ipr. 683 The IETF invites any interested party to bring to its attention any 684 copyrights, patents or patent applications, or other proprietary 685 rights that may cover technology that may be required to implement 686 this standard. Please address the information to the IETF at 687 ietf-ipr@ietf.org. 689 Acknowledgement 691 Funding for the RFC Editor function is provided by the IETF 692 Administrative Support Activity (IASA).