- From: David Powell <djpowell@djpowell.net>
- Date: Tue, 3 Apr 2007 11:06:08 +0100
- To: Garret Wilson <garret@globalmentor.com>
- CC: 'Semantic Web' <semantic-web@w3.org>
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