diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc4661.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc4661.txt')
-rw-r--r-- | doc/rfc/rfc4661.txt | 1347 |
1 files changed, 1347 insertions, 0 deletions
diff --git a/doc/rfc/rfc4661.txt b/doc/rfc/rfc4661.txt new file mode 100644 index 0000000..ef0b966 --- /dev/null +++ b/doc/rfc/rfc4661.txt @@ -0,0 +1,1347 @@ + + + + + + +Network Working Group H. Khartabil +Request for Comments: 4661 Telio +Category: Standards Track E. Leppanen + M. Lonnfors + J. Costa-Requena + Nokia + September 2006 + + + An Extensible Markup Language (XML)-Based Format for + Event Notification Filtering + +Status of This Memo + + This document specifies an Internet standards track protocol for the + Internet community, and requests discussion and suggestions for + improvements. Please refer to the current edition of the "Internet + Official Protocol Standards" (STD 1) for the standardization state + and status of this protocol. Distribution of this memo is unlimited. + +Copyright Notice + + Copyright (C) The Internet Society (2006). + +Abstract + + The SIP event notification framework describes the usage of the + Session Initiation Protocol (SIP) for subscriptions and notifications + of changes to a state of a resource. The document does not describe + a mechanism whereby filtering of event notification information can + be achieved. Filtering is a mechanism for defining the preferred + notification information to be delivered and for specifying triggers + that cause that information to be delivered. In order to enable + this, a format is needed to enable the subscriber to describe the + state changes of a resource that cause notifications to be sent to it + and what those notifications are to contain. This document presents + a format in the form of an XML document. + + + + + + + + + + + + + + +Khartabil, et al. Standards Track [Page 1] + +RFC 4661 XML Based Format for Filtering September 2006 + + +Table of Contents + + 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 + 2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 3 + 3. Structure of XML-Encoded Simple-Filter . . . . . . . . . . . . 4 + 3.1. MIME Type for Simple-Filter Document . . . . . . . . . . 4 + 3.2. The <filter-set> Root Element . . . . . . . . . . . . . 4 + 3.3. The <ns-bindings> Element . . . . . . . . . . . . . . . 4 + 3.4. The <filter> Element . . . . . . . . . . . . . . . . . . 5 + 3.5. The <what> Element . . . . . . . . . . . . . . . . . . . 6 + 3.5.1. The <include> Element . . . . . . . . . . . . . 6 + 3.5.2. The <exclude> Element . . . . . . . . . . . . . 7 + 3.5.3. The 'type' Attribute . . . . . . . . . . . . . . 7 + 3.6. The <trigger> Element . . . . . . . . . . . . . . . . . 8 + 3.6.1. The <changed> Element . . . . . . . . . . . . . 8 + 3.6.2. The <added> Element . . . . . . . . . . . . . . 9 + 3.6.3. The <removed> Element . . . . . . . . . . . . . 10 + 4. XML Schema Extensibility . . . . . . . . . . . . . . . . . . . 10 + 5. Syntax for Referencing XML Items and Making Logical + Expressions . . . . . . . . . . . . . . . . . . . . . . . . . 10 + 6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 + 6.1. Filter Criteria Using <what> Element . . . . . . . . . . 12 + 6.2. Filter Criteria Using <trigger> Element . . . . . . . . 13 + 6.3. Filter Criteria Using <what> and <trigger> Elements . . 13 + 6.4. Content Filter Using Namespaces . . . . . . . . . . . . 14 + 6.5. Content Filter Using Only <include> Elements . . . . . . 14 + 6.6. Two Content Filters as Filter Criteria . . . . . . . . . 15 + 7. XML Schema for Filter Criteria . . . . . . . . . . . . . . . . 16 + 8. Security Considerations . . . . . . . . . . . . . . . . . . . 18 + 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 + 9.1. application/simple-filter+xml MIME TYPE . . . . . . . . 19 + 9.2. URN Sub-Namespace Registration for + urn:ietf:params:xml:ns:simple-filter . . . . . . . . . . . 20 + 9.3. Schema Registration . . . . . . . . . . . . . . . . . . 20 + 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 20 + 11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 20 + 11.1. Normative References . . . . . . . . . . . . . . . . . . 20 + 11.2. Informative References . . . . . . . . . . . . . . . . . 21 + + + + + + + + + + + + + +Khartabil, et al. Standards Track [Page 2] + +RFC 4661 XML Based Format for Filtering September 2006 + + +1. Introduction + + The SIP event notification framework [2] describes the usage of the + Session Initiation Protocol (SIP) for subscriptions and notifications + of changes to a state of a resource. The document does not describe + a mechanism whereby filtering of event notification information can + be achieved. + + Filtering is a mechanism for defining the preferred notification + information, referred to as content, to be delivered and for + specifying the rules for when that information should be delivered. + + The filtering mechanism is expected to be particularly valuable and + primarily applicable to users of mobile wireless access devices. The + characteristics of the devices typically include high latency, low + bandwidth, low data processing capabilities, small display, and + limited battery power. Such devices can benefit from the ability to + filter the amount of information generated at the source of the event + notification. However, implementers need to be aware of the + computational burden on the source of the event notification. This + is discussed further in Section 8. + + The structure of the filter criteria is described using the XML + schema. The filter criteria is presented as an XML document. The + XML document contains the user's preference as to when notifications + are to be sent to it and what they are to contain. The scope of the + "when" part is triggering. + + The triggering is defined as enabling a subscriber to specify + triggering rules for notifications where the criteria are based on + changes of the event package [2] specific state information, e.g., + for the presence information document [15], the change in the value + of the <status> element. + + The functionality of the filtering regarding the SIP event + notifications is specified in [3]. + +2. Conventions + + In this document, the key words 'MUST', 'MUST NOT', 'REQUIRED', + 'SHALL', 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'MAY', + and 'OPTIONAL' are to be interpreted as described in RFC 2119 [1] and + indicate requirement levels for compliant implementations. + + Throughout the document, the "resulting XML document" refers to the + final XML document that carries state information to be delivered to + the subscriber after the filters have been applied to it. + + + + +Khartabil, et al. Standards Track [Page 3] + +RFC 4661 XML Based Format for Filtering September 2006 + + + "Content" refers to the XML document that appears in a notification + reflecting the state of a resource. + +3. Structure of XML-Encoded Simple-Filter + + A simple-filter is an XML document [8] that MUST be well formed and + MUST be valid according to schemas, including extension schemas, + available to the validater, and applicable to the XML document. The + simple-filter documents MUST be based on XML 1.0 and MUST be encoded + using UTF-8. + + The namespace identifier for elements defined by this specification + is a URN [5], which uses the namespace identifier 'ietf' defined by + [6] and extended by [4]. This urn is: + urn:ietf:params:xml:ns:simple-filter. + + This namespace declaration indicates the namespace on which the + filter criteria are based. + +3.1. MIME Type for Simple-Filter Document + + The MIME type for the simple-filter document is "application/ + simple-filter+xml". Any transport protocol (SIP [12], for example) + used to carry the filters that also carries payload type information + MUST identify the payload as MIME type + "application/simple-filter+xml" (for example, a Content-Type header + field). + +3.2. The <filter-set> Root Element + + The root element of the filter criteria is <filter-set>. + + The <filter-set> element contains the namespace definition mentioned + above. With the optional 'package' attribute, it is possible to + define the package to which the filter criteria is applied. This + might be especially useful in cases where the XML document containing + the filter criteria is separated from the events that make use of it + or from the protocol that usually carries it. + + The <filter-set> element may contain one <ns-bindings> element. + + The <filter-set> element contains one or more <filter> elements. + +3.3. The <ns-bindings> Element + + The <ns-bindings> element is used to bind namespaces to local + prefixes used in expressions that select elements or attributes using + + + + +Khartabil, et al. Standards Track [Page 4] + +RFC 4661 XML Based Format for Filtering September 2006 + + + the syntax in Section 5. Those prefixes apply to the <include>, + <exclude>, <changed>, <added>, and <removed> elements. + + The <ns-bindings> element contains one or more <ns-binding> elements. + Each <ns-binding> element has a 'prefix' attribute. The value of the + 'prefix' attribute is a prefix used to qualify the elements pointed + to by the expression. The <ns-binding> element also has a 'urn' + attribute that identifies the namespace that the prefix represents. + +3.4. The <filter> Element + + The <filter> element is used to specify the content of an individual + filter. + + The <filter> element has an 'id' attribute. The value of the 'id' + attribute MUST be unique within the <filter-set> element. The + <filter> MAY have a 'uri' attribute. The value of the 'uri' + attribute is the URI of the resource to which the filter applies. + The <filter> MAY have a 'domain' attribute. The value of the + 'domain' attribute is the domain of the resources to which the filter + applies. The 'uri' attribute and the 'domain' attribute MUST NOT + appear together in the <filter>. + + The URI of the resource is useful in cases where the 'event list' + extension [17] is used with a package. Since a subscription to an + event package may be addressed to an event list, the 'uri' attribute + allows the subscriber to define a filter specific to an individual + resource within that list. That resource may be another list. The + 'uri' attribute may, of course, carry the URI of the list itself. If + the <filter> does not contain the 'uri' attribute, the filter applies + to the resource identified in the subscription request. + + The 'domain' attribute carries a domain. In this case, the filter + applies to resources whose URI has a domain part matching that + domain. This can be used when a subscription is for a resource that + is an event list with many resources from differing domains. + + URI matching is done according to the matching rules defined for a + particular scheme. When matching domains, the user part of the URI + is ignored for matching purposes. + + The <filter> MAY have a 'remove' attribute that together with the + 'id' attribute indicates the existing filter to be removed. The + value of the 'remove' attribute is of the type "Boolean". The + default value is "false". + + + + + + +Khartabil, et al. Standards Track [Page 5] + +RFC 4661 XML Based Format for Filtering September 2006 + + + The <filter> MAY have an 'enabled' attribute that indicates whether a + filter is enabled or disabled. The value of the 'enabled' attribute + is of the type "Boolean". The default value is "true". + + The <filter> element MAY contain a <what> element and MAY contain one + or more <trigger> elements, but it MUST contain either the <what> + element or the <trigger> element when the filter is being enabled for + the first time. When a filter is disabled by setting the 'enabled' + attribute to "false", the <what> and <trigger> elements MAY be + omitted. Similarly, when a filter is re-enabled by setting the + 'enabled' attribute to "true", the <what> and <trigger> elements MAY + be omitted. + + Filter contents can be changed by changing the contents in the <what> + and <trigger> elements and maintaining the value of the filter 'id' + attribute. + +3.5. The <what> Element + + The <what> element is used to specify the content to be delivered to + the user. It does not specify the exact content but the rules that + are used to construct that information. + + The <what> element may contain one or more <include> elements and one + or more <exclude> elements. When more than one <include> element has + been defined, the results are additive. That is, each <include> + element adds an element or attribute to the resulting XML document. + When more than one <exclude> element has been defined, each <exclude> + element value depletes the contents of the resulting XML document. + +3.5.1. The <include> Element + + The <include> element is used to select the content to be delivered. + Its value can identify an XML element, an attribute, or a namespace + of an XML document to be filtered. This is indicated using the + 'type' attribute. + + Note that the resulting XML document MUST be valid. Therefore, in + addition to including the elements identified with the <include> + element value, all other mandatory XML elements and/or attributes + must be incorporated in the resulting XML document in order to make + it valid. This, in practice, means that a subscriber defining a + filter only needs to <include> optional elements and/or attributes, + but may <include> mandatory elements and/or attributes as well. + There are also cases where a filter selects an attribute that belongs + to an optional element. In this case, the optional element needs to + appear in the resulting XML document. + + + + +Khartabil, et al. Standards Track [Page 6] + +RFC 4661 XML Based Format for Filtering September 2006 + + + The syntax defined in Section 5 (see the definition of "selection") + MUST be used. The following example selects the <basic> element + defined in the PIDF [13]. This results in the selection of the + <basic> element as well as all the ancestors, i.e., <status> and + <tuple>. + + <include type="xpath">/presence/tuple/status/basic</include>. + +3.5.2. The <exclude> Element + + The <exclude> element is used to define exceptions to the set of XML + elements and/or attributes selected by the <include> elements. Thus, + XML elements (including their lower-level "child" elements) and/or + attributes defined by the <exclude> element are not delivered. This + is most useful when an <include> element identifies a namespace. + + The <exclude> element has the optional 'type' attribute (see the + definition of the 'type' in Section 3.5.3). + + Note that the resulting XML document MUST be valid. Therefore, if + the step in applying the <exclude> element value to an XML document + results in an invalid document according to the schema, that step + MUST be reversed, resulting in the elements and/or attributes being + re-introduced into the resulting XML document with their previous + values in order to make it valid. This, in practice, means that a + subscriber defining a filter only needs to <exclude> optional + elements and/or attributes, but SHOULD NOT <exclude> mandatory + elements and/or attributes. + + The syntax MUST follow Section 5. + +3.5.3. The 'type' Attribute + + The 'type' attribute is used to describe the value of the <include> + and <exclude> elements. The following values are pre-defined: + "xpath" and "namespace". The 'type' attribute is optional, and, if + omitted, the default value is "xpath". + + The "xpath" value is used when the <include> or <exclude> element + contains a value following the syntax in Section 5 that selects an + element or an attribute. + + The "namespace" value is used when the <include> or <exclude> element + contains a value of a namespace. The value is the URI of the + namespace. The resulting XML document is comprised of the elements + defined within the namespace. + + + + + +Khartabil, et al. Standards Track [Page 7] + +RFC 4661 XML Based Format for Filtering September 2006 + + +3.6. The <trigger> Element + + The <trigger> element is used to identify the package-specific + changes that a resource has to encounter before the content is + delivered to the subscriber. It can appear more than once in a + <filter> element. Multiple appearances of this element denote the + "OR" operation. This means that updates to a resource that satisfy + any of the <trigger> elements criteria constitute the content to be + delivered. + + The <trigger> element MAY contain the <changed>, <added>, or + <removed> elements, but it MUST contain at least one of the three + elements. Any combination of the 3 elements is possible. Multiple + appearances of those elements within a <trigger> element denotes the + "AND" operation. This means that updates to a resource that satisfy + ALL of the <changed>, <added>, and <removed> elements' criteria + within the <trigger> element constitute the content to be delivered. + +3.6.1. The <changed> Element + + The <changed> element is used to identify the XML element or + attribute, from the package-specific XML document, whose value MUST + change from that of the "previous XML document", in order to activate + the trigger and cause the content to be delivered. Previous XML + document" in this context refers to the raw version of the most + recent XML document that was sent to the subscriber, before the + filters were applied to it. The XML element or attribute MUST be + expressed using the syntax defined in Section 5 for the "reference" + ABNF. + + The <changed> element MAY contain the 'from' attribute, the 'to' + attribute, the 'by' attribute, or any combination of the three. The + absence of all of those attributes means a change of any sort to the + value of the element or attribute activates the trigger. An update + to the element or attribute value with an identical value is not a + change. + + Comparison of a change is done according to the element or + attribute's lexical rules. + +3.6.1.1. The 'from' Attribute + + A trigger is active when the XML element or attribute identified with + the <changed> element has changed from the value indicated by this + attribute to a different value. + + + + + + +Khartabil, et al. Standards Track [Page 8] + +RFC 4661 XML Based Format for Filtering September 2006 + + +3.6.1.2. The 'to' Attribute + + A trigger is active when the XML element or attribute identified with + the <changed> element has changed to the value indicated by this + attribute from a different value. + +3.6.1.3. The 'by' Attribute + + A trigger is active when the XML element or attribute identified with + the <changed> element has changed by at least the amount indicated by + this attribute from a different value. That is, the 'by' attribute + applies only to numerical values and indicates a delta with respect + to the current value that an attribute or element (identified in the + <changed> element) needs to change before it is selected. For + example, if the 'by' attribute is set to 2 and the current value of + the element/attribute is 6, the element/attribute is selected when it + reaches (or exceeds) the value 8 or when it decreases to 4 or a lower + value. + +3.6.1.4. Combination of Attributes + + Any combination of the 'from', 'to', and 'by' attributes in the + <changed> element is possible. For example, if the 'from' attribute + is combined with the 'to' attribute, it is interpreted to mean that + the trigger is active when the XML element or attribute identified + with the <changed> element has changed from the 'from' value to the + 'to' value. Note that if the 'by' attribute is used in combination + with the other attributes, the other attribute types MUST match the + 'by' type of decimal. + +3.6.2. The <added> Element + + The <added> element triggers content delivery when the XML element it + identifies has been added to the document being filtered (that is, + this instance of that element appears in the current document, but + not in the previous document). It can be used, for example, to learn + of new services and/or capabilities subscribed to by the user, or + services and/or capabilities that the user has now allowed the + subscriber to see. The XML element or attribute MUST be expressed + using the syntax defined in Section 5 for the "reference" ABNF. + + Note that if a filter includes both the content filter (<what>) part + and the <added> element, then the definitions of the <what> part + SHOULD also cover the added elements. Otherwise, the content is + delivered without the items defined in the <added> element. + + + + + + +Khartabil, et al. Standards Track [Page 9] + +RFC 4661 XML Based Format for Filtering September 2006 + + +3.6.3. The <removed> Element + + The <removed> element triggers content delivery when the XML element + it identifies has been removed from the document being filtered (that + is, this instance of that element appeared in the previous document, + but not in this document). The XML element or attribute MUST be + expressed using the syntax defined in Section 5 for the "reference" + ABNF. + +4. XML Schema Extensibility + + The simple-filter document is meant to be extended. An extension + takes place by defining a new set of elements in a new namespace, + governed by a new schema. Every extension MUST have an appropriate + XML namespace assigned to it. The XML namespace of the extension + MUST be different from the namespaces defined in this specification. + The extension MUST NOT change the syntax or semantics of the schemas + defined in this document. All XML tags and attributes that are part + of the extension MUST be appropriately qualified so as to place them + within that namespace and MUST be designed such that receivers can + safely ignore such extensions. + + This specification defines explicit places where new elements or + attributes from an extension can be placed. These are explicitly + indicated in the schemas by the <any> and <anyAttribute> elements. + Extensions to this specification MUST specify where their elements + can be placed within the document. + + As a result, a document that contains extensions will require + multiple schemas in order to determine its validity - a schema + defined in this document, along with those defined by extensions + present in the document. Because extensions occur by adding new + elements and attributes governed by new schemas, the schemas defined + in this document are fixed and would only be changed by a revision to + this specification. Such a revision, should it take place, would + endeavor to allow documents compliant to the previous schema to + remain compliant to the new one. As a result, the schemas defined + here don't provide explicit schema versions, as this is not expected + to be needed. + +5. Syntax for Referencing XML Items and Making Logical Expressions + + The ABNF [10] is used to describe the syntax for the expressions. + The syntax is defined to be XPATH [9] compatible but has only a + restricted set of capabilities of the XPATH. More information about + the meaning of the items of the syntax can be found in [9]. The + "abbreviated syntax" of the "node test" is used in the references + ("reference"). The expression in the syntax relates to the + + + +Khartabil, et al. Standards Track [Page 10] + +RFC 4661 XML Based Format for Filtering September 2006 + + + predicate, comparison, and logical expressions of the XPATH. If an + XPATH expression evaluates to more than one element at a certain + step, the filter applies to all the elements that are evaluated. + That is, if a filter including an element evaluates to 2 elements, + both elements are included as a result. + + selection = reference [expression] + expression = "[" (elem-expr / attr-expr) + 1*[oper (elem-expr / attr-expr)] "]" + elem-expr = (elem-path / "." / "..") compar value + elem-path = (element / "*") 1*["/" / "*" / element] ["*" / element] + attr-expr = [elem-path "/"] attribute compar value + + reference = elem-reference / attr-reference + elem-reference = "/" 1*("/" / "/*" / ("/" element)) + attr-reference = reference attribute + + oper = "and" / "or" + compar = "=" / "<" / ">" + element = [ns] string + attribute = "@" [ns] string + ns = string ":" + string = <any sequence of data supported by XML in names of XML + element, and/or attribute or prefixes of namespaces> + value = <any sequence of data supported by XML as a value of the + XML element and/or attribute> + + When identifying XML elements or attributes, the value may consist of + two parts: the XML element/attribute selector and the condition + (comparison and logical expressions). The XML element selector + appears first followed by the condition part in square brackets. In + the XML element selector part, the XML elements may be referenced by + giving the full hierarchical path as: "/presence/tuple/status/basic", + by denoting the selection to cover any hierarchical level by its name + as: "//tuple/status/basic", or using the wildcard "*", denoting any + value in a certain level as "/*/watcher". + + Example references are listed as follows: + + o Selecting an element by using an XML element as a condition: + * //*[status/basic="open"] + * /presence/tuple[*/basic="open"] + + o Selecting an element by using XML attributes as a condition: + * //watcher[@duration-subscribed<500] + * /*/watcher[@event="rejected"] + + + + + +Khartabil, et al. Standards Track [Page 11] + +RFC 4661 XML Based Format for Filtering September 2006 + + + o Selecting an element by using two XML elements as a condition: + * //tuple[status/basic="open" and type="device"] + + o Selecting an attribute: + * //watcher/@duration-subscribed + + In some cases, due to the design of the XML schema, the XPATH-like + expression results in identification of more than one element with + the same name (the XPATH expression may not have uniquely identified + an element at every step). In those cases, all elements identified + are selected. + + When evaluating XPATH location steps, namespace expansion follows + XPATH 1.0 [9] semantics, i.e., if the QName does not have a prefix, + then the namespace URI in the expanded name is null. With + non-default namespaces, expansion is done according to the given + <ns-bindings> definitions. When a default namespace is used in the + document, the <ns-binding> element SHOULD be used to define an equal + URI with some prefix in order to have a valid XPATH evaluation in + location steps. + +6. Examples + + The XML Schema for the XML document examples is specified in + Section 7. + +6.1. Filter Criteria Using <what> Element + + A user wishes to get to know his friend's availability and + willingness for messaging (SMS, IM, and MMS) in order to know whether + the friend is able to receive a message, the address to contact, and + the type of the message to be used. + + This example shows how to define a content filter. The <basic> + element as well as all parent elements are selected based on a + condition defined by a logical expression. The condition is <class> + elements that have a value "MMS", "SMS", or "IM". + + The <class> element is defined in [14] as an extension to PIDF [13]. + + <?xml version="1.0" encoding="UTF-8"?> + <filter-set xmlns="urn:ietf:params:xml:ns:simple-filter"> + <ns-bindings> + <ns-binding prefix="pidf" urn="urn:ietf:params:xml:ns:pidf"/> + <ns-binding prefix="rpid" + urn="urn:ietf:params:xml:ns:pidf:rpid"/> + </ns-bindings> + <filter id="123" uri="sip:presentity@example.com"> + + + +Khartabil, et al. Standards Track [Page 12] + +RFC 4661 XML Based Format for Filtering September 2006 + + + <what> + <include type="xpath"> + /pidf:presence/pidf:tuple[rpid:class="IM" or rpid:class="SMS" + or rpid:class="MMS"]/pidf:status/pidf:basic + </include> + </what> + </filter> + </filter-set> + +6.2. Filter Criteria Using <trigger> Element + + A user requires to be informed when his colleague becomes available + by some communication means. The user gets the full presence state + of the colleague when a certain PIDF [13] tuple <basic> status + changes from "closed" to "open". + + <?xml version="1.0" encoding="UTF-8"?> + <filter-set xmlns="urn:ietf:params:xml:ns:simple-filter"> + <ns-bindings> + <ns-binding prefix="pidf" urn="urn:ietf:params:xml:ns:pidf"/> + </ns-bindings> + <filter id="123" uri="sip:presentity@example.com"> + <trigger> + <changed from="CLOSED" to="OPEN"> + /pidf:presence/pidf:tuple/pidf:status/pidf:basic + </changed> + </trigger> + </filter> + </filter-set> + +6.3. Filter Criteria Using <what> and <trigger> Elements + + A user wishes to get information about pending and waiting + subscriptions in order to be able to authorise watchers to see his + presence information. + + The filter selects watcher information notifications [16] to be sent + when a subscription status has changed to "pending" or "waiting". In + the notification, only the watchers that have a status of "pending" + or "waiting" are included. + + <?xml version="1.0" encoding="UTF-8"?> + <filter-set xmlns="urn:ietf:params:xml:ns:simple-filter"> + <ns-bindings> + <ns-binding prefix="wi" + urn="urn:ietf:params:xml:ns:watcherinfo"/> + </ns-bindings> + <filter id="123" uri="sip:presentity@example.com"> + + + +Khartabil, et al. Standards Track [Page 13] + +RFC 4661 XML Based Format for Filtering September 2006 + + + <what> + <include> + /wi:watcherinfo/wi:watcher-list/wi:watcher[@status="pending" + or @status="waiting"] + </include> + </what> + <trigger> + <changed to="pending"> + /wi:watcherinfo/wi:watcher-list/wi:watcher/@status + </changed> + </trigger> + <trigger> + <changed to="waiting"> + /wi:watcherinfo/wi:watcher-list/wi:watcher/@status + </changed> + </trigger> + </filter> + </filter-set> + +6.4. Content Filter Using Namespaces + + A user turns her terminal on, and the terminal automatically fetches + general presence status and information about communication means + from a certain pre-defined set of her buddies. + + The filter is defined to select XML elements belonging to the PIDF + namespace. + + <?xml version="1.0" encoding="UTF-8"?> + <filter-set xmlns="urn:ietf:params:xml:ns:simple-filter"> + <filter id="123" uri="sip:buddylist@example.com"> + <what> + <include type="namespace"> + urn:ietf:params:xml:ns:pidf + </include> + </what> + </filter> + </filter-set> + +6.5. Content Filter Using Only <include> Elements + + A user wants to know if a group of his friends is available for + gaming. He orders notifications about the current status and future + changes of the game-specific presence information. + + This filter is defined to select the game-specific tuple to be + delivered. + + + + +Khartabil, et al. Standards Track [Page 14] + +RFC 4661 XML Based Format for Filtering September 2006 + + + <?xml version="1.0" encoding="UTF-8"?> + <filter-set xmlns="urn:ietf:params:xml:ns:simple-filter" > + <ns-bindings> + <ns-binding prefix="game-ext" + urn="urn:ietf:params:xml:ns:game-ext"/> + </ns-bindings> + <filter id="123"> + <what> + <include> + /pidf:presence/pidf:tuple/ + pidf:status[game-ext:label="game-X"] + </include> + </what> + </filter> + </filter-set> + +6.6. Two Content Filters as Filter Criteria + + The user is interested in getting up-to-date information about the + communication means and contact addresses of his friends. The user + also wants to get more information (e.g., location) about one of the + friends in the list, named Bob. The PIDF element <note> is filtered + out, i.e., excluded. The list was predefined as buddies@example.com. + + <?xml version="1.0" encoding="UTF-8"?> + <filter-set xmlns="urn:ietf:params:xml:ns:simple-filter"> + <ns-bindings> + <ns-binding prefix="pidf" urn="urn:ietf:params:xml:ns:pidf"/> + <ns-binding prefix="rpid" + urn="urn:ietf:params:xml:ns:pidf:rpid"/> + </ns-bindings> + <filter id="8439" uri="sip:buddies@example.com"> + <what> + <include> + /pidf:presence/pidf:tuple[rpid:class="service"]/pidf:status/ + pidf:basic + </include> + </what> + </filter> + <filter id="999" uri="sip:bob@example.com"> + <what> + <include type="namespace"> + urn:ietf:params:xml:ns:pidf + </include> + <exclude> + /pidf:presence/pidf:tuple/pidf:note + </exclude> + </what> + + + +Khartabil, et al. Standards Track [Page 15] + +RFC 4661 XML Based Format for Filtering September 2006 + + + </filter> + </filter-set> + +7. XML Schema for Filter Criteria + + XML Schema Implementation (Normative) + + <?xml version="1.0" encoding="UTF-8"?> + <xs:schema targetNamespace="urn:ietf:params:xml:ns:simple-filter" + xmlns="urn:ietf:params:xml:ns:simple-filter" + xmlns:xs="http://www.w3.org/2001/XMLSchema" + elementFormDefault="qualified"> + + <xs:import namespace="http://www.w3.org/XML/1998/namespace" + schemaLocation="http://www.w3.org/2001/xml.xsd"/> + + <xs:annotation> + <xs:documentation xml:lang="en"> + XML Schema Definition for Filter Criteria. + </xs:documentation> + </xs:annotation> + + <xs:element name="filter-set" type="FilterSetType"/> + + <xs:complexType name="FilterSetType"> + <xs:sequence> + <xs:element name="ns-bindings" type="NSBindings" + minOccurs="0" maxOccurs="1"/> + <xs:element name="filter" type="FilterType" + minOccurs="1" + maxOccurs="unbounded"/> + </xs:sequence> + <xs:attribute name="package" type="xs:string" use="optional"/> + <xs:anyAttribute namespace="##other" processContents="lax"/> + </xs:complexType> + + <xs:complexType name="NSBindings"> + <xs:sequence> + <xs:element name="ns-binding" type="NSBinding" + minOccurs="1" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + + <xs:complexType name="NSBinding"> + <xs:attribute name="prefix" type="xs:string" use="required"/> + <xs:attribute name="urn" type="xs:anyURI" use="required"/> + </xs:complexType> + + + + +Khartabil, et al. Standards Track [Page 16] + +RFC 4661 XML Based Format for Filtering September 2006 + + + <xs:complexType name="FilterType"> + <xs:sequence> + <xs:element name="what" type="WhatType" + minOccurs="0" maxOccurs="1"/> + <xs:element name="trigger" type="TriggerType" + minOccurs="0" maxOccurs="unbounded"/> + <xs:any namespace="##other" processContents="lax" + minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + <xs:attribute name="id" type="xs:string" use="required"/> + <xs:attribute name="uri" type="xs:anyURI" use="optional"/> + <xs:attribute name="domain" type="xs:string" use="optional"/> + <xs:attribute name="remove" type="xs:boolean" use="optional" + default="false"/> + <xs:attribute name="enabled" type="xs:boolean" use="optional" + default="true"/> + <xs:anyAttribute namespace="##other" processContents="lax"/> + </xs:complexType> + + <xs:complexType name="WhatType"> + <xs:sequence> + <xs:element name="include" type="InclType" + minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="exclude" type="ExclType" + minOccurs="0" maxOccurs="unbounded"/> + <xs:any namespace="##other" processContents="lax" + minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + + <xs:complexType name="InclType"> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="type" type="TypeType" + default="xpath" use="optional"/> + <xs:anyAttribute namespace="##other" processContents="lax"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + + <xs:complexType name="ExclType"> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="type" type="TypeType" + default="xpath" use="optional"/> + <xs:anyAttribute namespace="##other" processContents="lax"/> + </xs:extension> + </xs:simpleContent> + + + +Khartabil, et al. Standards Track [Page 17] + +RFC 4661 XML Based Format for Filtering September 2006 + + + </xs:complexType> + + <xs:simpleType name="TypeType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="xpath"/> + <xs:enumeration value="namespace"/> + </xs:restriction> + </xs:simpleType> + + <xs:complexType name="TriggerType"> + <xs:sequence> + <xs:element name="changed" type="ChangedType" + minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="added" type="xs:string" + minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="removed" type="xs:string" + minOccurs="0" maxOccurs="unbounded"/> + <xs:any namespace="##other" processContents="lax" + minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + + <xs:complexType name="ChangedType"> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="from" type="xs:anySimpleType" + use="optional"/> + <xs:attribute name="to" type="xs:anySimpleType" + use="optional"/> + <xs:attribute name="by" type="xs:decimal" + use="optional"/> + <xs:anyAttribute namespace="##other" processContents="lax"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + + </xs:schema> + +8. Security Considerations + + The filters in the body in a SIP message have a significant effect on + the ways in which the request is handled at a server. As a result, + it is especially important that messages containing this extension be + authenticated and authorised. Authentication can be achieved using + the Digest Authentication mechanism described in [12]. The + authorisation decision is based on the permissions that the resource + (notifier) has given to the watcher. An example of such an + auhorisation policy can be found in [18]. + + + +Khartabil, et al. Standards Track [Page 18] + +RFC 4661 XML Based Format for Filtering September 2006 + + + Requests can reveal sensitive information about a UA's capabilities. + If this information is sensitive, it SHOULD be encrypted using SIP + S/MIME capabilities [11]. + + All filtering-related security measures discussed in [2] MUST be + followed along with package-specific security. + +9. IANA Considerations + + This document registers a new MIME type, "application/ + simple-filter+xml", and registers a new XML namespace. + + This specification follows the guidelines of RFC3023 [7]. + +9.1. application/simple-filter+xml MIME TYPE + + MIME media type: application + + MIME subtype name: simple-filter+xml + + Mandatory parameters: none + + Optional parameters: Same as charset parameter application/xml, as + specified in RFC 3023 [7]. + + Encoding considerations: Same as encoding considerations of + application/xml, as specified in RFC 3023 [7]. + + Security considerations: See section 10 of RFC 3023 [7] and section + Section 8 of this document. + + Interoperability considerations: none. + + Published specification: This document. + + Applications that use this media type: This document type has been + used to support the SIP-based Event notification framework and its + packages. + + Additional information: + + Magic number: None + + File extension: .cl or .xml + + Macintosh file type code: "TEXT" + + + + + +Khartabil, et al. Standards Track [Page 19] + +RFC 4661 XML Based Format for Filtering September 2006 + + + Personal and email address for further information: Hisham Khartabil + (hisham.khartabil@telio.no) + + Intended Usage: COMMON + + Author/change controller: The IETF + +9.2. URN Sub-Namespace Registration for + urn:ietf:params:xml:ns:simple-filter + + This section registers a new XML namespace, as per guidelines in the + IETF XML Registry [4]. + + URI: The URI for this namespace is + urn:ietf:params:xml:ns:simple-filter. + + Registrant Contact: IETF, SIMPLE working group, Hisham Khartabil + (hisham.khartabil@telio.no) + +9.3. Schema Registration + + This section registers a new XML schema per the procedures in [4]. + + URI: urn:ietf:params:xml:ns:simple-filter + + Registrant Contact: IETF, SIMPLE working group, Hisham Khartabil + (hisham.khartabil@telio.no). + + The XML for this schema can be found as the sole content of + Section 7. + +10. Acknowledgements + + The authors would like to thank Jonathan Rosenberg, Henning + Schulzrinne, Tim Moran, Jari Urpalainen, Sreenivas Addagatla, + Miguel-Angel Garcia Martin, Mary Barnes, Paul Kyzivat, Robert Sparks, + and Elwyn Davies for their valuable input and comments. + +11. References + +11.1. Normative References + + [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement + Levels", BCP 14, RFC 2119, March 1997. + + [2] Roach, A. B., "Session Initiation Protocol (SIP)-Specific Event + Notification", RFC 3265, June 2002. + + + + +Khartabil, et al. Standards Track [Page 20] + +RFC 4661 XML Based Format for Filtering September 2006 + + + [3] Khartabil, H., Leppanen, E., Lonnfors, M., and J. Costa- + Requena, "Functional Description of Event Notification + Filtering", RFC 4660, September 2006. + + [4] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, + January 2004. + + [5] Moats, R., "URN Syntax", RFC 2141, May 1997. + + [6] Moats, R., "A URN Namespace for IETF Documents", RFC 2648, + August 1999. + + [7] Murata, M., St. Laurent, S., and D. Kohn, "XML Media Types", + RFC 3023, January 2001. + + [8] Bray, T., "Exensible Markup Language (XML) 1.0 (Second + Edition)", W3C CR CR-xml11-20011006, October 2000. + + [9] Clark, J., "XML Path Language (XPath) Version 1.0", W3C REC + REC-xpath-19991116, November 1999. + + [10] Crocker, D. and P. Overell, "Augmented BNF for Syntax + Specifications: ABNF", RFC 4234, October 2005. + + [11] Ramsdell, B., "Secure/Multipurpose Internet Mail Extensions + (S/MIME) Version 3.1 Message Specification", RFC 3851, July + 2004. + +11.2. Informative References + + [12] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., + Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP: + Session Initiation Protocol", RFC 3261, June 2002. + + [13] Sugano, H., Fujimoto, S., Klyne, G., Bateman, A., Carr, W., and + J. Peterson, "Presence Information Data Format (PIDF)", RFC + 3863, August 2004. + + [14] Schulzrinne, H., Gurbani, V., Kyzivat, P., and J. Rosenberg, + "RPID -- Rich Presence Extensions to the Presence Information + Data Format (PIDF)", RFC 4480, July 2006. + + [15] Rosenberg, J., "A Presence Event Package for the Session + Initiation Protocol (SIP)", RFC 3856, August 2004. + + [16] Rosenberg, J., "An Extensible Markup Language (XML) Based + Format for Watcher Information", RFC 3858, August 2004. + + + + +Khartabil, et al. Standards Track [Page 21] + +RFC 4661 XML Based Format for Filtering September 2006 + + + [17] Roach, A. B., Campbell, B., and J. Rosenberg, "A Session + Initiation Protocol (SIP) Event Notification Extension for + Resource Lists", RFC 4663, September 2006. + + [18] Rosenberg, J., "Presence Authorization Rules", Work in + Progress, June 2006. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Khartabil, et al. Standards Track [Page 22] + +RFC 4661 XML Based Format for Filtering September 2006 + + +Authors' Addresses + + Hisham Khartabil + Telio + P.O. Box 1203 Vika + Oslo + Norway + + Phone: +47 2167 3544 + EMail: hisham.khartabil@telio.no + + + Eva Leppanen + Nokia + P.O BOX 785 + Tampere + Finland + + Phone: +358 7180 77066 + EMail: eva-maria.leppanen@nokia.com + + + Mikko Lonnfors + Nokia + P.O BOX 321 + Helsinki + Finland + + Phone: + 358 71800 8000 + EMail: mikko.lonnfors@nokia.com + + + Jose Costa-Requena + Nokia + P.O. Box 321 + FIN-00045 NOKIA GROUP + FINLAND + + Phone: +358 71800 8000 + EMail: jose.costa-requena@nokia.com + + + + + + + + + + + +Khartabil, et al. Standards Track [Page 23] + +RFC 4661 XML Based Format for Filtering September 2006 + + +Full Copyright Statement + + Copyright (C) The Internet Society (2006). + + This document is subject to the rights, licenses and restrictions + contained in BCP 78, and except as set forth therein, the authors + retain all their rights. + + This document and the information contained herein are provided on an + "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS + OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET + ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, + INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE + INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED + WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +Intellectual Property + + The IETF takes no position regarding the validity or scope of any + Intellectual Property Rights or other rights that might be claimed to + pertain to the implementation or use of the technology described in + this document or the extent to which any license under such rights + might or might not be available; nor does it represent that it has + made any independent effort to identify any such rights. Information + on the procedures with respect to rights in RFC documents can be + found in BCP 78 and BCP 79. + + Copies of IPR disclosures made to the IETF Secretariat and any + assurances of licenses to be made available, or the result of an + attempt made to obtain a general license or permission for the use of + such proprietary rights by implementers or users of this + specification can be obtained from the IETF on-line IPR repository at + http://www.ietf.org/ipr. + + The IETF invites any interested party to bring to its attention any + copyrights, patents or patent applications, or other proprietary + rights that may cover technology that may be required to implement + this standard. Please address the information to the IETF at + ietf-ipr@ietf.org. + +Acknowledgement + + Funding for the RFC Editor function is provided by the IETF + Administrative Support Activity (IASA). + + + + + + + +Khartabil, et al. Standards Track [Page 24] + |