Tim Berners-Lee has taken up the hatchet

Tim Berners-Lee takes up the hatchet and publishes use cases for relative URIs as namespace names:

I can’t remember what prompted me to write up these sue cases [sic] for relative URIs in namespaces, and I apologize if I have done it before. The XML 1.0 and XML 1.1 namespaces documents « deprocate » this practice, following a vote at a XML plenary. It seems that RDF does need this, but no one else seems to just now.

Two use cases follow, the first one contradicted by Elliotte Rusty Harold, the second one related to RDF:

2. In in RDF, local identifiers are of the for rdf:id= »foo » or about= »#foo », which are equivalent. These are sed for naming arbitrary things within a description.

The URl « #foo » is defiuned to be relative to the current document. by the URI spec.

RDF can also use these ientifiers as class names or properties, in which case they are usedas element names in a namespace of the document itself. It is clearly useful to be able to say xmlns:= » »in this case.

We have had plenty of trouble with information (for example in the cwm test suite) being serialized as XML, and the local identifiers having necessarily to be given absolute URIs. This has mean that the test files have ended up bein branded with the local filepath whether they were processed(xmlns= »file:/disk4/joe/devel/test/set5/bar ») which works, but its a pain. It makes files arbitrarily different for testing, can have privacy implications, and so on.

I am not sure what is meant by xmlns:= » ».

xmlns= » » has been allowed since namespaces in XML 1.0 and xmlns:foo= » » has been introduced by namespaces in XML 1.1 (now a Proposed Recommendation). Both are namespaces « undeclaration » and that’s probably not what’s meant here.

If it’s about using relative URIs in RDF, I wonder if all this is really an issue with XML namespaces and not rather an issue with the XML syntax of RDF. Maybe RDF just needs some kind of rdf:base attribute?

Also, I have more than mixed feelings about using rdf:about= »#foo ».

The only circumstance where that would seem legitimate to me would be to make assertions about the XML fragment identified as « #foo », but is that interesting?

Doesn’t it make RDF no better than XLink+XPointer which relies on URIs used as addresses rather than names?

Of course, that’s painful to give each resource an absolute URI, but at least, these URIs don’t change when you move the documents containing the assertions.

Or have I misunderstood the whole point?

RDF Query Languages

I am thinking about writing a RSS aggregator. Not that it is original or has never been done, but just as an exercise to play with a RDF database and so far I am still not convinced of the way to go!

As a query language, I really like Versa, but RDQL seems like having much more traction and I have given it a closer look.

What I don’t like about it is that it seems to bring the RDF data model to its end: after you’ve used it, you don’t see triples any longer but tables of resources.

To take an example from the RDQL tutorial:

SELECT ?resource, ?givenName
WHERE (?resource, <http://www.w3.org/2001/vcard-rdf/3.0#N>, ?z) ,
      (?z, <http://www.w3.org/2001/vcard-rdf/3.0#Given>, ?givenName)

Returns:

resource                         | givenName
============================================
<http://somewhere/JohnSmith/>    | "John"
<http://somewhere/RebeccaSmith/> | "Rebecca"
<http://somewhere/SarahJones/>   | "Sarah"
<http://somewhere/MattJones/>    | "Matthew"

Where are the triples gone?

What does the strenght of other query languages in other domains such as SQL or XPath is that their data models are the same in input as in output: the result of a SQL select statement is basically like a table and I can do sub queries on this result or insert it into a table, the result of an XPath query is (or can be) a nodeset which I can output as XML and on which I can perform a new XPath query.

By contrast, the result of a RDQL query seems to be a bunch of resoures that I can’t really use as triples.

Why is that a problem?

Let’s say I want to create a RSS channel with RSS items meeting a condition. With XPath I can just write « //rss:item[my condition] » and I have a nodeset with the complete definition of these items. With RDQL, I can write a query that will give me these items as resources but I haven’t seen how I could get these items with their descriptions as triples ready to be serialized back as RSS.

What I’d really like, is a query language which would let me do with RDF graphs what I am doing in XPath!

websemantique.org

Vendredi dernier, nous avons officiellement lançé la communauté websemantique.org

C’est un engagement que nous (Charles Népote, Karl Dubost et moi-même) avions pris lors de la table ronde « Web sémantique et partage des connaissances des rencontres d’Autrans 2004.

So far so good, l’accueil a été pour le moment aussi favorable que celui rencontré à Autrans. Nous avons reçu plusieurs messages d’encouragement, 25 personnes se sont abonnées à notre liste de discussion pendant le week end et plusieurs personnes ont pointé le bout du nez sur notre canal IRC.

Sans être phénoménal, le trafic du site est honorable pour un week end et, facteur encourageant, les visiteurs semblent répartir équitablement entre ceux qui viennent de XMLfr, ceux qui viennent du carnet web de Karl et ceux qui viennent des wikis de Charles.