GEO and geo vocabulary
In iCalendar spec, the value of GEO is defined as MUST be two SEMICOLON separated FLOAT values
. An example:
GEO:40.442673;-79.945815
On the other hand, the definition of ical:geo
in RDFical schema (as of v.1.12 dated 2004-03-25T04:07:30) is owl:ObjectProperty, thus it should have a resource as its value, rather than a data values (though it's possible for ObjectProperty to have data value in OWL Full...).
<rdf:Description rdf:ID="geo"> <rdfs:label>GEO</rdfs:label> <rdfs:comment>This property specifies information related to the global position for the activity specified by a calendar component.</rdfs:comment> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty
"/> <rdfs:domain> <owl:Class rdf:nodeID="DomainOf_geo"> <owl:unionOf rdf:parseType="Collection"> <owl:Class rdf:itemscope="" itemtype="http://schema.org/Thing" itemid="#Vevent"/> <owl:Class rdf:itemscope="" itemtype="http://schema.org/Thing" itemid="#Vtodo"/> </owl:unionOf> </owl:Class> </rdfs:domain> </rdf:Description>
According to this definition, it seems appropriate to put Geo vocabulary (e.g. geo:lat
and geo:long
) in ical:geo
.
<ical:geo rdf:parseType="Resource"> <geo:lat>40.442673</geo:lat> <geo:long>-79.945815</geo:long> </ical:geo>
Note: Dan Connolly said it was a bug that ical:geo was defined as owl:ObjectProperty. See discussion at IRC meeting on 2004-04-07.
LOCATION and GEO
Since both LOCATION and GEO describe the place where an event occurs, it seems desirable to associate them in some ways, or put both label (location) and geographical coodinates (lat/long) in one resource which corresponds to the place, something like:
<ical:location rdf:parseType='Resource'> <rdfs:label>New York, Sheraton Hotel</rdfs:label> <geo:lat>40.442673</geo:lat> <geo:long>-79.945815</geo:long> </ical:location>
However, the above is not possible because ical:loacation
is defined as owl:DatatypeProperty, and has Vevent or Vtodo as its domain (as of v.1.12 dated 2004-03-25T04:07:30).
<rdf:Description rdf:ID="location"> <rdfs:label>LOCATION</rdfs:label> <rdfs:comment>The property defines the intended venue for the activity defined by a calendar component.</rdfs:comment> <rdfs:comment>value type: TEXT</rdfs:comment> <spec:valueType>TEXT</spec:valueType> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty
"/> <rdfs:range> <rdfs:Datatype rdf:itemscope="" itemtype="http://schema.org/Thing" itemid="http://www.w3.org/2001/XMLSchema#string"/> </rdfs:range> <rdfs:domain> <owl:Class rdf:nodeID="DomainOf_location"> <owl:unionOf rdf:parseType="Collection"> <owl:Class rdf:itemscope="" itemtype="http://schema.org/Thing" itemid="#Vevent"/> <owl:Class rdf:itemscope="" itemtype="http://schema.org/Thing" itemid="#Vtodo"/> </owl:unionOf> </owl:Class> </rdfs:domain> </rdf:Description>
Dan Connolly suggested the possible use of cyc:eventOccursAt
for this sort of structured description of the place:
<cyc:eventOccursAt rdf:parseType='Resource'> <cyc:nameString>New York, Sheraton Hotel</cyc:nameString> <geo:lat>40.442673</geo:lat> <geo:long>-79.945815</geo:long> </cyc:eventOccursAt>
This is good if we forget about ical:geo
and ical:location
. If we stick to ical terms, we should use these properties independently:
<ical:location>New York, Sheraton Hotel</ical:location> <ical:geo rdf:parseType="Resource"> <geo:lat>40.442673</geo:lat> <geo:long>-79.945815</geo:long> </ical:geo>
ATTENDEE and FoaF
FOAF is a good candidate to describe persons who attend the event. There have been some discussions on including FOAF terms in RDFical, namely ical:attendee
:
<ical:attendee rdf:parseType='Resource'> <ical:calAddress rdf:resource="mailto:libby.miller@..."/> <foaf:mbox_sha1sum>289d4d44325...</foaf:mbox_sha1sum> </attendee>
or, more explicitly:
<ical:attendee> <foaf:Person> <ical:calAddress rdf:resource="mailto:libby.miller@..."/> <foaf:mbox_sha1sum>289d4d44325...</foaf:mbox_sha1sum> </foaf:Person> </ical:attendee>
Looks nice, but it's not clear whether this is allowed in current schema which defines the range of ical:attendee
as #Value_CAL-ADDRESS
(as of v.1.12 dated 2004-03-25T04:07:30).
<rdf:Description rdf:ID="attendee"> <rdfs:label>ATTENDEE</rdfs:label> <rdfs:comment>The property defines an "Attendee" within a calendar component.</rdfs:comment> <rdfs:comment>value type: CAL-ADDRESS</rdfs:comment> <spec:valueType>CAL-ADDRESS</spec:valueType> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#ObjectProperty"/><rdfs:range> <owl:Class rdf:itemscope="" itemtype="http://schema.org/Thing" itemid="#Value_CAL-ADDRESS"/> </rdfs:range>
<rdfs:domain> <owl:Class rdf:nodeID="DomainOf_attendee"> <owl:unionOf rdf:parseType="Collection"> <owl:Class rdf:itemscope="" itemtype="http://schema.org/Thing" itemid="#Valarm"/> <owl:Class rdf:itemscope="" itemtype="http://schema.org/Thing" itemid="#Vevent"/> <owl:Class rdf:itemscope="" itemtype="http://schema.org/Thing" itemid="#Vtodo"/> <owl:Class rdf:itemscope="" itemtype="http://schema.org/Thing" itemid="#Vjournal"/> <owl:Class rdf:itemscope="" itemtype="http://schema.org/Thing" itemid="#Vfreebusy"/> <owl:Class rdf:itemscope="" itemtype="http://schema.org/Thing" itemid="#Valarm"/> </owl:unionOf> </owl:Class> </rdfs:domain> </rdf:Description>
ical:Value_CAL-ADDRESS
is not explicitly defined in the schema, thus it might be OK to consider a resource of rdf:type foaf:Person
can also be rdf:type ical:Value_CAL-ADDRESS
, not sure ...
Pointers to more discussions and examples
- Combining foaf, RDFical and geo, and maybe RSS 1.0... by Libby Miller, 2003-09-30
- Get Your FOAF On: Events by Leigh Dodds, 2004-02-10
- Semantic Web Application Integration: Travel Tools by Dan Connolly, 2003-04-16, v.1.31