CALSCH G. FitzPatrick Internet-Draft SkiCal Consortium Expires: April 25, 2003 P. Lanner÷ Metamatrix N. Hjelm Soft Applications October 25, 2002 SkiCal - an extension of iCalendar draft-many-ical-ski-06 Status of this Memo This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http:// www.ietf.org/ietf/1id-abstracts.txt. The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. This Internet-Draft will expire on April 25, 2003. Copyright Notice Copyright (C) The Internet Society (2002). All Rights Reserved. Abstract This Memo defines the SkiCal format. SkiCal is a machine-readable format for the interchange of enhanced yellow-page directory listings. SkiCal expands the traditional property-set of name, address, telephone number and business category, adding structured information about people, places, things, activities and the conditions and terms for interaction with resources. SkiCal provides a structure for information about dates FitzPatrick, et al. Expires April 25, 2003 [Page 1] Internet-Draft SkiCal October 2002 and times, directions, rules and recommendations for participation, pricing and reservation schemes, access information for those with special needs, ownership and responsibilities and promotional material. The referents of these listings, which are both events and persistent resources are referred to in this draft as SkiSources. SkiCal is based on and extends the iCalendar format as defined by RFC-2445, Internet Calendaring and Scheduling Core Object Specification [3] (iCalendar). SkiCal objects are comprised of either VEVENT components with the addition of new properties and property parameters, or the SkiCal specific VOPTIME calendar component described in this memo. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . 4 2. Reading Instructions and Conventions . . . . . . . . . . . 5 2.1 SkiCal Terminology . . . . . . . . . . . . . . . . . . . . 5 2.1.1 SkiCal . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.2 SkiSource . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.3 SkiCal object . . . . . . . . . . . . . . . . . . . . . . 6 2.1.4 Publisher . . . . . . . . . . . . . . . . . . . . . . . . 6 2.1.5 List . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.1.6 TimeSpender . . . . . . . . . . . . . . . . . . . . . . . 6 2.1.7 The 'Wha' Interrogatives . . . . . . . . . . . . . . . . . 6 3. SkiCal specific Property Parameters . . . . . . . . . . . 8 3.1 Item . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.2 Namespace Reference . . . . . . . . . . . . . . . . . . . 9 3.3 OPTIMESET reference . . . . . . . . . . . . . . . . . . . 10 3.4 SKiROLE . . . . . . . . . . . . . . . . . . . . . . . . . 11 4. SkiCal Specific Property Value Data Types . . . . . . . . 14 4.1 The OpeningTimes Set . . . . . . . . . . . . . . . . . . . 14 4.1.1 Terms used in the OPTIMESET data value declaration . . . 14 4.1.2 Optimelist DTD . . . . . . . . . . . . . . . . . . . . . . 17 4.2 Term of the OPTIMESET . . . . . . . . . . . . . . . . . . 18 4.3 Seasons of the OPTIMESET . . . . . . . . . . . . . . . . . 21 4.4 Days of the OPTIMESET . . . . . . . . . . . . . . . . . . 23 4.5 Hours of the OPTIMESET . . . . . . . . . . . . . . . . . . 25 4.6 Minutes of the OPTIMESET . . . . . . . . . . . . . . . . . 25 4.7 Seconds of the OPTIMESET . . . . . . . . . . . . . . . . . 26 5. SkiCal specific Calendar Component . . . . . . . . . . . . 28 5.1 The OpTime calendar component . . . . . . . . . . . . . . 28 6. SkiCal specific Component Properties . . . . . . . . . . . 32 6.1 WHAT properties . . . . . . . . . . . . . . . . . . . . . 33 6.1.1 Title . . . . . . . . . . . . . . . . . . . . . . . . . . 33 6.1.2 Persons . . . . . . . . . . . . . . . . . . . . . . . . . 34 6.1.3 Thinks . . . . . . . . . . . . . . . . . . . . . . . . . . 35 6.1.4 Things . . . . . . . . . . . . . . . . . . . . . . . . . . 36 FitzPatrick, et al. Expires April 25, 2003 [Page 2] Internet-Draft SkiCal October 2002 6.1.5 Actions . . . . . . . . . . . . . . . . . . . . . . . . . 38 6.1.6 Part relationship to another SkiSource . . . . . . . . . . 39 6.1.7 Language used at the SkiSource . . . . . . . . . . . . . . 40 6.1.8 Orientation . . . . . . . . . . . . . . . . . . . . . . . 42 6.1.9 What URL . . . . . . . . . . . . . . . . . . . . . . . . . 43 6.1.10 SkiSource Unique Identifier . . . . . . . . . . . . . . . 44 6.2 WHEN properties . . . . . . . . . . . . . . . . . . . . . 45 6.2.1 Date-time open . . . . . . . . . . . . . . . . . . . . . . 46 6.3 WHERE properties . . . . . . . . . . . . . . . . . . . . . 47 6.3.1 Venue . . . . . . . . . . . . . . . . . . . . . . . . . . 47 6.3.2 Directions . . . . . . . . . . . . . . . . . . . . . . . . 48 6.3.3 Place name . . . . . . . . . . . . . . . . . . . . . . . . 50 6.4 WHOW (HOW) properties . . . . . . . . . . . . . . . . . . 51 6.4.1 Requirements . . . . . . . . . . . . . . . . . . . . . . . 52 6.4.2 Recommendations . . . . . . . . . . . . . . . . . . . . . 53 6.4.3 Prohibited . . . . . . . . . . . . . . . . . . . . . . . . 54 6.4.4 Price . . . . . . . . . . . . . . . . . . . . . . . . . . 55 6.4.5 Bookings . . . . . . . . . . . . . . . . . . . . . . . . . 58 6.4.6 Special access facilities . . . . . . . . . . . . . . . . 59 6.4.7 Accepted method of payment . . . . . . . . . . . . . . . . 60 6.5 WHY properties . . . . . . . . . . . . . . . . . . . . . . 61 6.5.1 Promotion . . . . . . . . . . . . . . . . . . . . . . . . 62 6.6 WHO properties . . . . . . . . . . . . . . . . . . . . . . 63 6.6.1 Control . . . . . . . . . . . . . . . . . . . . . . . . . 63 6.7 MANAGEMENT properties . . . . . . . . . . . . . . . . . . 65 6.7.1 Publisher . . . . . . . . . . . . . . . . . . . . . . . . 65 6.7.2 SkiCal Version . . . . . . . . . . . . . . . . . . . . . . 66 6.7.3 Namespace . . . . . . . . . . . . . . . . . . . . . . . . 67 6.7.4 Open Times . . . . . . . . . . . . . . . . . . . . . . . . 68 7. Security considerations . . . . . . . . . . . . . . . . . 72 8. Internationalisation and localisation . . . . . . . . . . 73 9. Communication protocol . . . . . . . . . . . . . . . . . . 74 10. Choosing values from lists . . . . . . . . . . . . . . . . 75 11. Examples . . . . . . . . . . . . . . . . . . . . . . . . . 76 References . . . . . . . . . . . . . . . . . . . . . . . . 78 Authors' Addresses . . . . . . . . . . . . . . . . . . . . 79 A. Acknowledgements . . . . . . . . . . . . . . . . . . . . . 80 Full Copyright Statement . . . . . . . . . . . . . . . . . 81 FitzPatrick, et al. Expires April 25, 2003 [Page 3] Internet-Draft SkiCal October 2002 1. Introduction SkiCal adapts the iCalendar usage domain of appointments and business meetings to the needs of producers, brokers and end-users of resources and services in commerce, tourism, sport, recreation, health-care, culture, education etc. SkiCal users are both "TimeSpenders" seeking information about available resources (SkiSources) and "Publishers" wishing to make that information public. Machine-readable directory information serves several purposes; 1. The organization of object properties into structures convenient for rapid, efficient storage and retrieval. 2. The exchange of compatible objects of information across divergent platforms 3. The facilitation of automatically generated lay-out for print, screen and audio representations. 4. The facilitation of automatic translation. 5. The wide-scale discovery and harvesting of information via the Internet with previously unobtainable accuracy. FitzPatrick, et al. Expires April 25, 2003 [Page 4] Internet-Draft SkiCal October 2002 2. Reading Instructions and Conventions This document is intended to be read alongside RFC-2445 [3]. The same basic grammar and formatting conventions that apply to iCal, also apply to SkiCal. For the sake of brevity, the syntax and clarifications of the data-types, properties and property parameters of RFC-2445 will not be repeated here. The notation used in this memo is the ABNF notation of RFC-2234 [6]. Readers intending on implementing the format defined in this memo should be familiar with this notation in order to properly interpret the specifications. Also, they MUST be familiar with the iCalendar core object specification (RFC-2445 [3]). The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC-2119 [2]. 2.1 SkiCal Terminology The following terms are used in this memo: 2.1.1 SkiCal The Term "SkiCal" refers to the methodology described in this note. Though originally "S K I" reflected the Scandinavian origins of this effort, serving as an acronym for "Svenska Kalender Initiativet" (Swedish Calendar Initiative), this interpretation of the SKi acronym was changed in September 2000 so that "S K I" now stands for the "Structured Knowledge Initiative". There is no relationship to the winter sport "skiing", though of course Skiing events could be described using SkiCal. 2.1.2 SkiSource The term "SkiSource" is used to denote a resource existing in time and space. A SkiSource could be a restaurant, a clothing store, a theatre or individual performance at the theatre, a public drinking fountain, a hospital emergency ward, a service station, a radio program, a webcast, or any other similar resource. Today such resources are listed in various directories, such as telephone catalogs, the entertainment section of newspapers, television and radio program guides, Internet guides, tourist brochures, the academic schedules of schools, or a community's listing of public services. FitzPatrick, et al. Expires April 25, 2003 [Page 5] Internet-Draft SkiCal October 2002 2.1.3 SkiCal object The term "SkiCal object" is used in this memo to denote the calendar object description of a SkiSource using the mime-directory format described in RFC2445 as follows; "The format for the iCalendar object is based on the syntax of the RFC 2425 content type. While the iCalendar object is not a profile of the RFC 2425 content type, it does reuse a number of the elements from the RFC 2425 specification." 2.1.4 Publisher The term "Publisher" is used in this memo to denote the publisher(s) of SkiCal objects. Publishers could be the owners or producers of a SkiSource. Publishers could be infomediaries making public the existence of a SkiSource. 2.1.5 List The term "list" is used to denote a pre-published enumeration or taxonomy of value-terms. It is RECOMMENDED that publishers use terms from such lists as the values of TEXT type properties in order to facilitate the machine readability of their information. A method for referring to such a list is described in this memo. 2.1.6 TimeSpender The term "TimeSpender" is used in this memo to denote the end consumer or beneficiary of SkiCal information. SkiCal is structured from the view point of the TimeSpender. A typical SkiCal object contains the answers to the most likely questions a TimeSpender might ask in order to interact (or make decisions about interacting) with a SkiSource. 2.1.7 The 'Wha' Interrogatives The new properties introduced in this memo, as well as the original properties of RFC2445, are herein sorted by their function as the answers to 6 categories of queries. 2.1.7.1 WHAT The WHAT property is the place holder for the answers to questions such as: What is it? What is happening? What is there? What is it called? What people, things and concepts will be involved? 2.1.7.2 WHEN The WHEN property is the place holder for the answers to questions FitzPatrick, et al. Expires April 25, 2003 [Page 6] Internet-Draft SkiCal October 2002 such as: When will it happen? When is it open? When can I go there? 2.1.7.3 WHERE The WHERE property is the place holder for the answers to questions such as: Where will it happen? Where is it located? 2.1.7.4 WHOW The WHOW property is the place holder for the answers to questions such as: How can I attend? How can I join? How can I buy? The word "how" is intentionally misspelled to indicate relationship to the other interrogatives, all beginning with "WH". 2.1.7.5 WHY The WHY property is the place holder for the answers to questions such as: Why is this happening? Why is this of interest or value to me? 2.1.7.6 WHO The WHO property is the place holder for the answers to questions such as: Who is the owner? Who is the producer? Who is Responsible? Who do I sue? FitzPatrick, et al. Expires April 25, 2003 [Page 7] Internet-Draft SkiCal October 2002 3. SkiCal specific Property Parameters The following SkiCal property parameters are in addition to those defined by RFC-2445 Section 4.2 [3] and may be used as specified for the individual properties of this memo. skicalparameters = / item ; specifies a specific aspect or resource ; as the subject of a property / nsref ; points to a NAMESPACE property declaration ; containing the URI of a list of values / opref ; points to an OPTIMESET qualifying ; the subject of a property / skirole ; qualifies the role of the subject ; of a property --------------------------------------------------------------------- The following table shows the possible use of SkiCal property parameters with SkiCal properties. item nsref opref skirole | | | access --opt------opt-------opt-------------- actions --opt------opt-------opt-------------- bookings --opt------opt-------opt-------------- control --opt------opt-------opt-------opt---- directions --opt------opt-------opt-------------- optimes --opt------opt------------------------ namespace --opt------opt------------------------ orientation --opt------opt-------opt-------------- partrel --opt------opt-------opt-------------- paymethod --opt------opt-------opt-------------- persons --opt------opt-------opt-------opt---- placename --opt------opt-------opt-------------- price --opt------opt-------opt-------------- prohibited --opt------opt-------opt-------------- promo --opt------opt-------opt-------------- publisher --opt------opt-------opt-------opt---- recommended --opt------opt-------opt-------------- required --opt------opt-------opt-------------- FitzPatrick, et al. Expires April 25, 2003 [Page 8] Internet-Draft SkiCal October 2002 skicalver -----------opt------------------------ skilang --opt----------------opt-------------- skuid -----------opt------------------------ things --opt------opt-------opt-------opt---- thinks --opt------opt-------opt-------opt---- title --opt------opt-------opt-------------- whurl -----------opt-------opt-------opt---- use of parameters --------------------------------------------------------------------- 3.1 Item Parameter Name: ITEM Purpose: To specify the name of a specific auxiliary element or part of a SkiSource. Format Definition: The property parameter is defined by the following notation: itemparam = ( ( "ITEM" "=" ) / ( "PRXITEM" "=" prefix ":" ) text ) prefix = 1*( ) ; one or more characters xxx matching the declared prefix of a NAMESPACE property value Description: This parameter identifies particular aspects or parts of a SkiSource when it is desirable to make information about such aspects or parts known. Example: BOOKINGS;PRXITEM="SR:Reptile Room":only outside the Reptile Room! RECOMMENDED;ITEM="The evening tours":Warm sweater or Jacket PROHIBITED;ITEM="During the magic show":Flash cameras BOOKINGS;PRXITEM="K:New Years Eve Dinner";OPREF=NYD: 1-800-256 2222. 3.2 Namespace Reference Parameter Name: NSREF Purpose: To point to a namespace declaration within the same SkiCal FitzPatrick, et al. Expires April 25, 2003 [Page 9] Internet-Draft SkiCal October 2002 object Format Definition: The property parameter is defined by the following notation: nsrefparam = NSREF "=" prefix prefix = 1*( ) ; one or more letters matching the declared ; prefix of a NAMESPACE property value Description: This parameter specifies a prefix that matches a prefix declared as a NAMESPACE property parameter value. The NSREF parameter provides a method for relating the value of the property on which it is used to the appropriate namespace. It is expected that publishers wishing to optimize interoperability will choose values from enumerated lists of value-terms. These lists can be utilized for constraining the values of both properties and property parameters. The declaration for the URI of such a list is accomplished using the NAMESPACE property. The NAMESPACE property can also assign a shorthand prefix to the URI value of the NAMESPACE and this prefix can be referenced using the NSREF property parameter. Example: RESOURCES;NSREF="QLL":HL984 projector PERSONS;NSREF="WW":Bill Clinton PERSONS;SKIROLE="orchester-member";NSREF="WW":Bill Clinton PERSONS;PRXSKIROLE="OM:orchester-member";NSREF="WW":Bill Clinton REQUIRED;NSREF="TNT":NASCT Certificate CATEGORIES;NSREF="SSV";LANG=se:Vuxen Utbilding - Biometrics II 3.3 OPTIMESET reference Parameter Name: OPREF Purpose: To point to an OPTIMESET declaration. Format Definition: The property parameter is defined by the following notation: oprefparam = OPREF "=" id id = 1*( ) ; one or more characters matching the declared ; id of an OPTIMESET property value Description: This parameter specifies an ID that matches an OPTIMESET FitzPatrick, et al. Expires April 25, 2003 [Page 10] Internet-Draft SkiCal October 2002 ID as declared in the OPTIMES property. This parameter provides a method for relating the value of the property within which it is used to the appropriate OPTIMESET. Example: RESOURCES;OPREF="HRTS14":Flight controller on duty PERSONS;OPREF="BHCC":Patrik Jonasson PERSONS;SKIROLE="Supervisor";OPREF="J7":James Payne PERSONS;PRXSKIROLE="OM:MC";OPREF="DCD55":Wycliff Jean REQUIRED;OPREF="L09":Resident parking permit. CATEGORIES;OPREF="SSV";LANG=se:Vuxen Utbilding - Biometrics II 3.4 SKiROLE Parameter Name: SKIROLE Purpose: To clarify the role of Property values in a SkiCal object. The use of the ROLE Property Parameter as defined in RFC-2445 [3] Section 4.2.16 Participation Role is constrained to specific component properties and specific default values. To avoid incompatibility, SkiCal defines a new property parameter - SKIROLE. Format Definition: The property parameter is defined by the following notation: FitzPatrick, et al. Expires April 25, 2003 [Page 11] Internet-Draft SkiCal October 2002 Skiroleparam = ( (( "SKIROLE" "=" ) / ( "PRXSKIROLE" "=" prefix ":" )) DQUOTE text DQUOTE ) ; It is RECOMMENDED that the text value be ; chosen from a list, as described ; in this memo. Some examples of such lists are ; given here: ; as used with the PERSONS property sampleskirolelist1 = ( "PERFORMER" / "HOST" / "COMPOSER" / "CONDUCTOR" / "SALES MANAGER" / "SPECIALIST" / "EDITOR" / "PRODUCER" / "GUIDE" / "SPEAKER" / "CHAIR" / "PRESENT" / "REFERENCED" / "INVITED" ) ; as used with the THINGS property sampleskirolelist2 = ( "PRESENT" / "EXHIBITED" / "FOR-SALE" / "FOR-AUCTION" / "FOR-HIRE" / "APPRAISED" / "PREMIERED" / "DEMONSTRATED" ) ; as used with the THINKS property sampleskirolelist3 = ( "STUDIED" / "REFERENCED" / "SUPPORTED" / "DEBATED" / "CRITICIZED" ) ) Description: The SKIROLE property parameter declares or clarifies the role of Persons, Organizations, Things, or Thinks declared as the value for the Component Property Example: FitzPatrick, et al. Expires April 25, 2003 [Page 12] Internet-Draft SkiCal October 2002 PERSONS;PRXSKiROLE="IPPL:PERFORMER";NSREF="IP":Marilyn Manson PERSONS;PRXSKiROLE="UMLC:COMPOSER":Ludwig van Beethoven PERSONS;SKiROLE="HOTEL MANAGER":Sylvia Barlot PERSONS;SKiROLE="MASTER OF CEREMONIES";NSREF="IP":Creed Bradshaw PERSONS;PRXSKiROLE="MG:HEAD CHEF":Henri Vialach THINGS;SKiROLE="ON-EXHIBITION":Car models of 2001 THINGS;PRXSKiROLE="BBB:FOR-SALE":Levis jeans THINGS;SKiROLE="FOR-HIRE":Golf clubs THINGS;SKiROLE="FOR-SALE":Car models of 2001 THINGS;SKiROLE="DEMONSTRATED":Electrolux refrigerator door computers THINGS;SKiROLE="FOR-AUCTION":Tiger Woods' golf caps THINKS;PRXSKiROLE="ACC:STUDIED";NSREF="L":Impressionism THINKS;SKiROLE="CELEBRATED":Joining the EMU THINKS;SKiROLE="DEBATED":Monarchy THINKS;SKiROLE="SUPPORTED";NSREF="L":Children's rights THINKS;PRXSKiROLE="ABC:REFERENCED":Our plan for the next Millennium THINKS;SKiROLE="FEATURED":The Ontologies of Cyberspace FitzPatrick, et al. Expires April 25, 2003 [Page 13] Internet-Draft SkiCal October 2002 4. SkiCal Specific Property Value Data Types The following SkiCal property value datatypes are in addition to those defined by RFC-2445 Section 4.2 [3] and may be used as specified for the individual properties of this memo. 4.1 The OpeningTimes Set An iCalendar VEVENT component can only describe one complete date- time set and its eventual recurrences, such as office meetings or lunch appointments. Using the SkiCal OPTIMESET of datetime values; OPTERM, OPSEASONS, OPDAYS, OPHOURS and OPMINUTES and OPSECONDS, individual SkiCal properties MAY be qualified with date and time values. For example, through the use of the OPTIMESET a publisher could within one calendar object describe not only the general date-times of a conference, but also when a refreshment bar was open, the telephone times for a help desk, the last date for submitting papers, and the opening times of the conference hall itself. Or in another example, through the use of this OPTIMESET a publisher could within one calendar object describe the operating times of a petrol station, differentiating between levels of service such as when a mechanic was on duty, when the convenience store was open or full service available. Formal Definition: OPTIMESET = "" OPTIMESETcontents "" OPTIMESETattlist = OPTIMESETid OPTIMESETid = "ID=" idvalue idvalue = text OPTIMESETcontents = 1*( "OPTERM" / "OPSEASONS" / "OPDAYS" / "OPHOURS" / "OPMINUTES" / "OPSECONDS" ) 4.1.1 Terms used in the OPTIMESET data value declaration OPEN: Depending upon the property value being qualified, OPEN may indicate open, accessible, in-force, operative, available or any comparable state. FitzPatrick, et al. Expires April 25, 2003 [Page 14] Internet-Draft SkiCal October 2002 NOT-OPEN: Depending upon the property value being qualified, NOT- OPEN may indicate closed, non-accessible, not-in-force, non- operative, not-available or any comparable state. NOT-DETERMINABLE: Dates and times that can not be determined as being open or closed. DATE-TIME VALUE PAIR: Two date-time values separated by one or more solidus "/" characters. Value-pairs are either END- INCLUSIVE or END-EXCLUSIVE. END-INCLUSIVE Value-pairs: The contents of a SKiCal object are formated so as to enable unambiguous machine-readability, but there are of course considerable advantages in maintaining human readability of the same information. Unfortunately common date- time value pairs can be ambiguous. If we hear that someone works from nine to five, then we can with fairly high probability expect her to go home at five o'clock, but if we hear that someone will be in town from the first to the 15th, we, with less assuredness, might assume that they will leave town on the 16th. The former example is END-EXCLUSIVE while the later is END-INCLUSIVE. To facilitate machine-readability it might be convenient to mandate that all value-pairs are either END-INCLUSIVE or END- EXCLUSIVE, but this memo allows both types, both for the sake of human-readability and the fact that END-EXCLUSIVE value-pairs offer an implicit degree of accuracy lacking in END-INCLUSIVE. For example END-EXCLUSIVE 170000/180000 is more suitable than END- INCLUSIVE 170000//175959.99999 in cases where that sort of precision is desirable. The distinction between these two types of value-pairs is made by the number of SOLIDUS characters separating the two values. One SOLIDUS ex: "/" indicates END- EXCLUSIVE pairs and two SOLIDUS ex "//" indicate END-INCLUSIVE value pairs. 0105//0110 START-INCLUSIVE END-INCLUSIVE a six day period including the whole of the 5th day and the whole of the 10th day of January 0105/0110 START-INCLUSIVE END-EXCLUSIVE a five day period including the whole of the 5th day and the whole of the 9th day of January the following combinations are not currently described in this memo START-EXCLUSIVE END-INCLUSIVE a five day period START-EXCLUSIVE END-EXCLUSIVE a four day period PERIOD-EXPLICIT / DURATION-EXPLICIT: This SkiCal memo stipulates FitzPatrick, et al. Expires April 25, 2003 [Page 15] Internet-Draft SkiCal October 2002 the use of either period-explicit or duration-explicit value- pairs. Though at first glance the difference may seem to be only representational, these value-pair declarations must not be treated as interchangeable. See below. PERIOD-EXPLICIT: A period of time that is defined by a specific start and a specific end. This means that whenever the start and end of one value-pair are designated with different time zone identifiers, or whenever a day-light savings change occurs inclusive to the period , or whenever a leap day or leap second occurs inclusive to the period, then the duration of the period value will be lengthened or shortened accordingly. The duration can only be determined when all possible fluctuations in leap years and leap seconds, day light savings schemes and time zone coordinates are accounted for. In a period-explicit value-pair the concluding and initiating instances of the pair are fixed to whatever politically or personally mandated timekeeping is in force for each end of the value-pair. DURATION-EXPLICIT: A period of time that is defined by a specific start coupled to a duration of time or alternatively a specific end coupled to a duration of time. In a duration-explicit value pair, the duration is fixed and can always be calculated as a number of seconds. The start or the end date-times of the duration-explicit value-pair can only be determined when all possible fluctuations in leap years and leap seconds, day light savings schemes and time zone coordinates are accounted for. This means that whenever a day-light savings change is inclusive to the resulting period value, or whenever a leap day or leap second is inclusive to the period value, then the duration of the period value will be maintained and the start - alternatively end, date-time of the period will be moved forward or backwards in time accordingly. Since no timezone identifier can be concatenated to the duration value, a duration-explicit date-time value can only be referenced to one timezone. TWO USES of ISO8601 TIME-DATE PERIODS: In duration-specific value- pairs the amount of time represented must unambiguously be reducible to a number of seconds. For example P2D is the equivalent of PT172800S (1 day = 86400 seconds. For this reason RFC2445 has limited the possible members of this set to Weeks, Days, Hours, Minutes and Seconds, considering the ambiguity involved in the length of a Year or a Month or century. FitzPatrick, et al. Expires April 25, 2003 [Page 16] Internet-Draft SkiCal October 2002 At the same time the same members of the complete set; Centuries, Years, Months, Weeks, Days, Hours, Minutes, Seconds and fractions thereof, make convenient units for reoccurrences which are actually period-explicit. For example; reoccurrences on the third of every month will give instances in time of unequal duration from each other. In this memo the contents of the CYCLE attribue use the full ISO8601 set for reoccurrences. 4.1.1.1 Differences between ISO8601 and RFC2445 Negative Periods of time: When representing PERIOD-EXPLICIT value- pairs, RFC2445 always places the date-time value first in the value pair. Then the dur-value, by being positive (default, or preceded by a plus) or negative (preceded by a minus), determines whether the date-time value serves as the start or end of the period. ISO8601 on the other hand signifies positive or negative durations by the ordering of values in the value pair. If the dur-value precedes (is to the left of) the date-time value then the date-time value to the right is the end of the period. If the dur-value is to the right of the date-time value then the date-time value serves as the start of the period. This memo uses the RFC2445 method for describing negative periods of time. 4.1.2 Optimelist DTD Format Definition: The OpeningTimes set is defined by the following xml 1.0 DTD: 4.2 Term of the OPTIMESET Value Name: OPTERM Purpose: This value type is used to express an interval of time or a point in time. The OPTERM value type when specified is used in FitzPatrick, et al. Expires April 25, 2003 [Page 18] Internet-Draft SkiCal October 2002 computing the OPTIMESET. This value type uses the date and date-time value definitions of RFC 2445 - 4.3.4 Date and 4.3.5 Date-Time as well as Julian Day, Modified Julian Date as standarized by the International Astronomical Union and the Network Time Protocol first described in RFC 868 and elaborated upon in RFC1305 . The opterm value-type is unique in the OPTIMESET insomuch as it is "anchored" or fixed to the common era. No other OPTIMESET value-type shares this function. Without the Opterm, other value-types can never point to a specific time or date - only infinite free floating reoccurrences such as every Monday. On the other hand Opterms can not reoccur. OPTERM serve the purpose of anchoring and constraining the reoccurrences of it contents, but is also suitable for declaring single events or points in time. In the later case the OPTERM will have no contents. Formal Definition: opterm = "" optermcontents "" optermattlist = range [id] [idref] state rangevaluetype range = "range=" DQUOTE optermvalue *[ "," optermvalue ] DQUOTE id = "ID=" idvalue idref = "IDREF=" idrefvalue state = "state=" ("NOT-OPEN" / "OPEN" / "UNDETERMINED") rangevaluetype = "rangevaluetype=" ("Gregorian" / "JDN" / "MJD" / "TP") optermvalue = optermper_explvalue / optermdur_explvalue optermper_explvalue = ( (date / date-time) "/" ["/"] ((date / date-time) / term-text ) / jdn "/" ["/"] ( jdn / term-text ) / mjd "/" ["/"] ( mjd / term-text ) / tp "/" ["/"] ( tp / term-text ) FitzPatrick, et al. Expires April 25, 2003 [Page 19] Internet-Draft SkiCal October 2002 ) date-time = date "T" time date = date-value date-value = date-fullyear date-month date-mday date-fullyear = 4DIGIT date-month = 2DIGIT ; 01- 12 date-mday = 2DIGIT ; O1-28, 01-29, 01-30, 01-31 time = time-hour time-minute time-second [time-utc] time-hour = 2DIGIT ;00-23 time-minute = 2DIGIT ;00-59 time-second = 2DIGIT ;00-60 [time-fraction] ; The "60" value is used to ; account for "leap" seconds. time-fraction = 1*DIGIT ; as many digits as desired may ; may be used. time-utc = ( "Z" ) / (( "+" / "-") time-hour [ ":" time-minute] )) term-text = "THISANDFUTURE" / "THISANDPRIOR" / "POINT" jdn = float ; a number of days and fractions of days ; Julian Day Number JDN 0.0 corresponds to 12h (noon) on the first day of the Julian Era, 1 January 4713 BC. mjd = float ; Modified Julian Date. The last five digits of ; the Julian Date (jdn - 2,400,000.5) tp = float ; Network Time Protocol representing the number ; of standard seconds since 19000101T000000 ;(MJD 15,020.0). optermdur_explvalue = (date / date-time) "/" rangeperiod rangeperiod = (["+"] / "-") "P" (dur-week / dur-day / dur-time ) dur-week = 1*DIGIT "W" dur-day = 1*DIGIT "D" dur-time = "T" (dur-hour / dur-minute / dur-second) dur-hour = 1*DIGIT "H" [dur-minute] dur-minute = 1*DIGIT "M" [dur-second] FitzPatrick, et al. Expires April 25, 2003 [Page 20] Internet-Draft SkiCal October 2002 dur-second = 1*DIGIT "S" optermcontents = *( "OPSEASONS" / "OPDAYS" / "OPHOURS" / "OPMINUTES" / "OPSECONDS" ) The OPTERM value type is made up of two date-time values separated by one - alternatively two, SOLIDUS characters; "/" or "//" (US- ASCII decimal 47), or one date-time value separated by one or two SOLIDUS characters, from a text value; By the use of THISANDPRIOR the date- time value pair signifies an OPTERM period whose start time is either not relevant or unknown. By the use of THISANDFUTURE the date-time value pair signifies an OPTERM whose conclusion is either not relevant or unknown. OVERLAPING VALUES: For all of the opentimeset members it is permited to have multiple intervals or points as the value of the range attribute, indicated by commas. For ex: range=18880808/ P500D,18890909/P5D. When these values overlap such in the example above, no special consideration will be given to the overlapping date-times. Above all they do not cancel out each other or turn a CLOSED into an OPEN or an OPEN into a CLOSED The OPTERM value includes an ID and an IDREF. Through the ID, an OPTERM value can be used in another OPTIMESET. Through the IDREF, an OPTERM declared in any other optimes set may be used. For example, the following OPTERM might be declared: OPTIMES: and then referred to in another OPTIMES declaration. 4.3 Seasons of the OPTIMESET Value Name: OPSEASON Purpose: This value type is used to express an interval of time. The FitzPatrick, et al. Expires April 25, 2003 [Page 21] Internet-Draft SkiCal October 2002 Opseasons value-type when specified is used in computing the OPTIMESET. The value representation of OPSEASONS is ISO8601:2000 Section 5.2.1.3. sub-section d. "A specific day of the month", Basic Format "--MMDD", modified in this note by the exclusion of "--" to be "MMDD" Formal Definition: opseasons = "" opseasonscontents "" opseasonsattlist = range [id] [idref] state [cycle] range = "range=" DQUOTE opseasonsvalue *[ "," opseasonsvalue ] DQUOTE id = "ID=" idvalue idref = "IDREF=" idrefvalue state = "state=" ("NOT-OPEN" / "OPEN" / "UNDETERMINED") cycle = "cycle=" cycleperiod opseasonsvalue = opseasonsper_explvalue / opseasonsdur_explvalue opseasonsper_explvalue = impliedyeardate "/" ["/"] ( impliedyeardate / seasons-text ) opseasondur_explvalue = impliedyeardate "/" rangeperiod impliedyeardate = date-month date-mday [ "T" time ] seasons-text = date-month = 2DIGIT ; 01- 12 date-mday = 2DIGIT ; O1-28, 01-29, 01-30, 01-31 cycleperiod = "P" (dur-year / dur-month / dur-week / dur-day / dur-time ) dur-year = 1*DIGIT "Y" dur-month = 1*DIGIT "M" opseasonscontents = *( "OPDAYS" / "OPHOURS" / "OPMINUTES" / "OPSECONDS" ) Description: The start (left hand) date-time of an OPSEASONS period may be greater than the end (right hand) date-time of the OPSEASONS period. In which case the OPSEASONS is considered to straddle two FitzPatrick, et al. Expires April 25, 2003 [Page 22] Internet-Draft SkiCal October 2002 adjacent calendar years. An OPSEASONS property value may occur more than once in an OPTIMESET. Examples: OPTIMES;NSREF="MX": PROHIBITED;OPREF="Summer":Studded snow tires RESOURCES;IDREF="Winter_Season":Night Golf by artificial lighting PERSONS;SKIROLE="In-house Tennis Pro";OPREF="Proschedule": Johanna Locke RESOURCES;OPREF="cardays":Park access with motor vehicles 4.4 Days of the OPTIMESET Value Name: OPDAYS Purpose: This value when specified is used in computing the OPTIMESET. This value uses a reduced set of the "BYxxx" values as defined in RFC 2445 - 4.3.10 Recurrence Rule. Formal Definition: opdays = "" opdayscontents "" opdaysattlist = range [id] [idref] [cycle] state rangevaluetype range = "range=" opdaysvalue id = "ID=" idvalue idref = "IDREF=" idrefvalue cycle = "cycle=" cycleperiod state = "state=" ("NOT-OPEN" / "OPEN" / "UNDETERMINED") rangevaluetype = "daytype=" ("WEEK" / "MONTH" / "YEAR" / "NUMBERED" / "NAMED" ) opdaysvalue = ( opwkdayvalue / opmodayvalue / opyrdayvalue ) opwkdayvalue = DQUOTE ( ordweekday / weekdayperiod ) *[ "," ( ordweekday / weekdayperiod ) ] DQUOTE opmodayvalue = DQUOTE ( ordmoday / modayperiod ) *[ "," ( ordmoday / modayperiod ) ] DQUOTE FitzPatrick, et al. Expires April 25, 2003 [Page 23] Internet-Draft SkiCal October 2002 opyrdayvalue = DQUOTE ( ordyrday / ordyrdayperiod ) *[ "," ( yrday / yrdayperiod ) ] DQUOTE ordweekday = [(["+"] ordwk / "-" ordwk)] weekday ordwk = 1DIGIT ;1 to 5 weekday = "SU" / "MO" / "TU" / "WE" / "TH" / "FR" / "SA" ;Corresponding to SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, ;FRIDAY, and SATURDAY days of the week. ordmoday = ["-" ordmo] moday ordmo = 2DIGIT ;01 to 31 moday = 2DIGIT ;01 to 31 ordyrday = ["-" ordyr] yrday ordyr = 3DIGIT ;01 to 366 yrday = 3DIGIT ;01 to 366 weekdayperiod = weekdayperexplicit / weekdaydurexplicit weekdayperexplicet = ordweekday "/" ["/"] ordweekday ; weekdayperexplicet can be used to define an interval of ordinal days ; of the week such as "MO/SA" - from Monday until Saturday weekdaydurexplicet = ordweekday "/" ["/"] rangeperiod modayperiod = modayperexplicit / modaydurexplicit modayperexplicet = ordmoday "/" ["/"] ordmoday modaydurexplicet = ordmoday "/" ["/"] rangeperiod yrdayperiod = yrdayperexplicit / yrdaydurexplicit yrdayperexplicet = ordyrday "/" ["/"] ordyrday ; yrdayperiod can be used to define an interval of ordinal days ; of the year such as "055/095" - from the 55th ; to the 95th day of the year opdayscontents = *( "OPHOURS" / "OPMINUTES" / "OPSECONDS" ) Description: FitzPatrick, et al. Expires April 25, 2003 [Page 24] Internet-Draft SkiCal October 2002 An OPDAYS value may occur more than once in an OPTIMESET. An OPDAYS property value may include one or more comma-separated date- time value pairs for each day or interval of days. Each WEEKDAY value can also be preceded by a positive (+n) or negative (-n) integer. If present, this indicates the nth occurrence of the specific day within the MONTH. For example, +1MO (or simply 1MO) represents the first Monday within the month, whereas -1MO represents the last Monday of the month. Example: 4.5 Hours of the OPTIMESET Value Name: OPHOURS Formal Definition: ophours = "" ophourscontents "" ophourssattlist = range [id] [idref] state [cycle] range = "range=" ophoursvalue id = "ID=" idvalue idref = "IDREF=" idrefvalue state = "state=" ("OPEN" / "NOT-OPEN" / "UNDETERMINED") cycle = "cycle=" cycleperiod ophoursvalue = DQUOTE (ophourper_explvalue / ophourdur_explvalue ) *[ "," ( ophourper_explvalue / ophourdur_explvalue ) ] DQUOTE ophourper_explvalue = time "/" ["/"] ( time / hour-text ) ophourdur_explvalue = time "/" ["/"] rangeperiod ophourscontents = *( "OPMINUTES" / "OPSECONDS" ) 4.6 Minutes of the OPTIMESET Value Name: OPMINUTES FitzPatrick, et al. Expires April 25, 2003 [Page 25] Internet-Draft SkiCal October 2002 Purpose: This value when specified is used in computing the OPTIMESET. This value uses time values as defined in ISO8601 - Section 5.3.1.4. Truncated representations - paragraph f) Basic format. Formal Definition: opminutes = "" opminutescontents "" opminutessattlist = range [id] [idref] state [cycle] range = "range=" DQUOTE opminutesvalue *[ "," opminutesvale]DQUOTE id = "ID=" idvalue idref = "IDREF=" idrefvalue state = "state=" ("NOT-OPEN" / "OPEN" / "UNDETERMINED") cycle = "cycle=" cycleperiod opminutesvalue = opminutesper_explvalue / opminutesdur_explvalue opminutesper_explvalue = time "/" ( time / minute-text ) opminutesdur_explvalue = time "/" rangeperiod opminutesscontents = *( "OPSECONDS" ) Description: This property value allows the use of minute and second time values as qualifiers for particular aspects of a SkiSource. Multiple "period" values are specified by a COMMA character; "," (US- ASCII decimal 44) separated list. Examples: 4.7 Seconds of the OPTIMESET Value Name: OPSECONDS Purpose: This value when specified is used in computing the OPTIMESET. This value uses time values as defined in ISO8601 - Section 5.3.1.4. Truncated representations - paragraph g) Basic format. Formal Definition: FitzPatrick, et al. Expires April 25, 2003 [Page 26] Internet-Draft SkiCal October 2002 opseconds = "" "" opsecondsattlist = range [id] [idref] state [cycle] range = "range=" DQUOTE opsecondsvalue *[ "," opsecondsvalue]DQUOTE id = "ID=" idvalue idref = "IDREF=" idrefvalue state = "state=" ("NOT-OPEN" / "OPEN" / "UNDETERMINED") cycle = "cycle=" cycleperiod opsecondsvalue = opsecondsper_explvalue / opsecondsdur_explvalue opsecondsper_explvalue = time "/" ( time / seconds-text ) opsecondsdur_explvalue = time "/" rangeperiod ; the seconds value-type has no contents Description: This property value allows the use of seconds time values as qualifiers for particular aspects of a SkiSource. Multiple "period" values are specified by a COMMA character; "," (US-ASCII decimal 44) separated list. Examples: FitzPatrick, et al. Expires April 25, 2003 [Page 27] Internet-Draft SkiCal October 2002 5. SkiCal specific Calendar Component The body of an iCalendar object consists of a sequence of calendar properties and one or more calendar components. The calendar properties are attributes that apply to the calendar as a whole. The calendar components are collections of properties that express a particular calendar semantic. For example, the calendar component can specify an event, a to-do, a journal entry, time zone information, or free/busy time information, or an alarm. A SkiCal extended iCalendar object may include a "VOPTIME" calendar component as defined by the following notation: component = ( / optimec ) 5.1 The OpTime calendar component Component Name: "OPTIME Purpose: Provide a grouping of component properties that describe the opening times of a SkiSource. Format Definition: An "OPTIME" calendar component is defined by the following notation: optimec = "BEGIN" ":" "OPTIME" CRLF optimeprop *alarmc "END" ":" "OPTIME" CRLF optimeprop = *( ; the following are optional, ; but MUST NOT occur more than once ; the following are properties ; defined in RFC2445 class / created / description / geo / last-mod / location / organizer / priority / dtstamp / seq / status / summary / transp / FitzPatrick, et al. Expires April 25, 2003 [Page 28] Internet-Draft SkiCal October 2002 uid / url / recurid / ; the following are properties ; defined in this memo skicalver / publisher / skuid / whurl ; the following are optional, ; and MAY occur more than once ; the following are properties ; defined in RFC2445 attach / attendee / categories / comment / contact / related / resources / x-prop / ; the following are properties ; defined in this memo access / actions / bookings / control / directions / dtopen /optimes /namespace / orientation / partrel / paymethod / persons / placename / price / prohibited / promo / recommended required / skicalver / skilang things / thinks / title ) Description: An "OPTIME" calendar component is a grouping of component properties, possibly including "VALARM" calendar components, that describes date-time values that we normally refer to as opening hours or business hours or operating hours. The OPTIME component can be used to declare such times for any imaginable resource. Generally, Opening Time schedules in any significant number are not ideal for visual representation in traditional PIM calendars, since if stored in an "opaque" manner they would "clutter up" the limited visual space available. It is recommended that implementers develop alternative methods for visual representation of Optime calendar components. The "OPTIME" calendar component is identical to the "VEVENT" calendar component with the exception that the Date-time related properties FitzPatrick, et al. Expires April 25, 2003 [Page 29] Internet-Draft SkiCal October 2002 such as DTSTART, DTEND and DURATION have been removed and replaced by the DTOPEN property. Example: The following is an example of the "VOPTIME" calendar component used to represent the business hours of a video rental store that is open daily from 10am to 10pm, except for Fridays and Saturdays, when open to 12pm : BEGIN:VOPTIME UID:20020901T130000Z-123401@host.com DTSTAMP:20020901T1300Z OPTIMES: TITLE:Videorama DTOPEN;OPREF="TS":Monday to Thursday from 10am to 10pm. Open to 12pm on Fridays and Saturdays CLASS:PUBLIC CATEGORIES:ENTERTAINMENT,Video rentals END:VOPTIME The following is an example of a schedule for one academic course, extending across two semesters with a recess for the Christmas holidays: BEGIN:VOPTIME UID:20020901T130000Z-123402@host.com DTSTAMP:20020401T130000Z OPTIMES: DTOPEN;OPREF="0110":Evening classes TITLE:Sensitivity awareness class - HT013. CLASS:PUBLIC CATEGORIES:EDUCATION, BUSINESS ADMIN END:VOPTIME The following is an example of a "VOPTIME" calendar component used to represent the opening of a stretch of freeway. Since the freeway is expected to remain open indefinitely it suffices to merely indicate an opening using the TERM value type. In this example an opening FitzPatrick, et al. Expires April 25, 2003 [Page 30] Internet-Draft SkiCal October 2002 ceremony is also declared : BEGIN:VOPTIME UID:20020901T130000Z-123403@host.com DTSTAMP:20020901T1300Z OPTIMES ID="TYT": OPTIMES: DTOPEN;OPREF="TYT":Freeway opening SUMMARY:The Martello bypass becomes operational. ACTIONS;OPREF="R5T":Grand opening ceremony CLASS:PUBLIC CATEGORIES:TRANSPORTATION, ROADS, FREEWAYS END:VOPTIME FitzPatrick, et al. Expires April 25, 2003 [Page 31] Internet-Draft SkiCal October 2002 6. SkiCal specific Component Properties The class of SkiCal objects is a superset of the class of iCalendar objects. Therefore any component property, which MAY appear in a VEVENT iCalendar component, is also allowed in a SkiCal object. In addition, the following component properties are defined in this memo. eventprop = / *( ; the following are optional, ; but MUST NOT occur more than once publisher / skuid / whurl ; the following are optional, ; and MAY occur more than once access / actions / bookings / control / directions / optimes /namespace / orientation / partrel / paymethod / persons / placename / price / prohibited / promo / recommended required / skicalver / skilang things / thinks / title ) It is RECOMMENDED that publishers chose the terms used as TEXT type property values from authoritative lists of terms. Section 10 For reasons of clarity the properties self-describing the SkiCal object are presented under the "MANAGEMENT" header (Calendar object management), while properties describing the actual SkiSource being described are presented under the interrogative headers; "WHAT", "WHEN", "WHERE", "WHO", "WHY", and "WHOW". For example, the date when a SkiCal object describing a SkiSource was published would be defined by RFC2445 4.8.7.1 Date/Time Created, and this property would be sorted under MANAGEMENT while the date the actual SkiSource being described occurs is defined by RFC2445 4.8.2.4 Date/Time Start which would be sorted under WHEN. The creator of a SkiCal object describing a SkiSource is defined by RFC2445 4.8.4.3 Organizer, and this property would be sorted under MANAGEMENT while the "organizer" or producer of the actual SkiSource being described could be defined by the one of the SkiCal properties such as Section 6.6.1 which would be sorted under WHO. FitzPatrick, et al. Expires April 25, 2003 [Page 32] Internet-Draft SkiCal October 2002 6.1 WHAT properties The following properties serve as place-holders for the answers to user questions about the SkiSource such as "What is it?" and "What is happening?". The properties defined in RFC-2445 [3] related to WHAT are: 4.8.1.2 Categories 4.8.1.5 Description - The description property in RFC2445 can be used to hold any sort of WHA information. 4.8.1.11 Status 4.8.1.12 Summary - The summary property in RFC2445 can be used to hold any sort of WHA information. In addition to the properties named above as defined in RFC-2445 [3], a SkiCal object may include the following properties 6.1.1 Title Property Name: TITLE Purpose: This property specifies the title or name of the SkiSource being described. Value Type: TEXT. Property Parameters: Non-standard and language property parameters can be specified on this property. Conformance: This property CAN be specified within a "VEVENT" or "VOPTIME" calendar component. Description: Public SkiSources often have titles . The title may not be directly descriptive of the SkiSource. The Title might be abstract in nature or it might be a copyrighted name that an owner wishes to see included in the calendar object. The following example illustrates the difference between SUMMARY and TITLE: A photo exhibition by photographer Collier Schorr in New York City called "Excuse Me While I Kiss the Sky" can be described by these two lines in a SkiCal file: SUMMARY:Collier Schorr photos on exhibit in NYC TITLE:Excuse Me While I Kiss the Sky FitzPatrick, et al. Expires April 25, 2003 [Page 33] Internet-Draft SkiCal October 2002 Format Definition: The property is defined by the following notation: title = "TITLE" titleparam ":" text CRLF ; It is RECOMMENDED, when feasible, that the ; text value be chosen from a list, ; as described in this memo. titleparam = *( ; the following is optional, ; but MUST NOT occur more than once (";" languageparam ) / (";" nsrefparam ) / ( oprefparam ) / ; the following is optional, ; and MAY occur more than once (";" xparam) ) Example: The following are examples of this property: TITLE:MacDonald's TITLE;NSREF="TX":Les Miserables(c) TITLE;LANGUAGE=sv:En kvall med Victor Borge TITLE;LANGUAGE=en:One night with Victor Borge TITLE;LANGUAGE=en;NSREF="FFL":Around the World in 80 Days 6.1.2 Persons Property Name: PERSONS Purpose: To facilitate for TimeSpenders the discovery of SkiSources relating to specific people - living or dead. Value Type: TEXT. Property Parameters: Non-standard property parameters can be specified on this property. Conformance: This property CAN be specified within a "VEVENT" or "VOPTIME" calendar component. FitzPatrick, et al. Expires April 25, 2003 [Page 34] Internet-Draft SkiCal October 2002 Description: Persons at a SkiSource might be a shop keeper, waiter, hostess, artist, a sports team, a guide, a disc jockey or a master of ceremonies and so forth. This property specifies named persons associated with the SkiSource, working at the SkiSource or present at the SkiSource. Persons expected to perform or participate, act or speak, contribute in person to the SkiSource - or to be honoured, referenced, criticized etc., in absence. Format Definition: The property is defined by the following notation: persons = "PERSONS" personsparam ":" text CRLF ; It is RECOMMENDED that the text value be ; chosen from a list, as described ; in this memo. personsparam = *( ; the following is optional, ; but MUST NOT occur more than once (";" languageparam ) /(";" skiroleparam ) / (";" nsrefparam ) / (";" oprefparam ) / ; the following is optional, ; and MAY occur more than once (";" xparam) ) Example: The following are examples of this property: PERSONS;SKiROLE="PERFORMER":Madonna PERSONS;PRXSKiROLE="IUI:COMMEMORATED":Madonna PERSONS:Victor Borge PERSONS;PRXSKiROLE="JBP:Clarinetist":Woody Allen PERSONS;SKiROLE="PRESENT":The Queen of Spain PERSONS;SKiROLE="PERFORMER";LANGUAGE=sv:AIK a-laget i fotboll PERSONS;SKiROLE="INVITED":the Hawthorn High School class of 1982 PERSONS;OPREF="SAPT";PRXSKiROLE="WPRL:REFERENCED": Nelson Mandela PERSONS;PRXSKiROLE="GGP:STUDIED":Socrates PERSONS;SKiROLE="HOSTESS":Martha Edwards 6.1.3 Thinks Property Name: THINKS FitzPatrick, et al. Expires April 25, 2003 [Page 35] Internet-Draft SkiCal October 2002 Purpose: To facilitate for TimeSpenders the discovery of SkiSources relating to specific concepts, topics, themes and areas of interest Value Type: TEXT Property Parameters: Non-standard property parameters can be specified on this property. Conformance: This property CAN be specified within a "VEVENT" or "VOPTIME" calendar component. Description: This property specifies a a topic or subject - a THINK. Format Definition: The property is defined by the following notation: thinks = "THINKS" thinksparam ":" text CRLF ; It is RECOMMENDED that the text value be ; chosen from a list, as described in ; this memo. thinksparam = *( ; the following is optional, ; but MUST NOT occur more than once (";" languageparam ) /(";" skiroleparam ) / (";" nsrefparam ) /(";" oprefparam ) / ; the following is optional, ; and MAY occur more than once (";" xparam) ) Example: The following are examples of this property: THINKS:World Peace THINKS;SKiROLE="STUDIED":Our business strategy for the new millennium THINKS;PRXSKiROLE="XJI:ANALYZED":The work of George Lucas THINKS:Christianity, Buddhism THINKS:Transaction Cost Economics 6.1.4 Things Property Name: THINGS FitzPatrick, et al. Expires April 25, 2003 [Page 36] Internet-Draft SkiCal October 2002 Purpose: To facilitate for TimeSpenders the discovery of SkiSources relating to objects, things, specific goods and products, collectors items, various commodities and so forth. Value Type: TEXT. Property Parameters: Non-standard property parameters can be specified on this property. Conformance: This property CAN be specified within a "VEVENT" or "VOPTIME" calendar component. Description: Things pertaining to a resource-entity. For example; books, paintings, furniture, Gucci Handbags, Wrangler Jeans, Portuguese wines. This property specifies things of significance exhibited, featured, for sale, for-auction, for-rent, to be given away or observed at the resource-entity. Format Definition: The property is defined by the following notation: things = "THINGS" thingsparam ":" text CRLF ; It is RECOMMENDED that the text value be ; chosen from a list, as described in ; this memo. thingsparam = *( ; the following is optional, ; but MUST NOT occur more than once (";" languageparam ) / (";" skiroleparam ) / (";" nsrefparam ) / (";" oprefparam ) / ; the following is optional, ; and MAY occur more than once (";" xparam) ) Example: The following are examples of this property: FitzPatrick, et al. Expires April 25, 2003 [Page 37] Internet-Draft SkiCal October 2002 THINGS;PRXSKiROLE="II:LECTURED-ON":German Antiques THINGS;SKiROLE="FOR-SALE":German Antiques THINGS;PRXSKiROLE="UTTT:APPRAISED":German Antiques THINGS;LANGUAGE=sv:Fritidsbåtar THINGS;SKiROLE="LECTURED-ON":Ming Dynasty Porcelain THINGS;SKiROLE="SERVED":Thai cuisine THINGS;PRXSKiROLE="M:AUCTIONED":The Vanderbilt Jewels THINGS;PRXSKiROLE="PP:REFERENCED":The holy Grail 6.1.5 Actions Property Name: ACTIONS Purpose: To facilitate for TimeSpenders the discovery of resource- entities in relation to things happening, processes, movements, etc. Value Type: TEXT. Property Parameters: Non-standard property parameters can be specified on this property. Conformance: This property CAN be specified within a "VEVENT" or "VOPTIME" calendar component. Description: Actions at a SkiSource. For example; a sale, an auction, a house warming, a legal process, a business process, an awards process etc. This property specifies actions of significance taking place at the resource-entity. Format Definition: The property is defined by the following notation: FitzPatrick, et al. Expires April 25, 2003 [Page 38] Internet-Draft SkiCal October 2002 actions = "ACTIONS" actionsparam ":" text CRLF ; It is RECOMMENDED that the text value be ; chosen from a list, as described in ; this memo. actionsparam = *( ; the following is optional, ; but MUST NOT occur more than once (";" languageparam ) / (";" nsrefparam ) / (";" oprefparam ) / ; the following is optional, ; and MAY occur more than once (";" xparam) ) Example: The following are examples of this property: ACTIONS:Vote on Stock split ACTIONS:Bankruptcy proceedings ACTIONS:Draft approval ACTIONS;LANGUAGE=sv:utförsälning ACTIONS:Lecture ACTIONS:Queen Mary IV launch ACTIONS;OPREF="SCH":Team tryouts ACTIONS:Spring term enrollment ACTIONS:wedding 6.1.6 Part relationship to another SkiSource Property Name: PARTREL Purpose: This property specifies another SkiSource, to which the SkiSource being declared is related. This does not imply an inheritance of properties from the external SkiSource. Value Type: TEXT. (SKUID for another SkiCal/iCalendar object.) Property Parameters: Non-standard property parameters can be specified on this property. It is RECOMMENDED that a Common Name parameter (cnparam) be specified on this property. FitzPatrick, et al. Expires April 25, 2003 [Page 39] Internet-Draft SkiCal October 2002 Conformance: This property CAN be specified within a "VEVENT" or "VOPTIME" calendar component. Description: This property allows for the publisher of a SkiSource to indicate a relation to another SkiSource. This property differs from the RELATED-TO property of RFC-2445 [3], which defines a relationship between calendar objects describing SkiSources and not between SkiSources themselves. Format Definition: The property is defined by the following notation: partrel = "PARTREL" partrelparam ":" text CRLF partrelparam = *( ; the following is optional, ; but MUST NOT occur more than once (";" languageparam ) / (";" cnparam ) / (";" reltypeparam) / (";" nsrefparam ) / (";" oprefparam ) / ; the following is optional, ; and MAY occur more than once (";" xparam) ) Example: The following are examples of this property: PARTREL;RELTYPE=CHILD;CN=Vattenfestivalen:<19990401T080045Z-F192713@ .se> PARTREL;CN=2004 Winter Olympics;RELTYPE=CHILD:<19991202@olympic.org> PARTREL;RELTYPE=SIBLING: 6.1.7 Language used at the SkiSource Property Name: SKILANG Purpose: This property specifies the main language, used at the SkiSource. Value Type: TEXT. Property Parameters: Non-standard property parameters can be FitzPatrick, et al. Expires April 25, 2003 [Page 40] Internet-Draft SkiCal October 2002 specified on this property. Conformance: This property CAN be specified within a "VEVENT" or "VOPTIME" calendar component. Description: Language used at the SkiSource. For example, the main language of a theatre play, the language spoken by the teacher of a course, or the languages spoken by the salespeople in a boutique. NOTE: If the SkiSource is being translated, the information about what languages are available as translations could be published under RESOURCES. NOTE: If knowledge of a certain language is required in order to appreciate the SkiSource, this should be indicated by a REQUIRED (or RECOMMENDED) property. Format Definition: The property is defined by the following notation: skilang = "SKILANG" skilangparam ":" language CRLF skilangparam = *( ; the following is optional, ; but MUST NOT occur more than once (";" oprefparam ) / (";" itemparam) / ; the following is optional, ; and MAY occur more than once (";" xparam) ) language = Example: The following are examples of this property: SKILANG:en,fr SKILANG:sv SKILANG;OPREF="001":en SKILANG;OPREF="002":sv SKILANG;ITEM="All our guides speak English":en SKILANG;ITEM="subtitles":da FitzPatrick, et al. Expires April 25, 2003 [Page 41] Internet-Draft SkiCal October 2002 6.1.8 Orientation Property Name: ORIENTATION Purpose: This property specifies the target audiences for the SkiSource. Property Parameters: Non-standard property parameters can be specified on this property. Conformance: This property CAN be specified within a "VEVENT" or "VOPTIME" calendar component. Description: This property can facilitate SkiSource discovery. It can indicate that a SkiSource has a specific target audience or consumer type, or that it is related to a specific cause, faith, professional group, gender, ethnic group etc. Infomediaries can use this property to define their own specific customer orientation types without altering the values in CATEGORIES. Format Definition: The property is defined by the following notation: FitzPatrick, et al. Expires April 25, 2003 [Page 42] Internet-Draft SkiCal October 2002 orientation = "ORIENTATION" orientationparam ":" text CRLF ; It is RECOMMENDED that the text value be ; chosen from a list, as described in ; this memo. orientationparam = *( ; the following is optional, ; but MUST NOT occur more than once (";" orienttypeparam ) / orienttypeparam = (( "ORIENTTYPE" "=" text) / ( "PRXORIENTTYPE" "=" prefix ":" text ) / (";" languageparam ) / (";" nsrefparam ) / (";" oprefparam ) / (";" itemparam) / ; It is RECOMMENDED that the text value be ; chosen from a list, as described in ; this memo. ; the following is optional, ; and MAY occur more than once (";" xparam) ) Value Type: TEXT. Example: The following are examples of this property: ORIENTATION;NSREF="G";ORIENTTYPE=Religious:Methodist ORIENTATION;PRXORIENTTYPE="DR:DemographicsRus":Soccer Moms ORIENTATION;ORIENTTYPE=DemographicsRus:Champagne Set ORIENTATION;NSREF="DR":Senior Citizens ORIENTATION;OPREF="ty";ORIENTTYPE=Gender:Female ORIENTATION;ORIENTTYPE=TimeOut:Gay ORIENTATION;ITEM="Laser scapels";ORIENTTYPE=Occupation:Medical 6.1.9 What URL Property Name: WHURL Purpose: This property defines a Uniform Resource Locator (URL) associated with the SkiSource the SkiCal object is describing. Value Type: URI FitzPatrick, et al. Expires April 25, 2003 [Page 43] Internet-Draft SkiCal October 2002 Property Parameters: Non-standard property parameters can be specified on this property. Conformance: This property CAN be specified within a "VEVENT" or "VOPTIME" calendar component. Description: This property may be used in a SkiCal object to convey a URL for information about the SkiSource. The difference between WHURL and the iCal Property URL as defined in RFC2445 section 4.8.4.6 is that while URL points to some place "where a more dynamic rendition of the calendar information associated with the calendar component can be found", WHURL points to the "home page" of the SkiSource itself. This memo does not attempt to standardize the form of the URI, nor the format of the resource pointed to by the property value. Format Definition: The property is defined by the following notation: whurl = "WHURL" whurlparam ":" uri CRLF whurlparam = *( ; the following is optional, ; but MUST NOT occur more than once (";" languageparam ) / (";" nsrefparam ) ; the following is optional, ; and MAY occur more than once (";" xparam) ) Example: The following are examples of this property: WHURL:http://www.dalasphilharmonic.com/events/030516/mehta.htm 6.1.10 SkiSource Unique Identifier Property Name: SKUID Purpose: This property specifies a persistent, globally unique identifier for the SkiSource. Value Type: TEXT Property Parameters: Non-standard property parameters can be specified on this property. FitzPatrick, et al. Expires April 25, 2003 [Page 44] Internet-Draft SkiCal October 2002 Description: This property provides a method for determining a definite, authoritative and unique identification of a SkiSource. SKUID differs from the UID property defined in RFC2445 section 4.8.4.7, whereas UID identifies a calendar component (SkiCal object), SKUID identifies the SkiSource being defined by the calendar component. The SKUID itself MUST be a globally unique identifier. The generator of the identifier MUST guarantee that the identifier is unique. There are several algorithms that can be used to accomplish this. The identifier is RECOMMENDED to be the identical syntax to the RFC- 822 [7] addr-spec. A good method to assure uniqueness is described in RFC-2445 [3], section 4.8.4.7 about Unique Identification Numbers. Format Definition: The property is defined by the following notation: skuid = "SKUID" skuidparam ":" text CRLF skuidparam = *( ; the following is optional, ; but MUST NOT occur more than once (";" languageparam ) / (";" nsrefparam ) ; the following is optional, ; and MAY occur more than once (";" xparam) ) Example: The following are examples of this property: SKUID:20021001T090045Z-4000F192713-0052@qwack.com SKUID;NSREF="TG":20021001T090045Z-4000F192713-0052@qwack.com 6.2 WHEN properties The following properties answer time and date related questions about the SkiSource, such as "When is it open" and "When does it happen?". The properties defined in RFC-2445 [3] related to WHEN are: 4.8.2 Date and Time Component Properties 4.8.3 Time Zone Component Properties 4.8.5 Recurrence Component Properties FitzPatrick, et al. Expires April 25, 2003 [Page 45] Internet-Draft SkiCal October 2002 6.2.1 Date-time open Property Name: DTOPEN Purpose: This property can be used to specify reoccurring date-time schedules such as the opening -, operating -, accessible times of a SkiSource. This Property is suitable for "persistent resources", that is resources that unlike events have regular persistent operating hours. Though in some cases a publisher could describe opening hours using the existing time-date properties and reoccurrence rules of RFC2445, those rules are not optimized for this sort of use. Further, a collection of such SkiSources, for example all the shops and restaurants in one's neighbourhood, would clutter a traditional PIM calendar, where events are expected to happen in a more or less serial fashion. Conformance: This property can be specified in a "VOPTIME" calendar component. Value Type: The default value type is TEXT. Property Parameters: Non-standard, value data type, time zone identifier property parameters can be specified on this property. Description: This property defines access information for a SkiSource - what are usually called the hours of business or operation. The date time values are stated through the OPTIMESET of property Values and are referred to with the opref property parameter value. The value of the Property is a text label describing what the opening times derived through the OPTIMESET are referring to. The OPTIMESET can be used to qualify several of the SkiCal properties. If a SkiSource can be considered to have a "main", "primary" or "essential" Opening Times, then it is recommended that the DTOPEN property be used to declare these. There is a known discrepancy in RFC2445. In section 4.6.1 Event Component, the ABNF declares that there are no obligatory properties in a VEVENT Component, while in 4.8.2.4 Date/Time Start it is stated that "The property is REQUIRED in "VEVENT" calendar components. Even though the ABNF takes precedent over prose, until this discrepancy is resolved it is recommended that SkiCal publishers always include a DTSTART property in a SkiCal object. If the publishers intention is to declare Opening Times and not the date-times of a specific event, it is recommended that they use the VOPTIME calendar component. Format Definition: The property is defined by the following notation: FitzPatrick, et al. Expires April 25, 2003 [Page 46] Internet-Draft SkiCal October 2002 dtopen = "DTOPEN" opentimeparam ":" TEXT CRLF opentimeparm = *( ; the following are optional, ; but MUST NOT occur more than once ( opref / (";" languageparam ) / (";" nsrefparam ) / ; the following is optional, ; and MAY occur more than once *(";" xparam) ) Example: The following are examples of this property: DTOPEN;opref="Bstandard":Balthazar's schedule 6.3 WHERE properties The following properties serve as place-holders for the answers to user questions about the SkiSource such as "Where does it happen?" and "Where do I find the SkiSource?". The properties defined in RFC-2445 [3] related to WHERE are: 4.8.1.6 Geographic Position (GEO) 4.8.1.7 Location SkiCal objects SHOULD use vCards [RFC 2426] as an ALTREP parameter value to the LOCATION property parameter, in order to provide machine readability and maintain information structure when exchanging data. For example, the alternate representation may specify either an LDAP URI pointing to an LDAP server entry or a CID URI pointing to a MIME body part containing a vCard for the location. In addition to the properties named above as defined in RFC-2445 [3], a SkiCal object may include the following properties. 6.3.1 Venue Property Name: VENUE Purpose: This property classifies the type of physical context in FitzPatrick, et al. Expires April 25, 2003 [Page 47] Internet-Draft SkiCal October 2002 which an SkiSource takes place. Value Type: TEXT. Property Parameters: Non-standard property parameters can be specified on this property. Conformance: This property CAN be specified within a "VEVENT" or "VOPTIME" calendar component. Description: The venue parameter divides SkiSources into a number of distinctly different groups, this is useful when there is a need to quickly reduce the number of SkiSources in a selection. For example: When searching for outdoor sport SkiSources to take part in, it will help not having to browse through listings of TV shows showing sports. Format Definition: The property is defined by the following notation: venue = "VENUE" venueparam ":" venuetype CRLF venueparam = *( ; the following is optional, ; and MAY occur more than once (";" xparam) ) venuetype = "Internet" / "Radio" / "TV" / "Outdoors" / "Indoors" / "Travel-transit" Conformance: This property CAN be specified within a "VEVENT" or "VOPTIME" calendar component. Example: The following are examples of this property: VENUE:Outdoors VENUE:TV 6.3.2 Directions Property Name: DIRECTIONS FitzPatrick, et al. Expires April 25, 2003 [Page 48] Internet-Draft SkiCal October 2002 Purpose: This property can be used to specify helpful directions for finding the SkiSource. Value Type: TEXT. Property Parameters: Non-standard property parameters can be specified on this property. Conformance: This property CAN be specified within a "VEVENT" or "VOPTIME" calendar component. Description: Very often when a public SkiSource is published, there are instructions other than the address for finding the location. In metropolitan areas this could be just the name of a subway stop, while on the sea it could possibly be a path defined by a series of GEO (longitude + latitude) coordinates that will help sailors avoid shallow water. Format Definition: The property is defined by the following notation: FitzPatrick, et al. Expires April 25, 2003 [Page 49] Internet-Draft SkiCal October 2002 directions = "DIRECTIONS" directionsparam ":" text CRLF directionsparam = *( ; the following is optional, ; but MUST NOT occur more than once (";" languageparam ) / (";" altrepparam ) / (";" travelbyparam) / (";" geo-path) / (";" nsrefparam ) / ; the following is optional, ; and MAY occur more than once (";" xparam) ) travelbyparam = "TRAVELBY" "=" ("walk" / "bicycle" / "boat" / "car" / "rail" / "air" / "public"transportation" / "frequency" / "uri" ) ; Implementers who do not intend to have a complex GUI for ; various types of directions could concatenate all DIRECTIONS ; fields which have a TRAVELBY parameter into one DIRECTIONS field ; without a TRAVELBY parameter geo-path = "GEO-PATH" "=" 1*(float "," float ",") (float "," float) ; machine readable directions ; coordinate pair sequence approaching destination Example: The following are examples of this property: DIRECTIONS;TRAVELBY=public transportation;LANGUAGE=sv:Tunnelbanes tation Globen DIRECTIONS:Rum 207, plan 2 6.3.3 Place name Property Name: PLACENAME Purpose: This property can be used to specify a well-known name of the SkiSource or a location where the SkiSource takes place. FitzPatrick, et al. Expires April 25, 2003 [Page 50] Internet-Draft SkiCal October 2002 Value Type: TEXT. Property Parameters: Non-standard property parameters can be specified on this property. Conformance: This property CAN be specified within a "VEVENT" or "VOPTIME" calendar component. Description: Names, which have reached a status of common knowledge among a significant portion of the populace or within a particular segment (eg. Taxi drivers). If the exact name is chosen from a naming list as discussed in this memo, Section 10, further details may be available to the uninitiated. Format Definition: The property is defined by the following notation: placename = "PLACENAME" placeparam ":" text CRLF ; It is RECOMMENDED that the text value be ; chosen from a list, as described in ; this memo. placeparam = *( ; the following is optional, ; but MUST NOT occur more than once (";" languageparam ) / (";" nsrefparam ) / ; the following is optional, ; and MAY occur more than once (";" xparam) ) Example: The following is an example of this property: PLACENAME:Globen PLACENAME:Central Park PLACENAME:The Commons PLACENAME:Muscle Beach 6.4 WHOW (HOW) properties WHOW properties represent possible conditions involved in interaction between a TimeSpender and a SkiSource - the rules, qualifications, economics, quirks and hindrances involved. FitzPatrick, et al. Expires April 25, 2003 [Page 51] Internet-Draft SkiCal October 2002 These properties serve as place-holders for the answers to TimeSpender questions such as, "Can I bring a camera?", "How can I get a ticket?", "Is there an age requirement?", "What does the daily special cost?" The properties defined in RFC-2445 [3] that are related to WHOW are: 4.8.1.5 Description - The description property in RFC2445 can be used to hold any sort of WHA information. 4.8.1.10 Resources - SkiCal uses Resources as stipulated in RFC2445. Example: The following are examples of RESOURCES used in SkiCal: RESOURCES:Valet parking RESOURCES;OPREF="40000/THISANDPRIOR":Hot food until midnight RESOURCES:Drinking water RESOURCES:Smokers section RESOURCES:Butane refills RESOURCES:Changing Rooms 6.4.1 Requirements Property Name: REQUIRED Purpose: This property can be used to specify requirements made by the SkiSource on the TimeSpender. Value Type: TEXT. Property Parameters: Non-standard property parameters can be specified on this property. Conformance: This property CAN be specified within a "VEVENT" or "VOPTIME" calendar component. Description: This property can be used to specify requirements made on the TimeSpender. Format Definition: The property is defined by the following notation: FitzPatrick, et al. Expires April 25, 2003 [Page 52] Internet-Draft SkiCal October 2002 requirements = "REQUIRED" requireparam ":" text CRLF ; It is RECOMMENDED that the text value be ; chosen from a list, as described in ; this memo. requireparam = *( ; the following is optional, ; but MUST NOT occur more than once (";" languageparam ) / (";" altrepparam ) (";" nsrefparam ) / ; the following is optional, ; and MAY occur more than once (";" xparam) ) Example: The following are examples of this property: REQUIRED:Children must have adult accompaniment REQUIRED;ALTREP="HTTP://www.nmpda.org/codes/pg13":pg13 REQUIRED:Formal attire REQUIRED:Lions Club Members only REQUIRED:Valid drivers license REQUIRED:Hores ridding experience REQUIRED:Reservations made at least one week in advance REQUIRED:All pets on leashes please REQUIRED:white soled gym shoes REQUIRED:Major credit card REQUIRED:No rain - Event cancelled in case of bad weather REQUIRED:minimum height on all rides 1.40 cm 6.4.2 Recommendations Property Name: RECOMMENDED Purpose: This property can be used to specify recommendations to the TimeSpender wishing to interact with the SkiSource Value Type: TEXT. Property Parameters: Non-standard property parameters can be specified on this property. FitzPatrick, et al. Expires April 25, 2003 [Page 53] Internet-Draft SkiCal October 2002 Conformance: This property CAN be specified within a "VEVENT" or "VOPTIME" calendar component. Description: Recommendations made by the Publisher xxx. Format Definition: The property is defined by the following notation: Recommended = "RECOMMENDED" recommendedparam ":" text CRLF ; It is RECOMMENDED that the text value be ; chosen from a list, as described in ; this memo. recommendedparam = *( ; the following is optional, ; but MUST NOT occur more than once (";" languageparam ) / (";" altrepparam ) (";" nsrefparam ) / ; the following is optional, ; and MAY occur more than once (";" xparam) ) Example: The following are examples of this property: RECOMMENDED:Flash Camera RECOMMENDED:Warm Clothes RECOMMENDED:At least 2 hours to see the main exhibition RECOMMENDED:No Children RECOMMENDED:do not leave your possessions unattended RECOMMENDED:Bring you own lunch RECOMMENDED:Sturdy Hiking boots RECOMMENDED:Polio vaccinations RECOMMENDED:Stay on the trail RECOMMENDED:Get here early RECOMMENDED:It is difficult to find parking space - take public transport 6.4.3 Prohibited Property Name: PROHIBITED Purpose: This tells the TimeSpender what activities or things are PROHIBITED at the SkiSource. Value Type: TEXT. FitzPatrick, et al. Expires April 25, 2003 [Page 54] Internet-Draft SkiCal October 2002 Property Parameters: Non-standard property parameters can be specified on this property. Conformance: This property CAN be specified within a "VEVENT" or "VOPTIME" calendar component. Description: That which is prohibited Format Definition: The property is defined by the following notation: prohibited = "PROHIBITED" prohibitedparam ":" text CRLF ; It is RECOMMENDED that the text value be ; chosen from a list, as described in ; this memo. prohibitedparam = *( ; the following is optional, ; but MUST NOT occur more than once (";" languageparam ) / (";" altrepparam ) / (";" nsrefparam ) / ; the following is optional, ; and MAY occur more than once (";" xparam) ) Example: The following are examples of this property: PROHIBITED:minors PROHIBITED:possession of fire arms PROHIBITED:possession of cameras PROHIBITED:men 6.4.4 Price Property Name: PRICE Purpose: This property gives pricing information about the SkiSource. Value Type: TEXT. Property Parameters: Non-standard property parameters can be specified on this property. FitzPatrick, et al. Expires April 25, 2003 [Page 55] Internet-Draft SkiCal October 2002 Conformance: This property CAN be specified within a "VEVENT" or "VOPTIME" calendar component. Description: This property can be used to provide information about the pricing structure at a SkiSource. Due to a large divergence in pricing structures, it is not intended that all aspects of pricing will be possible to represent in a machine readable format using SkiCal. This syntax will allow for simpler pricing structures to be defined. Format Definition: The property is defined by the following notation: FitzPatrick, et al. Expires April 25, 2003 [Page 56] Internet-Draft SkiCal October 2002 price = "PRICE" priceparam ":" price CRLF priceparam = *( ; the following is optional, ; but MUST NOT occur more than once (";" languageparam ) / (";" altrepparam ) / (";" itemparam) / (";" currencyparam) (";" nsrefparam ) / ) ; The text value COULD be ; chosen from a list, as described in ; this memo. Such a list could ; contain words such as: ; Admission ; Breakfast ; Starting Fee ; Room ; Happy hour ; Monthly fee price = float currencyparam = "CURRENCY" "=" ; Minimum SkiCal version needed to parse the SkiCal extensions ; in the iCalendar object maxver = ; Maximum SkiCal version needed to parse the SkiCal extensions ; in the iCalendar object Example: The following is an example of this property: SKICALVER:1.0 6.7.3 Namespace Property Name: NAMESPACE Purpose: Designates a URL containing a list of values and assigns a prefix as a shorthand pointer to that URL. Value Type: URI Property Parameters: Non-standard property parameters can be specified on this property. Conformance: This property CAN be specified within a "VEVENT" or "VOPTIME" calendar component. FitzPatrick, et al. Expires April 25, 2003 [Page 67] Internet-Draft SkiCal October 2002 Description: For many of the properties and property parameters of this note, it is recommended that text values be chosen from authoritative lists. This property defines a method for the identification and location of such a list, but it does not define the syntax that such a list might employ. The inclussion of a NAMESPACE properery in a calendar component does not imply that a SkiCal parser must be able to access such a list. Format Definition: The property is defined by the following notation: namespace = "NAMESPACE" namespaceparam ":" uri CRLF namespaceparam = ";" "PREFIX" "=" prefix prefix = text ; the following is optional, ; but MUST NOT occur more than once (";" languageparam ) / ; the following is optional, ; and MAY occur more than once (";" xparam) ) Example: The following are examples of this property: NAMESPACE;PREFIX=SIS:"http://www.stockholmtown.se/placenames.html" NAMESPACE;PREFIX=A:"http://www.valuerepresentations.org/values.html" NAMESPACE;PREFIX=COM:"http://www.interestedparties.org/ composers/clasical.html" NAMESPACE;PREFIX=TO:"http://www.timeout.com/profiles/timespenders.html" 6.7.4 Open Times Property Name: OPTIMES Purpose: Defines an OPTIMESET and assigns an id value for that set. Value Type: optimelist Property Parameters: Non-standard property parameters can be specified on this property. Conformance: This property CAN be specified within a "VEVENT" or FitzPatrick, et al. Expires April 25, 2003 [Page 68] Internet-Draft SkiCal October 2002 "VOPTIME" calendar component. Description: . Format Definition: The property is defined by the following notation: optimes = "OPTIMES" optimesparam ":" OPTIMESET CRLF optimesparam = ";" "ID" "=" text ; the OPTIMESET is defined as a value type in beginning of this memo ; the following is optional, ; and MAY occur more than once (";" altrepparam) / (";" itemparam ) / (";" nsrefparam ) / (";" xparam) ) Example: The following is an example of this property: OPTIMES: the OPTIMESET follows a uniform logical model. The six value types can be thought of as containers of date-time values. There is a hierarchal order for these containers, related to the significance of the date-time units running from centuries down to seconds. This sort of ordering is often referred to as the "Russian doll" model. OPTERM is the only container that can declare 4-digit year information in its range and it is at the top of the hierarchy. An OPTERM value type can contain any of the other OPTIMESET value types, though not another OPTERM. At the bottom of the hierarchy comes OPSECONDS, which can declare seconds and fractions of seconds as its range value, and can contain no other value-type. This gives us six possible generations of containers; OPTERMS holding OPSEASONS holding OPDAYS holding OPHOURS holding OPMINUTES holding OPSECONDS. But is possible to skip any or all but one of these. So an OPTERM could contain an OPSECONDS container and nothing else or an OPMINUTES container could be the only member of an OPTIMESET. When Parsing the OPTIMESET FitzPatrick, et al. Expires April 25, 2003 [Page 69] Internet-Draft SkiCal October 2002 The following chart shows the possible contents for each OPTIMESET value type +------------------------------------------------------------------+ | OPSEASONS OPDAYS OPHOURS OPMINUTES OPSECONDS | | | | OPTERM YES YES YES YES YES | | OPSEASONS YES YES YES YES | | OPDAYS YES YES YES | | OPHOURS YES YES | | OPMINUTES YES | | OPSECONDS contain no other value-type | +------------------------------------------------------------------+ Each container has a root date-time range setting the limits for all values inside that container. For example an OPTERM container with a range of 20040101/20041231 can contain any number of lesser containers each with reoccurring datetime values, but an optimeset parser will only be concerned with date-times falling within the year 2004. The OPTERM data value is unique insomuch as it is "anchored" to the era of the Gregorian Calendar, Julian Date system or Network Time Protocol. It does not reoccur even though several OPTERM values may occur as siblings in an optimese). What sort of information does the OPTIMESET represent and how is it calculated? For each optimeset, individual containers at the bottom of the heirarchy are calculated first and then all containers are matched against each other. These calculations result in one period of time in which one (and only one) of three conditional states can be derived at at any given moment. These three states are; TRUE, FALSE, and UNDETERMINED. In the OPTIMESET logical model all times are UNDETERMINED if not declared in an OPTIMESET. The reoccurrence rules for the OPTIMESET members are as follows. With the exception of OPTERM, the ranges of all OPTIMESET members will continue to reoccur indefinently unless constrained. The contents of a container are constrained by the range of that container. We tend to naturally schedule reoccurences in sync with date-time FitzPatrick, et al. Expires April 25, 2003 [Page 70] Internet-Draft SkiCal October 2002 units. We choose for something to happen at the same time every day or the same day every week and so forth. In this memo such reocurrences are refered to as "Date-time unit symetric". They are the default reoccurence frequency of this memo. They are as follows: A value type of seconds will reoccur every minute Minutes hour Hour day weekday week Monthday month Yearday year Season year But of course it is quite possible for things to reoccur with frequencies that do not naturally fall into the patterns above. If for example a workshift was scheduled to be 6 days of work followd by 4 days of rest, the resulting 10 day cycle would not be symetric with the seven day week date-time unit. We call such reocurrences "Date- time unit asymetric" and such frequencies are enabled with the help of the CYCLE attribute. Using CYCLE We can say for example that the reoccurrence range for a period of 0700/0900 hours is not days but rather a timespan of 22 hours - so when compared to a normal 24 hour daily schedule the first occurence on the the first day would be from 7-9 but on the second day 5 to 7 and 3 to 5 on the third and so forth. We can also use CYCLE to indicate date-time symetric ranges that are multiples of date-time units - such as a cycle of 7 Years. Let us say that a OPSEASONS container held two OPDAYS containers without children. With the container-logic atribute of the OPSEASONS an operator is chosen for combining the two OPDAYS containers. The operators are AND, OR, XOR. For example if the value of one opday was "TU,TH" and the other moday "05". FitzPatrick, et al. Expires April 25, 2003 [Page 71] Internet-Draft SkiCal October 2002 7. Security considerations Anybody could produce a SkiCal compliant file containing false information. Calendar publishers will need to exercise caution, or they may end up publishing invalid information. Security can be achieved either by choosing to index SkiCal files only from trusted servers, or by employing a moderator who can correct or refuse corrupt information. Nobody should consider information from non- encrypted SkiCal files 100% reliable, just as nobody SHOULD blindly trust printed advertisements or email. SkiSource organizers and publishers should be aware of legal implications from spreading personal information in electronic media. FitzPatrick, et al. Expires April 25, 2003 [Page 72] Internet-Draft SkiCal October 2002 8. Internationalisation and localisation The same Internationalization considerations apply as in all iCalendar applications. See RFC-2445 section 2.3 [3]. FitzPatrick, et al. Expires April 25, 2003 [Page 73] Internet-Draft SkiCal October 2002 9. Communication protocol The definitive method for interchanging SKiCal data between directories/calendars will probably be an extension to the Calendar Access Protocol CAP [4]. Since, as of this writing, CAP not yet published as an RFC, the process of extending it has not begun. Meanwhile, a simplistic approach is being used to synchronize existing SKICal databases over HTTP. Typically an organization wants to copy all SKICal data from certain SKICal databases. In our simplistic solution we have two methods for this: 1. SKICal files are stored in a web accessible directory (which is basically a webpage with links to .ics files). All files are fetched every time a synchronization needs to be made, they are parsed and all objects with a CREATED or LAST-MODIFIED value newer than the time of the previous synchronization are copied into the database. (Either automatically, or after review by an editor.) 2. A cgi program accepting one parameter, named 'since', returns a SKICal file containing all SKICal objects having a CREATED or LAST- MODIFIED value newer than local time 00:00:01 at the date indicated by the 'since' parameter. The format of the 'since' parameter is YYYY-MM-DD. (Eg. 2001-09-18 for September 18th 2001.) Obviously these methods are not economic, neither in terms of bandwidth usage or processing power. The filtering of SKICal objects is left to the application since there is no way to limit your selection. You might for example want to get all SKICal objects related to "sports". Such selection mechanisms will appear in a later specification. In order to facilitate the creation of intelligent SKICal applications, though, it is RECOMMENDED that cgi export programs also implement the 'skuid' parameter. A call (HTTP GET) to the cgi program with the 'skuid' value set should return a single SKICal object identified by that SKUID value, if there is such an object in the database. A response other than a valid SKICal file from the cgi program should be interpreted as "no such object". FitzPatrick, et al. Expires April 25, 2003 [Page 74] Internet-Draft SkiCal October 2002 10. Choosing values from lists It is RECOMMENDED that text values be chosen from "authoritative naming lists" whenever possible. Doing this, the publisher will increase the level of machine readability and thus increase the accumulated global value of all iCalendar/SkiCal objects. It is expected that such lists will become widely available and accessible online, possibly in the RDF [11] or XML-Schema format. FitzPatrick, et al. Expires April 25, 2003 [Page 75] Internet-Draft SkiCal October 2002 11. Examples The following is an example SkiCal file, describing an actual real world SkiSource as published in the Washington Post and at the web site of the National Chamber Orchestra: BEGIN:VCALENDAR VERSION:2.0 SKICALVER:1.0 PRODID:-//HandGenerated/SkiCal//NONSGML v1.0//EN BEGIN:VEVENT UID:e098h99@washingtonpost.com SKUID:kj08988b@nationalchamberorch.org CATEGORIES:music,concert,classical,symphony CREATED:19991125 DTSTAMP:19991125T110309Z SEQUENCE:1 LAST-MODIFIED:19991125T110309Z SUMMARY:Handel's "Messiah" featuring the National Chamber Orchestra TITLE:Messiah DTSTART:19991217T200000 RRULE:FREQ=DAILY;INTERVAL=1;COUNT=2 VENUE:Indoors PERSONS;SKiROLE="conductor":Takao Kanayama PERSONS;SKiROLE="orchestra":National Symphony Orchestra PERSONS;SKiROLE="soloist":Heidi Grant Murphy PERSONS;SKiROLE="soloist":Mary Ann McCormick PERSONS;SKiROLE="soloist":Eric Owens PERSONS;SKiROLE="choir":Cantate Chamber Singers PERSONS;SKiROLE="choir director":Robert Shafer PERSONS;SKiROLE="creator":G.F.Handel PRICE;PRXITEM="SFT:Far side";CURRENCY=USD:17 PRICE;PRXITEM="SFT:Side section";CURRENCY=USD:24 PRICE;PRXITEM="SFT:Center section";CURRENCY=USD:31 PRICE;ITEM="Discounted subscriptions available": PAYMETHOD:Check PAYMETHOD:Visa PAYMETHOD:Mastercard PAYMETHOD:American Express BOOKINGS:Telephone: 301/762-8580 BOOKINGS:Fax: 301-762-8581 PROHIBITED:Children under five - no exceptions! URL:http://yp.washingtonpost.com/E/E/WASDC/0000/40/17/cs1.html WHURL:http://www.nationalchamberorch.org/seasonnext.html PLACENAME:F. Scott Fitzgerald Theatre LOCATION:F. Scott Fitzgerald Theatre, 603 Edmonton Dr., Rockville, Maryland, USA DIRECTIONS;ALTREP="http://www.parkers-place.net/rmt/fscotdir.html": The theatre is located in Rockville Civic Center Park, Baltimore FitzPatrick, et al. Expires April 25, 2003 [Page 76] Internet-Draft SkiCal October 2002 Road and Edmonton Drive. Call 301-309-3007 for directions. ACCESS;TYPE=wheelchair-ramps:TRUE DESCRIPTION;LANGUAGE=en:Handel's classic "Messiah" performance by the National Symphony Orchestra under Takao Kanayama, soprano Heidi Grant Murphy, mezzo-soprano Mary Ann McCormick, bass Eric Owens and the Cantate Chamber Singers directe d by Robert Shafer. This concert is a popular tradition. ORGANIZER;CN="National Chamber Orchestra":MAILTO:nationalchamberor chestra@juno.com CONTROL;CN="National Chamber Orchestra":MAILTO:nationalchamber orchestra@juno.com PUBLISHER;CN="Washington Post":MAILTO:info@washingtonpost.com CONTACT;CN="Christine Carlin,Administrator":MAILTO:nationalchamber orchestra@juno.com PROMO:http://www.nationalchamberorch.org/review"of"1st.html PROMO:Relax on Friday or Saturday evenings in the elegant F. Scott Fitzgerald Theatre concert hall, nestled among the trees and gardens at the Rockville Civic Center Park in Rockville, Maryland. END:VEVENT END:VCALENDAR FitzPatrick, et al. Expires April 25, 2003 [Page 77] Internet-Draft SkiCal October 2002 References [1] Bradner, S., "The Internet Standards Process -- Revision 3", RFC 2026, BCP 9, October 1996. [2] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", RFC 2019, BCP 14, March 1997. [3] Dawson, F. and D. Stenerson, "Internet Calendaring and Scheduling Core Object Specification - iCalendar", RFC 2445, November 1998. [4] Mansour, S., Royer, D., Babics, G. and P. Hill, "Calendar Access Protocol - CAP", September 2000, . [5] Berners-Lee, T., Fielding, M. and L. Masinter, "Uniform Resource Locators (URL)", RFC 1738, December 1994. [6] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", RFC 2234, November 1997. [7] Crocker, D., "STANDARD FOR THE FORMAT OF ARPA INTERNET TEXT MESSAGES", RFC 822, August 1982. [8] 68, TC., "Codes for the representation of currencies and funds", ISO 4217, September 1990, . [9] Alvestrand, H., "Tags for the Identification of Languages", RFC 1766, March 1995. [10] Michel, T., "Common Markup for Web Micropayment Systems", W3C Working Draft, June 1999, . [11] Swick, R. and O. Lassila, "Resource Description Framework (RDF) Model and Syntax Specification", W3C RDF, February 1999, . [12] ECMA, "Standard ECMA-262 ECMAScript Language Specification", ECMA 262, December 1999, . FitzPatrick, et al. Expires April 25, 2003 [Page 78] Internet-Draft SkiCal October 2002 Authors' Addresses Greg FitzPatrick SkiCal Consortium V÷lundsgatan 5 Stockholm, SE-102 20 SE Phone: +46 8 309 609 EMail: greg.fitzpatrick@SkiCal.org URI: http://www.SkiCal.org/ P„r Lanner÷ Metamatrix Scheelegatan 36 Stockholm, SE-112 28 SE Phone: +46 8 33 20 40 EMail: par.lannero@metamatrix.se URI: http://www.metamatrix.se/ Niklas Hjelm Soft Applications Grevgatan 34, 4tr Stockholm, SE-102 04 SE Phone: +46 8 555 123 00 EMail: niklas@medialab.se URI: http://www.softapplications.com/ FitzPatrick, et al. Expires April 25, 2003 [Page 79] Internet-Draft SkiCal October 2002 Appendix A. Acknowledgements The following persons have contributed to the specification of the SkiCal format: Ingemar Eriksson of the Swedish Travel & Tourism Council, the Event Working group at Stockholm Information Service2, Johan Hjelm of Ericsson/W3C, Patrik Faltstrom of Tele2/Cisco, Jenny Pileus of the Swedish Nationwide Theatre (Riksteatern), Benny Regner of the National Agency for Education, Bengt Wittstrom of the Swedish National Board of Culture, Ulla Persson of the Swedish Sports Confederation, Stefan Johansson of Handikapp.se (special needs organizations' confederation for ICT related issues), Ingvar Hallgren of the Swedish Concert Institute (Rikskonserter), Stanley Almqvist of Crossnet AB, Daniel Bergstrom of Melody AB, Lars Aronsson of Spray AB, Mary Omming of Utbildningsradion (public service educational TV channel), NUTEK and Frank Dawson of Lotus, Doug Royer of Sun Microsystems, Steve Mansour of Netscape Communications, Paul B Hill of the MIT , Lisa Lippert of Microsoft, Patricia Egen of Egen consulting, and the other members of the CALSCH WG. FitzPatrick, et al. Expires April 25, 2003 [Page 80] Internet-Draft SkiCal October 2002 Full Copyright Statement Copyright (C) The Internet Society (2002). All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Acknowledgement Funding for the RFC Editor function is currently provided by the Internet Society. FitzPatrick, et al. Expires April 25, 2003 [Page 81]