@prefix dc: .
<> dc:description """
rules to map from Navigant itinerary vocabulary
to iCalendar vocabulary.
$Id: itin2ical.n3,v 1.6 2002/06/04 01:45:09 connolly Exp $
""";
dc:source [ = ;
dc:source ].
@prefix log: .
@prefix ical: .
@prefix str: .
@prefix n: .
@prefix pa: .
@prefix pd: .
@prefix r: .
@prefix : <#>.
this log:forAll :flt, :carrierName, :num, :sum,
:yymmdd, :hh_mm, :hh_mm2, :dtstart, :dtend, :tz, :tz2,
:where, :fromName, :toName.
# things with the same airportname have the same timezone
{ :where n:airportName [ is n:airportName of [ :timeZone :tz ] ] }
log:implies { :where :timeZone :tz }.
#hmm... someplace to scrape these from?
@prefix a: . #hmm... ?MCI is a document *and* an airport?
a:MCI
n:airportName "KANSAS CITY INTL";
:timeZone :ChicagoTime.
a:STL n:airportName "ST LOUIS INTL";
:timeZone :ChicagoTime.
a:ORD n:airportName "CHICAGO OHARE";
:timeZone :ChicagoTime.
a:DFW n:airportName "DALLAS FT WORTH";
:timeZone :ChicagoTime.
a:EWR n:airportName "NEWARK";
:timeZone :NewYorkTime.
a:BOS n:airportName "BOSTON";
:timeZone :NewYorkTime.
a:DCA n:airportName "WASHINGTON REAGAN";
:timeZone :NewYorkTime.
a:NCE n:airportName "NICE";
:timeZone :ParisTime.
a:LHR n:airportName "LONDON HEATHROW";
:timeZone :LondonTime.
a:SFO n:airportName "SAN FRANCISCO";
:timeZone :LosAngelesTime.
{ :flt
n:date :yymmdd;
n:carrier [ pa:company :carrierName ];
n:flightNum :num;
n:LV [ n:time :hh_mm;
n:place [ n:airportName :fromName;
:timeZone [ ical:TZID :tz] ] ];
n:AR [ n:place [ n:airportName :toName;
:timeZone [ ical:TZID :tz2] ];
n:time :hh_mm2 ].
(:carrierName " #" :num " from " :fromName " to " :toName) str:concatenation :sum.
(:yymmdd "T" :hh_mm ":00") str:concatenation :dtstart. #@@ extra punct in dates
(:yymmdd "T" :hh_mm2 ":00") str:concatenation :dtend.
}
log:implies {
:flt a ical:VEVENT;
ical:SUMMARY :sum;
ical:DTSTART [ ical:TZID :tz; #@@hybrid handles tzids differently
#hmm... property params should modivy the property, not the object, no?
r:value :dtstart ];
ical:DTEND [
ical:TZID :tz2;
r:value :dtend
].
}.
# Timezone stuff transcribed from an evolution calendar...
# original source seems to be...
<> dc:source [ = ;
dc:creator "Olson, A.D., et al"; #@@ lazy...
dc:title "Time zone code and data";
dc:description "updated periodically" ].
:ChicagoTime a ical:VTIMEZONE;
ical:TZID "/softwarestudio.org/Olson_20011030_5/America/Chicago";
ical:_subComponent [
a ical:STANDARD;
ical:TZOFFSETFROM "-0500";
ical:TZOFFSETTO "-0600";
ical:TZNAME "CST";
ical:DTSTART "19701025T020000";
ical:RRULE [ ical:FREQ ical:YEARLY; ical:INTERVAL "1";
ical:BYDAY "-1SU"; # maybe (-1 ical:SU)?
ical:BYMONTH "10" ]
],
[
a ical:DAYLIGHT;
ical:TZOFFSETFROM "-0600";
ical:TZOFFSETTO "-0500";
ical:TZNAME "CDT";
ical:DTSTART "19700405T020000";
ical:RRULE [ ical:FREQ ical:YEARLY;
ical:INTERVAL "1"; ical:BYDAY "1SU"; ical:BYMONTH "4" ];
].
:NewYorkTime a ical:VTIMEZONE;
ical:TZID "/softwarestudio.org/Olson_20011030_5/America/New_York";
ical:_subComponent [
a ical:STANDARD;
ical:TZOFFSETFROM "-0400";
ical:TZOFFSETTO "-0500";
ical:TZNAME "EST";
ical:DTSTART "19701025T020000";
ical:RRULE [ ical:FREQ ical:YEARLY; ical:INTERVAL "1";
ical:BYDAY "-1SU"; ical:BYMONTH "10" ];
],
[
a ical:DAYLIGHT;
ical:TZOFFSETFROM "-0500";
ical:TZOFFSETTO "-0400";
ical:TZNAME "EDT";
ical:DTSTART "19700405T020000";
ical:RRULE [ ical:FREQ ical:YEARLY; ical:INTERVAL "1";
ical:BYDAY "1SU"; ical:BYMONTH "4" ]
].
:ParisTime
ical:TZID "/softwarestudio.org/Olson_20011030_5/Europe/Paris"
# more properties...@@
.
:LondonTime
ical:TZID "/softwarestudio.org/Olson_20011030_5/Europe/London"
# more properties...@@
.
:LosAngelesTime
ical:TZID "/softwarestudio.org/Olson_20011030_5/America/Los_Angeles"
# more properties...@@
.