RFC 6350, "vCard Format Specification", August 2011Source of RFC: vcarddav (app)
Errata ID: 4213
Status: Held for Document Update
Reported By: Eric Vought
Date Reported: 2014-12-28
Held for Document Update by: Barry Leiba
Date Held: 2015-01-02
Section 5.4 says:
"Two property instances are considered alternative representations of the same logical property if and only if their names as well as the value of their ALTID parameters are identical. Property instances without the ALTID parameter MUST NOT be considered an alternative representation of any other property instance. Values for the ALTID parameter are not globally unique: they MAY be reused for different property names."
It should say:
"Two property instances are considered alternative representations of the same logical property if and only if their names as well as the value of their ALTID parameters are identical. Property instances without the ALTID parameter MUST NOT be considered an alternative representation of any other property instance. Values for the ALTID parameter are not globally unique: they MAY be reused for different property names. "Values for group and for the PREF parameter SHOULD be the same for all alternative representations of the same property. The values of group and PREF are not defined for a property if they differ among alternative representations of the same logical property."
The corrected text "not defined" is intended as a literal statement of the consequences of the current specification and not a change to the meaning of the current specification. The submitter recommends that the text "Values for the group and for the PREF parameter MUST be the same..." be considered for future versions of this document.
It is also requested that the example below be added to the "legal but questionable" list in section 5.4.
Section 3.3 contains the text:
"The group construct is used to group related properties together.
The group name is a syntactic convention used to indicate that all
property names prefaced with the same group name SHOULD be grouped
together when displayed by an application."
There is no valid interpretation available for an application if a logical property has more than one group (see example below) and clearly no way to display such properties together, therefore the group construct has no defined meaning for such a case. This is particularly troublesome when converting to formats such as the VCard XML Schema where the group is represented as an XML schema in which properties are contained.
Also, Section 5.3 states in reference to the PREF parameter:
"Note that the value of this parameter is to be interpreted only in
relation to values assigned to other instances of the same property
in the same vCard. A given value, or the absence of a value, MUST
NOT be interpreted on its own."
The meaning of "instances of the same property" is not decipherable with respect to logical properties which differ in their PREF parameter value, therefore application behavior is also not defined for this case.
volunteer.ORG;ALTID=1;PREF=1;LANGUAGE=en:Doctors Without Borders
causes.ORG;ALTID=1;LANGUAGE=fr:Médecins Sans Frontières
volunteer.ORG:Community Emergency Response Team;Some County\, Some State
ORG;TYPE=WORK:Sometown Medical Center
The alternative representation of "Doctors Without Borders" is legal according to the current text but breaks the 'volunteer' grouping: the same logical property is requested by the VCard to appear in two places. Similarly, the PREF tag on "Doctors Without Borders" is legal but nonsensical. The logical application representation of the ORG properties with ALTID=1 as the same logical property breaks sort ordering or selection by PREF. Similarly, application representation of PREF as a priority queue of properties breaks for this case. The application is forced to drop consideration of PREF and group in these cases and should be explicitly allowed to do so (even though it may support PREF and grouping in the general case).
This is a complicated issue that needs discussion and that goes well beyond what errata can cover. I'm marking this as "held for document update" to leave the introduction to the issue here, because the confusion about how to interoperate here is real. But readers need to follow any subsequent discussion on the vcarddav mailing list.