draft-ietf-vcarddav-vcardrev-02.txt   draft-ietf-vcarddav-vcardrev-03.txt 
Network Working Group S. Perreault Network Working Group S. Perreault
Internet-Draft Viagenie Internet-Draft Viagenie
Obsoletes: 2425, 2426, 4770 P. Resnick Obsoletes: 2425, 2426, 4770 P. Resnick
(if approved) QUALCOMM Incorporated (if approved) QUALCOMM Incorporated
Updates: 2739 (if approved) June 25, 2008 Updates: 2739 (if approved) July 14, 2008
Intended status: Standards Track Intended status: Standards Track
Expires: December 27, 2008 Expires: January 15, 2009
vCard Format Specification vCard Format Specification
draft-ietf-vcarddav-vcardrev-02 draft-ietf-vcarddav-vcardrev-03
Status of This Memo Status of This Memo
By submitting this Internet-Draft, each author represents that any By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79. aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
skipping to change at page 1, line 37 skipping to change at page 1, line 37
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on December 27, 2008. This Internet-Draft will expire on January 15, 2009.
Copyright Notice
Copyright (C) The IETF Trust (2008).
Abstract Abstract
This document defines the vCard data format for representing and This document defines the vCard data format for representing and
exchanging a variety of information about an individual (e.g., exchanging a variety of information about an individual (e.g.,
formatted and structured name and delivery addresses, email address, formatted and structured name and delivery addresses, email address,
multiple telephone numbers, photograph, logo, audio clips, etc.). multiple telephone numbers, photograph, logo, audio clips, etc.).
Table of Contents Table of Contents
skipping to change at page 2, line 33 skipping to change at page 2, line 28
6.1. LANGUAGE . . . . . . . . . . . . . . . . . . . . . . . . . 16 6.1. LANGUAGE . . . . . . . . . . . . . . . . . . . . . . . . . 16
6.2. ENCODING . . . . . . . . . . . . . . . . . . . . . . . . . 16 6.2. ENCODING . . . . . . . . . . . . . . . . . . . . . . . . . 16
6.3. VALUE . . . . . . . . . . . . . . . . . . . . . . . . . . 17 6.3. VALUE . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.4. PID . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 6.4. PID . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.5. TYPE . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 6.5. TYPE . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
7. vCard Properties . . . . . . . . . . . . . . . . . . . . . . . 18 7. vCard Properties . . . . . . . . . . . . . . . . . . . . . . . 18
7.1. General Properties . . . . . . . . . . . . . . . . . . . . 18 7.1. General Properties . . . . . . . . . . . . . . . . . . . . 18
7.1.1. BEGIN . . . . . . . . . . . . . . . . . . . . . . . . 18 7.1.1. BEGIN . . . . . . . . . . . . . . . . . . . . . . . . 18
7.1.2. END . . . . . . . . . . . . . . . . . . . . . . . . . 18 7.1.2. END . . . . . . . . . . . . . . . . . . . . . . . . . 18
7.1.3. SOURCE . . . . . . . . . . . . . . . . . . . . . . . . 19 7.1.3. SOURCE . . . . . . . . . . . . . . . . . . . . . . . . 19
7.1.4. NAME . . . . . . . . . . . . . . . . . . . . . . . . . 19 7.1.4. NAME . . . . . . . . . . . . . . . . . . . . . . . . . 20
7.1.5. KIND . . . . . . . . . . . . . . . . . . . . . . . . . 20 7.1.5. KIND . . . . . . . . . . . . . . . . . . . . . . . . . 20
7.2. Identification Properties . . . . . . . . . . . . . . . . 21 7.2. Identification Properties . . . . . . . . . . . . . . . . 21
7.2.1. FN . . . . . . . . . . . . . . . . . . . . . . . . . . 21 7.2.1. FN . . . . . . . . . . . . . . . . . . . . . . . . . . 21
7.2.2. N . . . . . . . . . . . . . . . . . . . . . . . . . . 21 7.2.2. N . . . . . . . . . . . . . . . . . . . . . . . . . . 21
7.2.3. NICKNAME . . . . . . . . . . . . . . . . . . . . . . . 22 7.2.3. NICKNAME . . . . . . . . . . . . . . . . . . . . . . . 22
7.2.4. PHOTO . . . . . . . . . . . . . . . . . . . . . . . . 22 7.2.4. PHOTO . . . . . . . . . . . . . . . . . . . . . . . . 22
7.2.5. BDAY . . . . . . . . . . . . . . . . . . . . . . . . . 23 7.2.5. BDAY . . . . . . . . . . . . . . . . . . . . . . . . . 23
7.2.6. DDAY . . . . . . . . . . . . . . . . . . . . . . . . . 23 7.2.6. DDAY . . . . . . . . . . . . . . . . . . . . . . . . . 23
7.2.7. BIRTH . . . . . . . . . . . . . . . . . . . . . . . . 23 7.2.7. BIRTH . . . . . . . . . . . . . . . . . . . . . . . . 23
7.2.8. DEATH . . . . . . . . . . . . . . . . . . . . . . . . 23 7.2.8. DEATH . . . . . . . . . . . . . . . . . . . . . . . . 23
skipping to change at page 3, line 30 skipping to change at page 3, line 26
7.7.5. SORT-STRING . . . . . . . . . . . . . . . . . . . . . 34 7.7.5. SORT-STRING . . . . . . . . . . . . . . . . . . . . . 34
7.7.6. SOUND . . . . . . . . . . . . . . . . . . . . . . . . 35 7.7.6. SOUND . . . . . . . . . . . . . . . . . . . . . . . . 35
7.7.7. UID . . . . . . . . . . . . . . . . . . . . . . . . . 36 7.7.7. UID . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.7.8. URL . . . . . . . . . . . . . . . . . . . . . . . . . 36 7.7.8. URL . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.7.9. VERSION . . . . . . . . . . . . . . . . . . . . . . . 36 7.7.9. VERSION . . . . . . . . . . . . . . . . . . . . . . . 36
7.8. Security Properties . . . . . . . . . . . . . . . . . . . 37 7.8. Security Properties . . . . . . . . . . . . . . . . . . . 37
7.8.1. CLASS . . . . . . . . . . . . . . . . . . . . . . . . 37 7.8.1. CLASS . . . . . . . . . . . . . . . . . . . . . . . . 37
7.8.2. KEY . . . . . . . . . . . . . . . . . . . . . . . . . 37 7.8.2. KEY . . . . . . . . . . . . . . . . . . . . . . . . . 37
7.9. Calendar Properties . . . . . . . . . . . . . . . . . . . 38 7.9. Calendar Properties . . . . . . . . . . . . . . . . . . . 38
7.9.1. FBURL . . . . . . . . . . . . . . . . . . . . . . . . 38 7.9.1. FBURL . . . . . . . . . . . . . . . . . . . . . . . . 38
7.9.2. CALADRURI . . . . . . . . . . . . . . . . . . . . . . 39 7.9.2. CALADRURI . . . . . . . . . . . . . . . . . . . . . . 38
7.9.3. CALURI . . . . . . . . . . . . . . . . . . . . . . . . 39 7.9.3. CALURI . . . . . . . . . . . . . . . . . . . . . . . . 39
7.10. Extended Properties and Parameters . . . . . . . . . . . . 39 7.10. Extended Properties and Parameters . . . . . . . . . . . . 39
8. Synchronization . . . . . . . . . . . . . . . . . . . . . . . 39 8. Synchronization . . . . . . . . . . . . . . . . . . . . . . . 39
8.1. Mechanisms . . . . . . . . . . . . . . . . . . . . . . . . 40 8.1. Mechanisms . . . . . . . . . . . . . . . . . . . . . . . . 39
8.2. Example . . . . . . . . . . . . . . . . . . . . . . . . . 40 8.2. Example . . . . . . . . . . . . . . . . . . . . . . . . . 40
9. Formal Grammar . . . . . . . . . . . . . . . . . . . . . . . . 41 9. Formal Grammar . . . . . . . . . . . . . . . . . . . . . . . . 41
10. Example: Authors' vCards . . . . . . . . . . . . . . . . . . . 50 10. Example: Authors' vCards . . . . . . . . . . . . . . . . . . . 50
11. Security Considerations . . . . . . . . . . . . . . . . . . . 50 11. Security Considerations . . . . . . . . . . . . . . . . . . . 51
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 51 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 51
12.1. Registering New vCard Elements . . . . . . . . . . . . . . 51 12.1. Registering New vCard Elements . . . . . . . . . . . . . . 51
12.1.1. Registration Procedure . . . . . . . . . . . . . . . . 51 12.1.1. Registration Procedure . . . . . . . . . . . . . . . . 52
12.1.2. Vendor Namespace . . . . . . . . . . . . . . . . . . . 52 12.1.2. Vendor Namespace . . . . . . . . . . . . . . . . . . . 52
12.1.3. Registration Template for Properties . . . . . . . . . 52 12.1.3. Registration Template for Properties . . . . . . . . . 53
12.1.4. Registration Template for Parameters . . . . . . . . . 53 12.1.4. Registration Template for Parameters . . . . . . . . . 53
12.1.5. Registration Template for Value Data Types . . . . . . 53 12.1.5. Registration Template for Value Data Types . . . . . . 54
12.1.6. Registration Template for Values . . . . . . . . . . . 54 12.1.6. Registration Template for Values . . . . . . . . . . . 54
12.2. Initial vCard Elements Registries . . . . . . . . . . . . 54 12.2. Initial vCard Elements Registries . . . . . . . . . . . . 55
12.2.1. Properties Registry . . . . . . . . . . . . . . . . . 54 12.2.1. Properties Registry . . . . . . . . . . . . . . . . . 55
12.2.2. Parameters Registry . . . . . . . . . . . . . . . . . 56 12.2.2. Parameters Registry . . . . . . . . . . . . . . . . . 57
12.2.3. Value Data Types Registry . . . . . . . . . . . . . . 56 12.2.3. Value Data Types Registry . . . . . . . . . . . . . . 57
13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 56 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 57
14. References . . . . . . . . . . . . . . . . . . . . . . . . . . 57 14. References . . . . . . . . . . . . . . . . . . . . . . . . . . 58
14.1. Normative References . . . . . . . . . . . . . . . . . . . 57 14.1. Normative References . . . . . . . . . . . . . . . . . . . 58
14.2. Informative References . . . . . . . . . . . . . . . . . . 59 14.2. Informative References . . . . . . . . . . . . . . . . . . 60
Appendix A. Differences from RFCs 2425 and 2426 . . . . . . . . . 59 Appendix A. Differences from RFCs 2425 and 2426 . . . . . . . . . 60
A.1. New Structure . . . . . . . . . . . . . . . . . . . . . . 59 A.1. New Structure . . . . . . . . . . . . . . . . . . . . . . 60
A.2. Removed Features . . . . . . . . . . . . . . . . . . . . . 60 A.2. Removed Features . . . . . . . . . . . . . . . . . . . . . 61
A.3. New Properties and Parameters . . . . . . . . . . . . . . 60 A.3. New Properties and Parameters . . . . . . . . . . . . . . 61
A.4. Other Changes . . . . . . . . . . . . . . . . . . . . . . 60 A.4. Other Changes . . . . . . . . . . . . . . . . . . . . . . 61
Appendix B. Change Log (to be removed by RFC Editor prior to Appendix B. Change Log (to be removed by RFC Editor prior to
publication) . . . . . . . . . . . . . . . . . . . . 60 publication) . . . . . . . . . . . . . . . . . . . . 61
B.1. Changes in -02 . . . . . . . . . . . . . . . . . . . . . . 60 B.1. Changes in -03 . . . . . . . . . . . . . . . . . . . . . . 61
B.2. Changes in -01 . . . . . . . . . . . . . . . . . . . . . . 61 B.2. Changes in -02 . . . . . . . . . . . . . . . . . . . . . . 62
B.3. Changes in -00 . . . . . . . . . . . . . . . . . . . . . . 62 B.3. Changes in -01 . . . . . . . . . . . . . . . . . . . . . . 62
B.4. Changes in -00 . . . . . . . . . . . . . . . . . . . . . . 63
1. Introduction 1. Introduction
Note: This draft contains much of the same text as 2425 and 2426 Note: This draft contains much of the same text as 2425 and 2426
which may not be correct. Those two RFCs have been merged and the which may not be correct. Those two RFCs have been merged and the
structure of this draft is what's new. Some vCard-specific structure of this draft is what's new. Some vCard-specific
suggestions have been added, but for the most part this is still very suggestions have been added, but for the most part this is still very
open. But we'd like to get feedback on the structure mostly so that open. But we'd like to get feedback on the structure mostly so that
it may be fixed. it may be fixed.
skipping to change at page 6, line 16 skipping to change at page 6, line 16
In addition, the following media types are known to have been used In addition, the following media types are known to have been used
to refer to vCard data. They should be considered deprecated in to refer to vCard data. They should be considered deprecated in
favor of text/vcard. favor of text/vcard.
* text/directory * text/directory
* text/directory; type=vcard * text/directory; type=vcard
* text/x-vcard * text/x-vcard
Published specification: draft-ietf-vcarddav-vcardrev-02 Published specification: draft-ietf-vcarddav-vcardrev-03
Applications that use this media type: They are numerous, diverse, Applications that use this media type: They are numerous, diverse,
and include mail user agents, instant messaging clients, address and include mail user agents, instant messaging clients, address
book applications, directory servers, customer relationship book applications, directory servers, customer relationship
management software, etc. management software, etc.
Additional information: Additional information:
Magic number(s): Magic number(s):
skipping to change at page 7, line 49 skipping to change at page 7, line 49
unfolding. Unfolding is accomplished by regarding CRLF immediately unfolding. Unfolding is accomplished by regarding CRLF immediately
followed by a white space character (namely HTAB ASCII decimal 9 or followed by a white space character (namely HTAB ASCII decimal 9 or
SPACE ASCII decimal 32) as equivalent to no characters at all (i.e., SPACE ASCII decimal 32) as equivalent to no characters at all (i.e.,
the CRLF and single white space character are removed). the CRLF and single white space character are removed).
Note: It is possible for very simple implementations to generate Note: It is possible for very simple implementations to generate
improperly folded lines in the middle of a UTF-8 multi-octet improperly folded lines in the middle of a UTF-8 multi-octet
sequence. For this reason, implementations SHOULD unfold lines in sequence. For this reason, implementations SHOULD unfold lines in
such a way as to properly restore the original sequence. such a way as to properly restore the original sequence.
Note: Unfolding is done differently than in [RFC2822]. Unfolding
in [RFC2822] only removes the CRLF, not the space following it.
Folding is done after any content encoding of a type value. Folding is done after any content encoding of a type value.
Unfolding is done before any decoding of a type value in a content Unfolding is done before any decoding of a type value in a content
line. line.
4.2. ABNF Format Definition 4.2. ABNF Format Definition
The following ABNF uses the notation of [RFC5234], which also defines The following ABNF uses the notation of [RFC5234], which also defines
CRLF, WSP, DQUOTE, VCHAR, ALPHA, and DIGIT. After the unfolding of CRLF, WSP, DQUOTE, VCHAR, ALPHA, and DIGIT. After the unfolding of
any folded lines as described above, the syntax for a line of this any folded lines as described above, the syntax for a line of this
content type is as follows: content type is as follows:
skipping to change at page 15, line 22 skipping to change at page 15, line 22
property value. property value.
Property parameter values that contain the COLON (US-ASCII decimal Property parameter values that contain the COLON (US-ASCII decimal
58), SEMICOLON (US-ASCII decimal 59) or COMMA (US-ASCII decimal 44) 58), SEMICOLON (US-ASCII decimal 59) or COMMA (US-ASCII decimal 44)
character separators MUST be specified as quoted-string text values. character separators MUST be specified as quoted-string text values.
Property parameter values MUST NOT contain the DQUOTE (US-ASCII Property parameter values MUST NOT contain the DQUOTE (US-ASCII
decimal 22) character. The DQUOTE (US-ASCII decimal 22) character is decimal 22) character. The DQUOTE (US-ASCII decimal 22) character is
used as a delimiter for parameter values that contain restricted used as a delimiter for parameter values that contain restricted
characters or URI text. For example: characters or URI text. For example:
FN;PID=8:Jane Doe EMAIL;PID=8:jdoe@example.com
Property parameter values that are not in quoted strings are case Property parameter values that are not in quoted strings are case
insensitive. insensitive.
The general property parameters defined by this memo are defined by The general property parameters defined by this memo are defined by
the following notation: the following notation:
vcardparameter = encodingparam vcardparameter = encodingparam
/ valuetypeparam / valuetypeparam
/ languageparam / languageparam
/ uidparam / pidparam
encodingparam = "encoding" "=" encodingtype encodingparam = "encoding" "=" encodingtype
encodingtype = "b" ; from [RFC2047] encodingtype = "b" ; from [RFC2047]
/ iana-token ; registered as described in / iana-token ; registered as described in
; section 12 of this document ; section 12 of this document
valuetypeparam = "value" "=" valuetype valuetypeparam = "value" "=" valuetype
valuetype = "uri" ; URI from Appendix A of [RFC3986] valuetype = "uri" ; URI from Appendix A of [RFC3986]
skipping to change at page 16, line 33 skipping to change at page 16, line 33
/ "integer" / "integer"
/ "boolean" / "boolean"
/ "float" / "float"
/ x-name / x-name
/ iana-token ; registered as described in / iana-token ; registered as described in
; section 12 of this document ; section 12 of this document
languageparam = "language" "=" Language-Tag languageparam = "language" "=" Language-Tag
; Language-Tag is defined in section 2.1 of RFC 4646 ; Language-Tag is defined in section 2.1 of RFC 4646
uidparam = "uid" "=" URI ; from Appendix A of [RFC3986] pidparam = "uid" "=" URI ; from Appendix A of [RFC3986]
Applications MUST ignore x-param and iana-param value they don't Applications MUST ignore x-param and iana-param value they don't
recognize. recognize.
6.1. LANGUAGE 6.1. LANGUAGE
The "language" property parameter is used to identify data in The "language" property parameter is used to identify data in
multiple languages. There is no concept of "default" language, multiple languages. There is no concept of "default" language,
except as specified by any "Content-Language" MIME header parameter except as specified by any "Content-Language" MIME header parameter
that is present. The value of the "language" property parameter is a that is present. The value of the "language" property parameter is a
skipping to change at page 17, line 49 skipping to change at page 17, line 49
Including the value type explicitly as part of each property provides Including the value type explicitly as part of each property provides
an extra hint to keep parsing simple and support more generalized an extra hint to keep parsing simple and support more generalized
applications. For example a search engine would not have to know the applications. For example a search engine would not have to know the
particular value types for all of the items for which it is particular value types for all of the items for which it is
searching. Because the value type is explicit in the definition, the searching. Because the value type is explicit in the definition, the
search engine could look for dates in any item type and provide search engine could look for dates in any item type and provide
results that can still be interpreted. results that can still be interpreted.
6.4. PID 6.4. PID
The "pid" parameter is used to uniquely identify the property. It The "pid" parameter is used to identify a specific property among
plays a role analogous to the UID property (Section 7.7.7) on a per- multiple instances. It plays a role analogous to the UID property
property instead of per-vCard basis. It MUST NOT appear more than (Section 7.7.7) on a per-property instead of per-vCard basis. It
once in a given property, and SHOULD be present if synchronization is MUST NOT appear more than once in a given property. It MUST NOT
to be used. See Section 8. Its value is a small integer. appear on properties that only may have one instance per vCard. Its
value is a small integer. Note that the "pid" parameter's value is
not globally, so it is possible for duplicate values to be created.
6.5. TYPE 6.5. TYPE
The "type" parameter has multiple, different uses. In general, it is The "type" parameter has multiple, different uses. In general, it is
a way of specifying class characteristics of the associated property. a way of specifying class characteristics of the associated property.
Most of the time, its value is a comma-separated subset of a pre- Most of the time, its value is a comma-separated subset of a pre-
defined enumeration. In this document, the following properties make defined enumeration. In this document, the following properties make
use of this parameter: PHOTO, ADR, LABEL, TEL, EMAIL, IMPP, LOGO, use of this parameter: PHOTO, ADR, LABEL, TEL, EMAIL, IMPP, LOGO,
MEMBER, SOUND, and KEY. MEMBER, SOUND, and KEY.
skipping to change at page 36, line 26 skipping to change at page 36, line 26
identifier corresponding to the individual or resource associated identifier corresponding to the individual or resource associated
with the vCard. with the vCard.
Value type: A single URI value. Value type: A single URI value.
Special notes: The type is used to uniquely identify the object that Special notes: The type is used to uniquely identify the object that
the vCard represents. The "uuid" URN namespace defined in the vCard represents. The "uuid" URN namespace defined in
[RFC4122] is particularly well-suited to this task, but other URI [RFC4122] is particularly well-suited to this task, but other URI
schemes MAY be used. schemes MAY be used.
This property MUST NOT appear more than once in a given vCard, and This property MUST NOT appear more than once in a given vCard.
MUST be present if synchronization is to be used. See Section 8.
The PID parameter MUST NOT be applied to this property.
Example: Example:
UID:urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6 UID:urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6
7.7.8. URL 7.7.8. URL
Purpose: To specify a uniform resource locator associated with the Purpose: To specify a uniform resource locator associated with the
object that the vCard refers to. object that the vCard refers to.
skipping to change at page 40, line 9 skipping to change at page 39, line 52
vCard data often needs to be synchronized between devices. In this vCard data often needs to be synchronized between devices. In this
context, synchronization is defined as the intelligent merging of two context, synchronization is defined as the intelligent merging of two
representations of the same object. vCard 4.0 includes mechanisms to representations of the same object. vCard 4.0 includes mechanisms to
aid this process. aid this process.
8.1. Mechanisms 8.1. Mechanisms
Two vCards for which the UID properties (Section 7.7.7) are Two vCards for which the UID properties (Section 7.7.7) are
equivalent MUST be considered representations of the same object. equivalent MUST be considered representations of the same object.
Equivalence is determined as specified in [RFC3986], Section 6. A Equivalence is determined as specified in [RFC3986], Section 6.
missing UID property MUST NOT be considered equivalent to any other.
Hence, the UID property SHOULD be present if synchronization is to be
used.
Pairs of properties, one from each of a pair of vCards representing vCards without a UID property MAY be matched to vCards with a UID
the same object, having equivalent names and PID parameter values property where a synchronization engine determines there is
MUST be considered representations of the same object. A missing PID sufficient similarity to assume equivalence. The particular strategy
parameter MUST NOT be considered equivalent to any other. Hence, the and criteria used is out of scope for this document.
PID parameter SHOULD be present if synchronization is to be used.
It is expected that a synchronization engine will exploit such Updates to vCards with multiple instances of particular properties
property associations by e.g. overwriting the destination property MAY use the PID associated with each property to aid in determining
value and parameters with the source destination property value and what values have changed. Since PIDs are not globally unique, they
parameters. The particular merging strategy is out of scope for this can only be used as guidelines to synchronization engine logic. Such
document. logic is out of scope for this document.
8.2. Example 8.2. Example
Two vCards are to by synchronized: Two vCards are to be synchronized:
BEGIN:VCARD BEGIN:VCARD
VERSION:4.0 VERSION:4.0
UID:urn:uuid:77a01597-0603-40f3-8138-36deca8618da UID:urn:uuid:77a01597-0603-40f3-8138-36deca8618da
FN;PID=1:Jane Doe FN:Jane Doe
EMAIL;PID=1:jdoe1@example.com TEL;PID=1;TYPE=home:tel:+33-01-23-45-67
EMAIL;PID=2:jdoe2@example.com TEL;PID=3;TYPE=home:tel:+1-800-555-1234
EMAIL;PID=1:jdoe@example.com
IMPP;TYPE=personal,pref:xmpp:jdoe@example.com
END:VCARD END:VCARD
BEGIN:VCARD BEGIN:VCARD
VERSION:4.0 VERSION:4.0
UID:urn:uuid:77a01597-0603-40f3-8138-36deca8618da UID:urn:uuid:77a01597-0603-40f3-8138-36deca8618da
FN;PID=1:Jane Doe FN:Jane Doe
EMAIL;PID=1:jdoe3@example.com TEL;PID=1;TYPE=home:tel:+33-01-23-45-67
EMAIL;PID=3:jdoe4@example.com TEL;PID=4;TYPE=home:tel:+1-800-555-5678
EMAIL;PID=1:jdoe@example.com
IMPP;TYPE=personal,pref:xmpp:jdoe@example.com
END:VCARD END:VCARD
Assuming the first one is the source and the other is the Assuming a synchronization engine is presented with the two vCards,
destination, a synchronization engine may produce the following it may decide based upon logic out of scope of this document, that
merged vCard: both vCards are representations of the same object, and create a
merged vCard such as:
BEGIN:VCARD BEGIN:VCARD
VERSION:4.0 VERSION:4.0
UID:urn:uuid:77a01597-0603-40f3-8138-36deca8618da UID:urn:uuid:77a01597-0603-40f3-8138-36deca8618da
FN;PID=1:Jane Doe FN:Jane Doe
EMAIL;PID=1:jdoe1@example.com TEL;PID=1;TYPE=home:tel:+33-01-23-45-67
EMAIL;PID=2:jdoe2@example.com TEL;PID=3;TYPE=home:tel:+1-800-555-1234
EMAIL;PID=3:jdoe4@example.com TEL;PID=4;TYPE=home:tel:+1-800-555-5678
EMAIL;PID=1:jdoe@example.com
IMPP;TYPE=personal,pref:xmpp:jdoe@example.com
END:VCARD
If the synchronization engine then is presented with an updated vCard
such as:
BEGIN:VCARD
VERSION:4.0
UID:urn:uuid:77a01597-0603-40f3-8138-36deca8618da
FN:Jane Doe
TEL;PID=1;TYPE=home:tel:+33-01-23-45-67
TEL;PID=4;TYPE=home:tel:+1-800-555-5678
EMAIL;PID=1:jdoe@example.com
IMPP;TYPE=personal,pref:xmpp:jdoe@example.com
END:VCARD END:VCARD
It may use the PIDs on each property to determine that the second
phone number in the sequence has been deleted. Note that there may
be data beyond what is available within a vCard, such as a speed dial
number, that is specific to each individual property instance, which
is why providing a correlation between versions is significant.
9. Formal Grammar 9. Formal Grammar
The following formal grammar is provided to assist developers in The following formal grammar is provided to assist developers in
building parsers for the vCard. building parsers for the vCard.
This syntax is written according to the form described in [RFC5234], This syntax is written according to the form described in [RFC5234],
but it references just this small subset of [RFC5234] literals: but it references just this small subset of [RFC5234] literals:
;******************************************* ;*******************************************
; Basic vCard Definition ; Basic vCard Definition
skipping to change at page 43, line 31 skipping to change at page 44, line 4
;This type MUST be included in a vCard object. ;This type MUST be included in a vCard object.
param = text-param param = text-param
; Text parameters allowed ; Text parameters allowed
value = n-value value = n-value
n-value = 0*4(text-value *("," text-value) ";") n-value = 0*4(text-value *("," text-value) ";")
text-value *("," text-value) text-value *("," text-value)
; Family; Given; Middle; Prefix; Suffix. ; Family; Given; Middle; Prefix; Suffix.
; Example: Public;John;Quincy,Adams;Reverend Dr. III ; Example: Public;John;Quincy,Adams;Reverend Dr. III
; **** NICKNAME **** ; **** NICKNAME ****
param = text-param param = text-param / pid-param
; Text parameters allowed ; Text parameters allowed
value = text-value-list value = text-value-list
; **** PHOTO **** ; **** PHOTO ****
param = img-inline-param param = pid-param / img-inline-param / img-refer-param
; Only image parameters allowed
param =/ img-refer-param
; Only image parameters allowed
value = img-inline-value value = img-inline-value
; Value and parameter MUST match ; Value and parameter MUST match
value =/ img-refer-value value =/ img-refer-value
; Value and parameter MUST match ; Value and parameter MUST match
; **** BDAY **** ; **** BDAY ****
param = ("VALUE" "=" "date") param = ("VALUE" "=" "date")
; Only value parameter allowed ; Only value parameter allowed
skipping to change at page 44, line 17 skipping to change at page 44, line 35
param =/ ("VALUE" "=" "date-time") param =/ ("VALUE" "=" "date-time")
; Only value parameter allowed ; Only value parameter allowed
value = date-value value = date-value
; Value MUST match value type ; Value MUST match value type
value =/ date-time-value value =/ date-time-value
; Value MUST match value type ; Value MUST match value type
; **** ADR **** ; **** ADR ****
param = adr-param / text-param param = adr-param / text-param / pid-param
; Only adr and text parameters allowed ; Only adr and text parameters allowed
value = adr-value value = adr-value
; **** LABEL **** ; **** LABEL ****
param = adr-param / text-param param = adr-param / text-param / pid-param
; Only adr and text parameters allowed ; Only adr and text parameters allowed
value = text-value value = text-value
; **** TEL **** ; **** TEL ****
param = tel-param param = tel-param / pid-param
; Only tel parameters allowed ; Only tel parameters allowed
value = uri-value value = uri-value
tel-param = "TYPE" "=" tel-type *("," tel-type) tel-param = "TYPE" "=" tel-type *("," tel-type)
tel-type = "HOME" / "WORK" / "PREF" / "VOICE" / "FAX" / "MSG" tel-type = "HOME" / "WORK" / "PREF" / "VOICE" / "FAX" / "MSG"
/ "CELL" / "PAGER" / "BBS" / "MODEM" / "CAR" / "ISDN" / "CELL" / "PAGER" / "BBS" / "MODEM" / "CAR" / "ISDN"
/ "VIDEO" / "PCS" / iana-token / x-name / "VIDEO" / "PCS" / iana-token / x-name
; Values are case insensitive ; Values are case insensitive
; **** EMAIL **** ; **** EMAIL ****
param = email-param param = email-param / pid-param
; Only email parameters allowed ; Only email parameters allowed
value = text-value value = text-value
email-param = "TYPE" "=" email-type ["," "PREF"] email-param = "TYPE" "=" email-type ["," "PREF"]
; Value is case insensitive ; Value is case insensitive
email-type = "INTERNET" / "X400" / iana-token / "X-" word email-type = "INTERNET" / "X400" / iana-token / "X-" word
; Values are case insensitive ; Values are case insensitive
; **** TZ **** ; **** TZ ****
param = "" param = ""
; No parameters allowed ; No parameters allowed
value = utc-offset-value value = utc-offset-value
; **** GEO **** ; **** GEO ****
param = "" param = ""
; No parameters allowed ; No parameters allowed
skipping to change at page 45, line 17 skipping to change at page 45, line 34
value = utc-offset-value value = utc-offset-value
; **** GEO **** ; **** GEO ****
param = "" param = ""
; No parameters allowed ; No parameters allowed
value = float-value ";" float-value value = float-value ";" float-value
; **** TITLE **** ; **** TITLE ****
param = text-param param = text-param / pid-param
; Only text parameters allowed ; Only text parameters allowed
value = text-value value = text-value
; **** ROLE **** ; **** ROLE ****
param = text-param param = text-param / pid-param
; Only text parameters allowed ; Only text parameters allowed
value = text-value value = text-value
; **** LOGO **** ; **** LOGO ****
param = img-inline-param / img-refer-param param = pid-param / img-inline-param / img-refer-param
; Only image parameters allowed
value = img-inline-value / img-refer-value value = img-inline-value / img-refer-value
; Value and parameter MUST match ; Value and parameter MUST match
; **** AGENT **** ; **** AGENT ****
param = agent-refer-param / text-param param = pid-param / agent-refer-param / text-param
value = agent-refer-value / text-value value = agent-refer-value / text-value
; Value and parameter MUST match ; Value and parameter MUST match
agent-refer-param = "" agent-refer-param = ""
; No parameters allowed ; No parameters allowed
agent-refer-value = uri agent-refer-value = uri
; URI MUST refer to valid vCard object ; URI MUST refer to valid vCard object
; **** ORG **** ; **** ORG ****
param = text-param param = text-param / pid-param
; Only text parameters allowed ; Only text parameters allowed
value = org-value value = org-value
org-value = *(text-value ";") text-value org-value = *(text-value ";") text-value
; First is Organization Name, remainder are Organization Units. ; First is Organization Name, remainder are Organization Units.
; **** MEMBER **** ; **** MEMBER ****
param = "" param = pid-param
; No parameters allowed
value = uri value = uri
; Any valid URI scheme ; Any valid URI scheme
; **** RELATED **** ; **** RELATED ****
param = "TYPE" "=" related-type param = ("TYPE" "=" related-type) / pid-param
; Value is case insensitive ; Value is case insensitive
value = uri value = uri
; Any valid URI scheme ; Any valid URI scheme
related-type = "parent" / "child" / "sibling" / "manager" related-type = "parent" / "child" / "sibling" / "manager"
/ "assistant" / iana-token / "X-" word / "assistant" / iana-token / "X-" word
; Values are case insensitive ; Values are case insensitive
; **** CATEGORIES **** ; **** CATEGORIES ****
param = text-param param = text-param / pid-param
; Only text parameters allowed ; Only text parameters allowed
value = text-value-list value = text-value-list
; **** NOTE **** ; **** NOTE ****
param = text-param param = text-param / pid-param
; Only text parameters allowed ; Only text parameters allowed
value = text-value value = text-value
; **** PRODID **** ; **** PRODID ****
param = "" param = ""
; No parameters allowed ; No parameters allowed
value = text-value value = text-value
; **** REV **** ; **** REV ****
param = ["VALUE" "=" "date-time"] param = ["VALUE" "=" "date-time"]
; Only value parameters allowed. Values are case insensitive. ; Only value parameters allowed. Values are case insensitive.
skipping to change at page 47, line 4 skipping to change at page 47, line 20
; **** REV **** ; **** REV ****
param = ["VALUE" "=" "date-time"] param = ["VALUE" "=" "date-time"]
; Only value parameters allowed. Values are case insensitive. ; Only value parameters allowed. Values are case insensitive.
param =/ "VALUE" "=" "date" param =/ "VALUE" "=" "date"
; Only value parameters allowed. Values are case insensitive. ; Only value parameters allowed. Values are case insensitive.
value = date-time-value value = date-time-value
value =/ date-value value =/ date-value
; **** SORT-STRING **** ; **** SORT-STRING ****
param = text-param param = text-param
; Only text parameters allowed ; Only text parameters allowed
value = text-value value = text-value
; **** SOUND **** ; **** SOUND ****
param = snd-inline-param param = snd-inline-param / snd-refer-param / pid-param
; Only sound parameters allowed
param =/ snd-refer-param
; Only sound parameters allowed
value = snd-line-value value = snd-line-value
; Value MUST match value type ; Value MUST match value type
value =/ snd-refer-value value =/ snd-refer-value
; Value MUST match value type ; Value MUST match value type
snd-inline-value = binary-value CRLF snd-inline-value = binary-value CRLF
; Value MUST be "b" encoded audio content ; Value MUST be "b" encoded audio content
skipping to change at page 47, line 44 skipping to change at page 48, line 9
/ ("TYPE" "=" word) / ("TYPE" "=" word)
; Value MUST be an IANA registered audio type ; Value MUST be an IANA registered audio type
; **** UID **** ; **** UID ****
param = "" param = ""
; No parameters allowed ; No parameters allowed
value = uri value = uri
; **** URL **** ; **** URL ****
param = "" param = pid-param
; No parameters allowed
value = uri value = uri
; **** VERSION **** ; **** VERSION ****
;This type MUST be included in a vCard object. ;This type MUST be included in a vCard object.
param = "" param = ""
; No parameters allowed ; No parameters allowed
value = text-value value = text-value
; Value MUST be "4.0" ; Value MUST be "4.0"
; **** CLASS **** ; **** CLASS ****
param = "" param = ""
; No parameters allowed ; No parameters allowed
value = "PUBLIC" / "PRIVATE" / "CONFIDENTIAL" value = "PUBLIC" / "PRIVATE" / "CONFIDENTIAL"
/ iana-token / x-name / iana-token / x-name
; Value are case insensitive ; Value are case insensitive
; **** KEY **** ; **** KEY ****
param = key-txt-param param = key-txt-param / key-bin-param / pid-param
; Only value and type parameters allowed
param =/ key-bin-param
; Only value and type parameters allowed
value = text-value value = text-value
value =/ binary-value value =/ binary-value
key-txt-param = "TYPE" "=" keytype key-txt-param = "TYPE" "=" keytype
key-bin-param = ("TYPE" "=" keytype) key-bin-param = ("TYPE" "=" keytype)
/ ("ENCODING" "=" "b") / ("ENCODING" "=" "b")
; Value MUST be a "b" encoded key or certificate ; Value MUST be a "b" encoded key or certificate
skipping to change at page 49, line 4 skipping to change at page 49, line 11
;******************************************* ;*******************************************
; vCard Commonly Used Parameter Definition ; vCard Commonly Used Parameter Definition
;******************************************* ;*******************************************
text-param = ("VALUE" "=" "ptext") text-param = ("VALUE" "=" "ptext")
/ ("LANGUAGE" "=" langval) / ("LANGUAGE" "=" langval)
/ (x-name "=" param-value) / (x-name "=" param-value)
langval = <a language string as defined in [RFC4646]> langval = <a language string as defined in [RFC4646]>
pid-param = ("PID" "=" 1*DIGIT)
img-inline-value = binary-value img-inline-value = binary-value
;Value MUST be "b" encoded image content ;Value MUST be "b" encoded image content
img-inline-param img-inline-param
img-inline-param = ("VALUE" "=" "binary") img-inline-param = ("VALUE" "=" "binary")
/ ("ENCODING" "=" "b") / ("ENCODING" "=" "b")
/ ("TYPE" "=" param-value) / ("TYPE" "=" param-value)
;TYPE value MUST be an image media type as defined in RFC 4288 ;TYPE value MUST be an image media type as defined in RFC 4288
skipping to change at page 60, line 49 skipping to change at page 61, line 49
o Synchronization is addressed in Section 8. o Synchronization is addressed in Section 8.
o The N property is no longer mandatory. o The N property is no longer mandatory.
o The value of TEL is now a URI. o The value of TEL is now a URI.
Appendix B. Change Log (to be removed by RFC Editor prior to Appendix B. Change Log (to be removed by RFC Editor prior to
publication) publication)
B.1. Changes in -02 B.1. Changes in -03
o Various changes to the synchronization mechanisms.
o Allowed truncated format for dated. See issue #236.
B.2. Changes in -02
o Removed useless text in IMPP description. o Removed useless text in IMPP description.
o Added CalDAV-SCHED example to CALADRURI. o Added CalDAV-SCHED example to CALADRURI.
o Removed CAPURI property. o Removed CAPURI property.
o Dashes in dates and colons in times are now mandatory. o Dashes in dates and colons in times are now mandatory.
o Allow for dates such as 2008 and 2008-05 and times such as 07 and o Allow for dates such as 2008 and 2008-05 and times such as 07 and
07:54. 07:54.
skipping to change at page 61, line 35 skipping to change at page 62, line 41
o Changed the presence of UID and PID when synchronization is to be o Changed the presence of UID and PID when synchronization is to be
used from MUST to SHOULD. used from MUST to SHOULD.
o Added the RELATED (Section 7.6.7) property. o Added the RELATED (Section 7.6.7) property.
o Fixed many ABNF typos (issue #252). o Fixed many ABNF typos (issue #252).
o Changed formatting of ABNF comments to make them easier to read o Changed formatting of ABNF comments to make them easier to read
(issue #226). (issue #226).
B.2. Changes in -01 B.3. Changes in -01
o Merged [RFC2739] in. o Merged [RFC2739] in.
o Converted all foobar.com, abc.com, etc. to example.com. o Converted all foobar.com, abc.com, etc. to example.com.
o Fixed bugs in ABNF. o Fixed bugs in ABNF.
o Made explicit that coordinates in the GEO property are expressed o Made explicit that coordinates in the GEO property are expressed
in the WGS 84 reference system. in the WGS 84 reference system.
skipping to change at page 62, line 16 skipping to change at page 63, line 22
o Added Section 8. o Added Section 8.
o Created IANA process for registering new parameters, value types, o Created IANA process for registering new parameters, value types,
and properties. and properties.
o Created the initial IANA registries. o Created the initial IANA registries.
o Created vendor namespace based on text from RFC 4288. o Created vendor namespace based on text from RFC 4288.
B.3. Changes in -00 B.4. Changes in -00
o Name change because draft has been accepted as WG item. o Name change because draft has been accepted as WG item.
Otherwise, same as draft-resnick-vcarddav-vcardrev-01. Otherwise, same as draft-resnick-vcarddav-vcardrev-01.
o Removed reference to RFC 2234. o Removed reference to RFC 2234.
o Fixed errata from o Fixed errata from
http://www.rfc-editor.org/errata_search.php?rfc=2426. http://www.rfc-editor.org/errata_search.php?rfc=2426.
o Removed passage referring to RFC 2425 profiles. o Removed passage referring to RFC 2425 profiles.
skipping to change at page 64, line 45 skipping to change at page 65, line 45
such proprietary rights by implementers or users of this such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr. http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at this standard. Please address the information to the IETF at
ietf-ipr@ietf.org. ietf-ipr@ietf.org.
Acknowledgements Acknowledgement
Funding for the RFC Editor function is provided by the IETF This document was produced using xml2rfc v1.33 (of
Administrative Support Activity (IASA). This document was produced http://xml.resource.org/) from a source in RFC-2629 XML format.
using xml2rfc v1.32 (of http://xml.resource.org/) from a source in
RFC-2629 XML format.
 End of changes. 59 change blocks. 
111 lines changed or deleted 130 lines changed or added

This html diff was produced by rfcdiff 1.35. The latest version is available from http://tools.ietf.org/tools/rfcdiff/