SIMPLE WG M. Lonnfors Internet-Draft E. Leppanen Expires: May 18, 2007 Nokia H. Khartabil Telio J. Urpalainen Nokia Research Center November 14, 2006 Presence Information Data format (PIDF) Extension for Partial Presence draft-ietf-simple-partial-pidf-format-08 Status of this Memo By submitting this Internet-Draft, each author represents that any 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 aware will be disclosed, in accordance with Section 6 of BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt. The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. This Internet-Draft will expire on May 18, 2007. Copyright Notice Copyright (C) The Internet Society (2006). Abstract The Presence Information Document Format (PIDF) specifies the baseline XML based format for describing presence information. One of the characteristic of the PIDF is that the document always needs to carry all presence information available for the presentity. In Lonnfors, et al. Expires May 18, 2007 [Page 1] Internet-Draft Partial PIDF November 2006 some environments where low bandwidth and high latency links can exist it is often beneficial to limit the amount of transported information over the network. This document introduces a new MIME type which enables transporting of either only the changed parts or the full PIDF based presence information. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 3 3. Structure of PIDF diff documents . . . . . . . . . . . . . . . 3 3.1. 'version' attribute . . . . . . . . . . . . . . . . . . . 4 3.2. 'entity' attribute . . . . . . . . . . . . . . . . . . . . 5 4. Usage of 'application/pidf-diff+xml' . . . . . . . . . . . . . 5 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 5 5.1. Content-type registration for 'application/pidf-diff+xml' . . . . . . . . . . . . . . . 5 5.2. URN sub-namespace registration for 'urn:ietf:params:xml:ns:pidf-diff' . . . . . . . . . . . . 6 5.3. XML Schema Registration . . . . . . . . . . . . . . . . . 7 6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7. XML Schema . . . . . . . . . . . . . . . . . . . . . . . . . . 11 8. Interoperability Considerations . . . . . . . . . . . . . . . 13 9. Security Considerations . . . . . . . . . . . . . . . . . . . 13 10. Internationalization Considerations . . . . . . . . . . . . . 13 11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 13 12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 14 12.1. Normative references . . . . . . . . . . . . . . . . . . . 14 12.2. Informative references . . . . . . . . . . . . . . . . . . 14 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 16 Intellectual Property and Copyright Statements . . . . . . . . . . 17 Lonnfors, et al. Expires May 18, 2007 [Page 2] Internet-Draft Partial PIDF November 2006 1. Introduction The Presence Information Document Format (PIDF) [3] specifies the baseline XML based format for describing presence information. One of the characteristic of the PIDF is that the document always needs to carry all presence information available for the presentity. In some environments where low bandwidth and high latency links can exist, it is often beneficial to limit the amount of transported information over the network. This document introduces a new MIME-Type 'application/pidf-diff+xml' which enables transporting of either only the changed parts or the full PIDF based presence information. The root element of the document distinguishes whether the partial or full PIDF document content was transported. Note: With this new MIME-Type applications can easily negotiate the support of partial updates of presence by using the Accept- header. If PIDF had initially been designed for partial updates, a new separate MIME-Type would have been unnecessary. 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. This memo makes use of the vocabulary defined in RFC2778 [2]. In addition, the following terms are defined: Full presence document: A presence document that contains all the presentity's presence information that is available to a particular watcher. Partial presence document: A presence document that represents a fragment of the full presence document. A partial presence documents can only be understood in the context of the full presence document, i.e. a partial presence document modifies a cached copy of the full presence document. 3. Structure of PIDF diff documents The MIME type 'application/pidf-diff+xml' defines the new content type for partial PIDF documents. Lonnfors, et al. Expires May 18, 2007 [Page 3] Internet-Draft Partial PIDF November 2006 The XML Schema imports the PIDF [3] schema so that the full PIDF document content with the addition of a 'version' attribute can be transported. The root element of the document is then <pidf-full> and the 'version' attribute information can be included within it. Otherwise the content of <pidf-full> element is exactly the same as what would have been if 'application/pidf+xml' content type had been used. Although the XML Schema allows using also <presence> as the document root element it is disallowed from applications utilizing this document format. When only the changes of the presence document are transported, the model described in XML patch operations [8] is used. The root element of the document is then <pidf-diff>. The patch operation elements: <add>, <remove> and <replace> allow changing the partial content of the cached local copy of the full presence document. The <add> element is used to add new content, the <replace> element updates and the <remove> element removes existing content. The optional 'version' attribute within the two possible document root elements contains a sequence number which is incremented by one between subsequent document updates, i.e. a more recent document update has a higher 'version' value than the previous one. This number can be used to ensure consistent updates as the recipient of the document can use the 'version' number to properly order received documents and to ensure that updates have not been lost. The usage of this attribute thus allows "state delta" processing described in [9]. Partial notification [16] uses similar model. This number increments independently regardless of whether the <pidf-full> or the <pidf-diff> content is transported. In other words, a single version counter is maintained across <pidf-full> and <pidf-diff> documents. Implementations using this document format MUST follow guidelines specified in the PIDF [3]. Specifically, the XML document MUST be well formed and SHOULD be valid. This specification makes use of XML namespaces for identifying presence documents and document fragments. The namespace URI for elements defined by this specification is a URN [4], using the namespace identifier 'ietf' specified in RFC 2648 [5] and extended by RFC3688 [6]. This URN is: urn:ietf:params:xml:ns:pidf-diff 3.1. 'version' attribute Every presence document compliant with this specification MAY contain a 'version' attribute within the <pidf-diff> and <pidf-full> element. Lonnfors, et al. Expires May 18, 2007 [Page 4] Internet-Draft Partial PIDF November 2006 3.2. 'entity' attribute Every presence document compliant with this specification MAY contain an 'entity' attribute within the <pidf-diff> element. Its content, a presentity URI MUST then be the same as the 'entity' attribute value of the <presence> element described in [3]. The usage of this presentity URI is described in more detail in section 3.1 of [13]. 4. Usage of 'application/pidf-diff+xml' The partial presence document SHOULD only contain those elements or attributes that have changed. However, when there are a lot of changes the full presence document content can then be transported instead. 5. IANA Considerations This memo calls for IANA to: o register a new XML namespace URN per [6]. o register a new content type 'application/pidf-diff+xml' per RFC2048 [12]. o register a new XML Schema URN per [6]. 5.1. Content-type registration for 'application/pidf-diff+xml' Type name: application Subtype name: pidf-diff+xml Required parameters: none Optional parameters: charset Indicates the character encoding of enclosed XML. Default is UTF-8. Encoding considerations: Uses XML, which can employ 8-bit characters, depending on the character encoding used. See RFC 3023 [10], section 3.2. Security considerations: This content type is designed to carry presence data, which may be considered private information. Appropriate precautions should be adopted to limit disclosure of this information. Please refer to Lonnfors, et al. Expires May 18, 2007 [Page 5] Internet-Draft Partial PIDF November 2006 [[[RFCXXXX]]] security considerations section for more information. Interoperability considerations: none Published specification: [[[RFCXXXX]]] Applications which use this media type: SIP-based presence systems Additional information: Magic Number: None File Extension: .xml Macintosh file type code: "TEXT" Personal and email address for further information: Jari Urpalainen, jari.urpalainen@nokia.com Intended usage: LIMITED USE Restrictions on usage: Presence [3] based systems. Author: This specification is a work item of the IETF SIMPLE working group, with mailing list address <simple@ietf.org>. Change controller: IETF. 5.2. URN sub-namespace registration for 'urn:ietf:params:xml:ns:pidf-diff' URI: urn:ietf:params:xml:ns:pidf-diff Description: This is the XML namespace for XML elements defined by [[[RFCXXXX]]] to describe the 'application/pidf-diff+xml' content type for partial PIDF. Registrant Contact: IETF, SIMPLE working group, <simple@ietf.org> Jari Urpalainen, <jari.urpalainen@nokia.com> XML: Lonnfors, et al. Expires May 18, 2007 [Page 6] Internet-Draft Partial PIDF November 2006 BEGIN <?xml version="1.0"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd"> <html xmlns="http://www.w3.org/1999/xhtml <head> <meta http-equiv="content-type" content="text/html;charset=iso-8859-1"/> <title>PIDF extension for partial PIDF</title> </head> <body> <h1>Namespace for PIDF extension for partial notifications</h1> <h2>urn:ietf:params:xml:ns:pidf-diff</h2> <p>See <a href="[[[URL of published RFC]]]"> RFCXXXX</a>.</p> </body> </html> END 5.3. XML Schema Registration This section registers a new XML Schema. URI: urn:ietf:params:xml:schema:pidf-diff Registrant Contact: IETF, SIMPLE working group, <simple@ietf.org> Jari Urpalainen, <jari.urpalainen@nokia.com> 6. Examples An 'application/pidf-diff+xml' document that contains the full state presence information: <?xml version="1.0" encoding="UTF-8"?> <p:pidf-full xmlns="urn:ietf:params:xml:ns:pidf" xmlns:p="urn:ietf:params:xml:ns:pidf-diff" xmlns:r="urn:ietf:params:xml:ns:pidf:rpid" xmlns:ci="urn:ietf:params:xml:ns:pidf:cipid" xmlns:c="urn:ietf:params:xml:ns:pidf:caps" xmlns:dm="urn:ietf:params:xml:ns:pidf:data-model" entity="pres:someone@example.com" version="567"> <tuple id="sg89ae"> Lonnfors, et al. Expires May 18, 2007 [Page 7] Internet-Draft Partial PIDF November 2006 <status> <basic>open</basic> </status> <c:servcaps> <c:audio>true</c:audio> <c:message>true</c:message> <c:video>false</c:video> </c:servcaps> <contact priority="0.8">tel:09012345678</contact> </tuple> <tuple id="cg231jcr"> <status> <basic>open</basic> </status> <contact priority="1.0">im:pep@example.com</contact> </tuple> <tuple id="r1230d"> <status> <basic>closed</basic> </status> <ci:homepage>http://example.com/~pep/</ci:homepage> <ci:icon>http://example.com/~pep/icon.gif</ci:icon> <ci:card>http://example.com/~pep/card.vcd</ci:card> <contact priority="0.9">sip:pep@example.com</contact> </tuple> <note xml:lang="en">Full state presence document</note> <dm:person id="p123"> <r:activities> <r:on-the-phone/> <r:busy/> </r:activities> </dm:person> <dm:device id="u600b40c7"> <c:devcaps> <c:mobility> <c:supported> <c:mobile/> </c:supported> </c:mobility> </c:devcaps> <dm:deviceID>urn:esn:600b40c7</dm:deviceID> </dm:device> Lonnfors, et al. Expires May 18, 2007 [Page 8] Internet-Draft Partial PIDF November 2006 </p:pidf-full> An example partial update document with the <pidf-diff> root element: <?xml version="1.0" encoding="UTF-8"?> <p:pidf-diff xmlns="urn:ietf:params:xml:ns:pidf" xmlns:p="urn:ietf:params:xml:ns:pidf-diff" xmlns:r="urn:ietf:params:xml:ns:pidf:rpid" xmlns:d="urn:ietf:params:xml:ns:pidf:data-model" entity="pres:someone@example.com" version="568"> <p:add sel="presence/note" pos="before"> <tuple id="ert4773"> <status> <basic>open</basic> </status> <contact priority="0.4">mailto:pep@example.com</contact> <note xml:lang="en">This is a new tuple inserted between the last tuple and person element</note> </tuple> </p:add> <p:replace sel="*/tuple[@id='r1230d']/status/basic/text()" >open</p:replace> <p:remove sel="*/d:person/r:activities/r:busy" ws="after"/> <p:replace sel="*/tuple[@id='cg231jcr']/contact/@priority" >0.7</p:replace> </p:pidf-diff> An updated local composition presence document after applying the patches: <?xml version="1.0" encoding="UTF-8"?> <p:pidf-full xmlns="urn:ietf:params:xml:ns:pidf" xmlns:p="urn:ietf:params:xml:ns:pidf-diff" xmlns:r="urn:ietf:params:xml:ns:pidf:rpid" xmlns:ci="urn:ietf:params:xml:ns:pidf:cipid" xmlns:c="urn:ietf:params:xml:ns:pidf:caps" xmlns:dm="urn:ietf:params:xml:ns:pidf:data-model" entity="pres:someone@example.com" version="568"> Lonnfors, et al. Expires May 18, 2007 [Page 9] Internet-Draft Partial PIDF November 2006 <tuple id="sg89ae"> <status> <basic>open</basic> </status> <c:servcaps> <c:audio>true</c:audio> <c:message>true</c:message> <c:video>false</c:video> </c:servcaps> <contact priority="0.8">tel:09012345678</contact> </tuple> <tuple id="cg231jcr"> <status> <basic>open</basic> </status> <contact priority="0.7">im:pep@example.com</contact> </tuple> <tuple id="r1230d"> <status> <basic>open</basic> </status> <ci:homepage>http://example.com/~pep/</ci:homepage> <ci:icon>http://example.com/~pep/icon.gif</ci:icon> <ci:card>http://example.com/~pep/card.vcd</ci:card> <contact priority="0.9">sip:pep@example.com</contact> </tuple> <tuple id="ert4773"> <status> <basic>open</basic> </status> <contact priority="0.4">mailto:pep@example.com</contact> <note xml:lang="en">This is a new tuple inserted between the last tuple and note element</note> </tuple> <note xml:lang="en">Full state presence document</note> <dm:person id="p123"> <r:activities> <r:on-the-phone/> </r:activities> </dm:person> <dm:device id="u600b40c7"> <c:devcaps> Lonnfors, et al. Expires May 18, 2007 [Page 10] Internet-Draft Partial PIDF November 2006 <c:mobility> <c:supported> <c:mobile/> </c:supported> </c:mobility> </c:devcaps> <dm:deviceID>urn:esn:600b40c7</dm:deviceID> </dm:device> </p:pidf-full> 7. XML Schema The XML schema for the 'application/pidf-diff+xml' data format. The included schema "urn:ietf:params:xml:schema:xml-patch-ops" is defined in [8] and the PIDF Schema "pidf.xsd" is imported from [3]. Lonnfors, et al. Expires May 18, 2007 [Page 11] Internet-Draft Partial PIDF November 2006 <?xml version="1.0" encoding="UTF-8"?> <xsd:schema targetNamespace="urn:ietf:params:xml:ns:pidf-diff" xmlns:tns="urn:ietf:params:xml:ns:pidf-diff" xmlns:pidf="urn:ietf:params:xml:ns:pidf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <!-- include xml-patch-ops type definitions --> <xsd:include schemaLocation="urn:ietf:params:xml:schema:xml-patch-ops"/> <!-- import PIDF definitions --> <xsd:import namespace="urn:ietf:params:xml:ns:pidf" schemaLocation="pidf.xsd"/> <!-- partial updates --> <xsd:element name="pidf-diff"> <xsd:complexType> <xsd:sequence minOccurs="0" maxOccurs="unbounded"> <xsd:choice> <xsd:element name="add" type="tns:add"/> <xsd:element name="replace" type="tns:replace"/> <xsd:element name="remove" type="tns:remove"/> </xsd:choice> </xsd:sequence> <xsd:attribute name="version" type="xsd:unsignedInt"/> <xsd:attribute name="entity" type="xsd:anyURI"/> </xsd:complexType> </xsd:element> <!-- full PIDF in addition to optional version --> <xsd:element name="pidf-full"> <xsd:complexType> <xsd:complexContent> <xsd:extension base="pidf:presence"> <xsd:attribute name="version" type="xsd:unsignedInt"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> </xsd:schema> Lonnfors, et al. Expires May 18, 2007 [Page 12] Internet-Draft Partial PIDF November 2006 8. Interoperability Considerations Systems compliant with CPP [11] will not be by default able to use this specification. However, this will not cause any interoperability problems because all endpoints and gateways must support the default MIME type (application/pidf+xml) regardless if they support this specification. Thus if a gateway or another end point does not understand this specification it will not be used. In SIMPLE based systems use of this MIME type is negotiated using SIP content type negotiation mechanism as specified in partial notification [16]. Other CPP compliant (other than SIP based) systems can also support this specification if they have a mechanism to indicate support for it. If they do it is possible to build a gateway which will preserve end-to-end integrity with usage of partial PIDF. 9. Security Considerations All security considerations identified for PIDF [3] apply unchanged for this document as presence information may contain highly sensitive information. In addition, once the partial content is transformed, a malicious man-in-the-middle may easily mess up the patching process. The protocol used to distribute this content SHOULD ensure privacy, message integrity and authentication. Furthermore, the protocol SHOULD provide access controls which restrict who can see who else's presence information. 10. Internationalization Considerations The PIDF [3] format is represented in XML which performs all character processing in terms of the Universal Character Set (UCS). Conformant XML processors MUST support both UTF-8 and UTF-16 encodings of the UCS. UTF-8 is the RECOMMENDED encoding of this partial presence format. 11. Acknowledgments The authors would like to thank Jose Costa-Requena, Jyrki Aarnos, Jonathan Rosenberg, Dean Willis, Miguel Garcia, Krisztian Kiss, Ben Cambell, Robert Sparks, Anders Kristenssen, Aki Niemi and Jon Peterson for their valuable comments and contributions. 12. References Lonnfors, et al. Expires May 18, 2007 [Page 13] Internet-Draft Partial PIDF November 2006 12.1. Normative references [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [2] Day, M., Rosenberg, J., and H. Sugano, "A Model for Presence and Instant Messaging", RFC 2778, February 2000. [3] Sugano, H., "CPIM presence information data format", RFC 3863, May 2003. [4] Moats, R., "URN syntax", RFC 2141, May 1997. [5] Moats, R., "A URN namespace for IETF documents", RFC 2648, Aug. 1999. [6] Mealling, M., "The IETF XML Registry", RFC 3688, BCP 81, January 2004. [7] Freed, N. and J. Klensin, "Media Type Specifications and Registration Procedures", RFC 4288, BCP 13, Dec. 2005. [8] Urpalainen, J., "An Extensible Markup Language (XML) Patch Operations Framework Utilizing XML Path Language (XPath) Selectors", draft-ietf-simple-xml-patch-ops-02, March 2006. 12.2. Informative references [9] Roach, A., "Session Initiation Protocol (SIP)-Specific Event Notification", RFC 3265, June 2002. [10] Murata, M., "XML media types", RFC 3023, January 2001. [11] Peterson, J., "Common Profile for Presence (CPP)", RFC 3859. [12] Freed, N., Klensin, J., and J. Postel, "Multipurpose Internet Mail Extensions (MIME) Part Four: Registration Procedures", RFC 2048, November 1996. [13] Rosenberg, J., "A Data Model for Presence", RFC 4479, July 2006. [14] Schulzrinne, H., Gurbani, V., Kyzivat, P., and J. Rosenberg, "RPID: Rich Presence Extensions to the Presence Information Data Format (PIDF)", RFC 4480, December 2005. [15] Schulzrinne, H., "CIPID: Contact Information in Presence Information Data Format", RFC 4482, July 2006. Lonnfors, et al. Expires May 18, 2007 [Page 14] Internet-Draft Partial PIDF November 2006 [16] Lonnfors, M., Costa-Requena, J., Leppanen, E., and H. Khartabil, "Session Initiation Protocol (SIP) extension for Partial Notification of Presence Information", draft-ietf-simple-partial-notify-07 (work in progress), July 2006. Lonnfors, et al. Expires May 18, 2007 [Page 15] Internet-Draft Partial PIDF November 2006 Authors' Addresses Mikko Lonnfors Nokia Itamerenkatu 11-13 00180 Helsinki Finland Phone: +358 71 8008000 Email: mikko.lonnfors@nokia.com Eva Leppanen Nokia P.O BOX 785 Tampere Finland Phone: +358 7180 77066 Email: eva-maria.leppanen@nokia.com Hisham Khartabil Telio P.O. Box 1203 Vika Oslo Norway Phone: +47 2167 3544 Email: hisham.khartabil@telio.no Jari Urpalainen Nokia Research Center Itamerenkatu 11-13 00180 Helsinki Finland Phone: +358 7180 37686 Email: jari.urpalainen@nokia.com Lonnfors, et al. Expires May 18, 2007 [Page 16] Internet-Draft Partial PIDF November 2006 Intellectual Property Statement 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. Disclaimer of Validity 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. 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. Acknowledgment Funding for the RFC Editor function is currently provided by the Internet Society. Lonnfors, et al. Expires May 18, 2007 [Page 17]