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/



Reply via email to