summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc4479.txt
blob: 0c427c7403bc58a47d75b7ebe5a094030d28f6e7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L
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]
^L