Nice work. I welcome the effort to find a mapping from atom to rdf.
There are two problems though:
(1) Rather than having an IETF document explain how to make explicit
a mapping of every instance of the atom format to rdf it would be
better to create an ontology for atom and specify an official GRDDL
transform for it.
(2) I think the semantics of atom are wrong in the draft. It would
have helped somewhat to consult on the work of the atom-owl [1] group
before putting this spec together.
The key problem is the value of the subject:
[[
<atom:entry>
<atom:id>http://example.com/a</atom:id>
<atom:title>Test</atom:title>
</atom:entry>
and the map above as a child of at:entrymap, the following triple
would be implied;
<http://example.com/a> <http://purl.org/dc/elements/1.1/title>
"Test" .
]]
By making the value of the subject be the resource identified by the
id, you are going against what at least two
independently built ontologies for atom consider to be the value of
the subject of the entry.
The Atom-Owl ontology [2] has a XQuery and XSLT2 transform the above
which renders that as
[] a awol:Entry;
awol:id "http://example.com/a"^^xsd:anyUri;
awol:title "test" .
awol:id is a functional property, but it is not equivalent to
owl:sameAs . [3] This is important because it is what allows atom to
be metadata describing different states of a resource over time and to
be merged into one coherent database. Since atom allows two entries
with the same id to be contained in the same feed, for example
<atom:feed>
...
<atom:entry>
<atom:id>http://example.com/a</atom:id>
<atom:title>Gold increases</atom:title>
<atom:updated>2008-06-13T18:30:02Z</updated>
<atom:content>The price of gold has just gone up</atom:content>
</atom:entry>
<atom:entry>
<atom:id>http://example.com/a</atom:id>
<atom:title>Gold value rises</atom:title>
<updated>2008-06-14T02:30:02Z</updated>
<atom:content>The price of gold has just gone up by 20%</
atom:content>
</atom:entry>
...
</feed>
Your mapping would create a merged rdf graph described in N3 as
[] a awol:Feed;
awol:entry <http://example.com/a> .
<http://example.com/a> dc:title "Gold increases", "Gold value rises" .
awol:content "The price of gold has just gone up by 20%",
"The price of gold has just gone up" ;
awol:updated "2008-06-13T18:30:02Z"^^xsd:dateTime,
"2008-06-14T02:30:02Z"^^xsd:dateTime .
At this point it will be impossible in the rdf graph to know:
- which title goes with which content
- which title goes with which time stamp
- which time stamp goes with which content
yet that information is very clear in the atom document. It cannot be
therefore that you have correctly captured the semantics of the atom
format.
I would therefore urge you rather to help out on the atom owl work.
That has stalled for a while now, either because it is very stable or
because people have not yet pushed it far enough to demand more. In
any case it just requires a little push to take it to the next level,
which would be to make it the official ontology of atom.
Henry
[1] http://groups.google.com/group/atom-owl
[2] https://sommer.dev.java.net/atom/
[3] I think it is eminently discussable wether awol:id should be an
owl:DatatypeProperty or an owl:ObjectProperty . It used to be a
DatatypeProperty, but Elias Torres argued for
a DatatypeProperty. I would welcome more discussion on this issue.
On 1 Jul 2008, at 08:00, Dave Pawson wrote:
> http://xml.coverpages.org/draft-nottingham-atomtriples-00.txt
> AtomTriples: Embedding RDF Statements in Atom
> Mark Nottingham and Dave Beckett (eds), IETF Internet Draft
> A version -00 Internet Draft for "AtomTriples: Embedding RDF
> Statements
> in Atom" has been published through the IETF process. specification
> describes AtomTriples, a set of Atom (RFC 4287) extension elements for
> embedding RDF statements in Atom documents (both element and feed),
> as well as declaring how they can be derived from existing content.
> regards
> --
> Dave Pawson
> XSLT XSL-FO FAQ.
> http://www.dpawson.co.uk