RE: iCalendar recurring schedules

At 02:03 PM 12/5/02 -0500, Rahul Singh wrote:

>Hi,
>
>Here is another example of a recurring schedule that may help you. It's
>a class schedule for a graduate course in Robotics held every spring
>which I marked up looking at the iCal ontology.
>
>http://www.daml.ri.cmu.edu/Schedules/test/ai.rdf
>
>Let me know if there are any errors.

Thanks for this.  Here are some differences of approach that I observe -- I 
won't claim they are errors.

1.  Use of ical:DATE as a property (on VCALENDAR object);  I believe it's 
declared as a class.

2.  Use of ical:REC-VEVENT rather than just ical:VEVENT;  I think that's 
correct.  Looking again at the schema, what I do, viz applying ical:RRULE 
to an ical:VEVENT, isn't sanctioned.

[Libby:  I think REC-CAL-COMPONENT should be declared as sublcass of 
CAL-COMPONENT, so that properties like DTSTART, etc., are expected.]

3.  DTSTART has an explicit date.  Again, I think yours is correct -- I 
seem to remember thinking that I needed a date for the first occurrence 
when I read the iCalendar spec.  (But, for my application, I'd rather not 
bother;  small matter.)

4.  Use of ical:DURATION rather that ical:DTEND -- I think either is 
OK.   Except that I think it should be ical:DURATION-PROP referencing an 
ical:DURATION object (as your own comment says), itself with some 
properties that I can't see mentioned in the schema.

[Libby:  is something missing here?]

5.  Within ical:RECUR, you give explicit interval of 1.  I understand 
that's the default value in iCalendar.  But I think you're right that the 
value must be explicitly specified, or RDF semantics are broken.

[Libby:  I suggest a comment to this effect for any property with a default 
value in iCalendar.

[Explanation.  If an RDF graph has:

    :
   <ical:FREQ>WEEKLY</ical:FREQ>
   <ical:INTERVAL>2</ical:INTERVAL>
    :

then by the Interpolation lemma [1] this entails:

    :
   <ical:FREQ>WEEKLY</ical:FREQ>
    :

i.e. the same graph without the <ical:INTERVAL> property.  If this is 
understood to mean the same as
    :
   <ical:FREQ>WEEKLY</ical:FREQ>
   <ical:INTERVAL>1</ical:INTERVAL>
    :
then we have an unintended consequence.]

6.  You have the object of ical:BYDAY as a bag of literals;  I have it as a 
single literal.  Looking at the schema, I think we may both be wrong.  The 
schema says the range of ical:BYDAY is is an ical:TEXT, which is in turn an 
object with an rdf:value of human-readable text.

[Libby:  I think this definition of ical:TEXT is problematic.  The RDFcore 
working group are wrestling with the formal semantics of rdf:value, and the 
best we've come up with so far is that it has none.  I really think we need 
to find another way to code the list of values.  An answer might be to 
declare ical:TEXT as subclass of xsd:string (or rdfs:Literal?), so that 
properties with that as range take simple literals.  This needs checking in 
light of the final RDFcore decisions, concerning which I may be confused.

Another approach would be Rahul's bag-of-literals approach, though I think 
there's a possible problem there.  A bag isn't closed, so:

   <ical:BYDAY>
     <rdf:Bag>
       <rdf:li>TU</rdf:li>
       <rdf:li>TH</rdf:li>
     </rdf:Bag>
   </ical:BYDAY>

could formally entail:

   <ical:BYDAY>
     <rdf:Bag>
       <rdf:li>TH</rdf:li>
     </rdf:Bag>
   </ical:BYDAY>

Which I think is at best confusing, and at worst could be wrong (I'm not 
sure exactly which).

Another approach would be to use a linked-list style of construction 
(originally introduced as parseType="daml:Collection", but which has now 
been sanctioned as rdf:parseType="Collection" [2].  Ummm... I don't see how 
to use that to create a list containing literals.  ... to be continued.

For now, I'll stick with my textual list of names -- it's arguably not 
ideal, but I'm not sure where to go.]

Apart from these details, I think we're reading it in much the same way as 
far as the bigger picture goes.

#g
--

[1] http://www.w3.org/TR/rdf-mt/#entail

[2] 
http://www.w3.org/TR/rdf-syntax-grammar/#section-Syntax-parsetype-Collection



> > -----Original Message-----
> > From: www-rdf-calendar-request@w3.org
> > [mailto:www-rdf-calendar-request@w3.org] On Behalf Of Graham Klyne
> > Sent: Thursday, December 05, 2002 1:10 PM
> > To: www-rdf-calendar
> > Subject: iCalendar recurring schedules
> >
> >
> >
> > The story continues...
> >
> > With some help from Jim Ley [1] I found some samples of RDF
> > using this
> > schema.  As far as I can tell, nobody else has done anything
> > with recurring
> > events, so here's my attempt for comment.
> >
> > >I'm also struggling to understand how iCalendar does
> > repeated intervals
> > >as
> > >opposed to repeated instants:  all the recurrence examples
> > in RFC 2445 [6]
> > >seem to deal with repeated instances rather than intervals.
> > To capture
> > >the example schedule above (7:00-9:00PM every Monday to Friday, and
> > >4:00-10:00PM every Saturday and Sunday), does something like
> > this work?:
> > >
> > >BEGIN:VCALENDAR
> > >VERSION:2.0
> > >PRODID:http://id.ninebynine.org/wip/2002/timetable
> > >BEGIN:VEVENT
> > >DTSTART:20021201T190000
> > >DTEND:20021201T210000
> > >RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
> > >END:VEVENT
> > >BEGIN:VEVENT
> > >DTSTART:20021201T160000
> > >DTEND:20021201T220000
> > >RRULE:FREQ=WEEKLY;BYDAY=SA,SU
> > >END:VEVENT
> > >END:VCALENDAR
> >
> > Using RDF/N3 to represent the corresponding RDF, I have:
> >
> > [[
> > @prefix rdf:      <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
> > @prefix
> > ical:
> > <http://www.ilrt.bris.ac.uk/discovery/2001/06/schemas/ical-ful> 
> l/hybrid.rdf#> . @prefix icalutil:
> > <http://ilrt.org/discovery/2001/06/schemas/ical-util#> .
> > #prefix icalutil:
> > <http://ilrt.org/discovery/2001/06/schemas/swws/index.rdf#> .
> >  ###this one?### @prefix homenet:
><http://id.ninebynine.org/wip/2002/homenet/> .
>
>homenet:AccessTimes a ical:VCALENDAR ;
>      ical:VEVENT-PROP
>        [ a ical:VEVENT ;
>          ical:DTSTART
>            [ a ical:TIME ;
>              rdf:value       "T190000" ;
>              icalutil:hour   "19" ;
>              icalutil:minute "00" ] ;
>          ical:DTEND
>            [ a ical:TIME ;
>              rdf:value       "T210000" ;
>              icalutil:hour   "21" ;
>              icalutil:minute "00" ] ;
>          ical:RRULE
>            [ a ical:RECUR ;
>              ical:FREQ       "WEEKLY" ;
>              ical:BYDAY      "MO,TU,WE,TH,FR" ]
>        ] ;
>      ical:VEVENT-PROP
>        [ a ical:VEVENT ;
>          ical:DTSTART
>            [ a ical:TIME ;
>              rdf:value       "T160000" ;
>              icalutil:hour   "16" ;
>              icalutil:minute "00" ] ;
>          ical:DTEND
>            [ a ical:TIME ;
>              rdf:value       "T220000" ;
>              icalutil:hour   "22" ;
>              icalutil:minute "00" ] ;
>          ical:RRULE
>            [ a ical:RECUR ;
>              ical:FREQ       "WEEKLY" ;
>              ical:BYDAY      "SA,SU" ]
>        ] ;
>      rdfs:comment
>          """
>          Designated access times:
>            weekdays: 19:00-21:00
>            weekends: 16:00-22:00
>          """ .
>]]
>
>Does this make sense?
>
>#g
>--
>
>[1] Foafnaut Predicate search:  http://jibbering.com/2002/12/pred.html
>
>
>
>-------------------
>Graham Klyne
><GK@NineByNine.org>

-------------------
Graham Klyne
<GK@NineByNine.org>

Received on Monday, 9 December 2002 12:06:04 UTC