W3C home > Mailing lists > Public > www-rdf-logic@w3.org > August 2001

Re: Summary of the QName to URI Mapping Problem

From: Dan Connolly <connolly@w3.org>
Date: Thu, 16 Aug 2001 16:41:01 -0500
Message-ID: <3B7C3DED.766EBC3E@w3.org>
To: Patrick.Stickler@nokia.com
CC: drew.mcdermott@yale.edu, www-rdf-logic@w3.org, www-rdf-interest@w3.org
Patrick.Stickler@nokia.com wrote:
> 
> > -----Original Message-----
> > From: ext Dan Connolly [mailto:connolly@w3.org]
> > Sent: 16 August, 2001 16:43
> > To: Stickler Patrick (NRC/Tampere)
> > Cc: drew.mcdermott@yale.edu; www-rdf-logic@w3.org;
> > www-rdf-interest@w3.org
> > Subject: 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 ]
> 
> Well trodden but hidden ground? Sorry, I don't see how your reference
> does anything but reiterate that there is an issue here.

That's all the pointer was meant to do.

But I did get some new information out of your most recent
message: you're trying to match qnames in RDF without
expanding them to URIs; for example, using XSLT.

I have to admit I do that myself from time to time...

[...]

> > 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>
> 
> Uhhh, but if the actual QNames needed, according to the actual
> ontology are (mid:xyz@foo)(ble) and (mid:xyz@foo)(ble1) and
> you have applications, style sheets, etc. etc. looking for the
> real QNames, just what do you expect them to do with the above
> guesses.

I don't expect "real ontologies" to deal with Qnames... just URIs.

But XSLT is kinda handy... the actual mapping convention I tend
to use in practice is:

I. If you're designing and RDF vocabulary and you
want to make it easy to use XSLT with it,
choose a namespace name that ends in a non-XML-name character
(e.g. # or / or ?)

II. to split a URI into a namespace-name/local-name pair,
use the last non-xml-name character as the split point.

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

 and
       mid:xyz@fooble1
 becomesow
       <fooble1 xmlns="mid:xyz@">...</fooble>



In fact... this is what TimBL implemented in the semantic web toolkit
we're hacking on:

    def figurePrefix(self, uriref, rawAttrs, prefixes):
	i = len(uriref)
	while i>0:
	    if uriref[i-1] in self._namechars:
		i = i - 1
	    else:
		break
	ln = uriref[i:]
	ns = uriref[:i]

        [...]

    -- excerpted from http://www.w3.org/2000/10/swap/notation3.py

-- 
Dan Connolly, W3C http://www.w3.org/People/Connolly/
Received on Thursday, 16 August 2001 17:41:06 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:52:40 GMT