- From: Garret Wilson <garret@globalmentor.com>
- Date: Tue, 27 Mar 2007 08:18:25 -0700
- To: Harry Halpin <hhalpin@ibiblio.org>
- CC: Kjetil Kjernsmo <kjetil@kjernsmo.net>, semantic-web@w3.org
Harry, Harry Halpin wrote: > However, the way we decided to deal with this was simply to use v:name > to deal with the whole name, and keep "v:n" for the "components" of a > name, I'm not sure I understand. Do you mean v:name property or v:Name class? v:n property or v:N class? Because right now, the specification has v:n property with a range of v:Name class, which makes sense. But what you say next... > but not put an xsd:string as the range - and this maps to the use > of vcard in the hcard microformat as well. xsd:string as a range of what? If I take what you say literally, you now are using a v:name property that has a string range, and a v:n property that has an undefined range---is that it? Or are you saying that you're keeping the v:n property v:Name range relationship, and the components of v:Name have an undefined range? Either way, this moves from a format that is so restrictive that it can't handle real-world data (i.e. unacceptable for publishing) to a format that is so unrestricted that it can't be understood by a general processor (i.e. unacceptable for consuming). In other words, if anything can be put in the range of given-name, for example, then only the thing that produced it will know how to extract the information from it. That's why the proposal I listed last time tries to walk the line between so much restriction to be of any use, yet so much freedom that the processor doesn't understand it. Let me list the relevant rules again from my proposal: If a particular Directory type calls for a literal value yet specifies parameters for that value, or if a literal value appears in some other circumstance in which an RDF resource is necessary (such as as elements of rdf:List), a blank node shall be used as the property value with the literal value appearing as the property of the blank node's rdf:value property. e.g. The vCard ORG type, if language needs to be specified, would produce an vcard:org property with a blank node value that has both the directory:language property to indicate the language and also the rdf:value property to indicate the literal property value. If a particular Directory type specifies a structured value, an RDF class shall be used to contain the elements of that stuctured value with a name in the form example:InitialUppercase. e.g. The value of the vCard ADR type would be represented as a vcard:Adr class that is the value of a vcard:adr property. If a particular Directory type specifies a structured value, the components of which can be repeated but in which order is important, each structured value component shall be allowed to be represented either a single value or as an rdf:List value. If there is no official name defined for a particular structured value subcomponent, one shall be created that is as close as possible to the name used in the specification in referring to that component, using the example:mixedCase format. e.g. The subcomponent "Additional Name" of the vCard N type would appear as a vcard:additionalName property of the vcard:N class which would appear as a value of the vcard:n property. The value of the vcard:additionalName property could be single literal value; a blank node with its rdf:value set to the literal value (if, for instance, the directory:language needed to be specified for the value), or an rdf:List of blank nodes as just described (using a rdf:parseType of Collection in RDF+XML syntax, for example). So that means I could have a plain literal: <card:N> <card:firstName>George</card:firstName> </card:N> ...a complex string value: <card:N> <card:firstName> <rdf:Description directory:language="en" dc:description="My first Name" rdf:value="George"/> </card:firstName> </card:N> ...or a list of first names: <card:N> <card:firstName rdf:parseType="Collection"> <rdf:Description rdf:value="George"/> <rdf:Description rdf:value="Ahmed"/> </card:firstName> </card:N> You can see that this is very flexible, but it's not a free-for-all. Any processor would be able to understand the name value just by using the rules. It would still cover most of what vCard provides, and the common case would collapse into what we expect normally: <card:N><card:firstName>George</card:firstName></card:N> > Since many names do not map > easily, as you have rightfully pointed out, to the "components" of the > name, the way to sort names that have multiple components each with > their own sorting rules is simply to specify a "v:sort-string" > > So, the current vcard proposal would have precisely what you said: > > <v:sort-string>Stevenson;John;Philip,Paul;Dr.;Jr.,M.D.,A.C.P."</v:sort-string>? > I think you missed my point. I didn't provide that for a sorting name. I provided that as an indication of what we could do for storing the components if we force a simple storage structure---we might as well have literal vCard data within the RDF instance, which is what I put above. That's straight out of RFC 2426. Sorting is another issue altogether, one which seems straightforward with a sort string as you mentioned, and one about which I'm not particularly concerned. So in summary, here's what I'm saying: if we set as a goal of this endeavor to create an RDF ontology that simply but reasonably completely maps to data in the vCard specification, we need to have a format that is not so restrictive that it discards a bunch of vCard data but not so lenient that processors will not be able in the absence of rules outside the specification to understand the data. To put that last point another way, a processor should know, just by following the specification, how to generate a traditional vCard from any RDF vCard data solely from the specification. I think the current http://www.w3.org/2006/vcard/ns has the former problem. I think your new solution has the latter---or maybe I didn't understand it correctly. Garret > > > > Kjetil Kjernsmo wrote: > >> On Monday 26 March 2007 21:16, Garret Wilson wrote: >> >> >>> On the other hand, though, the entire ontology has been so restricted >>> as to become hardly usable in an international environment. A case in >>> point is the v:Name class, which only allows a single instance of >>> each name component. The names-in-FOAF discussion has already pointed >>> to the Dublin Core analysis ( >>> http://dublincore.org/documents/name-representation/ ) of the rich >>> variety of naming conventions around the world. The current >>> http://www.w3.org/2006/vcard/ns proposal could hardly handle the name >>> of His Majesty King Abdullah II bin Al Hussein of Jordan. Sure, I >>> know that we could take a couple of those name components, separate >>> them with commas, and stick them into one of the existing v:Name >>> components, but if we're going to do that why don't we do away with >>> the v:Name class altogether and stick a literal vCard string into one >>> component, like this: >>> <v:n>Stevenson;John;Philip,Paul;Dr.;Jr.,M.D.,A.C.P."</v:n>? >>> >>> >> Actually, that's the topic that we devoted most of the time on an ad hoc >> face to face meeting in Boston in January with TimBL, Harry Halpin and >> myself present, as well as several others on IRC and phone. >> >> Tim himself has a whole array of titles, and we discussed examples like >> the one you had. We resolved that Harry would produce an update soon, >> but I guess he has been swamped in other work. >> >> But at least, you know that it is an active topic. >> >> Best, >> >> Kjetil >> >> > > >
Received on Tuesday, 27 March 2007 15:18:39 UTC