<feed xmlns="http://www.w3.org/2005/Atom" xmlns:foaf="http://xmlns.com/foaf/0.1/"><title>norman.walsh.name: Comments on /2005/12/05/vcard</title><link rel="alternate" type="text/html" href="http://norman.walsh.name/2005/12/05/vcard"/><id>http://norman.walsh.name/2005/12/05/vcard/comments.atom</id><updated>2012-02-13T06:30:46.612754Z</updated><entry><title>Comment 1 on /2005/12/05/vcard</title><link rel="alternate" type="text/html" href="http://norman.walsh.name/2005/12/05/vcard#comment0001"/><id>http://norman.walsh.name/2010/09/25/oauth#comment0001</id><published>2005-12-06T10:12:38Z</published><updated>2005-12-06T10:12:38Z</updated><author><name>Sjoerd Visscher</name><foaf:mbox_sha1sum>da39a3ee5e6b4b0d3255bfef95601890afd80709</foaf:mbox_sha1sum></author><content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
    <p>Is it just me, or is it odd to give an organisation an organisation-name property. Either I'd give a person an organisation-name property, or the organisation a name property.</p>
  </div></content></entry><entry><title>Comment 2 on /2005/12/05/vcard</title><link rel="alternate" type="text/html" href="http://norman.walsh.name/2005/12/05/vcard#comment0002"/><id>http://norman.walsh.name/2010/09/25/oauth#comment0002</id><published>2005-12-06T13:37:04Z</published><updated>2005-12-06T13:37:04Z</updated><author><name>Bruce D'Arcus</name><foaf:mbox_sha1sum>da39a3ee5e6b4b0d3255bfef95601890afd80709</foaf:mbox_sha1sum></author><content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
    <p>Norm, how about changing v:n to v:name, and v:fn to v:formattedName or, better yet, v:displayName? In any case, the one or two letter initials ought to go.</p>
  </div></content></entry><entry><title>Comment 3 on /2005/12/05/vcard</title><link rel="alternate" type="text/html" href="http://norman.walsh.name/2005/12/05/vcard#comment0003"/><id>http://norman.walsh.name/2010/09/25/oauth#comment0003</id><published>2005-12-06T13:59:42Z</published><updated>2005-12-06T13:59:42Z</updated><author><name>Bruce D'Arcus</name><foaf:mbox_sha1sum>da39a3ee5e6b4b0d3255bfef95601890afd80709</foaf:mbox_sha1sum></author><content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
    <p>Another name issue: while almost all of the name properties (given, family, etc.) can denote order coupled with language, the additional-name property cannot.  Not sure if there's any easy way around this though.</p>
  </div></content></entry><entry><title>Comment 4 on /2005/12/05/vcard</title><link rel="alternate" type="text/html" href="http://norman.walsh.name/2005/12/05/vcard#comment0004"/><id>http://norman.walsh.name/2010/09/25/oauth#comment0004</id><published>2005-12-06T14:50:01Z</published><updated>2005-12-06T14:50:01Z</updated><author><name>David Powell</name><foaf:mbox_sha1sum>da39a3ee5e6b4b0d3255bfef95601890afd80709</foaf:mbox_sha1sum></author><content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
    <p>
There are a few useful features of vCard that aren't supported.  Eg home and business phone numbers, and prefered numbers:
</p>

<p>
</p>
    <pre>
TEL;TYPE=home,cell:555-1111<br/>
TEL;TYPE=work,cell:555-2222<br/>
TEL;TYPE=work,pref:555-3333
</pre>


<p>
These attributes also apply to addresses and emails and are used quite frequently in practice.
</p>

<p>
Many vCard fields allow lists of multiple values using comma (whilst still allowing comma to be used as a comma by backslash escaping it).  Eg, someone with two middle names:
</p>

<p>
</p>
    <pre>
N:Stevenson;John;Philip,Paul;;
</pre>


<p>
or an address with two street address lines:
</p>

<p>
</p>
    <pre>
ADR:;;10\, Downing Street,Westminster;London;;;UK
</pre>


<p>
Features such as the "group." notation for grouping properties would be difficult to implement in RDF, and are so rarely used that it doesn't seem worth trying to support them.  vCard is fairly complicated, so it will be difficult to come up with something that makes simple cases simple, but can also be extended to cope with more complicated cases.  It would still be useful to come up with a "vCard/RDF Basic" vocabularly though, whilst still allow someone to add "vCard/RDF Super" properties if they needed to do anything fancier (such as ones which take rdf:Collections as values.)
</p>

<p>
How do you intend to implement things like Photo, btw?  As base-64 encoded literals?
</p>
  </div></content></entry><entry><title>Comment 5 on /2005/12/05/vcard</title><link rel="alternate" type="text/html" href="http://norman.walsh.name/2005/12/05/vcard#comment0005"/><id>http://norman.walsh.name/2010/09/25/oauth#comment0005</id><published>2005-12-06T15:33:12Z</published><updated>2005-12-06T15:33:12Z</updated><author><name>Norman Walsh</name><foaf:mbox_sha1sum>da39a3ee5e6b4b0d3255bfef95601890afd80709</foaf:mbox_sha1sum></author><content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">I've modelled phone numbers as URIs, so type is simply a property of that URI:

<pre>&lt;rdf:Description rdf:about="tel:555-1111"
                 xmlns:v="http://nwalsh.com/rdf/vCard#"&gt;
  &lt;v:type&gt;home&lt;/v:type&gt;
  &lt;v:type&gt;cell&lt;/v:type&gt;
&lt;/rdf:Description&gt;</pre>

Similarly, middle name is a property and that property can occur more
than once with different values. For better or worse, this doesn't
preserve order within the group.

I modelled photo as an object so you can either point to it with a URI
or use a data: URI to encode it "in place".</div></content></entry><entry><title>Comment 6 on /2005/12/05/vcard</title><link rel="alternate" type="text/html" href="http://norman.walsh.name/2005/12/05/vcard#comment0006"/><id>http://norman.walsh.name/2010/09/25/oauth#comment0006</id><published>2005-12-06T16:04:25Z</published><updated>2005-12-06T16:04:25Z</updated><author><name>Aristotle Pagaltzis</name><foaf:mbox_sha1sum>da39a3ee5e6b4b0d3255bfef95601890afd80709</foaf:mbox_sha1sum></author><content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
    <p>I’m not sure if any of the existing ontologies follow the approach I want to outline, since I have no appreciable experience with RDF, as of yet (one day I intend to fix that), but I’ve done my share of RDBMS schema modelling, so I do have some opinions.</p>

<p>I believe assigning labels to phone numbers is not the right way to model this. The cleaner approach is to capture that a person has multiple <em>roles</em>; a role is what each piece of contact information is associated with. So rather than modelling a phone number as label + number attached to a person, it is just a number attached to a role attached to a person. Likewise, an email address is attached to a role.</p>

<p>That way you can capture any amount of detail in a very finegrained fashion that simply applying labels to types of contact info cannot match. All sorts of cool things are possible, like easily marking the entire “Acme Corp” role of “John Doe” as “past” when he leaves the company (and discard it as one or keep it for historical reference; how about attaching from/until data to roles?).</p>

<p>You could also allow roles to aggregate other roles, say, when “John Doe” works at two different “Acme Corp” offices; when you don’t know which one he is at today, you want to know all phone numbers he might be reached at.</p>

<p>Going on, you can then model organisations as a special case of a role which has no owner and may aggregate roles belonging to any person.</p>

<p>(If you try to model a person as a special case of a role things get hairy. I tried to sketch this out a number of ways and decided I was <a rel="nofollow" href="http://www.joelonsoftware.com/articles/fog0000000018.html">running out of oxygen</a>.)</p>
  </div></content></entry><entry><title>Comment 7 on /2005/12/05/vcard</title><link rel="alternate" type="text/html" href="http://norman.walsh.name/2005/12/05/vcard#comment0007"/><id>http://norman.walsh.name/2010/09/25/oauth#comment0007</id><published>2005-12-06T16:57:45Z</published><updated>2005-12-06T16:57:45Z</updated><author><name>Norman Walsh</name><foaf:mbox_sha1sum>da39a3ee5e6b4b0d3255bfef95601890afd80709</foaf:mbox_sha1sum></author><content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
    <p>Given a completely free hand, I think I would take an approach along
the lines you suggest, Aristotle. However, that's not a model that any
<a rel="nofollow" href="http://en.wikipedia.org/wiki/Personal_information_manager">PIM</a>
I've used actually takes. Nor is it consistent with my
understanding of the vCard model. I'm not inclined to use a model that
won't map conveniently onto my actual address book.</p>
  </div></content></entry><entry><title>Comment 8 on /2005/12/05/vcard</title><link rel="alternate" type="text/html" href="http://norman.walsh.name/2005/12/05/vcard#comment0008"/><id>http://norman.walsh.name/2010/09/25/oauth#comment0008</id><published>2005-12-06T17:43:25Z</published><updated>2005-12-06T17:43:25Z</updated><author><name>David Powell</name><foaf:mbox_sha1sum>da39a3ee5e6b4b0d3255bfef95601890afd80709</foaf:mbox_sha1sum></author><content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
    <p>
Sorry, I forgot about the tel: URLs.  There could potentially be problems doing that though; PREF is really a property of the relationship rather than the number itself.  I share a desk phone at work, I might choose to mark that phone as preferred, but if I did then anyone else using that phone would get it marked as preferred too.
</p>
<br/>
    <p>
Aristotle: the "group." notation in vCard lets you do some of the things that you mention, but I've never seen it used in practice.  An example would be:
</p>
    <pre>
x.TEL;TYPE=WORK:555-2222
x.EMAIL:old@example.com
x.NOTE:Old workplace
y.TEL;TYPE=WORK:555-1111
y.EMAIL:new@example.com
y.NOTE:New workplace
</pre>


<p>
Theoretically applications should be able to consume property groups, even if they ignore the grouping.
</p>
  </div></content></entry><entry><title>Comment 9 on /2005/12/05/vcard</title><link rel="alternate" type="text/html" href="http://norman.walsh.name/2005/12/05/vcard#comment0009"/><id>http://norman.walsh.name/2010/09/25/oauth#comment0009</id><published>2005-12-07T17:24:26Z</published><updated>2005-12-07T17:24:26Z</updated><author><name>leobard</name><foaf:mbox_sha1sum>da39a3ee5e6b4b0d3255bfef95601890afd80709</foaf:mbox_sha1sum></author><content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
    <p>hm, I don't see the disctinction between adress objects that serve as postal or work or mail or other address.
</p>
    <p>
x - hasPostalAddress - y.
</p>
    <p>
y a Address.
</p>
    <p>
x - hasWorkAddress - z
</p>
    <p>
z a Address.
</p>
    <p>
?</p>
  </div></content></entry><entry><title>Comment 10 on /2005/12/05/vcard</title><link rel="alternate" type="text/html" href="http://norman.walsh.name/2005/12/05/vcard#comment0010"/><id>http://norman.walsh.name/2010/09/25/oauth#comment0010</id><published>2006-08-21T14:27:29Z</published><updated>2006-08-21T14:27:29Z</updated><author><name>Tim Berners-Lee</name><foaf:mbox_sha1sum>da39a3ee5e6b4b0d3255bfef95601890afd80709</foaf:mbox_sha1sum></author><content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
    <p>Norm, you say "I've modelled phone numbers as URIs, so type is simply a property of that URI".
I feel that is broken: the home/work/vacation is a relationship between me and a contact point which can have adresss and phone number.   The same location may be Jack and Jill's home and Jack's workplace, but not Jill's workplace.
  
The contact ontology, which was my take on this many years ago, uses a class of Location for this.
</p>
    <p>
Can't you concluse from the fact that your PIM says someone has a work phone number that they have a workplace which has a phone number?  Aristotle, you  call these roles, and I think thats the right structure, though  I  don't think 'role' is the rigth word.
</p>
    <p>
The Mac Addressbook allows you to create your one values for home/work/mobile/etc whcih suggests an advantage in modelling that relationship explicity and dseparately from the phone number.
</p>
    <p>
This really depends on whether the goal is to make a nice ontology or to make the closest one to vcard.    I'd be happy with two ontologies with well-known conversions between them.
</p>
    <p>
Oh, and by the way, would you like a w3.org namespace for that in case it catches on and develops (with he greatest of restect for the existing one!).</p>
  </div></content></entry><entry><title>Comment 11 on /2005/12/05/vcard</title><link rel="alternate" type="text/html" href="http://norman.walsh.name/2005/12/05/vcard#comment0011"/><id>http://norman.walsh.name/2010/09/25/oauth#comment0011</id><published>2006-08-23T17:39:58Z</published><updated>2006-08-23T17:39:58Z</updated><author><name>Norman Walsh</name><foaf:mbox_sha1sum>da39a3ee5e6b4b0d3255bfef95601890afd80709</foaf:mbox_sha1sum></author><content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Hi Tim. I've already changed the way I model phone numbers (probably based on a comment you made in some other forum :-). I now do it this way:

<pre>c:phone a owl:ObjectProperty;
    rdfs:label "Phone" .

c:homePhone a owl:ObjectProperty;
    rdfs:subPropertyOf c:phone;
    rdfs:label "Home" .

c:workPhone a owl:ObjectProperty;
    rdfs:subPropertyOf c:phone;
    rdfs:label "Work" .
...</pre>

Then I can say: <code>who:tbl c:workPhone "555-1212"; c:homePhone "555-1212" .</code> etc.

<p>Better?

</p><p>With respect to the W3C namespace, I'm game, I suppose. Though I guess we should have some public discussion somewhere to see if there's actually consensus about the model. As you point out, there's a tradeoff to be made between "a nice ontology" and "modelling vCard". Given that there were several other attempts out there to do ontologies for this sort of thing, I decided to make mine different by attempting to model vCard as closely as possible. But I'm prepared to be persuaded that it would be more valuable if it diverged here and there. (e.g. Bruce's comment about the ugly, short names.)</p></div></content></entry></feed>

