Directory in RDF: A Process

By Garret Wilson

Version 2007-04-01

This document outlines a process for creating a specification for an RDF representation of [RFC 2425] (Directory), [RFC 2426] (vCard), and [RFC 2445] (iCalendar). Rather than immediately presenting a definition of one or more RDF ontologies, this specification first declares a set of principles and a set of transformation rules that can be used to produce such an RDF ontology.

Principles

Before actually producing an RDF ontology, it is useful to determine what sort of ontology is desired. The following principals will guide the methodology used for producing an RDF version of directory information:

Namespaces

Taking into consideration the relationship among the Directory, vCard, and iCalendar specifications, there shall be three namespaces to identify three respective related ontologies:

directory: [RFC 2425] (text/directory)
http://www.w3.org/2007/directory/ns#
vcard: [RFC 2426] (text/directory, text/x-vcard)
http://www.w3.org/2007/directory/vcard/ns#
icalendar: [RFC 2445] (text/calendar)
http://www.w3.org/2007/directory/icalendar/ns#

Naming Conventions

All RDF type and property names shall use mixed case or Camel Case. RDF type names shall use an initial uppercase character, and RDF property names shall use an initial lowercase character. This provides consistency with current naming practices. See:

Syntactic Entities/Components

Each component defined by the special type pair BEGIN and END shall be represented by an RDF class. e.g. The value defined by the vCard BEGIN:VCARD/END:VCARD pair would be represented as a vcard:VCard class.

[RFC 2425] Directory Components
[RFC 2426] vCard Components
VCARD
[RFC 2445] iCalendar Components
VCALENDAR, VEVENT, VTODO, VJOURNAL, VFREEBUSY, VTIMEZONE, STANDARD, DAYLIGHT, VALARM

Type/Property Names

Each Directory type name (or property name in iCalendar) shall be converted to an RDF property. e.g. The vCard ORG type produces the vcard:org property. Some propoerties have no use in an RDF ontology because of their syntactic purpose, but are provided here for completeness.

[RFC 2425] Directory Types
SOURCE, NAME, PROFILE, BEGIN, END
[RFC 2426] vCard Types
FN, N, NICKNAME, PHOTO, BDAY, ADR, LABEL, TEL, EMAIL, MAILER, TZ, GEO, TITLE, ROLE, LOGO, AGENT, ORG, CATEGORIES, NOTE, PRODID, REV, SORT-STRING, SOUND, URL, UID, VERSION, CLASS, KEY
[RFC 2445] iCalendar Properties
CALSCALE, METHOD, PRODID, VERSION, ATTACH, CATEGORIES, CLASS, COMMENT, DESCRIPTION, GEO, LOCATION, PERCENT_COMPLETE, PRIORITY, RESOURCES, STATUS, SUMMARY, COMPLETED, DTEND, DUE, DTSTART, DURATION, FREEBUSY, TRANSP, TZID, TZNAME, TZOFFSETFROM, TZOFFSETTO, TZURL, ATTENDEE, CONTACT, ORGANIZER, RECURRENCE_ID, RELATED_TO, URL, UID, EXDATE, EXRULE, RDATE, RRULE, ACTION, REPEAT, TRIGGER, CREATED, DTSTAMP, LAST_MODIFIED, SEQUENCE, REQUEST-STATUS

Type/Property Parameters

Each defined parameter for a type/property shall be converted to an RDF property. e.g. The Directory LANGUAGE parameter would be indicated by a directory:language property of a value resource such as vcard:Adr. Some parameters have syntactical purposes and will not be appropriate for inclusion into an RDF ontology.

[RFC 2425] Directory Type Parameters
[RFC 2426] vCard Type Parameters
TYPE
[RFC 2445] iCalendar Property Parameters
ALTREP, CN, CUTYPE, DELEGATED-FROM, DELEGATED-TO, DIR, ENCODING, FMTTYPE, FBTYPE, LANGUAGE, MEMBER, PARTSTAT, RANGE, RELATED, RELTYPE, ROLE, RSVP, SENT-BY, TZID, VALUE

Structured Values

If a particular type/property specifies a structured value, an RDF class shall be used to contain the elements of that stuctured value with a name derived from the type/property name. e.g. The value of the vCard ADR type would be represented as a vcard:Adr class that is the value of a vcard:adr property.

[RFC 2425] Structured Values
[RFC 2426] vCard Structured Values
N, ADR, GEO, ORG
[RFC 2445] iCalendar Structured Values
GEO

Structured Value Properties

Each structured value component shall be represented by an RDF property. If there is no official name defined for a particular structured value subcomponent, one shall be created that is as close as possible to the name used in the specification in referring to that component. e.g. The subcomponent "Additional Name" of the vCard N type would appear as a vcard:additionalName property of the vcard:N class which would appear as a value of the vcard:n property.

[RFC 2425] Structured Value Properties
[RFC 2426] vCard Structured Value Properties
N: Family Name, Given Name, Additional Names, Honorific Prefixes, and Honorific Suffixes; ADR: post office box; extended address; street address; locality; region; postal code; country name; GEO: latitude, longitude; ORG: organizational name, originizational unit names
[RFC 2445] iCalendar Structured Value Properties

Value Types

Each value type if possible shall be replaced with an existing RDF typed literal data type such as those found in XML Schema Datatypes. As values should be equivalent regardless of lexical form, the lexical rules of the RDF data type will apply when the value is stored in RDF. Value types which indicate other resources (such as email addresses, telephone numbers, and existing entities such as vCards) will be indicated by normal RDF URI reference. e.g. The boolean Directory value type would be represented as a typed literal with the data type http://www.w3.org/2001/XMLSchema#boolean.

[RFC 2425] Value Types
uri, text, date, time, date-time, integer, boolean, float, x-name, iana-token
[RFC 2426] vCard Value Types
binary, vcard, phone-number, utc-offset
[RFC 2445] iCalendar Value Types
BINARY, BOOLEAN, CAL-ADDRESS, DATE, DATE-TIME, DURATION, FLOAT, INTEGER, PERIOD, RECUR, TEXT, TIME, URI, UTC-OFFSET, x-name, iana-token

Value Representation

RDF allows simple one-to-one property-value correspondances, although a single value may be a list of values. The syntax of Directory, vCard, and iCalendar allows for many properties to have a one-to-many relationship with values, in which a single property may contain one or more values. Furthermore, the RDF data model makes restrictions on where literals may appear in an RDF instance (e.g. string literals cannot appear as a subject of an RDF statement, nor may they appear as elements in a list). To compensate for these disparities, the following rules shall be applied when representing Directory data in RDF:

  1. If possible, a property value should be represented as a single RDF resource or RDF literal.
  2. If a property allows multiple values for which order is insignificant, each value should be represented by a separate RDF property and value.
  3. If a property allows multiple values the order of which is significant (e.g. the vCard N type Additional Name component), or if a property inherently indicates that the value should be plural (e.g. the vCard CATEGORIES type), the RDF property value may be an rdf:List containing the multiple values.
  4. If a property calls for a literal value yet specifies parameters for that value, or if a literal value appears in some other circumstance in which an RDF resource is necessary (such as an element of rdf:List), a blank node shall be used as the property value with the literal value appearing as the property of the blank node's rdf:value property.

RDF Classes

[TODO]

RDF Properties

[TODO complete]

Source Type/Property/Parameter Name Description RDF Property
[RFC 2425] SOURCE To identify the source of directory information contained in the content type. directory:source
[RFC 2425] NAME To identify the displayable name of the directory entity to which information in the content type pertains. directory:name
[RFC 2425] PROFILE To identify the type of directory entity to which information in the content type pertains. directory:profile
[RFC 2425] BEGIN To denote the beginning of a syntactic entity within a text/directory content-type. directory:begin
[RFC 2425] END To denote the end of a syntactic entity within a text/directory content-type. directory:end
[RFC 2426] FN To specify the formatted text corresponding to the name of the object the vCard represents. vcard:fn
[RFC 2426] N To specify the components of the name of the object the vCard represents. vcard:n
[RFC 2426] NICKNAME To specify the text corresponding to the nickname of the object the vCard represents. vcard:nickname
[RFC 2426] PHOTO To specify an image or photograph information that annotates some aspect of the object the vCard represents. vcard:photo
[RFC 2426] BDAY To specify the birth date of the object the vCard represents. vcard:bday
[RFC 2426] ADR To specify the components of the delivery address for the vCard object. vcard:adr
[RFC 2426] LABEL To specify the formatted text corresponding to delivery address of the object the vCard represents. vcard:label
[RFC 2426] TEL To specify the telephone number for telephony communication with the object the vCard represents. vcard:tel
[RFC 2426] EMAIL To specify the electronic mail address for communication with the object the vCard represents. vcard:email
[RFC 2426] MAILER To specify the type of electronic mail software that is used by the individual associated with the vCard. vcard:mailer
[RFC 2426] TZ To specify information related to the time zone of the object the vCard represents. vcard:tz
[RFC 2426] GEO To specify information related to the global positioning of the object the vCard represents. vcard:geo
[RFC 2426] TITLE To specify the job title, functional position or function of the object the vCard represents. vcard:title
[RFC 2426] ROLE To specify information concerning the role, occupation, or business category of the object the vCard represents. vcard:role
[RFC 2426] LOGO To specify a graphic image of a logo associated with the object the vCard represents. vcard:logo
[RFC 2426] AGENT To specify information about another person who will act on behalf of the individual or resource associated with the vCard. vcard:agent
[RFC 2426] ORG To specify the organizational name and units associated with the vCard. vcard:org
[RFC 2426] CATEGORIES To specify application category information about the vCard. vcard:categories
[RFC 2426] NOTE To specify supplemental information or a comment that is associated with the vCard. vcard:note
[RFC 2426] PRODID To specify the identifier for the product that created the vCard object. vcard:prodid
[RFC 2426] REV To specify revision information about the current vCard. vcard:rev
[RFC 2426] SORT-STRING To specify the family name or given name text to be used for national-language-specific sorting of the FN and N types. vcard:sortString
[RFC 2426] SOUND To specify a digital sound content information that annotates some aspect of the vCard. By default this type is used to specify the proper pronunciation of the name type value of the vCard. vcard:sound
[RFC 2426] UID To specify a value that represents a globally unique identifier corresponding to the individual or resource associated with the vCard. vcard:uid
[RFC 2426] URL To specify a uniform resource locator associated with the object that the vCard refers to. vcard:url
[RFC 2426] VERSION To specify the version of the vCard specification used to format this vCard. vcard:version
[RFC 2426] CLASS To specify the access classification for a vCard object. vcard:class
[RFC 2426] KEY To specify a public key or authentication certificate associated with the object that the vCard represents. vcard:key
[RFC 2445] CALSCALE This property defines the calendar scale used for the calendar information specified in the iCalendar object. icalendar:calscale
[RFC 2445] METHOD This property defines the iCalendar object method associated with the calendar object. icalendar:method
[RFC 2445] PRODID This property specifies the identifier for the product that created the iCalendar object. icalendar:prodid
[RFC 2445] VERSION This property specifies the identifier corresponding to the highest version number or the minimum and maximum range of the iCalendar specification that is required in order to interpret the iCalendar object. icalendar:version
[RFC 2445] ATTACH The property provides the capability to associate a document object with a calendar component. icalendar:attach
[RFC 2445] CATEGORIES This property defines the categories for a calendar component. icalendar:categories
[RFC 2445] CLASS This property defines the access classification for a calendar component. icalendar:class
[RFC 2445] COMMENT This property specifies non-processing information intended to provide a comment to the calendar user. icalendar:comment
[RFC 2445] DESCRIPTION This property provides a more complete description of the calendar component, than that provided by the "SUMMARY" property. icalendar:description
[RFC 2445] GEO This property specifies information related to the global position for the activity specified by a calendar component. icalendar:geo
[RFC 2445] LOCATION The property defines the intended venue for the activity defined by a calendar component. icalendar:location
[RFC 2445] PERCENT_COMPLETE This property is used by an assignee or delegatee of a to-do to convey the percent completion of a to-do to the Organizer. icalendar:percentComplete
[RFC 2445] PRIORITY The property defines the relative priority for a calendar component. icalendar:priority
[RFC 2445] RESOURCES This property defines the equipment or resources anticipated for an activity specified by a calendar entity. icalendar:resources
[RFC 2445] STATUS This property defines the overall status or confirmation for the calendar component. icalendar:status
[RFC 2445] SUMMARY This property defines a short summary or subject for the calendar component. icalendar:summary
[RFC 2445] COMPLETED This property defines the date and time that a to-do was actually completed. icalendar:completed
[RFC 2445] DTEND This property specifies the date and time that a calendar component ends. icalendar:dtend
[RFC 2445] DUE This property defines the date and time that a to-do is expected to be completed. icalendar:due
[RFC 2445] DTSTART This property specifies when the calendar component begins. icalendar:dtstart
[RFC 2445] DURATION The property specifies a positive duration of time. icalendar:duration
[RFC 2445] FREEBUSY The property defines one or more free or busy time intervals. icalendar:freebusy
[RFC 2445] TRANSP This property defines whether an event is transparent or not to busy time searches. icalendar:transp
[RFC 2445] TZID This property specifies the text value that uniquely identifies the "VTIMEZONE" calendar component. icalendar:tzid
[RFC 2445] TZNAME This property specifies the customary designation for a time zone description. icalendar:tzname
[RFC 2445] TZOFFSETFROM This property specifies the offset which is in use prior to this time zone observance. icalendar:tzoffsetfrom
[RFC 2445] TZOFFSETTO This property specifies the offset which is in use in this time zone observance. icalendar:tzoffsetto
[RFC 2445] TZURL The TZURL provides a means for a VTIMEZONE component to point to a network location that can be used to retrieve an up-to-date version of itself. icalendar:tzurl
[RFC 2445] ATTENDEE The property defines an "Attendee" within a calendar component. icalendar:attendee
[RFC 2445] CONTACT The property is used to represent contact information or alternately a reference to contact information associated with the calendar component. icalendar:contact
[RFC 2445] ORGANIZER The property defines the organizer for a calendar component. icalendar:organizer
[RFC 2445] RECURRENCE_ID This property is used in conjunction with the "UID" and "SEQUENCE" property to identify a specific instance of a recurring "VEVENT", "VTODO" or "VJOURNAL" calendar component. The property value is the effective value of the "DTSTART" property of the recurrence instance. icalendar:recurrenceID
[RFC 2445] RELATED_TO The property is used to represent a relationship or reference between one calendar component and another. icalendar:relatedTo
[RFC 2445] URL This property defines a Uniform Resource Locator (URL) associated with the iCalendar object. icalendar:url
[RFC 2445] UID This property defines the persistent, globally unique identifier for the calendar component. icalendar:uid
[RFC 2445] EXDATE This property defines the list of date/time exceptions for a recurring calendar component. icalendar:exdate
[RFC 2445] EXRULE This property defines a rule or repeating pattern for an exception to a recurrence set. icalendar:exrule
[RFC 2445] RDATE This property defines the list of date/times for a recurrence set. icalendar:rdate
[RFC 2445] RRULE This property defines a rule or repeating pattern for recurring events, to-dos, or time zone definitions. icalendar:rrule
[RFC 2445] ACTION This property defines the action to be invoked when an alarm is triggered. icalendar:action
[RFC 2445] REPEAT This property defines the number of time the alarm should be repeated, after the initial trigger. icalendar:repeat
[RFC 2445] TRIGGER This property specifies when an alarm will trigger. icalendar:trigger
[RFC 2445] CREATED This property specifies the date and time that the calendar information was created by the calendar user agent in the calendar store. icalendar:created
[RFC 2445] DTSTAMP The property indicates the date/time that the instance of the iCalendar object was created. icalendar:dtstamp
[RFC 2445] LAST_MODIFIED The property specifies the date and time that the information associated with the calendar component was last revised in the calendar store. icalendar:lastModified
[RFC 2445] SEQUENCE This property defines the revision sequence number of the calendar component within a sequence of revisions. icalendar:sequence
[RFC 2445] REQUEST-STATUS This property defines the status code returned for a scheduling request. icalendar:requestStatus