Re: [vcard] OWL or RDF for vCard?

Garret,

>> So, I'm not keen on properties like v:tel, that to support custom
>> telephone x-types would require the consumer to understand
>> sub-properties, know that the property is a sub-property of v:tel, and
>> know how to serialise the rdf property uri into a vcard x-token.

>> I'd prefer to see some indirection via a bnode, which I think is
>> necessary anyway to support PREF on the relation between the vCard and
>> the number (rather than globally marking the telephone 'prefered' for
>> every vcard that references it).

> Can you give an example of the sort of bnode setup you were thinking
> of?

The first option is something like this:

a) teltype literals

  <v:tel>
    <v:TEL>
      <rdf:value>tel:+1-555-1234</rdf:valuue>
      <v:teltype>HOME</v:teltype>
      <v:teltype>X-SKYPE</v:teltype>
    </v:TEL>
  </v:tel>

I don't know whether using literals rather than URIs to identify types
bothers people.

There is another problem with this. In vCard, the teltype defaults to
"voice". Assuming defaults in RDF is bad isn't it - so producers would
need to explicitly include the default type. Not such a problem for
TEL, but for ADR the default is intl, postal, parcel, and work.

I think that PREF should be handled differently btw - I'd make it an
rdfs:Class and use it to tag the TELs, ADRs, and EMAILs.


b) teltype classes

If we don't want to use literals in this way, we could use
rdfs:Classes.

  <v:tel>
    <v:TEL>
      <rdf:value>tel:+1-555-1234</rdf:value>
      <rdf:type rdf:resource="tag:example.com,2007:vcard/teltype/HOME" />
    </v:TEL>
  </v:tel>

But then you have the problem that x-types aren't going to have a
pre-defined rdfs:Class.

It's not something that I've seen before, but is there anything to
stop us from allocating a URI-space which allows type tokens to be
converted to RDFS classes using URI templates [1].   Enabling:

  <v:tel>
    <v:TEL>
      <rdf:value>tel:+1-555-1234</rdf:value>
      <rdf:type rdf:resource="tag:example.com,2007:vcard/teltype/HOME" />
      <rdf:type rdf:resource="tag:example.com,2007:vcard/teltype/X-SKYPE" />
    </v:TEL>
  </v:tel>

      
We could then even solve the problem of defaults using this solution by
predefining a class that implements all the defaults:

  <rdfs:Class rdf:about="DefaultADR">
    <rdfs:subClassOf rdf:resource="ADR" />
    <rdfs:subClassOf rdf:resource="tag:example.com,2007:vcard/adrtype/INTL" />
    <rdfs:subClassOf rdf:resource="tag:example.com,2007:vcard/adrtype/POSTAL" />
    <rdfs:subClassOf rdf:resource="tag:example.com,2007:vcard/adrtype/PARCEL" />
    <rdfs:subClassOf rdf:resource="tag:example.com,2007:vcard/adrtype/WORK" />
  </rdfs:Class>

Which would save a bit of typing for the common case, and this rule
would be well known so it wouldn't require general purpose inferencing.

And by making x-types actual RDFS Classes it means that people can
write schemas to document ones that they are using.

[1] http://www.ietf.org/internet-drafts/draft-gregorio-uritemplate-00.txt

-- 
Dave

Received on Tuesday, 3 April 2007 10:06:17 UTC