I would like to suggest that Atom already is an RDF format. I have shown that it is [1], we just need to formalize this as I suggested in [2].
Let us do the journey from RDF triples to Atom format once again. Let us take the example in the current Atom spec and draw it as a triple graph.
_f1 ---a------> <Feed> |--- head---> _e1 ---a-----> <Entry> | |---title---> "Example Feed" | |---link----> <http://example.org/> | |--updated--> "2003-12-13T18:30:02Z"^^xsd:dateTime | |---author--> _a1 ---a-----> <atom:Person> | |----name---> "John Doe"^^xsd:string | |---entry---> _e2 ---a-----> <Entry> |---title---> "Atom Powered Robots Run Amok" |----id-----> <vemmi://example.org/2003/32397> |--updated--> "2003-12-13T18:30:02Z"^^xsd:dateTime
The above shows an anonymous node _f1, which is of class atom:Feed related to two other anonymous nodes _e1 and _e2, of type Entry. (That these are of type entry is still controversial, but it makes the point I am making easier to understand). _e1 is related to a Person anonymous noted by the atom:author property. All that is known of the person is their name "John Doe" which is an xsd:string.
If we now follow the steps of the RDF/XML syntax specification [3] for converting a graph into XML we get the following transformations.
1. Simple RDF/XML ------------------
Here is perhaps the easiest to understand serialisation of the above graph.
<rdf:Description>
<rdf:type>
<rdf:Description rdf:about="&atom;Feed">
</rdf:Description>
</rdf:type>
<head>
<rdf:Description>
<rdf:type>
<rdf:Description rdf:about="&atom;Entry">
</rdf:Description>
</rdf:type>
<title>Example Feed</title>
<link>
<rdf:Description rdf:about="http://example.org/">
</rdf:Description>
</link>
<updated>2003-12-13T18:30:02Z</updated>
<author>
<rdf:Description>
<rdf:type>
<rdf:Description rdf:about="&atom;Person">
</rdf:Description>
</rdf:type>
<name>John Doe</name>
</rdf:Description>
</author>
</rdf:Description>
</head>
<entry>
<rdf:Description>
<rdf:type>
<rdf:Description rdf:about="&atom;Entry">
</rdf:Description>
</rdf:type>
<title>Atom Powered Robots Run Amok</title>
<id>
<rdf:Description rdf:about="vemmi://example.org/2003/32397">
</rdf:Description>
</id>
<updated>2003-12-13T18:30:02Z</updated>
</rdf:Description>
</entry>
</rdf:Description>
2. Simplifications ------------------
-simplify empty elements <prop><rdf:Description rdf:about="xxx"/></prop>
to <prop rdf:resource="xxx/>
-typed node element simplification for Feed type
-omitting blank nodes with the rdf:ParseType="Resource"
<Feed> <head rdf:ParseType="Resource"> <rdf:type rdf:resource="&atom;Entry"/> <title>Example Feed</title> <link rdf:resource="http://example.org/"/> <updated>2003-12-13T18:30:02Z</updated> <author rdf:ParseType="Resource"> <rdf:type rdf:resource="&atom;Person"/> <name>John Doe</name> </author> </head> <entry rdf:ParseType="Resource"> <rdf:type rdf:resource="&atom;Entry"/> <title>Atom Powered Robots Run Amok</title> <id rdf:resource="vemmi://example.org/2003/32397"/> <updated>2003-12-13T18:30:02Z</updated> </entry> </Feed>
3. OWL and xml schema simplifications -------------------------------------
- One can specify (apparently) in xml schema that a head, entry and author tags
automatically have an rdf:ParseType="Resource". These can then be removed.
- an owl file could specify that atom:href is a subproperty of rdf:resource, and so
alloow us to replace rdf:resource with atom:href
- finally we don't need to specify the rdf:types of the remaining elements as these
are specified in the OWL file
<Feed>
<head>
<title>Example Feed</title>
<link href="http://example.org/"/>
<updated>2003-12-13T18:30:02Z</updated>
<author rdf:ParseType="Resource">
<rdf:type rdf:resource="&atom;Person"/>
<name>John Doe</name>
</author>
</head>
<entry>
<title>Atom Powered Robots Run Amok</title>
<id href="vemmi://example.org/2003/32397"/>
<updated>2003-12-13T18:30:02Z</updated>
</entry>
</Feed>As a result we have something that is very very very close to our current Atom syntax.
Since we have a format that is rdf it is now very clear how it can be extended.
Question: ---------
Would this give you what you are looking for?
Henry Story
[1] http://www.imc.org/atom-syntax/mail-archive/msg11317.html [2] http://www.imc.org/atom-syntax/mail-archive/msg11640.html [3] http://www.w3.org/TR/rdf-syntax-grammar/
