7. Synchronization
vCard data often needs to be synchronized between devices. In this context, synchronization is defined as the intelligent merging of two representations of the same object. vCard 4.0 includes mechanisms to aid this process.7.1. Mechanisms
Two mechanisms are available: the UID property is used to match multiple instances of the same vCard, while the PID parameter is used to match multiple instances of the same property. The term "matching" is used here to mean recognizing that two instances are in fact representations of the same object. For example, a single vCard that is shared with someone results in two vCard instances. After they have evolved separately, they still represent the same object, and therefore may be matched by a synchronization engine.7.1.1. Matching vCard Instances
vCard instances for which the UID properties (Section 6.7.6) are equivalent MUST be matched. Equivalence is determined as specified in [RFC3986], Section 6.
In all other cases, vCard instances MAY be matched at the discretion of the synchronization engine.7.1.2. Matching Property Instances
Property instances belonging to unmatched vCards MUST NOT be matched. Property instances whose name (e.g., EMAIL, TEL, etc.) is not the same MUST NOT be matched. Property instances whose name is CLIENTPIDMAP are handled separately and MUST NOT be matched. The synchronization MUST ensure that there is consistency of CLIENTPIDMAPs among matched vCard instances. Property instances belonging to matched vCards, whose name is the same, and whose maximum cardinality is 1, MUST be matched. Property instances belonging to matched vCards, whose name is the same, and whose PID parameters match, MUST be matched. See Section 7.1.3 for details on PID matching. In all other cases, property instances MAY be matched at the discretion of the synchronization engine.7.1.3. PID Matching
Two PID values for which the first fields are equivalent represent the same local value. Two PID values representing the same local value and for which the second fields point to CLIENTPIDMAP properties whose second field URIs are equivalent (as specified in [RFC3986], Section 6) also represent the same global value. PID parameters for which at least one pair of their values represent the same global value MUST be matched. In all other cases, PID parameters MAY be matched at the discretion of the synchronization engine. For example, PID value "5.1", in the first vCard below, and PID value "5.2", in the second vCard below, represent the same global value.
BEGIN:VCARD VERSION:4.0 EMAIL;PID=4.2,5.1:jdoe@example.com CLIENTPIDMAP:1;urn:uuid:3eef374e-7179-4196-a914-27358c3e6527 CLIENTPIDMAP:2;urn:uuid:42bcd5a7-1699-4514-87b4-056edf68e9cc END:VCARD BEGIN:VCARD VERSION:4.0 EMAIL;PID=5.1,5.2:john@example.com CLIENTPIDMAP:1;urn:uuid:0c75c629-6a8d-4d5e-a07f-1bb35846854d CLIENTPIDMAP:2;urn:uuid:3eef374e-7179-4196-a914-27358c3e6527 END:VCARD7.2. Example
7.2.1. Creation
The following simple vCard is first created on a given device. BEGIN:VCARD VERSION:4.0 UID:urn:uuid:4fbe8971-0bc3-424c-9c26-36c3e1eff6b1 FN;PID=1.1:J. Doe N:Doe;J.;;; EMAIL;PID=1.1:jdoe@example.com CLIENTPIDMAP:1;urn:uuid:53e374d9-337e-4727-8803-a1e9c14e0556 END:VCARD This new vCard is assigned the UID "urn:uuid:4fbe8971-0bc3-424c-9c26-36c3e1eff6b1" by the creating device. The FN and EMAIL properties are assigned the same local value of 1, and this value is given global context by associating it with "urn:uuid:53e374d9-337e-4727-8803-a1e9c14e0556", which represents the creating device. We are at liberty to reuse the same local value since instances of different properties will never be matched. The N property has no PID because it is forbidden by its maximum cardinality of 1.7.2.2. Initial Sharing
This vCard is shared with a second device. Upon inspecting the UID property, the second device understands that this is a new vCard (i.e., unmatched) and thus the synchronization results in a simple copy.
7.2.3. Adding and Sharing a Property
A new phone number is created on the first device, then the vCard is shared with the second device. This is what the second device receives: BEGIN:VCARD VERSION:4.0 UID:urn:uuid:4fbe8971-0bc3-424c-9c26-36c3e1eff6b1 FN;PID=1.1:J. Doe N:Doe;J.;;; EMAIL;PID=1.1:jdoe@example.com TEL;PID=1.1;VALUE=uri:tel:+1-555-555-5555 CLIENTPIDMAP:1;urn:uuid:53e374d9-337e-4727-8803-a1e9c14e0556 END:VCARD Upon inspecting the UID property, the second device matches the vCard it received to the vCard that it already has stored. It then starts comparing the properties of the two vCards in same-named pairs. The FN properties are matched because the PID parameters have the same global value. Since the property value is the same, no update takes place. The N properties are matched automatically because their maximum cardinality is 1. Since the property value is the same, no update takes place. The EMAIL properties are matched because the PID parameters have the same global value. Since the property value is the same, no update takes place. The TEL property in the new vCard is not matched to any in the stored vCard because no property in the stored vCard has the same name. Therefore, this property is copied from the new vCard to the stored vCard. The CLIENTPIDMAP property is handled separately by the synchronization engine. It ensures that it is consistent with the stored one. If it was not, the results would be up to the synchronization engine, and thus undefined by this document.7.2.4. Simultaneous Editing
A new email address and a new phone number are added to the vCard on each of the two devices, and then a new synchronization event happens. Here are the vCards that are communicated to each other:
BEGIN:VCARD VERSION:4.0 UID:urn:uuid:4fbe8971-0bc3-424c-9c26-36c3e1eff6b1 FN;PID=1.1:J. Doe N:Doe;J.;;; EMAIL;PID=1.1:jdoe@example.com EMAIL;PID=2.1:boss@example.com TEL;PID=1.1;VALUE=uri:tel:+1-555-555-5555 TEL;PID=2.1;VALUE=uri:tel:+1-666-666-6666 CLIENTPIDMAP:1;urn:uuid:53e374d9-337e-4727-8803-a1e9c14e0556 END:VCARD BEGIN:VCARD VERSION:4.0 UID:urn:uuid:4fbe8971-0bc3-424c-9c26-36c3e1eff6b1 FN;PID=1.1:J. Doe N:Doe;J.;;; EMAIL;PID=1.1:jdoe@example.com EMAIL;PID=2.2:ceo@example.com TEL;PID=1.1;VALUE=uri:tel:+1-555-555-5555 TEL;PID=2.2;VALUE=uri:tel:+1-666-666-6666 CLIENTPIDMAP:1;urn:uuid:53e374d9-337e-4727-8803-a1e9c14e0556 CLIENTPIDMAP:2;urn:uuid:1f762d2b-03c4-4a83-9a03-75ff658a6eee END:VCARD On the first device, the same PID source identifier (1) is reused for the new EMAIL and TEL properties. On the second device, a new source identifier (2) is generated, and a corresponding CLIENTPIDMAP property is created. It contains the second device's identifier, "urn:uuid:1f762d2b-03c4-4a83-9a03-75ff658a6eee". The new EMAIL properties are unmatched on both sides since the PID global value is new in both cases. The sync thus results in a copy on both sides. Although the situation appears to be the same for the TEL properties, in this case, the synchronization engine is particularly smart and matches the two new TEL properties even though their PID global values are different. Note that in this case, the rules of Section 7.1.2 state that two properties MAY be matched at the discretion of the synchronization engine. Therefore, the two properties are merged. All this results in the following vCard, which is stored on both devices:
BEGIN:VCARD VERSION:4.0 UID:urn:uuid:4fbe8971-0bc3-424c-9c26-36c3e1eff6b1 FN:J. Doe N:Doe;J.;;; EMAIL;PID=1.1:jdoe@example.com EMAIL;PID=2.1:boss@example.com EMAIL;PID=2.2:ceo@example.com TEL;PID=1.1;VALUE=uri:tel:+1-555-555-5555 TEL;PID=2.1,2.2;VALUE=uri:tel:+1-666-666-6666 CLIENTPIDMAP:1;urn:uuid:53e374d9-337e-4727-8803-a1e9c14e0556 CLIENTPIDMAP:2;urn:uuid:1f762d2b-03c4-4a83-9a03-75ff658a6eee END:VCARD7.2.5. Global Context Simplification
The two devices finish their synchronization procedure by simplifying their global contexts. Since they haven't talked to any other device, the following vCard is for all purposes equivalent to the above. It is also shorter. BEGIN:VCARD VERSION:4.0 UID:urn:uuid:4fbe8971-0bc3-424c-9c26-36c3e1eff6b1 FN:J. Doe N:Doe;J.;;; EMAIL;PID=1.1:jdoe@example.com EMAIL;PID=2.1:boss@example.com EMAIL;PID=3.1:ceo@example.com TEL;PID=1.1;VALUE=uri:tel:+1-555-555-5555 TEL;PID=2.1;VALUE=uri:tel:+1-666-666-6666 CLIENTPIDMAP:1;urn:uuid:53e374d9-337e-4727-8803-a1e9c14e0556 END:VCARD The details of global context simplification are unspecified by this document. They are left up to the synchronization engine. This example is merely intended to illustrate the possibility, which investigating would be, in the author's opinion, worthwhile.8. Example: Author's vCard
BEGIN:VCARD VERSION:4.0 FN:Simon Perreault N:Perreault;Simon;;;ing. jr,M.Sc. BDAY:--0203 ANNIVERSARY:20090808T1430-0500 GENDER:M
LANG;PREF=1:fr LANG;PREF=2:en ORG;TYPE=work:Viagenie ADR;TYPE=work:;Suite D2-630;2875 Laurier; Quebec;QC;G1V 2M2;Canada TEL;VALUE=uri;TYPE="work,voice";PREF=1:tel:+1-418-656-9254;ext=102 TEL;VALUE=uri;TYPE="work,cell,voice,video,text":tel:+1-418-262-6501 EMAIL;TYPE=work:simon.perreault@viagenie.ca GEO;TYPE=work:geo:46.772673,-71.282945 KEY;TYPE=work;VALUE=uri: http://www.viagenie.ca/simon.perreault/simon.asc TZ:-0500 URL;TYPE=home:http://nomis80.org END:VCARD9. Security Considerations
o Internet mail is often used to transport vCards and is subject to many well-known security attacks, including monitoring, replay, and forgery. Care should be taken by any directory service in allowing information to leave the scope of the service itself, where any access controls or confidentiality can no longer be guaranteed. Applications should also take care to display directory data in a "safe" environment. o vCards can carry cryptographic keys or certificates, as described in Section 6.8.1. o vCards often carry information that can be sensitive (e.g., birthday, address, and phone information). Although vCards have no inherent authentication or confidentiality provisions, they can easily be carried by any security mechanism that transfers MIME objects to address authentication or confidentiality (e.g., S/MIME [RFC5751], OpenPGP [RFC4880]). In cases where the confidentiality or authenticity of information contained in vCard is a concern, the vCard SHOULD be transported using one of these secure mechanisms. The KEY property (Section 6.8.1) can be used to transport the public key used by these mechanisms. o The information in a vCard may become out of date. In cases where the vitality of data is important to an originator of a vCard, the SOURCE property (Section 6.1.3) SHOULD be specified. In addition, the "REV" type described in Section 6.7.4 can be specified to indicate the last time that the vCard data was updated. o Many vCard properties may be used to transport URIs. Please refer to [RFC3986], Section 7, for considerations related to URIs.
10. IANA Considerations
10.1. Media Type Registration
IANA has registered the following Media Type (in <http://www.iana.org/>) and marked the text/directory Media Type as DEPRECATED. To: ietf-types@iana.org Subject: Registration of media type text/vcard Type name: text Subtype name: vcard Required parameters: none Optional parameters: version The "version" parameter is to be interpreted identically as the VERSION vCard property. If this parameter is present, all vCards in a text/vcard body part MUST have a VERSION property with value identical to that of this MIME parameter. "charset": as defined for text/plain [RFC2046]; encodings other than UTF-8 [RFC3629] MUST NOT be used. Encoding considerations: 8bit Security considerations: See Section 9. Interoperability considerations: The text/vcard media type is intended to identify vCard data of any version. There are older specifications of vCard [RFC2426][vCard21] still in common use. While these formats are similar, they are not strictly compatible. In general, it is necessary to inspect the value of the VERSION property (see Section 6.7.9) for identifying the standard to which a given vCard object conforms. In addition, the following media types are known to have been used to refer to vCard data. They should be considered deprecated in favor of text/vcard. * text/directory * text/directory; profile=vcard * text/x-vcard
Published specification: RFC 6350 Applications that use this media type: They are numerous, diverse, and include mail user agents, instant messaging clients, address book applications, directory servers, and customer relationship management software. Additional information: Magic number(s): File extension(s): .vcf .vcard Macintosh file type code(s): Person & email address to contact for further information: vCard discussion mailing list <vcarddav@ietf.org> Intended usage: COMMON Restrictions on usage: none Author: Simon Perreault Change controller: IETF10.2. Registering New vCard Elements
This section defines the process for registering new or modified vCard elements (i.e., properties, parameters, value data types, and values) with IANA.10.2.1. Registration Procedure
The IETF has created a mailing list, vcarddav@ietf.org, which can be used for public discussion of vCard element proposals prior to registration. Use of the mailing list is strongly encouraged. The IESG has appointed a designated expert who will monitor the vcarddav@ietf.org mailing list and review registrations. Registration of new vCard elements MUST be reviewed by the designated expert and published in an RFC. A Standards Track RFC is REQUIRED for the registration of new value data types that modify existing properties. A Standards Track RFC is also REQUIRED for registration of vCard elements that modify vCard elements previously documented in a Standards Track RFC.
The registration procedure begins when a completed registration template, defined in the sections below, is sent to vcarddav@ietf.org and iana@iana.org. Within two weeks, the designated expert is expected to tell IANA and the submitter of the registration whether the registration is approved, approved with minor changes, or rejected with cause. When a registration is rejected with cause, it can be re-submitted if the concerns listed in the cause are addressed. Decisions made by the designated expert can be appealed to the IESG Applications Area Director, then to the IESG. They follow the normal appeals procedure for IESG decisions. Once the registration procedure concludes successfully, IANA creates or modifies the corresponding record in the vCard registry. The completed registration template is discarded. An RFC specifying new vCard elements MUST include the completed registration templates, which MAY be expanded with additional information. These completed templates are intended to go in the body of the document, not in the IANA Considerations section. Finally, note that there is an XML representation for vCard defined in [RFC6351]. An XML representation SHOULD be defined for new vCard elements.10.2.2. Vendor Namespace
The vendor namespace is used for vCard elements associated with commercially available products. "Vendor" or "producer" are construed as equivalent and very broadly in this context. A registration may be placed in the vendor namespace by anyone who needs to interchange files associated with the particular product. However, the registration formally belongs to the vendor or organization handling the vCard elements in the namespace being registered. Changes to the specification will be made at their request, as discussed in subsequent sections. vCard elements belonging to the vendor namespace will be distinguished by the "VND-" prefix. This is followed by an IANA- registered Private Enterprise Number (PEN), a dash, and a vCard element designation of the vendor's choosing (e.g., "VND-123456- MUDPIE"). While public exposure and review of vCard elements to be registered in the vendor namespace are not required, using the vcarddav@ietf.org mailing list for review is strongly encouraged to improve the quality of those specifications. Registrations in the vendor namespace may be submitted directly to the IANA.
10.2.3. Registration Template for Properties
A property is defined by completing the following template. Namespace: Empty for the global namespace, "VND-NNNN-" for a vendor- specific property (where NNNN is replaced by the vendor's PEN). Property name: The name of the property. Purpose: The purpose of the property. Give a short but clear description. Value type: Any of the valid value types for the property value needs to be specified. The default value type also needs to be specified. Cardinality: See Section 6. Property parameters: Any of the valid property parameters for the property MUST be specified. Description: Any special notes about the property, how it is to be used, etc. Format definition: The ABNF for the property definition needs to be specified. Example(s): One or more examples of instances of the property need to be specified.10.2.4. Registration Template for Parameters
A parameter is defined by completing the following template. Namespace: Empty for the global namespace, "VND-NNNN-" for a vendor- specific property (where NNNN is replaced by the vendor's PEN). Parameter name: The name of the parameter. Purpose: The purpose of the parameter. Give a short but clear description. Description: Any special notes about the parameter, how it is to be used, etc. Format definition: The ABNF for the parameter definition needs to be specified.
Example(s): One or more examples of instances of the parameter need to be specified.10.2.5. Registration Template for Value Data Types
A value data type is defined by completing the following template. Value name: The name of the value type. Purpose: The purpose of the value type. Give a short but clear description. Description: Any special notes about the value type, how it is to be used, etc. Format definition: The ABNF for the value type definition needs to be specified. Example(s): One or more examples of instances of the value type need to be specified.10.2.6. Registration Template for Values
A value is defined by completing the following template. Value: The value literal. Purpose: The purpose of the value. Give a short but clear description. Conformance: The vCard properties and/or parameters that can take this value needs to be specified. Example(s): One or more examples of instances of the value need to be specified. The following is a fictitious example of a registration of a vCard value: Value: supervisor Purpose: It means that the related entity is the direct hierarchical superior (i.e., supervisor or manager) of the entity this vCard represents. Conformance: This value can be used with the "TYPE" parameter applied on the "RELATED" property.
Example(s): RELATED;TYPE=supervisor:urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf610.3. Initial vCard Elements Registries
The IANA has created and will maintain the following registries for vCard elements with pointers to appropriate reference documents. The registries are grouped together under the heading "vCard Elements".
10.3.1. Properties Registry
The following table has been used to initialize the properties registry. +-----------+--------------+-------------------------+ | Namespace | Property | Reference | +-----------+--------------+-------------------------+ | | SOURCE | RFC 6350, Section 6.1.3 | | | KIND | RFC 6350, Section 6.1.4 | | | XML | RFC 6350, Section 6.1.5 | | | FN | RFC 6350, Section 6.2.1 | | | N | RFC 6350, Section 6.2.2 | | | NICKNAME | RFC 6350, Section 6.2.3 | | | PHOTO | RFC 6350, Section 6.2.4 | | | BDAY | RFC 6350, Section 6.2.5 | | | ANNIVERSARY | RFC 6350, Section 6.2.6 | | | GENDER | RFC 6350, Section 6.2.7 | | | ADR | RFC 6350, Section 6.3.1 | | | TEL | RFC 6350, Section 6.4.1 | | | EMAIL | RFC 6350, Section 6.4.2 | | | IMPP | RFC 6350, Section 6.4.3 | | | LANG | RFC 6350, Section 6.4.4 | | | TZ | RFC 6350, Section 6.5.1 | | | GEO | RFC 6350, Section 6.5.2 | | | TITLE | RFC 6350, Section 6.6.1 | | | ROLE | RFC 6350, Section 6.6.2 | | | LOGO | RFC 6350, Section 6.6.3 | | | ORG | RFC 6350, Section 6.6.4 | | | MEMBER | RFC 6350, Section 6.6.5 | | | RELATED | RFC 6350, Section 6.6.6 | | | CATEGORIES | RFC 6350, Section 6.7.1 | | | NOTE | RFC 6350, Section 6.7.2 | | | PRODID | RFC 6350, Section 6.7.3 | | | REV | RFC 6350, Section 6.7.4 | | | SOUND | RFC 6350, Section 6.7.5 | | | UID | RFC 6350, Section 6.7.6 | | | CLIENTPIDMAP | RFC 6350, Section 6.7.7 | | | URL | RFC 6350, Section 6.7.8 | | | VERSION | RFC 6350, Section 6.7.9 | | | KEY | RFC 6350, Section 6.8.1 | | | FBURL | RFC 6350, Section 6.9.1 | | | CALADRURI | RFC 6350, Section 6.9.2 | | | CALURI | RFC 6350, Section 6.9.3 | +-----------+--------------+-------------------------+
10.3.2. Parameters Registry
The following table has been used to initialize the parameters registry. +-----------+-----------+------------------------+ | Namespace | Parameter | Reference | +-----------+-----------+------------------------+ | | LANGUAGE | RFC 6350, Section 5.1 | | | VALUE | RFC 6350, Section 5.2 | | | PREF | RFC 6350, Section 5.3 | | | ALTID | RFC 6350, Section 5.4 | | | PID | RFC 6350, Section 5.5 | | | TYPE | RFC 6350, Section 5.6 | | | MEDIATYPE | RFC 6350, Section 5.7 | | | CALSCALE | RFC 6350, Section 5.8 | | | SORT-AS | RFC 6350, Section 5.9 | | | GEO | RFC 6350, Section 5.10 | | | TZ | RFC 6350, Section 5.11 | +-----------+-----------+------------------------+10.3.3. Value Data Types Registry
The following table has been used to initialize the parameters registry. +------------------+-------------------------+ | Value Data Type | Reference | +------------------+-------------------------+ | BOOLEAN | RFC 6350, Section 4.4 | | DATE | RFC 6350, Section 4.3.1 | | DATE-AND-OR-TIME | RFC 6350, Section 4.3.4 | | DATE-TIME | RFC 6350, Section 4.3.3 | | FLOAT | RFC 6350, Section 4.6 | | INTEGER | RFC 6350, Section 4.5 | | LANGUAGE-TAG | RFC 6350, Section 4.8 | | TEXT | RFC 6350, Section 4.1 | | TIME | RFC 6350, Section 4.3.2 | | TIMESTAMP | RFC 6350, Section 4.3.5 | | URI | RFC 6350, Section 4.2 | | UTC-OFFSET | RFC 6350, Section 4.7 | +------------------+-------------------------+
10.3.4. Values Registries
Separate tables are used for property and parameter values. The following table is to be used to initialize the property values registry. +----------+------------+-------------------------+ | Property | Value | Reference | +----------+------------+-------------------------+ | BEGIN | VCARD | RFC 6350, Section 6.1.1 | | END | VCARD | RFC 6350, Section 6.1.2 | | KIND | individual | RFC 6350, Section 6.1.4 | | KIND | group | RFC 6350, Section 6.1.4 | | KIND | org | RFC 6350, Section 6.1.4 | | KIND | location | RFC 6350, Section 6.1.4 | +----------+------------+-------------------------+ The following table has been used to initialize the parameter values registry.
+------------------------+-----------+--------------+---------------+ | Property | Parameter | Value | Reference | +------------------------+-----------+--------------+---------------+ | FN, NICKNAME, PHOTO, | TYPE | work | RFC 6350, | | ADR, TEL, EMAIL, IMPP, | | | Section 5.6 | | LANG, TZ, GEO, TITLE, | | | | | ROLE, LOGO, ORG, | | | | | RELATED, CATEGORIES, | | | | | NOTE, SOUND, URL, KEY, | | | | | FBURL, CALADRURI, and | | | | | CALURI | | | | | FN, NICKNAME, PHOTO, | TYPE | home | RFC 6350, | | ADR, TEL, EMAIL, IMPP, | | | Section 5.6 | | LANG, TZ, GEO, TITLE, | | | | | ROLE, LOGO, ORG, | | | | | RELATED, CATEGORIES, | | | | | NOTE, SOUND, URL, KEY, | | | | | FBURL, CALADRURI, and | | | | | CALURI | | | | | TEL | TYPE | text | RFC 6350, | | | | | Section 6.4.1 | | TEL | TYPE | voice | RFC 6350, | | | | | Section 6.4.1 | | TEL | TYPE | fax | RFC 6350, | | | | | Section 6.4.1 | | TEL | TYPE | cell | RFC 6350, | | | | | Section 6.4.1 | | TEL | TYPE | video | RFC 6350, | | | | | Section 6.4.1 | | TEL | TYPE | pager | RFC 6350, | | | | | Section 6.4.1 | | TEL | TYPE | textphone | RFC 6350, | | | | | Section 6.4.1 | | BDAY, ANNIVERSARY | CALSCALE | gregorian | RFC 6350, | | | | | Section 5.8 | | RELATED | TYPE | contact | RFC 6350, | | | | | Section 6.6.6 | | | | | and [xfn] | | RELATED | TYPE | acquaintance | RFC 6350, | | | | | Section 6.6.6 | | | | | and [xfn] | | RELATED | TYPE | friend | RFC 6350, | | | | | Section 6.6.6 | | | | | and [xfn] | | RELATED | TYPE | met | RFC 6350, | | | | | Section 6.6.6 | | | | | and [xfn] |
| RELATED | TYPE | co-worker | RFC 6350, | | | | | Section 6.6.6 | | | | | and [xfn] | | RELATED | TYPE | colleague | RFC 6350, | | | | | Section 6.6.6 | | | | | and [xfn] | | RELATED | TYPE | co-resident | RFC 6350, | | | | | Section 6.6.6 | | | | | and [xfn] | | RELATED | TYPE | neighbor | RFC 6350, | | | | | Section 6.6.6 | | | | | and [xfn] | | RELATED | TYPE | child | RFC 6350, | | | | | Section 6.6.6 | | | | | and [xfn] | | RELATED | TYPE | parent | RFC 6350, | | | | | Section 6.6.6 | | | | | and [xfn] | | RELATED | TYPE | sibling | RFC 6350, | | | | | Section 6.6.6 | | | | | and [xfn] | | RELATED | TYPE | spouse | RFC 6350, | | | | | Section 6.6.6 | | | | | and [xfn] | | RELATED | TYPE | kin | RFC 6350, | | | | | Section 6.6.6 | | | | | and [xfn] | | RELATED | TYPE | muse | RFC 6350, | | | | | Section 6.6.6 | | | | | and [xfn] | | RELATED | TYPE | crush | RFC 6350, | | | | | Section 6.6.6 | | | | | and [xfn] | | RELATED | TYPE | date | RFC 6350, | | | | | Section 6.6.6 | | | | | and [xfn] | | RELATED | TYPE | sweetheart | RFC 6350, | | | | | Section 6.6.6 | | | | | and [xfn] | | RELATED | TYPE | me | RFC 6350, | | | | | Section 6.6.6 | | | | | and [xfn] | | RELATED | TYPE | agent | RFC 6350, | | | | | Section 6.6.6 | | RELATED | TYPE | emergency | RFC 6350, | | | | | Section 6.6.6 | +------------------------+-----------+--------------+---------------+
11. Acknowledgments
The authors would like to thank Tim Howes, Mark Smith, and Frank Dawson, the original authors of [RFC2425] and [RFC2426], Pete Resnick, who got this effort started and provided help along the way, as well as the following individuals who have participated in the drafting, review, and discussion of this memo: Aki Niemi, Andy Mabbett, Alexander Mayrhofer, Alexey Melnikov, Anil Srivastava, Barry Leiba, Ben Fortuna, Bernard Desruisseaux, Bernie Hoeneisen, Bjoern Hoehrmann, Caleb Richardson, Chris Bryant, Chris Newman, Cyrus Daboo, Daisuke Miyakawa, Dan Brickley, Dan Mosedale, Dany Cauchie, Darryl Champagne, Dave Thewlis, Filip Navara, Florian Zeitz, Helge Hess, Jari Urpalainen, Javier Godoy, Jean-Luc Schellens, Joe Hildebrand, Jose Luis Gayosso, Joseph Smarr, Julian Reschke, Kepeng Li, Kevin Marks, Kevin Wu Won, Kurt Zeilenga, Lisa Dusseault, Marc Blanchet, Mark Paterson, Markus Lorenz, Michael Haardt, Mike Douglass, Nick Levinson, Peter K. Sheerin, Peter Mogensen, Peter Saint-Andre, Renato Iannella, Rohit Khare, Sly Gryphon, Stephane Bortzmeyer, Tantek Celik, and Zoltan Ordogh.12. References
12.1. Normative References
[CCITT.X520.1988] International Telephone and Telegraph Consultative Committee, "Information Technology - Open Systems Interconnection - The Directory: Selected Attribute Types", CCITT Recommendation X.520, November 1988. [IEEE.754.2008] Institute of Electrical and Electronics Engineers, "Standard for Binary Floating-Point Arithmetic", IEEE Standard 754, August 2008. [ISO.8601.2000] International Organization for Standardization, "Data elements and interchange formats - Information interchange - Representation of dates and times", ISO Standard 8601, December 2000. [ISO.8601.2004] International Organization for Standardization, "Data elements and interchange formats - Information interchange - Representation of dates and times", ISO Standard 8601, December 2004.
[RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies", RFC 2045, November 1996. [RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types", RFC 2046, November 1996. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC2739] Small, T., Hennessy, D., and F. Dawson, "Calendar Attributes for vCard and LDAP", RFC 2739, January 2000. [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO 10646", STD 63, RFC 3629, November 2003. [RFC3966] Schulzrinne, H., "The tel URI for Telephone Numbers", RFC 3966, December 2004. [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform Resource Identifier (URI): Generic Syntax", STD 66, RFC 3986, January 2005. [RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally Unique IDentifier (UUID) URN Namespace", RFC 4122, July 2005. [RFC4288] Freed, N. and J. Klensin, "Media Type Specifications and Registration Procedures", BCP 13, RFC 4288, December 2005. [RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", STD 68, RFC 5234, January 2008. [RFC5322] Resnick, P., Ed., "Internet Message Format", RFC 5322, October 2008. [RFC5545] Desruisseaux, B., "Internet Calendaring and Scheduling Core Object Specification (iCalendar)", RFC 5545, September 2009. [RFC5546] Daboo, C., "iCalendar Transport-Independent Interoperability Protocol (iTIP)", RFC 5546, December 2009. [RFC5646] Phillips, A. and M. Davis, "Tags for Identifying Languages", BCP 47, RFC 5646, September 2009.
[RFC5870] Mayrhofer, A. and C. Spanring, "A Uniform Resource Identifier for Geographic Locations ('geo' URI)", RFC 5870, June 2010. [RFC6351] Perreault, S., "xCard: vCard XML Representation", RFC 6351, August 2011. [W3C.REC-xml-20081126] Maler, E., Yergeau, F., Sperberg-McQueen, C., Paoli, J., and T. Bray, "Extensible Markup Language (XML) 1.0 (Fifth Edition)", World Wide Web Consortium Recommendation REC- xml-20081126, November 2008, <http://www.w3.org/TR/2008/REC-xml-20081126>. [xfn] Celik, T., Mullenweg, M., and E. Meyer, "XFN 1.1 profile", <http://gmpg.org/xfn/11>.12.2. Informative References
[IANA-TZ] Lear, E. and P. Eggert, "IANA Procedures for Maintaining the Timezone Database", Work in Progress, May 2011. [ISO9070] International Organization for Standardization, "Information Processing - SGML support facilities - Registration Procedures for Public Text Owner Identifiers", ISO 9070, April 1991. [RFC1738] Berners-Lee, T., Masinter, L., and M. McCahill, "Uniform Resource Locators (URL)", RFC 1738, December 1994. [RFC2397] Masinter, L., "The "data" URL scheme", RFC 2397, August 1998. [RFC2425] Howes, T., Smith, M., and F. Dawson, "A MIME Content-Type for Directory Information", RFC 2425, September 1998. [RFC2426] Dawson, F. and T. Howes, "vCard MIME Directory Profile", RFC 2426, September 1998. [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. [RFC3282] Alvestrand, H., "Content Language Headers", RFC 3282, May 2002.
[RFC3406] Daigle, L., van Gulik, D., Iannella, R., and P. Faltstrom, "Uniform Resource Names (URN) Namespace Definition Mechanisms", BCP 66, RFC 3406, October 2002. [RFC3536] Hoffman, P., "Terminology Used in Internationalization in the IETF", RFC 3536, May 2003. [RFC4770] Jennings, C. and J. Reschke, Ed., "vCard Extensions for Instant Messaging (IM)", RFC 4770, January 2007. [RFC4880] Callas, J., Donnerhacke, L., Finney, H., Shaw, D., and R. Thayer, "OpenPGP Message Format", RFC 4880, November 2007. [RFC5335bis] Yang, A. and S. Steele, "Internationalized Email Headers", Work in Progress, July 2011. [RFC5751] Ramsdell, B. and S. Turner, "Secure/Multipurpose Internet Mail Extensions (S/MIME) Version 3.2 Message Specification", RFC 5751, January 2010. [RFC6068] Duerst, M., Masinter, L., and J. Zawinski, "The 'mailto' URI Scheme", RFC 6068, October 2010. [TZ-DB] Olson, A., "Time zone code and data", <ftp://elsie.nci.nih.gov/pub/>. [vCard21] Internet Mail Consortium, "vCard - The Electronic Business Card Version 2.1", September 1996.
Appendix A. Differences from RFCs 2425 and 2426
This appendix contains a high-level overview of the major changes that have been made in the vCard specification from RFCs 2425 and 2426. It is incomplete, as it only lists the most important changes.A.1. New Structure
o [RFC2425] and [RFC2426] have been merged. o vCard is now not only a MIME type but a stand-alone format. o A proper MIME type registration form has been included. o UTF-8 is now the only possible character set. o New vCard elements can be registered from IANA.A.2. Removed Features
o The CONTEXT and CHARSET parameters are no more. o The NAME, MAILER, LABEL, and CLASS properties are no more. o The "intl", "dom", "postal", and "parcel" TYPE parameter values for the ADR property have been removed. o In-line vCards (such as the value of the AGENT property) are no longer supported.A.3. New Properties and Parameters
o The KIND, GENDER, LANG, ANNIVERSARY, XML, and CLIENTPIDMAP properties have been added. o [RFC2739], which defines the FBURL, CALADRURI, CAPURI, and CALURI properties, has been merged in. o [RFC4770], which defines the IMPP property, has been merged in. o The "work" and "home" TYPE parameter values are now applicable to many more properties. o The "pref" value of the TYPE parameter is now a parameter of its own, with a positive integer value indicating the level of preference. o The ALTID and PID parameters have been added.
o The MEDIATYPE parameter has been added and replaces the TYPE parameter when it was used for indicating the media type of the property's content.Author's Address
Simon Perreault Viagenie 2875 Laurier, suite D2-630 Quebec, QC G1V 2M2 Canada Phone: +1 418 656 9254 EMail: simon.perreault@viagenie.ca URI: http://www.viagenie.ca