iCalendar entities defined in [
RFC 5545] often need to be related to each other or to associated metadata. The specifications below support relationships of the following forms:
-
Structured iCalendar:
-
iCalendar entities can be related to each other in some structured way, for example, as parent, sibling, before, or after.
-
Grouped iCalendar:
-
iCalendar entities can be related to each other as a group. CATEGORIES are often used for this purpose but are problematic for application developers due to their lack of consistency and use as a free-form tag.
-
Linked:
-
Entities can be linked to other entities, such as vCards, through a URI and associated REL and FMTTYPE parameters.
The iCalendar [
RFC 5545] RELATED-TO property has no support for temporal relationships as used by project management tools.
The RELTYPE parameter is extended to take new values defining temporal relationships, a GAP parameter is defined to provide lead and lag values, and RELATED-TO is extended to allow URI values. These changes allow the RELATED-TO property to define a richer set of relationships useful for project management.
This specification defines a new REFID property, which allows arbitrary groups of entities to be associated with the same key value.
REFID is used to identify a key allowing the association of components that are all related to the referring, aggregating component and the retrieval of components based on this key. For example, this may be used to identify the tasks associated with a given project without having to communicate the task structure of the project. A further example is the grouping of all sub-tasks associated with the delivery of a specific package in a package delivery system.
As such, the presence of a REFID property imparts no meaning to the component. It is merely a key to allow retrieval. This is distinct from categorization, which, while allowing grouping, also adds meaning to the component to which it is attached.
The name CONCEPT is used by the Simple Knowledge Organization System, as defined in [
W3C.REC-skos-reference-20090818]. The term "concept" more accurately defines what we often mean by a category. It's not the text string that is important but the meaning attached to it. For example, the term "football" can mean very different sports.
The introduction of CONCEPT allows a more structured approach to categorization, with the possibility of namespaced and path-like values. Unlike REFID, the CONCEPT property imparts some meaning. It is assumed that the value of this property will reference a well-defined category.
The current CATEGORIES property defined in [
RFC 5545] is used as a free-form 'tagging' field. These values have some meaning to those who apply them but not necessarily to any consumer. As such, it is difficult to establish formal relationships between components based on their category.
Rather than attempt to add semantics to the CATEGORIES property, it seems best to continue its usage as an informal tag and establish a new CONCEPT property with more constraints.
The currently existing iCalendar standard [
RFC 5545] lacks a general purpose method for referencing additional, external information relating to calendar components.
This document proposes a method for referencing typed external information that can provide additional information about an iCalendar component. This new LINK property is closely aligned to [
RFC 8288], which defines the generic concept of Web Linking, as well as its expression in the HTTP LINK header field.
The LINK property defines a typed reference or relation to external metadata or related resources. By providing type and format information as parameters, clients and servers are able to discover interesting references and make use of them, perhaps for indexing or the presentation of interesting links for the user.
Calendar components are often grouped into collections to represent a calendar or a series of tasks, for example, Calendaring Extensions to WebDAV (CalDAV) calendar collections [
RFC 4791].
It is also often necessary to reference calendar components in other collections. For example, a VEVENT might refer to a VTODO from which it was derived. The PARENT, SIBLING, and CHILD relationships defined for the RELATED-TO property only allow for a unique identifier (UID), which is inadequate for many purposes. Allowing other value types for those relationships may help but would cause backward-compatibility issues. The LINK property can link components in different collections or even on different servers.
When publishing events, it is useful to be able to refer back to the source of that information. The actual event may have been consumed from a feed or an ics file on a website. A LINK property can provide a reference to the originator of the event.
Beyond the need to relate elements temporally, project management tools often need to be able to specify the relationships between the various events and tasks that make up a project. The LINK property provides such a mechanism.
The LINK property
MUST NOT be treated as just another attachment. The ATTACH property defined in [
RFC 5545] has been extended by [
RFC 8607] to handle server-side management and stripping of inline data and to provide additional data about the attachment (size, filename, etc.).
Additionally, clients may choose to handle attachments differently from the LINK property, as attachments are often an integral part of the message, for example, the agenda.
In general, the calendar entity should be self explanatory without the need to download referenced metadata, such as a web page.
However, to facilitate offline display, the link type may identify important pieces of data that should be downloaded in advance.
The key words "
MUST", "
MUST NOT", "
REQUIRED", "
SHALL", "
SHALL NOT", "
SHOULD", "
SHOULD NOT", "
RECOMMENDED", "
NOT RECOMMENDED", "
MAY", and "
OPTIONAL" in this document are to be interpreted as described in BCP 14 [
RFC 2119] [
RFC 8174] when, and only when, they appear in all capitals, as shown here.
The notation used in this memo to (re-)define iCalendar elements is the ABNF notation of [
RFC 5234], as used by [
RFC 5545]. Any syntax elements shown below that are not explicitly defined in this specification come from iCalendar [RFC5545].