Just an idea, for now.

The UNAME Predicate

The RDF predicate http://www.w3.org/2001/12/uname#uname is hereby defined as being an Unambiguous (1:N) Property mapping from objects (rdf resources) to character strings. It being "unambiguous" means that if two objects have the same uname, they are the same object. (Having different unames does not not mean they are different, however. That would be a "unique" property.) So if anyone knows two RDF identifiers denote objects with the same uname, they can infer that the identifiers denote the same object.

An object can have lots of unames. Just be careful to only give it unames that have-never-been and never-will-be given to anything else. Once you give two objects the same uname, they effectively collapse into one object -- you can't talk about one without talking about the --> -- other.

The "resource names", the URI-References used as RDF identifiers are a kind of uname. In fact, the semantics of RDF documents can sometimes become much clearer if we convert them into "uname form", where we use unnamed nodes, the uname property, and literals. The N-Triples document

   <http://www.w3.org/> <http://purl.org/dc/elements/1.1/title> "World Wide Web Consortium".
gets turned into
   _:a <http://purl.org/dc/elements/1.1/title> "World Wide Web Consortium".
   _:a <http://www.w3.org/2001/12/uname#uname> "http://www.w3.org/".
These two forms mean exactly the same thing to any system which follows the definition of uname.

Unames are not restricted to URI Reference syntax. It's probably fine to use a string like "Something assigned the ISO-11578 UUID of 59a49d66-f649-11d5-94bb-0050ba4812a6" but if you do that, you won't be able convert to non-uname form

Perhaps we should define preferedName and canonicalName (cname), as a 1-1 property.

Huh? Why?

Because RDF Identifiers are not one-to-one with the objects they denote. You need to collapse nodes often. This means you need a lot of code for handling the 1-N mapping from nodes to their names. But you already have that stuff for handling properties! So consider node labels just another property.

Sandro Hawke
$Id: Overview.html,v 1.7 2001/12/21 20:08:06 sandro Exp $