If the Atom working group wants to move along quickly the extensibility problem has to be solved. A good extensibility model for atom means that a lot of issues need not be resolved immediately. Those issues that don't get a wide consensus don't need to be dealt with now. Only the best understood elements need go into the spec. Further additions can be left to the extension mechanism, and be integrated in later revisions when they are better understood. A good extension mechanism will mean a spec out of the door much sooner than otherwise.
And the best extension mechanism is RDF.
Now some are going to scream to high heaven hearing this. "How do you think ", they will say jumping up and down, " how on earth do you think you are going to get consensus on this !? By the time we have finished the debate about RDF, the end of the universe will be nigh, and the heavens will be falling upon us!"
So here I propose two ways to do this that should be relatively easy, and should satisfy those that don't want to touch RDF with a barge-pole, yet make them really happy because they will have a great spec to work with real soon.
A COMPARISON ============
The idea is to try to work from both ends: try to get an rdf format that resembles as closely as possible the current Atom spec, and perhaps make a few adjustments in the Atom spec if needed.
Essentially we would like the following to be RDF:
<?xml version="1.0" encoding="utf-8"?>
<feed version="draft-ietf-atompub-format-03: do not deploy"
xmlns="http://purl.org/atom/ns#draft-ietf-atompub-format-03">
<head>
<title>Example Feed</title>
<link href="http://example.org/"/>
<updated>2003-12-13T18:30:02Z</updated>
<author>
<name>John Doe</name>
</author>
</head>
<entry>
<title>Atom-Powered Robots Run Amok</title>
<link href="http://example.org/2003/12/13/atom03"/>
<id>vemmi://example.org/2003/32397</id>
<updated>2003-12-13T18:30:02Z</updated>
</entry>
</feed>So this is the closest I have come to the above [1]
<?xml version="1.0" encoding="utf-8"?> <Feed xmlns="http://bblfish.net/work/atom-owl/2004-11-09/Atom.owl#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <head rdf:parseType="Resource"> <title>Example Feed</title> <link rdf:resource="http://example.org/"/> <updated rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime" >2003-12-13T18:30:02Z</updated> <author rdf:parseType="Resource"> <name>John Doe</name> </author> </head> <entry rdf:parseType="Resource"> <title>Atom-Powered Robots Run Amok</title> <link rdf:resource="http://example.org/2003/12/13/atom03"/> <id rdf:resource="vemmi://example.org/2003/32397"/> <updated rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime" >2003-12-13T18:30:02Z</updated> </entry> </Feed>
So what differences does this example reveal? (more elaborate examples will of course reveal more)
- there is a rdf:parseType="Resource" on the head and the entry element
- there is a rdf:datatype on the date constructs
- the link has a rdf:resource instead of the src
- "Feed" is in captials because it is a node, the rest are lowercase because they
are relations
Otherwise we have something very similar in the structure.
TWO SOLUTIONS =============
So we could do one of two things:
A. tweak the current Atom standard just enough so that it is not RDF but would
without any problems be RDF if the rdf:parseType, rdf:datatype, ... attributes get added. With a formal model backing it (where the predicates would be defined using the correct namespace, placed at the correct http location), this would allow people who want to extend Atom to add those missing attributes, and thereby turn Atom into RDF, giving them all the extensibility they desire. Simple xml parsers will have to be told to ignore any attributes or constructs that are not in the spec. The people extending Atom in this way will only be able to say it is atom, if an Atom parser that ignores all the RDF magic can parse the feed correctly.
B. Bite the bullet and add the rdf magic in the spec. This would mean that any Atom Feed would be parsable by an RDF parser, as well as a simple XML one.
TODO ====
Either of these solutions will require a little understanding and ability to compromise on both sides of the debate. There is an Atom-OWL list on google [3] that may be a good place to discuss this in more details. Because clearly there is still a lot of work to be done getting tidying up the details of the OWL spec to get it closer to what the Atom group is working on.
Perhaps we could first start off by having everybody out there who thinks this is a good idea, give some +1, so that we know there is some momentum behind this.
All the best,
Henry Story
http://bblfish.net/blog/
[1] This is after reading the very good article http://www.w3.org/TR/rdf-syntax-grammar/ Someone with more experience may do a lot better.
[2] I use the new Atom.owl spec I have made available at
http://bblfish.net/work/atom-owl/2004-11-09/Atom.owl
http://bblfish.net/work/atom-owl/2004-11-09/Atom.html
(ignore the W3C Recommendation on the right hand side :-)[3] http://groups-beta.google.com/group/atom-owl
