diff options
Diffstat (limited to 'doc/rfc/rfc4479.txt')
-rw-r--r-- | doc/rfc/rfc4479.txt | 1963 |
1 files changed, 1963 insertions, 0 deletions
diff --git a/doc/rfc/rfc4479.txt b/doc/rfc/rfc4479.txt new file mode 100644 index 0000000..0c427c7 --- /dev/null +++ b/doc/rfc/rfc4479.txt @@ -0,0 +1,1963 @@ + + + + + + +Network Working Group J. Rosenberg +Request for Comments: 4479 Cisco Systems +Category: Standards Track July 2006 + + + A Data Model for Presence + +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 + + This document defines the underlying presence data model used by + Session Initiation Protocol (SIP) for Instant Messaging and Presence + Leveraging Extensions (SIMPLE) presence agents. The data model + provides guidance on how to map various communications systems into + presence documents in a consistent fashion. + + + + + + + + + + + + + + + + + + + + + + + + + +Rosenberg Standards Track [Page 1] + +RFC 4479 Presence Data Model July 2006 + + +Table of Contents + + 1. Introduction ....................................................2 + 2. Definitions .....................................................3 + 3. The Model .......................................................5 + 3.1. Presentity URI .............................................6 + 3.2. Person .....................................................7 + 3.3. Service ....................................................8 + 3.3.1. Characteristics .....................................9 + 3.3.2. Reach Information ..................................10 + 3.3.3. Relative Information ...............................13 + 3.3.4. Status .............................................13 + 3.4. Device ....................................................15 + 3.5. Modeling Ambiguity ........................................17 + 3.6. The Meaning of Nothing ....................................19 + 3.7. Status vs. Characteristics ................................19 + 3.8. Presence Document Properties ..............................20 + 4. Motivation for the Model .......................................21 + 5. Encoding .......................................................22 + 5.1. XML Schemas ...............................................24 + 5.1.1. Common Schema ......................................24 + 5.1.2. Data Model .........................................25 + 6. Extending the Presence Model ...................................26 + 7. Example Presence Document ......................................26 + 7.1. Basic IM Client ...........................................27 + 8. Security Considerations ........................................29 + 9. Internationalization Considerations ............................29 + 10. IANA Considerations ...........................................30 + 10.1. URN Sub-Namespace Registration ...........................30 + 10.2. XML Schema Registrations .................................31 + 10.2.1. Common Schema .....................................31 + 10.2.2. Data Model ........................................31 + 11. Acknowledgements ..............................................31 + 12. References ....................................................32 + 12.1. Normative References .....................................32 + 12.2. Informative References ...................................32 + +1. Introduction + + Presence conveys the ability and willingness of a user to communicate + across a set of devices. RFC 2778 [10] defines a model and + terminology for describing systems that provide presence information. + RFC 3863 [1] defines an XML [5] [6] [7] document format for + representing presence information. In these specifications, presence + information is modeled as a series of tuples, each of which contains + a status, communications address, and other markup. However, neither + specification gives guidance on exactly what a tuple is meant to + model, or how to map real-world communications systems (and in + + + +Rosenberg Standards Track [Page 2] + +RFC 4479 Presence Data Model July 2006 + + + particular, those built around the Session Initiation Protocol (SIP) + [11]) into a presence document. + + In particular, several important concepts are not clearly modeled or + well delineated by RFCs 2778 and 3863. These are the following: + + Service: A communications service, such as instant messaging (IM) or + telephony, is a system for interaction between users that provides + certain modalities or content. + + Device: A communications device is a physical component that a user + interacts with in order to make or receive communications. + Examples are a phone, PDA, or PC. + + Person: A person is the end user, and for the purposes of presence, + is characterized by states, such as "busy" or "sad", that impact + their ability and willingness to communicate. + + This specification defines these concepts more fully by means of a + presence data model, and concretely defines how to take real-world + systems and map them into presence documents using that model. This + data model is defined in terms of an extension to RFC 3863. + +2. Definitions + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in RFC 2119 [9]. + + This document makes use of many additional terms beyond those defined + in RFC 2778 and RFC 3863. These new terms are as follows: + + Device: A device models the physical environment in which services + manifest themselves for users. Devices have characteristics that + are useful in allowing a user to make a choice about which + communications service to use. + + Service: A service models a form of communication that can be used + to interact with the user. + + Person: A person models the human user and their states that are + relevant to presence systems. + + Occurrence: A single description of a particular service, a + particular device, or a person. There may be multiple occurrences + for a particular service or device, or multiple person occurrences + in a Presence Information Data Format (PIDF) document, in cases + where there is ambiguity that is best resolved by the watcher. + + + +Rosenberg Standards Track [Page 3] + +RFC 4479 Presence Data Model July 2006 + + + Presentity: A presentity combines devices, services, and person + information for a complete picture of a user's presence status on + the network. + + Presentity URI: A URI that acts as a unique identifier for a + presentity and provides a handle for obtaining presence + information about that presentity. + + Data Component: One of the device, service, or person parts of a + presence document. + + Status: Presence information about a service, person, or device that + typically changes over time, in contrast to characteristics, which + are generally static. + + Characteristics: Presence information about a service, person, or + device that is usually fixed over time, and descriptive in nature. + Characteristics are useful in providing context that identifies + the service or device as different from another service or device. + + Attribute: A status or characteristic. It represents a single piece + of presence information. + + Presence Attribute: A synonym for attribute. + + Composition: The act of combining a set of presence and event data + about a presentity into a coherent picture of the state of that + presentity. + + + + + + + + + + + + + + + + + + + + + + + +Rosenberg Standards Track [Page 4] + +RFC 4479 Presence Data Model July 2006 + + +3. The Model + + +----------------------------------------------------------------+ + | | + | +----------------+ | + | +----------------+| | + | | || | + | | || | + | | Person || | + | | ||\ | + | /| |+ \ | + | / +----------------+ \ | + | / | \ | + | / | \ | + | / | \ | + | / | \ | + | / | \ | + | V V V | + | +----------------+ +----------------+ +----------------+ | + | +----------------+| +----------------+| +----------------+| | + | | || | || | || | + | | || | || | || | + | | Service || | Service || | Service || | + | | || | || | || | + | | |+ | |+ | |+ | + | +----------------+ +----------------+ +----------------+ | + | \ / \ | + | \ / \ | + | \ / \ | + | V V V | + | +----------------+ +----------------+ | + | +----------------+| +----------------+| | + | | || | || | + | | || | || | + | | Device || | Device || | + | | || | || | + | | |+ | |+ | + | +----------------+ +----------------+ | + | | + | | + | Presentity (URI) | + +----------------------------------------------------------------+ + + Figure 1 + + + + + + + +Rosenberg Standards Track [Page 5] + +RFC 4479 Presence Data Model July 2006 + + + The data model for presence is shown in Figure 1. The model seeks to + describe the presentity, identified by a presentity URI. There are + three components in the model: the person, the service, and the + device. These three data components contain information (called + attributes) that provide a description of some aspect of the service, + person, or device. It is central to this model that each attribute + is affiliated with the service, person, or device because they + describe that service, presentity, or device. This is in contrast to + a model whereby the attributes are associated with the service, + presentity, or device because they were reported by that service, + presentity, or device. As an example, if a cell phone reports that a + user is in a meeting, this would be done by including an attribute as + part of the person information, indicating a status of + "in-a-meeting". The presence information may also include + information on the cell phone as a device. However, even though it + is the device that is reporting that the user is in a meeting, "in a + meeting" is a fact that describes the human user, not their physical + device. Consequently, this attribute is placed in the person + component of the document. + +3.1. Presentity URI + + The identifier for the presentity is a URI. For each unique + presentity in the network, there is one or more presentity URIs. A + presentity may have multiple URIs because they are identified by both + a URI from the Presence (pres) scheme [12] and a protocol-specific + URI, such as a SIP URI [11] or an Extensible Messaging and Presence + Protocol Internationalized Resource Identifier (XMPP IRI) [13]. Or, + it can be because a user has several aliases in a domain, all of + which are equivalent identifiers for the presentity. + + When a document is constructed, the presentity URI is ideally set to + the identifier used to request the document in the first place. For + example, if a document was requested through a SIP SUBSCRIBE request, + the presentity URI would match the Request URI of the SUBSCRIBE + request. This follows the principle of least surprise, since the + entity requesting the document may not be aware of the other + identifiers for the presentity. + + Irrespective of the scheme from which the URI is taken, the + presentity URI is independent of any of the services or devices that + the presentity possesses. However, the URI is not just a name - it + represents a resource that can be subscribed to, in order to find out + the status of the user. When the URI is a SIP URI, it will often be + the Address of Record for the user, to which SIP calls can be + directed. This equivalence is not mandated by this specification, + but is a recommended configuration for easing the burden of + remembering and storing identifiers for users. + + + +Rosenberg Standards Track [Page 6] + +RFC 4479 Presence Data Model July 2006 + + +3.2. Person + + The person data component models information about the user whom the + presence data is trying to describe. This information consists of + characteristics of the user, and their status. + + Characteristics of a person are the static information about a user + that does not change under normal circumstances. Such information + might include physical characteristics, such as age and height. + Another example of a person characteristic is an alias. An alias is + a URI that identities the same user, but with a different presentity + URI. For example, a presentity "sip:bob@example.com" might have a + presence document with a person component that indicates an alias of + "sip:robert@example.com" and "sip:r.smith@example.com". + + Status information about a presentity represents the dynamic + information about a user. This typically consists of things the + *user* is doing, places the *user* is at, feelings the *user* has, + and so on. Examples of typical person status are "in a meeting", "on + the phone", "out to lunch", "happy", and "writing Internet Drafts". + The line between static status information and dynamic status + information is fuzzy, and it is not important that a line be drawn. + The model does not differentiate in a syntactically or semantically + meaningful way between these two types of attributes. + + In the model, there can be only one person component per presentity. + In other words, the person component models a single human being, and + includes characteristics and statuses that are related to the + communication states for a single human being. Of course, the system + has no way to verify that the human described by the person component + is actually a single human being, as opposed to a group of users, or + even a dog for that matter. As the saying goes, "on the Internet, no + one knows you are a dog", and the same is true here. The person + component is a facade for a single person; anything that can be made + to look like a single person can be modeled with that facade. + + As an example, consider the task of using a presence document to + describe a customer support help desk. The person component can be + considered to be "busy" if none of the support staff are available, + and "at lunch" if the help desk department has a group lunch + together. The watcher that receives the document will consider the + help desk to be a single person; nothing in the document (except + perhaps the note element, should its value be "help desk" or + something similar) conveys information that would indicate that the + person in question is actually a help desk. + + + + + + +Rosenberg Standards Track [Page 7] + +RFC 4479 Presence Data Model July 2006 + + + However, there can be multiple occurrences of the person component. + This happens in cases where the state of the person component is + ambiguous, as discussed in Section 3.5. + +3.3. Service + + Each presentity has access to a number of services. Each of these + represents a point of reachability for communications that can be + used to interact with the user. Examples of services are telephony + (that is, traditional circuit-based telephone service), push-to-talk, + instant messaging, Short Message Service (SMS), and Multimedia + Message Service (MMS). + + It is difficult to give a precise definition for service. One + reasonable approach is to model each software or hardware agent in + the system as a service. If a user starts a softphone application on + their PC, then that represents a service. If a user has a videophone + device, then that represents another service. This is effectively a + physical view of services. This definition, however, starts to fall + apart when a service is spread across multiple software agents or + devices. For example, a SIP URI representing an address-of-record + can be routed to a softphone or a videophone, or both. In that case, + one might attempt instead to define a service based on its address on + the network. This definition also falls apart when modeling devices + or applications that receive calls and dispatch them to different + "helpers" based on potentially complex logic. For example, a + cellular telephone might house multiple SIP applications, each of + which can "register" different handlers based on the method or even + body type of the request. Each of those applications or handlers can + rightfully be considered a service, but it doesn't have an address on + the network distinct from the others. + + Because of this inherent difficulty in precisely defining a service, + the data model doesn't try to constrain what can be considered a + service. Rather, anything can be considered a service so long as it + exhibits a set of key properties defined by this model. In + particular, each service is associated with characteristics that + identify the nature and capabilities of that service, with reach + information that indicates how to connect to the service, with status + information representing the state of that service, and relative + information that describes the ways in which that service relates to + others associated with the presentity. + + As a consequence, in this model, services are not explicitly + enumerated. There is no central registry where one finds identifiers + for each service. Consequently, each service does not have a single + "service" attribute with values such as "ptt" or "telephony". That + doesn't mean that these consolidated monikers aren't useful; indeed, + + + +Rosenberg Standards Track [Page 8] + +RFC 4479 Presence Data Model July 2006 + + + they represent an essential summary of what the service is. Such + summarization is useful in creating icons that allow a user to choose + one service over another. A watcher is free to create such + summarization information from any of the information associated with + a service. The reach information often provides valuable information + for creating such a summarization. Oftentimes, the scheme of the URI + is synonymous with the view of what a service is. An "sms" URI [14] + clearly indicates SMS, for example. For some URIs, there may be many + services available, for example, SIP or tel [15], in which case the + scheme is less meaningful as a way of creating a summary. The reach + information could also indicate that certain application software has + to be invoked (such as a videogame), in which case that aspect of the + reach information would be useful for generating an iconic + representation of the game. + +3.3.1. Characteristics + + Each service is adorned with characteristics that describe the nature + and capabilities of the service that will be experienced when a + watcher invokes that URI. The nature of a service is a set of + properties that are relatively static across communication sessions + established to that service. The nature of a service tends to be + descriptive. Examples of the nature of a service are that it + represents an interactive voice response or voicemail server, that it + is an automaton, or that it is a telephony service used for the + purposes of work. Capabilities, on the other hand, represent + properties that might be exhibited, and whether they are exhibited + depends on negotiation and other dynamic functions that take place + during session establishment. Examples of such capabilities are the + type of media that might be used, the directionality of + communications that are permitted, the SIP extensions supported, and + so on. Capabilities can be very complex; for example, RFC 2533 [16] + describes a model for representing capabilities through N-ary boolean + functions. It is difficult to differentiate a capability with one + modality (e.g., this service only does voice) from a characteristic + that represents the nature of a service. However, it is not + important to do so. + + Characteristics are important when multiple services are indicated. + That is because the purpose of listing multiple services in a + presence document is to give the watcher a *choice*. That is, the + presentity is explicitly offering the watcher an opportunity to + contact them using a multiplicity of different services. To help the + watcher make a decision, the presence document includes + characteristics of each service that help differentiate the services + from each other and give the watcher the context in which to make a + choice. + + + + +Rosenberg Standards Track [Page 9] + +RFC 4479 Presence Data Model July 2006 + + + Because their purpose is primarily to facilitate choice, capabilities + do not impose a requirement on the way in which a user reaches that + service. For example, if a presence document includes two services, + and one supports audio only while the other supports only video, this + does not mean that, when contacting the first service, a user has to + offer only an audio stream, or when contacting the second service, a + user has to offer only a video stream. A user can use local policy + at its discretion in determining what capabilities or communications + modalities are offered when they choose to connect with a service. + It is not necessary for a watcher to add SIP caller preferences [2] + to request routing of the request to a service with the + characteristics described in the presence document. + + If, in order to reach a service, the user agent must generate a + request that exhibits a particular capability or contains a specific + header, then this is indicated separately in the reach information, + described below. + + One important characteristic of each service is the list of devices + on which that service executes. Each device is identified uniquely + by a device ID. As such, the service characteristics can include a + list of device IDs. A presence document might also contain + information on each device, but this is a separate part of the + document. Indeed, the information on each device might not even be + present in the document. In that case, the device IDs listed for + each service are nothing more than correlation identifiers, useful + for determining when two services run on the same device. The + benefit of this model is that information on the devices can be + filtered out of a presence document, yet the service information, + which includes the device IDs, remains useful and meaningful. + + It is perfectly valid for a presence document to contain just a + single service. This is permitted even if the presentity actually + has multiple services at their disposal. The lack of multiple + services in the document merely means that the presentity is not + offering a choice to the watcher. In such a case, the service + characteristics are less important, but may be helpful in allowing a + watcher to decide if they wish to communicate at all. + +3.3.2. Reach Information + + The reach information for a service provides the instructions for the + recipient of a document on how to correctly contact that service. + + When a service is accessible over a communications network, reach + information includes a URI that can be "hit" to access the service. + This URI is called the service URI. However, some services are not + + + + +Rosenberg Standards Track [Page 10] + +RFC 4479 Presence Data Model July 2006 + + + accessible over a communications network (such as in-person + communications or a written letter), and as such, may not utilize a + URI. + + Even for services reachable over a communications network, the URI + alone may not be sufficient. For example, two applications may be + running within a cellular telephone, both of which are reachable + through the user's SIP Address of Record. However, one application + is launched when the INVITE request contains a body of a particular + type, and the other is launched for other body types. As another + example, a service may provide complex application logic that + operates correctly only when contacted from matching application + software. In such a case, even though the communications between + instances utilizes a standard protocol (such as SIP), the user + experience will not be correct unless the applications are matched. + + When the URI is not sufficient, additional attributes of the service + can be present that define the instructions on how the service is to + be reached. These attributes must be understood for the service to + be utilized. If a watcher receives a presence document containing + reach information it does not understand, it should discard the + service information. + + The reach information is an important part of the service. When the + watcher makes a decision about which service of the presentity they + wish to access, the watcher utilizes the reach information for that + service. For this reason, each service has to have a unique set of + reach information. If this was not the case, the user would have no + way to choose between the services. This means that the reach + information represents a unique identifier for the service. However, + a presence document can contain multiple occurrences of a particular + service, each of which contains the same reach information, but + differs in its occurrence identifier. Multiple occurrences of a + service exist in a document when the state of the service is + ambiguous, as discussed in Section 3.5. + + Because the reach information serves as an identifier for a service, + it also serves as a way to figure out whether a communications + capability should be represented as one service or more. Something + cannot be a service unless there is a way to reach it separately from + another service. As an example, consider a softphone application + that is capable of audio and video. It is not possible to describe + this softphone as two services - one capable of just audio, and one + capable of just video. That's because there is no way to reach the + video-only service; for example, sending a SIP INVITE with just a + video stream doesn't suffice, since one can always add the audio + stream later and it will work. Video and audio, in this case, + represent capabilities for a single service. + + + +Rosenberg Standards Track [Page 11] + +RFC 4479 Presence Data Model July 2006 + + + The reach information represents a weak form of contract; the + presentity tells the watcher that, if the watcher utilizes the reach + information included in the presence document, the watcher might be + connected to a service described by the characteristics included in + the presence document. It is important to stress that this is not a + guarantee in any way. It cannot be a guarantee for two reasons. + First, the service in the document might actually be modelling a + number of actual services used by the user, and it may not be + possible to connect the watcher to a service with all of the + characteristics described in the presence document. Second, the + preferences of the presentity always take precedence. The caller + might ask to be connected to the video service, but it is permissible + to connect them to a different service if that is the wish of the + presentity. + + This loose contract also provides some guidance on the type of URI + that is most ideally suited for the service URI. A URN [3] can be + used as the service URI. However, since a URN could be resolved to + potentially any number of different URIs, the characteristics, + status, and relative information need to be sensible for all of the + URIs that can be resolved from the URN. As the URN becomes + increasingly "vague" in terms of the service it identifies, the + number of presence attributes that can be included decreases + correspondingly. + + The tel URI [11] shares similar properties with a URN, and the same + considerations apply. If, for example, the telephone number exists + in ENUM [18] and multiple ENUM services are defined, including voice + and messaging, it is likely that very little characteristic + information can be included in that service. If, however, a tel URI + has only a single ENUM service defined, and it refers to a telephone + service on the Public Switched Telephone Network (PSTN), more can be + said about its characteristics, status, and relative priority. + + It is important to point out that there can be a many-to-one mapping + of reach information to a service. That is, a particular service can + potentially be reachable through an infinite number of reach + information sets. This is true even if the reach information is just + the service URI; it is permissible for multiple service URIs to reach + the same service. Within any particular document, for a particular + service, there will be a single service URI. However, it is allowed + and even valuable to provide different service URIs to different + watchers, or to change the service URIs provided to a particular + watcher over time. Doing so affords many benefits, in fact. It can + allow the recipient of a communications attempt to determine the + context for that attempt - that the attempt was made as a result of + + + + + +Rosenberg Standards Track [Page 12] + +RFC 4479 Presence Data Model July 2006 + + + trying to reach a particular service in a particular presence + document. This can be used as a technique for preventing + communications spam, for example [19]. + + It is also possible for a presence document to contain a service that + has no reach information at all. In such a case, the presentity is + indicating that the service exists, but is electing not to offer the + watcher the opportunity to connect to it. One such example would be + to let a watcher know that a user has a telephony service, and that + they are busy, but in order to avoid receipt of a call, no reach + information is provided. + + In an ideal system, the URI alone would represent sufficient reach + information for each service. A URI is supposed to provide + sufficient context for reaching the resource associated with the URI, + and thus in theory there is no need for additional context. However, + sometimes, additional information is needed. Since the reach + information has to be understood in order for the service to be + utilized, reach information beyond the URI should be defined and used + sparingly. Extensions to PIDF that define attributes that are reach + information should clearly call those attributes out as such. + +3.3.3. Relative Information + + Each service is also associated with a priority, which represents the + preference that the user has for usage of one service over another. + This does not mean that, when a watcher wishes to communicate with + the presentity, that they should always use the service with the + highest priority. If that were the case, there would be no point in + including multiple services in the presence document. Rather, the + priority says, "If you, the watcher, cannot decide which of these to + use, or if it is not important to you, this is the order in which I + would like you to contact me. However, I am giving you a choice." + The priorities are relative to each other, and have no meaning as + absolute numbers. If there are two services, and they have + priorities of 1 and .5, respectively, this is identical to giving + them priorities of .2 and .1, respectively. + +3.3.4. Status + + Each service also has a status. Status represents generally dynamic + information about the availability of communications using that + service. This is in contrast to characteristics, which describe + fairly static properties of the various services. The simplest form + of status is the basic status, which is a binary indicator of + availability for communications using that service. It can have + values of either "closed" or "open". "Closed" means that + communication to the service will, in all likelihood, fail, will not + + + +Rosenberg Standards Track [Page 13] + +RFC 4479 Presence Data Model July 2006 + + + reach the intended party, or will not result in communications as + described by the characteristics of the service. As an example, if a + call is forwarded to voicemail if the user is busy or unavailable, + the service is marked as "closed". Similarly, a presentity may + include a hotel phone number as a service URI. After checkout, the + phone number will still ring, but reach the chambermaid or the next + guest. Thus, it would be declared "closed" by that presentity. As + another example, if a user has a SIP URI as their service URI that + points to a SIP softphone application, and the PC shuts down, calls + to that SIP URI will return a 480 response code. This service would + also be declared "closed". "Open" implies the opposite - that + communications to this service will likely succeed and reach the + desired target. + + It is also possible to have status information that is dependent on + the characteristics of the communications session that eventually + gets set up. For example, a status attribute can be defined that + indicates that a softphone service is available if instant messaging + is used, but unavailable if audio is used. + + Other status information might indicate more details on why the + service is available or unavailable. For example, a telephony + service might have additional status to indicate that the user is on + the phone, or that the user is handling 3 calls for that service. + + Services inherently have a lot of dynamic state associated with them. + For example, consider a wireless telephony service (i.e., a cell + phone). There are many dynamic statuses of this service - whether or + not the phone is registered, whether or not it is roaming, which + provider it has roamed into, its signal strength, how many calls it + has, what the state of those calls are, how long the user has been in + a call, and so on. As another example, consider an IM service. The + statuses in this service include whether the user is registered, how + long they have been registered, whether they have an IM conversation + in progress, how many IM conversations are in progress, whether the + user is typing, to whom they are typing, and so on. + + However, not all of this dynamic state is appropriate to include + within a service data component of a presence document. Information + is included only when it has a bearing on helping the watcher decide + whether to initiate communications with that service, or helping the + watcher decide when to initiate it, if not now. As an example, + whether a cell phone has strong signal strength or just good signal + strength does not pass the litmus test. Knowing this is not likely + to have an impact on a decision to use this service. + + + + + + +Rosenberg Standards Track [Page 14] + +RFC 4479 Presence Data Model July 2006 + + +3.4. Device + + Devices model the physical operating environment in which services + execute. Examples of devices include cell phones, PCs, laptops, + PDAs, consumer telephones, enterprise PBX extensions, and operator + dispatch consoles. + + The mapping of services to devices are many to many. A single + service can execute in multiple devices. Consider a SIP telephony + service. Two SIP phones can register against a single Address of + Record for this service. As a result, the SIP service is associated + with two devices. Similarly, a single device can support a + multiplicity of services. A cell phone can support a SIP telephony + service, an SMS service, and an MMS service. Similarly, a PC can + support a SIP telephony service and a SIP videophone service. + + Furthermore, a single device can support no services. In such a + case, the device has no useful presence information by itself. + However, when composed with other documents that describe this same + device in relation to a service, a richer presence document can be + created. For example, consider a Radio Frequency ID (RFID) tag as a + device. This device does not execute any services. However, as a + device, it has properties, such as location, and it may have network + connectivity with which it can report its status and characteristics. + If a video telephone were to report that it was running a video + service, and one of its properties was that it was tagged with that + RFID, a compositor could combine the two documents together, and use + the location of the RFID to say something about the location of the + video telephony device. + + Devices are identified with a device ID. A device ID is a URI that + is a globally and temporally unique identifier for the device. In + particular, a device ID is a URN. The URN has to be unique across + all other devices for a particular presentity. However, it is also + highly desirable that it be persistent across time, globally unique, + and computable in a fashion so that different systems are likely to + refer to the device using the same ID. With these properties, + differing sources of presence information based on device status can + be combined. The last of these three properties - readily computable + - is particularly useful. It allows for a compositor to combine + disparate sources of information about a device, all linked by a + common device ID that each source has independently used to identify + the device in question. + + Unfortunately, due to the variety of different devices in existence, + it is difficult for a single URN scheme to be used that will have + these properties. It is anticipated that multiple schemes will be + defined, with different ones appropriate for different types of + + + +Rosenberg Standards Track [Page 15] + +RFC 4479 Presence Data Model July 2006 + + + devices. For cellular telephones, the Electronic Serial Number + (ESN), for example, is a good identifier. For IP devices, the MAC + address is another good one. The MAC address has the property of + being readily computable, but lacks persistence across time (it would + change if the interface card on a device were to change). In any + case, neither of these are associated with URN schemes at this time. + In the interim, the Universally Unique IDentifier (UUID) URN [20] can + be used. For devices with a MAC address, version 1 UUIDs are + RECOMMENDED, as they result in a time-based identifier that makes use + of the MAC address. For devices without a MAC, a version 4 UUID is + RECOMMENDED. This is a purely random identifier, providing + uniqueness. The UUID for a device would typically be chosen at the + time of fabrication in the device, and then persisted in the device + within flash or some other kind of non-volatile storage. The UUID + URN has the properties of being globally and temporally unique, but + because of its random component, it is not at all readily computable, + and therefore useless as a correlation ID with other presence sources + on a network. It is anticipated that future specifications will be + developed that provide additional, superior device IDs. + + Though each device is identified by a unique device ID, there can be + multiple occurrences of a particular device represented in a + document. Each one will share the same device ID, but differ in its + occurrence identifier. Multiple occurrences of a device exist in a + document when the state of the device is ambiguous, as discussed in + Section 3.5. + + Though this document does not mandate a particular implementation + approach, the device ID is most useful when all of the services on + the device have a way to obtain the device ID and get the same value + for it. This would argue for its placement as an operating system + feature. Operating system developers interested in implementing this + specification are encouraged to provide APIs that allow applications + to obtain the device ID. Absent such APIs, applications that report + presence information about their devices will have to generate their + own device IDs. This leads to the possibility that the applications + may choose different device IDs, using different algorithms or data. + In the worst case, these may mean that two services that run on the + same device, do not appear to. + + Like services and person data components, device data components have + generally static characteristics and generally dynamic status. + Characteristics of a device include its physical dimensions and + capabilities - the size of its display, the speed of its CPU, and the + amount of memory. Status information includes dynamic information + about the device. This includes whether the device is powered on or + off, the amount of battery power that remains in the device, the + geographic location of the device, and so on. + + + +Rosenberg Standards Track [Page 16] + +RFC 4479 Presence Data Model July 2006 + + + The characteristics and status information reported about a device + are for the purposes of choice - to allow the user to choose the + service based on knowledge of what the device is. The device + characteristics and status cannot, in any reliable way, be used to + extract information about the nature of the service that will be + received on the device. For example, if the device characteristics + include the speed of the CPU, and the speed is sufficient to support + high-quality video compression, this cannot be interpreted to mean + that video quality would be good for a video service on that device. + Other constraints on the system may reduce the amount of CPU + available to that service. If there is a desire to indicate that + higher-quality video is available on a device, that should be done by + including service characteristics that say just that. The speed of + the CPU might be useful in helping the watcher differentiate between + a device that is a PC and one that is a cell phone, in the case where + the watcher wishes to call the user's cell phone. + + Similarly, if there is dynamic device status (such as whether the + device is on or off), and this state impacts the state of the + service, this is represented by adjusting the state of the service. + Unless a consumer of a presence document has a priori knowledge + indicating otherwise (note that presence agents often do), the state + of a device has no bearing on the state of the service. + + Just like services, there is no enumeration of device types - PCs, + PDAs, cell phones, etc. Rather, the device is defined by its + characteristics, from which a watcher can extrapolate whether the + device is a PDA, cell phone, or what have you. + + It is important to point out that the device is a *model* of the + underlying physical systems in which services execute. There is + nothing that says that this model cannot be used to talk about + systems where services run in virtualized systems, rather than real + ones. For example, if a PC is executing a virtual machine and + running services within that virtual machine, it is perfectly + acceptable to use this model to talk about that PC as being composed + of two separate devices. + +3.5. Modeling Ambiguity + + Ambiguity is a reality of a presence system, and it is explicitly + modeled by this specification. Ambiguity exists when there are + multiple pieces of information about a person, a particular device, + or a particular service. This ambiguity naturally arises when + multiple elements publish information about the person, a particular + service, or a particular device. In some cases, a compositor can + resolve the ambiguity in an automated way, and combine the data about + the person, device, or service into a single coherent description. + + + +Rosenberg Standards Track [Page 17] + +RFC 4479 Presence Data Model July 2006 + + + In other cases, it cannot, perhaps because the compositor lacks the + ability to do so. + + However, in many cases, the resolution of this ambiguity is best left + to the watcher that consumes the document. This consumer could be an + application with more information than the compositor, and thus be + able to do a better job of resolving the ambiguity. Or, it may be + presented to the human user, and the human can often resolve the + ambiguity. Unsurprisingly, a human can often do this far better than + an automaton can. + + To model ambiguity, the model allows each service, each device, or + the person component to contain multiple occurrences. Each + occurrence has a unique identifier, called the occurrence identifier. + This identifier is unique across all other occurrence identifiers for + any service, device, or person. That is, its uniqueness is scoped + within all of the services, devices, and person elements for a + particular presentity. The identifier ideally persists over time, + since it serves as a valuable handle for setting composition and + authorization policies. Even if there is a single occurrence for a + particular device, service, or person, the occurrence has an + occurrence identifier. + + The occurrence identifier is not to be confused with the instance ID + defined in the SIP Outbound specification [27]. A user agent + instance is best modeled as a service, and indeed, a Globally + Routable User Agent URI (GRUU) [22], which is derived from the + instance ID, represents a reasonable choice for a service URI. + However, if the status of such a UA instance could not be determined + unambiguously, a presence document could include two or more + occurrences of the service modeling that UA instance. In such a + case, each occurrence has a unique occurrence ID, but they share the + same service URI, and consequently, the same instance ID. + + When multiple occurrences exist in a document, it is important that + some of the attributes of the device, service, or person help the + recipient resolve the ambiguity. For humans, the note field and + timestamp serve as valuable tools. For an automaton, nearly any + attribute of the device, service, or person can be used to resolve + the ambiguity. The timestamp in particular is very useful for both + humans and automatons. As described in RFC 3863 [1], the timestamp + provides the time of most recent change for the tuple. This + specification defines the timestamp for person and device components + as well, with the same meaning. Absent other information, the + person, device, or service that most recently changed can be used as + the more reliable source of data. However, such a resolution + algorithm is not normatively required in any way. + + + + +Rosenberg Standards Track [Page 18] + +RFC 4479 Presence Data Model July 2006 + + +3.6. The Meaning of Nothing + + It is clear that the existence of a presence attribute in a document + tells something to a watcher about the value of that presence + attribute. However, what does the absence of a presence attribute + say? This data model follows the lead of RFC 3840 [17], which is + used to define capabilities for SIP user agents. In that + specification, if a capability declaration omits a particular feature + tag, it means that the agent is making no definitive statement either + way about whether this feature tag is supported. The same is true + here - the absence of a presence attribute from a document means that + a watcher cannot make any definitive statement about the value for + that presence attribute. It may be absent because it is being + withheld from the watcher, or it may be absent because that attribute + is not supported by the presentity's software. Neither conclusion + can be drawn. + + Because the absence of a presence attribute conveys no information + whatsoever, presence documents achieve their maximum value when they + have as many presence attributes as possible. As such, it is + RECOMMENDED that a presence document contain as many presence + attributes as the presentity is willing to and able to provide to a + watcher. + +3.7. Status vs. Characteristics + + The data model tries to separate status information from + characteristics, generally by defining status as a relatively dynamic + state about a person, device, or service, whereas a characteristic is + relatively static. However, this distinction is often artificial. + Almost any characteristic can change over time, and sometimes + characteristics can change relatively quickly. As a result, the + distinction between status and characteristics is merely a conceptual + one to facilitate understanding about the different types of presence + information. Nothing in a presence document indicates whether an + element is a characteristic vs. a status, and when a presence + attribute is defined, there is no need for it to be declared one or + the other. Presence documents allow any presence attribute, whether + it can be thought of as a characteristic or a status, to change at + any time. + + Unfortunately, the original PIDF specification did have a separate + part of a tuple for describing status, and the basic status was + defined to exist within that part of the tuple. This specification + does not change PIDF; however, all future presence attributes MUST be + defined as children of the <tuple> and not the <status> element. + Furthermore, the schemas defined here do not contain a <status> + element for either the <person> or <device> elements. + + + +Rosenberg Standards Track [Page 19] + +RFC 4479 Presence Data Model July 2006 + + +3.8. Presence Document Properties + + The overall presence document has several important properties that + are essential to this model. + + First, a presence document has a concrete meaning independent of how + it is transported or where it is found. The semantics of a document + are the same regardless of whether a document is published by a + presence user agent to its compositor, or whether it is distributed + from a presence agent to watchers. There are no required or implied + behaviors for a recipient of a document. Rather, there are well- + defined semantics for the document itself, and a recipient of a + document can take whatever actions it chooses based on those + semantics. + + A corollary of this property is that presence systems are infinitely + composeable. A presence user agent can publish a document to its + presence server. That presence server can compose it with other + documents, and place the result in a notification to a watcher. That + watcher can actually be another presence agent, combining that + document with others it has received, and placing those results in + yet another notify. + + Yet another corollary of this property is that implied behaviors in + reaction to the document cannot ever be assumed. For example, just + because a service indicates that it supports audio does not mean that + a watcher will offer audio in a communications attempt to that + service. If doing so is necessary to reach the service, this must be + indicated explicitly through reach information. + + It is also important to understand that the role of the presence + document is to help a user make a choice amongst a set of services, + and furthermore, to know ahead of time with as much certainty as + possible whether a communications attempt will succeed or fail. + Success is a combination of many factors: Does the watcher understand + the service URI? Can it act on all of the reach information? Does + it support a subset of the capabilities associated with the service? + Does the person information indicate that the user is likely to + answer? All of these checks should ideally be made before attempting + communication. + + Because the presence document serves to help a user to choose and + establish communications, the presentity URI - as the index to that + document - represents a form of "one-number" communications. + Starting from this URI, all of the communications modalities and + their URIs for a user can be discovered, and then used to invoke a + particular communications service. Rather than having to give out a + separate phone number, email address, IM address, Voice over Internet + + + +Rosenberg Standards Track [Page 20] + +RFC 4479 Presence Data Model July 2006 + + + Protocol (VoIP) address, and so on, the presentity URI can be + provided, and all of the others can be learned from there. + +4. Motivation for the Model + + Presence is defined in [21] as the ability, willingness, or desire to + communicate across a set of devices. The core of this definition is + the conveyance of information about the ability, willingness, or + desire for communications. Thus, the presence data model needs to be + tailored around conveying information that achieves this goal. + + The person data component is targeted at conveying willingness and + desire for communications. It is used to represent information about + the users themselves that affects willingness and desire to + communicate. Whether I am in a meeting, whether I am on the phone - + each of these says something about my willingness to communicate, and + thus makes sense for inclusion in a presence document. + + The service component of the data model aims to convey information on + the ability to communicate. The ability to communicate is defined by + the services by which a user is reachable. Thus, including them is + essential. + + How do devices fit in? For many users, devices represent the ability + to communicate, not services. Frequently, users make statements + like, "Call me on my cell phone" or "I'm at my desk". These are + statements for preference for communications using a specific device, + as opposed to a service. Thus, it is our expectation that users will + want to represent devices as part of the presence data. + + Furthermore, the concept of device adds the ability to correlate + services together. The device models the underlying platform that + supports all of the services on the phone. Its state therefore + impacts all services. For example, if a presence server can + determine that a cell phone is off, this says something about the + services that run on that device: they are all not available. Thus, + if services include indicators about the devices on which they run, + device state can be obtained and thus used to compute the state of + the services on the device. + + The data model tries hard to separate device, service, and person as + different concepts. Part of this differentiation is that many + attributes will be applicable to some of these, but not others. For + example, geographic location is a meaningful attribute of the person + (the user has a location) and of a device (the device has a + location), but not of a service (services don't inherently have + locations). Based on this, geographic location information should + only appear as part of device or person, never service. Furthermore, + + + +Rosenberg Standards Track [Page 21] + +RFC 4479 Presence Data Model July 2006 + + + it is possible and meaningful for location information to be conveyed + for both device and person, and for these locations to be different. + The fact that the presence system might try to determine the location + of the person by extrapolation from the location of one of the + devices is irrelevant from a data modeling perspective. Person + location and device location are not the same thing. + + [25] defines the <geopriv> XML element for conveying location + information, and indicates that it is carried as a child of the + <tuple> element in a PIDF document. [25] was developed prior to this + specification, and unfortunately, its recommendation to include + location objects underneath <tuple> runs contrary to the + recommendations here. As such, implementations based on this + specification SHOULD include <geopriv> location objects as part of + person and/or device components of the document, but SHOULD be + prepared to receive presence documents with that object as a child to + <tuple>. A <geopriv> location object would be included in a person + component when the document means to convey the location of the user, + and within a device component when it means to convey the location of + the device. + +5. Encoding + + Information represented according to the data model described above + needs to be mapped into an on-the-wire format for transport and + storage. The Presence Information Data Format [1] is used for + representation of presence data. + + The <presence> element contains the presence information for the + presentity. The "entity" attribute of this element contains the + presentity URI. + + The existing <tuple> element in the PIDF document is used to + represent the service. This is consistent with the original intent + of RFC 2778 and RFC 3863, and achieves backward compatibility with + implementations developed before the model described here was + complete. The <contact> element in the <tuple> element is used to + encode the service URI. New presence attributes, whether they + represent dynamic status or static characteristics, appear directly + as children of <tuple>. However, attributes defined prior to + publication of this specification that were defined as children of + <status> (such as <basic>) remain as children of <status>, for + purposes of backward compatibility. Consequently, a presence + attribute describing a service could appear as either a child of + <status> or directly as a child of <tuple>, but never both. + + + + + + +Rosenberg Standards Track [Page 22] + +RFC 4479 Presence Data Model July 2006 + + + The "id" attribute of the <tuple> element conveys the service + occurrence. Each <tuple> element with the same <contact> URI + represents a different occurrence of a particular service. + + This specification introduces the <person> element, which can appear + as a child to <presence>. There can be zero or more occurrences of + this element per document. Each one has a mandatory "id" attribute, + which contains the occurrence identifier for the person. Each + <person> element contains any number of elements that indicate status + and characteristic information. This is followed by zero or more + optional <note> elements and an optional <timestamp>. Multiple + <note> elements would appear to convey the same note in multiple + languages. + + RFC 3863 defines a <note> element, zero or more of which can be + present as a child to <presence>. As it relates to the model defined + here, these note elements, if present in a document, apply to all + person occurrences that do not have any of their own <note> elements. + In other words, if a <person> element has one or more <note> + elements, those are the <note> elements for that <person> element. + If a <person> element does not have any of its own <note> elements, + the <note> elements that are the direct children of <presence> are + the <note> elements for that <person>. If there are no <note> + elements underneath the <person> element, and there are no <note> + elements that are a direct child of <presence>, then that <person> + element has no <note> elements. + + This specification also introduces the <device> element, which can + appear as a child to <presence>. There can be zero or more + occurrences of this element per document. The <device> element can + appear either before or after the <person> element; there are no + constraints on order. Each <device> element has a mandatory "id" + attribute, which contains the occurrence identifier for the device. + Like <person>, <device> contains any number of elements that indicate + status and characteristic information. This is followed by + <deviceID>, which contains the URN for the device ID for this device. + This is followed by zero or more optional <note> elements and an + optional <timestamp>. Multiple <note> elements would appear to + convey the same note in multiple languages. + + A client that receives a PIDF document containing the <device> and + <person> elements, but does not understand them (because it doesn't + implement this specification), will ignore them. Furthermore, since + the semantics of service as defined here are aligned with the meaning + of a tuple as defined in RFC 2778 and RFC 3863, documents + incorporating the concepts defined in this model are compliant with + older implementations. + + + + +Rosenberg Standards Track [Page 23] + +RFC 4479 Presence Data Model July 2006 + + + It's important to note that the mapping of the presence data model + into a PIDF document is merely an exercise in syntax. + + Presence documents created according to this model MUST be valid, + with the following exception. A compositor is permitted to create a + presence document that it cannot fully validate but that otherwise + validates when processed according to the lax processing rules + allowed by the schema of the compositor. However, it is not expected + that entities receiving these documents would perform schema + validation; rather, they would merely access the information from the + document in the places they were expecting it to be. Implementations + SHOULD be prepared to receive documents that are not valid, and + extract whatever information from them that they can parse. + +5.1. XML Schemas + + The XML schemas are broken into a common schema, called common- + schema.xsd, which contains common type definitions, and the rest of + the data model, data-model.xsd. + +5.1.1. Common Schema + + <?xml version="1.0" encoding="UTF-8"?> + <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" + elementFormDefault="qualified" attributeFormDefault="unqualified"> + <xs:import namespace="http://www.w3.org/XML/1998/namespace" + schemaLocation="http://www.w3.org/2001/xml.xsd"/> + <xs:simpleType name="Timestamp_t"> + <xs:annotation> + <xs:documentation>Timestamp type</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:dateTime"/> + </xs:simpleType> + <xs:simpleType name="deviceID_t"> + <xs:annotation> + <xs:documentation>Device ID, a URN</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:anyURI"/> + </xs:simpleType> + <xs:complexType name="Note_t"> + <xs:annotation> + <xs:documentation>Note type</xs:documentation> + </xs:annotation> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute ref="xml:lang"/> + </xs:extension> + </xs:simpleContent> + + + +Rosenberg Standards Track [Page 24] + +RFC 4479 Presence Data Model July 2006 + + + </xs:complexType> + <xs:attributeGroup name="fromUntil"> + <xs:attribute name="from" type="xs:dateTime"/> + <xs:attribute name="until" type="xs:dateTime"/> + </xs:attributeGroup> + <xs:complexType name="empty"/> + </xs:schema> + +5.1.2. Data Model + + <?xml version="1.0" encoding="UTF-8"?> + <xs:schema targetNamespace="urn:ietf:params:xml:ns:pidf:data-model" + xmlns:xs="http://www.w3.org/2001/XMLSchema" + xmlns="urn:ietf:params:xml:ns:pidf:data-model" + elementFormDefault="qualified" attributeFormDefault="unqualified"> + <xs:include schemaLocation="common-schema.xsd"/> + <xs:element name="deviceID" type="deviceID_t"> + <xs:annotation> + <xs:documentation>Device ID, a URN</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="device"> + <xs:annotation> + <xs:documentation>Contains information about the + device</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:any namespace="##other" processContents="lax" + minOccurs="0" maxOccurs="unbounded"/> + <xs:element ref="deviceID"/> + <xs:element name="note" type="Note_t" minOccurs="0" + maxOccurs="unbounded"/> + <xs:element name="timestamp" type="Timestamp_t" minOccurs="0"/> + </xs:sequence> + <xs:attribute name="id" type="xs:ID" use="required"/> + </xs:complexType> + </xs:element> + <xs:element name="person"> + <xs:annotation> + <xs:documentation>Contains information about the human + user</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:any namespace="##other" processContents="lax" + minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + + + +Rosenberg Standards Track [Page 25] + +RFC 4479 Presence Data Model July 2006 + + + <xs:documentation>Characteristic and status + information</xs:documentation> + </xs:annotation> + </xs:any> + <xs:element name="note" type="Note_t" minOccurs="0" + maxOccurs="unbounded"/> + <xs:element name="timestamp" type="Timestamp_t" minOccurs="0"/> + </xs:sequence> + <xs:attribute name="id" type="xs:ID" use="required"/> + </xs:complexType> + </xs:element> + </xs:schema> + +6. Extending the Presence Model + + When new presence attributes are added, any such extension has to + consider the following questions: + + 1. Is the new attribute applicable to person, service, or device + data components? If it is applicable to more than one, what is + its meaning in each context? An extension should strive to have + each attribute concisely defined for each area of applicability, + so that a source can clearly determine to which type of data + component it should be applied. + + 2. Does it belong in a new namespace, or an existing one? + Generally, new presence attributes defined within the same + specification SHOULD belong to the same namespace. Presence + attributes defined in separate specifications, but produced in a + coordinated way by a centralized administration, MAY be placed in + the same namespace. Doing so, however, requires the centralized + administration to ensure that there are no collisions of element + names across those specifications. Furthermore, if a new + extension has elements meant to be placed as the children of + another element at a point of extensibility defined by <any + namespace="##other">, the new extension MUST use a different + namespace than that of its parent elements. + + 3. Does the extension itself require extensibility? If so, points + of extension MUST be defined in the schema, and SHOULD be done + using the <any namespace="##other"> construct. + +7. Example Presence Document + + In this section, we give an example of a physical system, present the + model of that system using the concepts described here, and then show + the resulting presence document. The example makes use of presence + attributes defined in [23] and [24]. + + + +Rosenberg Standards Track [Page 26] + +RFC 4479 Presence Data Model July 2006 + + +7.1. Basic IM Client + + In this scenario, a provider is offering a service very similar to + the instant messaging services offered today by the public providers + like AOL, Yahoo!, and MSN. In this service, each user has a "screen + name" that identifies the user in the service. A single client, + generally a PC application, connects to the service at a time. When + the client connects, this fact is made available to other watchers of + that user in the system. The user has the ability to set a textual + note that describes what they are doing, and this note is seen by the + watchers in the system. The user can set one of several status + messages (busy, in a meeting, etc.), which are pre-defined notes that + the system understands. If a user does not type anything on their + keyboard for some time, the user's status changes to idle on the + screens of the various watchers of the system. The system also + indicates the amount of time that the user has been idle. + + Whenever a user is connected to the system, they are capable of + receiving instant messages. A user can set their status to + "invisible", which means that they appear as offline to other users. + However, if an IM is sent to them, it will still be delivered. + + This system is modeled by representing each presentity in the system + with three data components: a person component, a service component, + and a device component. The person component describes the state of + the user, including the note and the pre-defined status messages. + These represent information about the human user, so they are + included in the person component. The service tuple represents the + IM service. No characteristics are included. The service URI + published by the client is set to the client's Address of Record + (AOR). The device component is used to model the PC. The device + component includes the <user-input> element [23], since the idleness + refers to usage of the device, not the service. + + The document published by the client would look like this: + + <?xml version="1.0" encoding="UTF-8"?> + <presence xmlns="urn:ietf:params:xml:ns:pidf" + xmlns:dm="urn:ietf:params:xml:ns:pidf:data-model" + xmlns:rp="urn:ietf:params:xml:ns:pidf:rpid" + xmlns:caps="urn:ietf:params:xml:ns:pidf:caps" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <tuple id="sg89ae"> + <status> + <basic>open</basic> + </status> + <dm:deviceID>mac:8asd7d7d70</dm:deviceID> + <caps:servcaps> + + + +Rosenberg Standards Track [Page 27] + +RFC 4479 Presence Data Model July 2006 + + + <caps:extensions> + <caps:supported> + <caps:pref/> + </caps:supported> + </caps:extensions> + <caps:methods> + <caps:supported> + <caps:MESSAGE/> + <caps:OPTIONS/> + </caps:supported> + </caps:methods> + </caps:servcaps> + <contact>sip:someone@example.com</contact> + </tuple> + <dm:person id="p1"> + <rp:activities> + <rp:on-the-phone/> + </rp:activities> + </dm:person> + <dm:device id="pc122"> + <rp:user-input>idle</rp:user-input> + <dm:deviceID>mac:8asd7d7d70</dm:deviceID> + </dm:device> + </presence> + + It is worth commenting further on the value of having a separate + device element just to convey the idle indicator. The idle + indication of interest is really an indicator that the device is + idle. By making that explicit, the idle indicator can be used by the + presence server to affect the state of other services running on the + same device. For example, let's say there is a VoIP application + running on the same device. This application reports its presence + state separately, but indicates that it runs on the same device. + Since it has indicated that it runs on the same device, the presence + server can use the status of the service to further refine the idle + indicator of the device. Specifically, if the user is using its VoIP + application, the presence server knows that the device is in use, + even if the IM application reports that the device is idle. + Typically, idleness is determined by lack of keyboard or mouse input, + neither of which might be used during a VoIP call. + + In a more simplistic case, reporting the idle indicator as part of + the device status allows that indicator to be used for other services + on the same device. Taking, again, the example of the VoIP + application on the same device, if the VoIP application does not + report any device information, and a watcher is not provided + information on the IM service, the presence document sent to the + watcher can include the device status. Because of the usage of the + + + +Rosenberg Standards Track [Page 28] + +RFC 4479 Presence Data Model July 2006 + + + device IDs and the device information, the presence server can + correlate the device status as reported by the IM application with + the VoIP service, and use them together. + +8. Security Considerations + + The presence information described by the model defined here is very + sensitive. It is for this reason that privacy filtering plays a key + role in the processing of presence data. Privacy filtering is the + act of applying permissions to a presence document for the purposes + of removing information that a watcher is not authorized to see. In + more general terms, privacy filtering is a form of authorization. + Privacy filtering can also ensure that a watcher cannot see any + presence data for a presentity, and indeed, it can even ensure that + the presentity doesn't know that it is being blocked. The SIP + presence specifications (RFC 3856 [21]) require that such + authorization processing be performed before divulging presence + information. Specifications have also been defined for conveying + authorization policies to presence servers [26]. + + Integrity of presence information is also critical. Modification of + presence data by an attacker can lead to diverted communications, for + example. Protocols used to transport presence data, such as SIP for + presence, are used to provide necessary integrity functions. + +9. Internationalization Considerations + + This specification defines a data model that contains mostly tokens + that are meant for consumption by programs, not directly by humans. + Programs are expected to translate those tokens into language- + appropriate text strings according to the preferences of the watcher. + + However, this specification defines a <note> element that can contain + free text. This element and other ones defined by extensions to PIDF + that can contain free text SHOULD be labeled with the 'xml:lang' + attribute to indicate their language and script. This specification + allows multiple occurrences of the <note> element so that the + presentity can convey the note in multiple scripts and languages. If + no 'xml:lang' attribute is provided, the default value is "i-default" + [8]. + + Since the presence model is represented in XML, it provides native + support for encoding information using the Unicode character set and + its more compact representations including UTF-8. Conformant XML + processors recognize both UTF-8 and UTF-16. Though XML includes + provisions to identify and use other character encodings through use + of an "encoding" attribute in an <?xml?> declaration, use of UTF-8 is + + + + +Rosenberg Standards Track [Page 29] + +RFC 4479 Presence Data Model July 2006 + + + RECOMMENDED in environments where parser encoding support + incompatibility exists. + +10. IANA Considerations + + There are several IANA considerations associated with this + specification. + +10.1. URN Sub-Namespace Registration + + This section registers a new XML namespace, per the guidelines in [4] + + URI: The URI for this namespace is + urn:ietf:params:xml:ns:pidf:data-model. + + Registrant Contact: IETF, SIMPLE working group, (simple@ietf.org), + Jonathan Rosenberg (jdrosen@jdrosen.net). + + 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>A Data Model for Presence</title> + </head> + <body> + <h1>Namespace for Presence Data Model</h1> + <h2>urn:ietf:params:xml:ns:pidf:data-model</h2> + <p>See <a href="http://www.rfc-editor.org/rfc/rfc4479.txt"> + RFC4479</a>.</p> + </body> + </html> + END + + + + + + + + + + + + + +Rosenberg Standards Track [Page 30] + +RFC 4479 Presence Data Model July 2006 + + +10.2. XML Schema Registrations + + This section registers two XML schemas per the procedures in [4]. + +10.2.1. Common Schema + + URI: urn:ietf:params:xml:schema:pidf:common-schema. + + Registrant Contact: IETF, SIMPLE working group, (simple@ietf.org), + Jonathan Rosenberg (jdrosen@jdrosen.net). + + The XML for this schema can be found as the sole content of + Section 5.1.1. + +10.2.2. Data Model + + URI: urn:ietf:params:xml:schema:pidf:data-model. + + Registrant Contact: IETF, SIMPLE working group, (simple@ietf.org), + Jonathan Rosenberg (jdrosen@jdrosen.net). + + The XML for this schema can be found as the sole content of + Section 5.1.2. + +11. Acknowledgements + + This document is really a distillation of many ideas discussed over a + long period of time. These ideas were contributed by many + participants in the SIMPLE working group. Aki Niemi, Paul Kyzivat, + Cullen Jennings, Ben Campbell, Robert Sparks, Dean Willis, Adam + Roach, Hisham Khartabil, and Jon Peterson contributed many of the + concepts that are described here. Example presence documents came + from Robert Sparks' example presence documents specification, and + ideas on defining services through characteristics, rather than + enumeration, came from Adam Roach's service features document. A + special thanks to Steve Donovan for discussions on the topics + discussed here, and to Elwyn Davies for his final review of the + document. + + + + + + + + + + + + + +Rosenberg Standards Track [Page 31] + +RFC 4479 Presence Data Model July 2006 + + +12. References + +12.1. Normative References + + [1] Sugano, H., Fujimoto, S., Klyne, G., Bateman, A., Carr, W., and + J. Peterson, "Presence Information Data Format (PIDF)", RFC + 3863, August 2004. + + [2] Rosenberg, J., Schulzrinne, H., and P. Kyzivat, "Caller + Preferences for the Session Initiation Protocol (SIP)", RFC + 3841, August 2004. + + [3] Crocker, D. and P. Overell, "Augmented BNF for Syntax + Specifications: ABNF", RFC 4234, October 2005. + + [4] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, January + 2004. + + [5] Yergeau, F., Paoli, J., Sperberg-McQueen, C., Bray, T., and E. + Maler, "Extensible Markup Language (XML) 1.0 (Third Edition)", + W3C REC REC-xml-20040204, February 2004. + + [6] Maloney, M., Beech, D., Thompson, H., and N. Mendelsohn, "XML + Schema Part 1: Structures Second Edition", W3C REC REC- + xmlschema-1-20041028, October 2004. + + [7] Malhotra, A. and P. Biron, "XML Schema Part 2: Datatypes Second + Edition", W3C REC REC-xmlschema-2-20041028, October 2004. + + [8] Alvestrand, H., "IETF Policy on Character Sets and Languages", + BCP 18, RFC 2277, January 1998. + + [9] Bradner, S., "Key words for use in RFCs to Indicate Requirement + Levels", BCP 14, RFC 2119, March 1997. + +12.2. Informative References + + [10] Day, M., Rosenberg, J., and H. Sugano, "A Model for Presence + and Instant Messaging", RFC 2778, February 2000. + + [11] 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. + + [12] Peterson, J., "Common Profile for Presence (CPP)", RFC 3859, + August 2004. + + + + + +Rosenberg Standards Track [Page 32] + +RFC 4479 Presence Data Model July 2006 + + + [13] Saint-Andre, P., "Internationalized Resource Identifiers (IRIs) + and Uniform Resource Identifiers (URIs) for the Extensible + Messaging and Presence Protocol (XMPP)", Work in Progress, + December 2005. + + [14] Wilde, E. and A. Vaha-Sipila, "URI Scheme for GSM Short Message + Service", Work in Progress, February 2006. + + [15] Schulzrinne, H., "The tel URI for Telephone Numbers", RFC 3966, + December 2004. + + [16] Klyne, G., "A Syntax for Describing Media Feature Sets", RFC + 2533, March 1999. + + [17] Rosenberg, J., Schulzrinne, H., and P. Kyzivat, "Indicating + User Agent Capabilities in the Session Initiation Protocol + (SIP)", RFC 3840, August 2004. + + [18] Faltstrom, P. and M. Mealling, "The E.164 to Uniform Resource + Identifiers (URI) Dynamic Delegation Discovery System (DDDS) + Application (ENUM)", RFC 3761, April 2004. + + [19] Rosenberg, J., "The Session Initiation Protocol (SIP) and + Spam", Work in Progress, March 2006. + + [20] Leach, P., Mealling, M., and R. Salz, "A Universally Unique + IDentifier (UUID) URN Namespace", RFC 4122, July 2005. + + [21] Rosenberg, J., "A Presence Event Package for the Session + Initiation Protocol (SIP)", RFC 3856, August 2004. + + [22] Rosenberg, J., "Obtaining and Using Globally Routable User + Agent (UA) URIs (GRUU) in the Session Initiation Protocol + (SIP)", Work in Progress, October 2005. + + [23] Schulzrinne, H., "RPID: Rich Presence Extensions to the + Presence Information Data Format (PIDF)", RFC 4480, July 2006. + + [24] Lonnfors, M. and K. Kiss, "Session Initiation Protocol (SIP) + User Agent Capability Extension to Presence Information Data + Format (PIDF)", Work in Progress, January 2006. + + [25] Peterson, J., "A Presence-based GEOPRIV Location Object + Format", RFC 4119, December 2005. + + [26] Rosenberg, J., "Presence Authorization Rules", Work in + Progress, March 2006. + + + + +Rosenberg Standards Track [Page 33] + +RFC 4479 Presence Data Model July 2006 + + + [27] Jennings C. and R. Mahy, "Managing Client Initiated Connections + in the Session Initiation Protocol (SIP)", Work in Progress, + March 2006. + +Author's Address + + Jonathan Rosenberg + Cisco Systems + 600 Lanidex Plaza + Parsippany, NJ 07054 + US + + Phone: +1 973 952-5000 + EMail: jdrosen@cisco.com + URI: http://www.jdrosen.net + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Rosenberg Standards Track [Page 34] + +RFC 4479 Presence Data Model July 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). + + + + + + + +Rosenberg Standards Track [Page 35] + |