Y. B. Normal
Ziv Caspi can't keep his mouth shut.
[Valid RSS] Click here to visit the Radio UserLand website. Subscribe to "Y. B. Normal" in Radio UserLand. Click to see the XML version of this web page. Click here to send an email to the editor of this weblog.  
Updated: 2003-08-15; 11:40:34 PM.
 

Thursday, August 14, 2003
A Useless Comment on Atom 0.2, RDF Style Comment []Trackback []Google It! • 2:05:27 PM •

Some people have suggested that Atom could be made more RDF-friendly; others object. Most helpfully, we now have a suggested RDF version of the Atom 0.2 example. After looking at it, all I can say is how ugly.

It's not that I don't like RDF. I actually do.

RDF/XML, OTOH, ITD [*].

Two things are apparent:

  1. Syntax-wise, XML namespaces are seriously flawed. In every reasonable language (programming language, but the principle works the same for languages people speak) one has a way of pulling names from multiple namespaces into another namespace. In C++, I can say "using A::B::C; using D::E::F;" and later refer to A::B::C and D::E::F as C and F, respectively. This simplifies handling such names considerably. XML Namespaces doesn't let you do this -- it insists you write fully qualified names every time (except for one default namespace, which obviously is not enough in our case).
  2. Although RDF by its very nature is meant to weave together different namespaces into a single model, RDF/XML does nothing to alleviate the problem. It doesn't provide a way to locally create a namespace X and then map X::C to A::B::C and X::F to D::E::F. If you wonder why the Atom <id> element had to be replaced with the rdf:about attribute, this is the reason: while both mean the same thing, RDF demands using its own namespace, for no good reason.

Ugly.

BTW -- Looking at the sample feed, I believe there needs to be an rdf:about attribute on <foaf:Person>. Otherwise, if Mark Pilgrim were to write two entries, an RDF parser would not be able to tell they are the same person.


Update: Morten Frederiksen comments:

Re 1: "Fully qualified" would seem to imply that only complete namespace URIs with local names attached would work. That is of course not true, as qnames are used extensively. Also, you don't have to keep the same default namespace throughout a document.

I wrote "fully qualified" without regards to the meaning it has in XML. Sorry. What I meant was that you have to qualify names with their namespaces except for names in the default namespace. The fact that the default can change helps a little, but doesn't solve the problem of allowing you to create a document in which the presence of namespaces is reserved to just the "header" of the document. I don't want to juggle namespace constantly in my documents.

Re 2: Why define an atom-id in the first place? The rdf:about is part of the syntax. In other cases subPropertyOf etc. could be used.

Atom-id is defined because (1) when it was defined nobody considered reusing named from RDF a good thing, and (2) people wanted (and some of us still do) the document structure to be simple. As a result of the above, this means we have our own "union" namespace with all the interesting stuff we think Atom needs.

Re BTW: You should look at the FoaF spec to see that this is also not true. FoaF makes entensive use of owl:InverseFunctionalProperty to be able to identify persons accross mentions.

I must admin OWL is something I have avoided learning for quite some time... Thanks. (BTW -- if it can do that, can it also make an out-of-band association of the element atom:id with the attribute rdf:about?)


[*] I truly dislike.

© Copyright 2003 Ziv Caspi.

 
August 2003
Sun Mon Tue Wed Thu Fri Sat
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
Jul   Sep


About
FOAF
Other MS Blogger
RSS and News Aggregators
Radio & Friends
Blogging
Daily
Monthly
Search