[vcard] properties with variable ranges

Some properties in vcard can take very different values.  Eg, AGENT
can be a text string, an embedded vCard, or a URL.

What is the best practice?

a) As in the current rdf schema, a single property, with no defined
range:

[]    rdf:type ex:Vcard ;
      ex:agent "Description of some person" ;

[]    rdf:type ex:Vcard ;
      ex:agent _:vc ;

[]    rdf:type ex:Vcard ;
      ex:agent <http://example.com/person> ;

This requires consumers to examine the type of RDF node to understand
its meaning.  This seems a bit low-level.


b) Multiple properties:

[]    rdf:type ex:Vcard ;
      ex:agentText "Description of some person" ;

[]    rdf:type ex:Vcard ;
      ex:agentVcard _:vc ;

[]    rdf:type ex:Vcard ;
      ex:agentUrl <http://example.com/person> ;

... with a schema that defines ex:agentUrl, ex:agentVcard, and
ex:agentText to be sub properties of an 'abstract' base property.  The
sub-properties can all have appropriate rdfs:range properties.


c) introduce indirection via a bnode and have an explicit property to
indicate the value type.

This seems a bit verbose.


I prefer b).

-- 
Dave

Received on Monday, 2 April 2007 12:57:37 UTC