ical schema based on 1 test case: mtg.ics

Following from our discussion today about the new workspace
  http://www.w3.org/2002/12/cal/

I took the test/mtg.ics file that timbl checked in,
then I took ical2rdf.pl from 2000/10/swap, enhanced
it to convert dates to YYYY-MM-DDTHH:MM:SS form,
and produced test/mtg.rdf

Then I put together a makefile that builds ical.rdf
by running sniffSchema.n3 over the input data file.

The result looks like this:

<rdf:RDF
  xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
  xmlns='http://www.w3.org/2002/12/cal/ical#'
  xmlns:i='http://www.w3.org/2002/12/cal/ical#'
  xmlns:x='http://www.w3.org/2002/12/cal/prod_apple#'
><Vcalendar rdf:about=''>
    <calscale>GREGORIAN</calscale>
    <prodid>-//Apple Computer\, Inc//iCal 1.0//EN</prodid>
    <x:wrTimezone>US/Eastern</x:wrTimezone>
    <version>2.0</version>
  </Vcalendar>
  <Vevent>
    <sequence>3</sequence>
    <dtstamp>2002-12-19T20:53:57Z</dtstamp>
    <summary>icalendaring #rdfig meeting</summary>
    <dtend rdf:parseType='Resource'>
      <dateTime>2003-01-08T14:00:00</dateTime>
      <tzid>US/Eastern</tzid>
    </dtend>
    <dtstart rdf:parseType='Resource'>
      <dateTime>2003-01-08T13:00:00</dateTime>
      <tzid>US/Eastern</tzid>
    </dtstart>
    <uid>CDC474D4-1393-11D7-9A2C-000393914268</uid>
  </Vevent>
</rdf:RDF>

[you may get the occasional 403 error when
surfing around 2002/12/cal/* ; the auto-public-chacl
request was queued, but it hasn't been serviced yet.]

Some design choices I'd like confirmation on...
maybe these belong in the schema or in some
other documentation...

capitalization: RFC2445 specifies case insensitivity
for the .ics equivalent of these class and property
names, so it seems best to normalize. TimBL and I
agreed that camelCase, the RDF convention, is
the way to go. Hyphens in the .ics syntax are
treated as word boundaries. Class names get
initial caps.

prodid: I really wanted to turn this into a URI
to use as the namespace name for x- names, but
due to look-ahead issues, I use a command-line
arg for the x: namespace name.

apple's extensions: I chose the name
  http://www.w3.org/2002/12/cal/prod_apple
for a namespace for apple's extensions. I haven't
fixed the 404 there yet.

calscale: previously, I treated GREGORIAN as a symbol
(i.e. a URI) rather than a string. I backed
that out because I don't think calscale is
worth bothering with. I've never seen anything
other than GREGORIAN, and the semantics
of anything else isn't even specified by
RFC 2445.

datatypes: I'm mostly using lexical forms...
the value type for sequence is integer,
but I didn't put rdf:datatype="...integer" there;
I just treated it as a numeral.
I'm turning ical value types in to interpretation
properties
(http://www.w3.org/DesignIssues/InterpretationProperties)
in the case of dtstart and dtend, since the
timezone stuff prevents those from being plain strings.
ical2rdf.pl knows explicitly about ical value types;
it converts dates from YYYYMMDD to YYYY-MM-DD.


Stuff still todo:

 * more data: my evolution calendar
 * more data: timezone files

In the process of doing the YYYY-MM-DD
conversion, I'm sure the code regressed
w.r.t. the swap/pim version of ical2rdf.
So I more testing is needed to rcover
the lost ground.

 * converting back from .rdf to .ics,
	checking the round-trip

 * export the information in the %ValueType
	array in the code into the ical.rdf schema


Not to mention how-to style write up and such,
which I count on other folks to do.

-- 
Dan Connolly, W3C http://www.w3.org/People/Connolly/

Received on Friday, 20 December 2002 02:18:32 UTC