SIMPLE WG                                                    M. Lonnfors
Internet-Draft                                               E. Leppanen
Expires: August 25, 2005                                           Nokia
                                                            H. Khartabil
                                                                   Telio
                                                           J. Urpalainen
                                                   Nokia Research Center
                                                       February 21, 2005


     Presence Information Data format (PIDF) Extension for Partial
                                Presence
                draft-ietf-simple-partial-pidf-format-03

Status of this Memo

   This document is an Internet-Draft and is subject to all provisions
   of Section 3 of RFC 3667.  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 become aware will be disclosed, in accordance with
   RFC 3668.

   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 August 25, 2005.

Copyright Notice

   Copyright (C) The Internet Society (2005).

Abstract

   The Presence Information Document Format (PIDF) specifies the



Lonnfors, et al.         Expires August 25, 2005                [Page 1]


Internet-Draft                Partial PIDF                 February 2005


   baseline XML based format for describing presence information.  One
   of the characteristic of the PIDF is that 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 information that is
   transported over the network.  This document introduces a new MIME
   type which enables transporting of only changed parts of the PIDF
   based presence information.

Table of Contents

   1.   Introduction . . . . . . . . . . . . . . . . . . . . . . . .   3
   2.   Conventions  . . . . . . . . . . . . . . . . . . . . . . . .   3
   3.   Structure of partial PIDF documents  . . . . . . . . . . . .   3
     3.1  'version' attribute  . . . . . . . . . . . . . . . . . . .   4
     3.2  'entity' attribute . . . . . . . . . . . . . . . . . . . .   4
   4.   Usage of 'application/pidf-diff+xml' . . . . . . . . . . . .   4
   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  . . . . . . . . . . . . . .  12
   9.   Security Considerations  . . . . . . . . . . . . . . . . . .  12
   10.  Acknowledgments  . . . . . . . . . . . . . . . . . . . . . .  12
   11.  References . . . . . . . . . . . . . . . . . . . . . . . . .  12
     11.1   Normative references . . . . . . . . . . . . . . . . . .  12
     11.2   Informative references . . . . . . . . . . . . . . . . .  13
        Authors' Addresses . . . . . . . . . . . . . . . . . . . . .  13
        Intellectual Property and Copyright Statements . . . . . . .  15


















Lonnfors, et al.         Expires August 25, 2005                [Page 2]


Internet-Draft                Partial PIDF                 February 2005


1.  Introduction

   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 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 information that is
   transported over the network.

   This document introduces a new MIME-Type 'application/pidf-diff+xml'
   which enables transporting of only changed parts of the PIDF based
   presence information.

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
      local copy of the full presence document.  A document with MIME
      type 'application/pidf-diff+xml' represents a partial presence
      document.


3.  Structure of partial PIDF documents

   The mechanism for implementing the partial PIDF requires defining a
   new MIME type which is named as 'application/pidf-diff+xml'.

   The data format includes XML Schema types described in [7].  The
   patch operation elements: <add>, <remove> or <replace> defined
   according to the patch operation XML Schema types will allow changing
   the fragments of the local copy of the full presence document.  As
   the names imply the <add> element is used to add new content and
   <replace> element is used to update the existing content whereas



Lonnfors, et al.         Expires August 25, 2005                [Page 3]


Internet-Draft                Partial PIDF                 February 2005


   <remove> element is used to remove some content.

   In addition to patch operation elements the data format consists of
   some additional parameters.  The 'version' attribute within the
   document root node contains a sequence number that is progressively
   incremented by one between subsequent document updates i.e.  a more
   recent document update has a higher 'version' value than the previous
   one.  This is used to ensure consistent updates as the recipient of
   the document can use the 'version' attribute value to properly order
   received 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.  Presence documents MUST be based on
   XML 1.0 and MUST be encoded using UTF-8.  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 contains a
   'version' attribute in the <pidf-diff> element.

3.2  'entity' attribute

   Every presence document compliant with this specification MAY contain
   an 'entity' attribute in the <pidf-diff> root document node.  It's
   content MUST then be the same than that of the full presence
   document.

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
   queued changes it may be desirable to send the full presence document
   content instead.  How this will be done in practice is beyond the
   scope of this document.  This document format allows to use the root
   node selector i.e.  "presence" which actually contains the full
   content of the presence document as there can only be one root node
   in any valid XML document.  It should be noted that it is still
   impossible to create a new document with this format, i.e.  first the
   full presence document has to be sent with the PIDF format and then
   only patches are sent with this pidf-diff format.




Lonnfors, et al.         Expires August 25, 2005                [Page 4]


Internet-Draft                Partial PIDF                 February 2005


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 [10].

   o  register a new XML Schema URN per [6].


5.1   Content-type registration for 'application/pidf-diff+xml'

      MIME media type name: application

      MIME subtype name: pidf-diff+xml

      Mandatory 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 [8], 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
      [[[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"



Lonnfors, et al.         Expires August 25, 2005                [Page 5]


Internet-Draft                Partial PIDF                 February 2005


      Personal and email address for further information: Mikko
      Lonnfors, mikko.lonnfors@nokia.com

      Intended usage: LIMITED USE

      Author/Change controller:
      This specification is a work item of the IETF SIMPLE working
      group, with mailing list address <simple@ietf.org>.


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>
      Mikko Lonnfors, <mikko.lonnfors@nokia.com>

   XML:

     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





Lonnfors, et al.         Expires August 25, 2005                [Page 6]


Internet-Draft                Partial PIDF                 February 2005


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>
      Mikko Lonnfors, <mikko.lonnfors@nokia.com>


6.  Examples

   An 'application/pidf+xml' document that contains full state
   information:

   <?xml version="1.0" encoding="UTF-8"?>
   <presence xmlns="urn:ietf:params:xml:ns:pidf"
          xmlns:pe="urn:ietf:params:xml:ns:pidf:rpid-person"
          xmlns:de="urn:ietf:params:xml:ns:pidf:rpid-device"
          xmlns:rs="urn:ietf:params:xml:ns:pidf:status:rpid-status"
          xmlns:rt="urn:ietf:params:xml:ns:pidf:rpid-tuple"
          xmlns:ci="urn:ietf:params:xml:ns:pidf:cipid"
          xmlns:sc="urn:ietf:params:xml:ns:pidf:servcaps"
          xmlns:dc="urn:ietf:params:xml:ns:pidf:status:devcaps"
          entity="pres:someone@example.com">

    <tuple id="sg89ae">
     <status>
      <basic>open</basic>
      <rs:relationship>assistant</rs:relationship>
     </status>
     <sc:servcaps>
      <sc:audio>true</sc:audio>
      <sc:video>false</sc:video>
      <sc:message>true</sc:message>
     </sc: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>




Lonnfors, et al.         Expires August 25, 2005                [Page 7]


Internet-Draft                Partial PIDF                 February 2005


    <tuple id="r1230d">
     <status>
      <basic>closed</basic>
      <rs:activity>meeting</rs:activity>
     </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>

    <pe:person>
     <pe:status>
      <rs:activities>
       <rs:on-the-phone/>
       <rs:busy/>
      </rs:activities>
     </pe:status>
    </pe:person>

    <de:device id="urn:esn:600b40c7">
     <de:status>
      <dc:devcaps>
       <dc:mobility>
        <dc:supported>
         <dc:mobile/>
        </dc:supported>
       </dc:mobility>
      </dc:devcaps>
     </de:status>
    </de:device>

    <note xml:lang="en">Full state presence document</note>
   </presence>


    An 'application/pidf-diff+xml' document that contains four example
   updates:













Lonnfors, et al.         Expires August 25, 2005                [Page 8]


Internet-Draft                Partial PIDF                 February 2005


   <?xml version="1.0" encoding="UTF-8"?>
   <pidf-diff xmlns="urn:ietf:params:xml:ns:pidf-diff"
              xmlns:p="urn:ietf:params:xml:ns:pidf"
              xmlns:pe="urn:ietf:params:xml:ns:pidf:person"
              xmlns:rs="urn:ietf:params:xml:ns:pidf:status:rpid-status"
           entity="pres:someone@example.com"
           version="1">

    <add parent="p:presence" sel="*[4]">
     <p:tuple id="ert4773">
      <p:status>
       <p:basic>open</p:basic>
      </p:status>
      <p:contact priority="0.4">mailto:pep@example.com</p:contact>
      <p:note xml:lang="en">This is a new tuple inserted
           between the last tuple and person element</p:note>
     </p:tuple>
    </add>

    <replace sel="*/p:tuple[@id='r1230d']/p:status/p:basic/text()"
     >open</replace>

    <remove sel="*/pe:person/pe:status/rs:activities/rs:busy"/>

    <replace sel="*/p:tuple[@id='cg231jcr']/p:contact/@priority"
     >0.7</replace>

   </pidf-diff>


    An updated local composition presence document after applying the
   patches:

   <?xml version="1.0" encoding="UTF-8"?>
   <presence xmlns="urn:ietf:params:xml:ns:pidf"
          xmlns:pe="urn:ietf:params:xml:ns:pidf:person"
          xmlns:de="urn:ietf:params:xml:ns:pidf:device"
          xmlns:rs="urn:ietf:params:xml:ns:pidf:status:rpid-status"
          xmlns:rt="urn:ietf:params:xml:ns:pidf:rpid-tuple"
          xmlns:ci="urn:ietf:params:xml:ns:pidf:cipid"
          xmlns:sc="urn:ietf:params:xml:ns:pidf:servcaps"
          xmlns:dc="urn:ietf:params:xml:ns:pidf:status:devcaps"
          entity="pres:someone@example.com">

    <tuple id="sg89ae">
     <status>
      <basic>open</basic>
      <rs:relationship>assistant</rs:relationship>



Lonnfors, et al.         Expires August 25, 2005                [Page 9]


Internet-Draft                Partial PIDF                 February 2005


     </status>
     <sc:servcaps>
      <sc:audio>true</sc:audio>
      <sc:video>false</sc:video>
      <sc:message>true</sc:message>
     </sc: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 person element</note>
    </tuple>

    <pe:person>
     <pe:status>
      <rs:activities>
       <rs:on-the-phone/>
      </rs:activities>
     </pe:status>
    </pe:person>

    <de:device id="urn:esn:600b40c7">
     <de:status>
      <dc:devcaps>
       <dc:mobility>
        <dc:supported>



Lonnfors, et al.         Expires August 25, 2005               [Page 10]


Internet-Draft                Partial PIDF                 February 2005


         <dc:mobile/>
        </dc:supported>
       </dc:mobility>
      </dc:devcaps>
     </de:status>
    </de:device>

    <note xml:lang="en">Full state presence document</note>
   </presence>



7.  XML Schema

   The XML schema for the 'application/pidf-diff+xml' data format.  The
   included schema "xcap-patch-opers.xsd" is defined in [7].


   <?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:xsd="http://www.w3.org/2001/XMLSchema"
       elementFormDefault="qualified"
       attributeFormDefault="unqualified">

    <xsd:include schemaLocation="xcap-patch-ops.xsd"/>

    <xsd:element name="pidf-diff">

     <xsd:complexType>
      <xsd:sequence minOccurs="0" maxOccurs="unbounded">
       <xsd:choice>
        <xsd:element name="add" type="tns:addType"/>
        <xsd:element name="replace" type="tns:replaceType"/>
        <xsd:element name="remove" type="tns:removeType"/>
       </xsd:choice>
      </xsd:sequence>

      <xsd:attribute name="entity" type="xsd:anyURI" use="optional"/>
      <xsd:attribute name="version" type="xsd:unsignedInt"
                     use="required"/>

     </xsd:complexType>

    </xsd:element>
   </xsd:schema>




Lonnfors, et al.         Expires August 25, 2005               [Page 11]


Internet-Draft                Partial PIDF                 February 2005


8.  Interoperability Considerations

   Systems compliant with CPP [9] 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.

   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

   Presence information may contain highly sensitive information about
   the presentities.  The protocol used to distribute it SHOULD ensure
   privacy, message integrity and authentication.  Furthermore, the
   protocol should provide access controls which restrict who can see
   who else's presence information.  All security considerations
   identified for PIDF [3] apply unchanged for this document.

10.  Acknowledgments

   The authors would like to thank Jose Costa-Requena, Jyrki Aarnos,
   Jonathan Rosenberg, Dean Willis, Miguel Garcia, Kriztian Kiss, Ben
   Cambell, Robert Sparks, Anders kristenssen and Aki Niemi for their
   valuable comments and contributions.

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]  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.




Lonnfors, et al.         Expires August 25, 2005               [Page 12]


Internet-Draft                Partial PIDF                 February 2005


   [6]  Mealling, M., "The IETF XML Registry", RFC 3688, BCP 81, January
        2004.

   [7]  Urpalainen, J., "The Extensible Markup Language (XML)
        Configuration Access Protocol (XCAP) Patch Operations",
         draft-urpalainen-simple-xcap-patch-ops-00, February 2005.

11.2  Informative references

   [8]   Murata, M., "XML media types", RFC 3023, January 2001.

   [9]   Peterson, J., "Common Profile for Presence (CPP)", RFC 3859.

   [10]  Freed, N., Klensin, J. and J. Postel, "Multipurpose Internet
         Mail Extensions (MIME) Part Four: Registration Procedures",
         RFC 2048, November 1996.

   [11]  Rosenberg, J., "A Data Model for Presence",
          draft-ietf-simple-presence-data-model-01 (work in progress),
         October 2004.

   [12]  Schulzrinne, H., Gurbani, V., Kyzivat, P. and J. Rosenberg,
         "RPID: Rich Presence Extensions to the Presence Information
         Data Format (PIDF)",  draft-ietf-simple-rpid-04 (work in
         progress), October 2004.

   [13]  Schulzrinne, H., "CIPID: Contact Information in Presence
         Information Data Format",  draft-ietf-simple-cipid-03 (work in
         progress), July 2004.


Authors' Addresses

   Mikko Lonnfors
   Nokia
   Itamerenkatu 11-13 00180
   Helsinki
   Finland

   Phone: +358 71 8008000
   Email: mikko.lonnfors@nokia.com










Lonnfors, et al.         Expires August 25, 2005               [Page 13]


Internet-Draft                Partial PIDF                 February 2005


   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 August 25, 2005               [Page 14]


Internet-Draft                Partial PIDF                 February 2005


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 (2005).  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 August 25, 2005               [Page 15]