Re: Summary of the QName to URI Mapping Problem

[This will be my last message in this thread unless/until
I see some new information. We're convering well-trodden
ground here. cf
http://www.w3.org/2000/03/rdf-tracking/#rdfms-uri-substructure ]

Patrick.Stickler@nokia.com wrote:
> 
> > ... Any qname whose prefix binds to a URI reference
> > which, when concatenated with the QName's local name, yeilds
> > the relevant URI is just fine.
> 
> Uhhh... sorry Dan, but just where do you get that?

I deduce it from the RDF spec:

[[[
Each propertyElt E contained by a Description element results in the
creation of a triple {p,r,v} where:

  1.p is the expansion of the namespace-qualified tag name (Generic
     Identifier) of E. This expansion is generated by concatenating the
     namespace name given in the namespace declaration with the
LocalPart
     of the qualified name. 
]]]

--        Resource Description Framework (RDF) Model and Syntax
Specification
http://www.w3.org/TR/REC-rdf-syntax/
Wed, 24 Feb 1999 14:45:07 GMT

I have also seen it in a number of implmentations.

> Certainly not
> from the XML Namespace spec.

Of course not.

> One might be able to bend the XML NS
> spec wording to seem compatible with that interpretation,

The XML namespaces spec is silent on this matter; no bending
is necessary.

> but the
> XML NS spec defines no such QName to URI mapping function.
> 
> > >  But there's no rule for where
> > > to break it, and, as Patrick pointed out, if you do it the wrong way
> > > you get ambiguities.
> >
> > What ambiguities? concat(nsname, localname) is completely
> > unambiguous.
> 
> Well, I've provided examples several times to the list demonstrating
> that such straight concatenation is potentially collisive, including
> an example in the original posting of this thread.

Yes, but why does it matter that there are collisions? Why
does it matter that the mapping is not 1-1?

If by "unambiguous" you meant 1-1, then I sorry, I misunderstood.
The mapping is indeed not 1-1. For many URIs, there are lots
of ways to split it into a namespace name and a local name.

> But for your benefit, I'll repeat the example here:

And I'll repeat my answer...

> 
> I.e. if 'ns1:' = "urn:x:abc" and 'ns2:' = "urn:x:abcd"
>      then both 'ns1:defg' and 'ns2:efg' are mapped to
>      the same URI "urn:x:abcdefg"!

Yes, exactly.

> Yet these are clearly
>      separate resources per their disjunct QName identities

"clearly"? That's not clear at all.

> (the fact that the above example is contrived in no way lessens the
>  seriousness of this problem)

What problem? What are the undesirable consequences of
this state of affairs? (aside from threads like this one ;-)

> > > This really is a glaring hole in RDF that needs to be filled.
> >
> > Well, it's a discussion that keeps happening.
> > But I have yet to see any coherent argument that there's an
> > actual technical hole.
> 
> If the above example doesn't do it for you, I don't know what
> will.

It doesn't convince me there is a hole, no.

> And if you have not read my proposal for an rdf:Map construct
> (which includes numerous, well layed out arguments, examples and
> discussion) then I would appreciate it if you would. please see my
> posting to the www-rdf-interest group titled 'A proposed solution to
> the RDF syntactic/semantic mapping problem (long)' posted a couple of
> months ago. I'd also be happy to email you a copy.
> 
> > > Adopting an offical QName <-> URI mapping convention seems to be the
> > > obvious solution.
> >
> > The RDF spec includes an unambiguous QName -> URI mapping:
> >       uri(qname) = concat(nsname(qname), localname(qname))
> 
> Which is broken...

No, it's not.

> and does not address XML literal to resource URI
> mapping...

What "XML literal to resource URI mapping" is that?

> > It's a W3C recommendation; that's as official as we get around here.
> 
> Just because it's in a standard doesn't mean it's correct...

I certainly agree that endorsement is orthogonal to correctness.

But you asked for something official.

> > It's not possible to define a URI->Qname mapping, since not
> > all URIs end in XML name characters. (This is a limitation
> > that designers of RDF vocabularies should be made aware
> > of by some NOTE in the spec or something.)
> 
> Exactly! Great! A glimmer of light! At least one problem recognized.
> 
> So in order to re-serialize RDF encoded knowledge for a particular
> XML DTD or schema,

What does "RDF encoded knowledge for a particular XML DTD or schema"
mean?

> one must write *custom* code for each transformation
> rather than be able to utilize standardized generic tools with
> standardized mapping schemas!

Subject to the limitation that some URIs aren't usable as
RDF 1.0 property names, there are simple, generic approaches.
The simplest one I can think of is:

	1. scanning from the end
		if you find an XML name start character, go to step 2
		if you find something that's not an XML name character,
			stop and throw an exception (you've run
			into a limitation in RDF 1.0 syntax).
		keep scanning
	2. split the string into a namespace name and a localname.

So
	mid:xyz@fooble
becomes
	<e xmlns="mid:xyz@foobl">...</e>

and
	mid:xyz@fooble1
becomes
	<e1 xmlns="mid:xyz@foobl">...</e1>


> If such custom hacking has to happen for any cases where folks aren't
> using a particular type of URI scheme with particular fragment syntax,
> which are not explicitly defined by the standards, then we have a
> hurdle for global acceptance.

No custom hacking has to happen.

-- 
Dan Connolly, W3C http://www.w3.org/People/Connolly/

Received on Thursday, 16 August 2001 09:43:17 UTC