En fait, CalDAV utilise ICalendar pour les données :
http://en.wikipedia.org/wiki/ICalendarPour l'instant je ne m'intéresse pas au protocole, je compte sur le service REST Google pour recevoir les données, éventuellement en envoyer (mais surtout ajouter localement des annotations sémantiques sur ces données).
Car le but est de raisonner en local sur l'ensemble des contacts et des rencontres.
Au fait , qu'est ce qui m'embête dans ICAL / RDF ?
Voici un extrait:
cal:dtstart a owl:ObjectProperty ;
rdfs:comment "\n\t default value type: DATE-TIME" , "This property specifies when the calendar component begins." ;
rdfs:domain [ a owl:Class ;
owl:unionOf ( cal:Vevent cal:Vtodo cal:Vfreebusy cal:Vtimezone cal:Vevent cal:Vevent cal:Vfreebusy cal:Vtimezone cal:Vtimezone )
] ;
rdfs:label "DTSTART" ;
rdfs:range [ a owl:Class ;
owl:unionOf ( cal:Value_DATE-TIME cal:Value_DATE cal:Value_DATE )
] ;
spec:valueType "DATE-TIME" .# ...
cal:Value_DATE-TIME a owl:Class .
Donc:
cal:Value_DATE-TIME est une classe et non un datatype, et il n'est pas autrement défini.
Pour rendre ça utilisable il faudrait dire que cal:Value_DATE-TIME a une propriété datatype de type xsd:dateTime .
Donc cette ontologie n'est pas utilisable telle quelle, ce qui ne donne pas confiance.
De plus l'usage immodéré de owl:unionOf ( à la place de simple rdfs:subclassOf ) est lourd.
Ce ne pose pas de gros problème avec les règles métier, mais un composant écrit en Java qui génère un formulaire ( N3From.java ) ne doit avoir à traiter des inférences trop compliquées pour générer les champs du formulaire.
Même pour une base de règles pour retrouver les champs possibles associés à une classe ou un individu ( au sens OWL :) ) , comme swing-rules.n3p , c'est compliqué de prévoir tous les cas.