- From: Phil Archer <parcher@icra.org>
- Date: Wed, 02 Jul 2008 16:47:16 +0100
- To: Story Henry <henry.story@bblfish.net>
- CC: Beckett Dave <dave@dajobe.org>, "semantic-web@w3.org Web" <semantic-web@w3.org>, atom-owl@googlegroups.com, Mark Nottingham <mnot@pobox.com>, Atom-Protocol Protocol <atom-protocol@imc.org>
Just a quick note in this thread. POWDER (Protocol for Web Description
Resources) is close to Last Call on some of its documents, notably [1,
2]. In section 4.1.3 of [1] we give an example of linking an Atom feed
and an individual entry within it to a POWDER document, the processing
of which can reveal triples about multiple resources, such as all the
elements in the feed.
The key thing for this discussion is that in a Rec Track document, we're
already showing how one can add RDF directly to an Atom feed. I just
hope we got it right so far!
Phil.
--
Phil Archer
Chief Technical Officer,
Family Online Safety Institute
w. http://www.fosi.org/people/philarcher/
[1] http://www.w3.org/TR/powder-dr/
[2] http://www.w3.org/TR/powder-grouping/
Story Henry wrote:
> Thanks Dave for this proposal to link atom and rdf.
>
> A few remarks:
>
> 1. one can already embed rdf in atom
> ------------------------------------
>
> Just as a matter of interest for those who do not know the atom format,
> one can already embed rdf in atom quite simply.
>
> <entry>
> <title>syndeocms Project</title>
> <link href="http://doapspace.org/doap/sf/syndeocms"/>
> <id>http://doapspace.org/doap/sf/syndeocms</id>
> <updated>2007-12-13T18:30:02Z</updated>
> <summary>Some text..</summary>
> <content type="text/rdf+n3">
> @prefix doap: <http://usefulinc.com/ns/doap#> .
> <http://projects.com/1> a doap:Project;
> doap:name "Project 1" .
> </content>
> </entry>
>
> It is interesting to think about what the Atom Triples proposal adds to
> this. More below.
>
> 2. Mappings from Atom to RDF already exist
> ------------------------------------------
>
> As another point of reference one has to point out that links between
> rdf and atom are being worked on.
> Projects such at the atom-owl group have started looking at designing an
> ontology and a mapping for this.
> http://groups.google.com/group/atom-owl
> The latest spec is available here:
> http://bblfish.net/work/atom-owl/2006-06-06/AtomOwl.html
> with XSLT and XQuery transforms. David Powell has also worked on what
> turns out to be a nearly isomorphic ontology atom-rdf
>
> Clearly that atom in the content has to be interpreted as a literal,
> otherwise a feed with a number of entries saying contradictory things
> could produce on GRDDL extraction a nonsensical graph. Ie, the content
> is close to an N3 graph. We could nearly translate the example above
> into the following N3
>
> @prefix : <http://bblfish.net/work/atom-owl/2006-06-06/#>
>
> [] a :Entry
> :title "syndeocms Project";
> :alternate <http://doapspace.org/doap/sf/syndeocms>;
> :id "http://doapspace.org/doap/sf/syndeocms"^^xsd:anyURI;
> :updated "2007-12-13T18:30:02Z"^^xsd:dateTime;
> :summary "Some text";
> :content {
> @prefix doap: <http://usefulinc.com/ns/doap#> .
>
> <http://projects.com/1> a doap:Project;
> doap:name "Project 1" .
> }
>
> There is no general rule that one has to merge any two graphs one finds
> on the internet. How, and when to merge two graphs is a matter of trust
> and choice of lifting rules. RDF semantics does state rules about
> merging two graphs one believes to be true.
>
> The way atom is used though it is quite possible that two entries in the
> same feed with the same id have contradictory content, the second entry
> being an update of the first entry. Perhaps a mistake was made on first
> publication. It follows therefore that the content above need not be
> merged with the surrounding context, or with other content of different
> entries in the same feed, let alone other feeds. As a result it is true,
> it would not be the place to add new metadata about the feed or entry
> objects themselves.
>
> This points to the need of something like what is being proposed by the
> AtomTriples specification.
>
>
> 3. embedding rdf in atom
> ------------------------
>
> It is clearly stated in the introduction that the aim of this format is
> to embed
> rdf in atom
>
> [[
> This specification describes AtomTriples, a set of Atom [RFC4287]
> extension elements for embedding RDF
> [W3C.WD-rdf-syntax-grammar-20031010] statements in Atom documents
> (both element and feed), as well as declaring how they can be derived
> from existing content.
> ]]
>
> The at:md element does in fact allow the embedding of any rdf in the
> atom feed or entry elements. The following statement is very odd though:
>
> [[
> Likewise, the mechanics of combining metadata from multiple instances
> of the same entry, or from multiple feed documents, is out of the
> scope of this specification.
> ]]
>
> This cannot be right. You cannot use rdf in a format and yet say nothing
> about how to use that RDF. RDF semantics makes it very clear how to
> merge relations from different graphs. If you are embedding RDF in atom,
> there has to be a way to make sense of what that embedding means, or
> else how can one know that it is rdf that you have embedded in atom, and
> not something completely different that just happens to look very much
> like a well known serialisation of rdf?
>
> That is, one has to have a story of what merged graphs looks like if one
> believes all the information to be correct. Someone who publishes a feed
> clearly makes a statement about the content of the feed, and the
> statement should be taken on face value to say something true.
>
> If one really does not want such a merge, then would the right place to
> put this metadata not be the <content> element , where clearly we have a
> literal, and there is no obligation to merge the log:semantics of
> literals ?
>
> Or are you saying that really the rdf in the at:md elements are
> literals? So how then do they differ from the content then?
>
>
> 4. problems with at:md element
> ------------------------------
>
> The at:md element allows one to place rdf anywhere in a feed or entry
> element, and allows one to speak of anything.
>
> [[
> The subject of these statements is, by default, the value of the
> atom:id element in the same context (atom:element or atom:feed).
> However, this behaviour MAY be overridden by specifying the subject
> attribute.
> ]]
>
> Since the rdf one can place inside the at:md element can be about
> anything one wonders what the point of the default behavior in the spec
> is about. It turns out that by default the subject of the at:md element
> should be the resource identified by the atom:id of the feed or some
> resource related by a link relation.
> Furthermore the way to find the URI of the link relation is extremely
> contorted:
>
> [[
> It MUST contain a URI which MUST be interpreted as a link relation;
> the first such occurrence of an atom:link element in the same context
> as its parent element with that relation (in lexical order) will
> indicate the URI to use as the subject.
> ]]
>
> Since the order of link relations in atom is insignificant this is
> breaking the little atom semantics defined.
>
> Furthermore both the id and the link relations MUST have URIs! So there
> is absolutely no need to have these default behaviors since RDF has many
> constructs to make speaking about anything with a URI very easy.
>
> And even worse than all of the above, the default behavior makes it
> difficult to speak about the one thing that it may be important to speak
> about, namely THE ENTRY (or the feed) ITSELF!!!!
>
> In Atom Owl every entry is identified by a blank node, which has a
> functional relation awol:id to an id, and a functional relation
> awol:updated to a time stamp. It is not easy to speak about individual
> entries in atom since they don't have identifiers. So the obvious
> location to put information about them is as children of that element as
> hinted at by the atom spec in section 6.4.1, which admittedly is about
> simple extensions, but nevertheless makes the point well
>
> [[
> The element can be interpreted as a simple property (or name/value pair)
> of the parent element that encloses it. The pair consisting of the
> namespace-URI of the element and the local name of the element can be
> interpreted as the name of the property. The character data content of
> the element can be interpreted as the value of the property. If the
> element is empty, then the property value can be interpreted as an empty
> string.
> ]]
>
>
> 5. the mapping section
> ----------------------
>
> The mapping section that allows one to make ad hoc mappings from atom
> elements to rdf relations is broken in two ways.
>
> Take the examples:
>
> [[
> <at:map
> property="http://purl.org/dc/elements/1.1/title">atom:title</at:map>
>
> indicates that the atom:title element's content should be mapped to
> the http://purl.org/dc/elements/1.1/title property. Given the entry
>
> <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" .
>
> ]]
>
>
> 5.1 Wrong place to put the mapping
> - - - - - - - - - - - - - - - - - -
>
> It is the wrong way to put these mappings. Much better would be to
> create a general semantics of atom, and then use RDF semantics to create
> these mappings. So for example it would be easy to add the following to
> atom owl
>
> @prefix dc: <http://purl.org/dc/elements/1.1/> .
> @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
> @prefix awol: <http://bblfish.net/work/atom-owl/2006-06-06/#> .
>
> awol:title rdfs:subPropertyOf dc:title .
>
> Why add it every time to the atom document? Is this something that you
> think is going to be changing from one atom feed to another?
>
>
> 5.2 the semantics are wrong
> - - - - - - - - - - - - - -
>
>
> After a lot of work the AtomOwl group have come to develop an semantics
> for atom expressed in RDF. David Powell developed independently an
> ontology that was shown to be mostly isomorphic. Both would agree on the
> following: since atom allows two entries to have the same id, one should
> *not* make the subject of the title relations be the id URI. The
> following feed is valid atom
>
>
> <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>
>
> if the suggested mapping were right then the meaning of this would be
>
> [] 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 .
>
>
> which would make it impossible to work out:
> - 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, and can
> furthermore be very clearly expressed in rdf without ambiguity, (but
> with some simplification) as:
>
>
> @prefix : <http://bblfish.net/work/atom-owl/2006-06-06/#> .
> @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
>
> [] a :Feed;
> :entry [
> :id "http://example.com/a"^^xsd:anyURI;
> :title "Gold Increases";
> :updated "2008-06-13T18:30:02Z"^^xsd:anyURI;
> :content "The Price of gold has just gone up";
> ];
> :entry [
> :id "http://example.com/a"^^xsd:anyURI;
> :title "Gold value rises";
> :updated "2008-06-14T02:30:02Z"^^xsd:anyURI;
> :content "The price of gold has just gone up by 20%";
> ]
> .
>
> Notice how we can very well associate which title goes with which entry,
> which updated time stamp, and which content.
>
> The current Atom Triples spec would make force the wrong default
> interpretation of atom.
>
>
> Given the above I do have to come to the conclusion that the above spec
> is badly broken. I would suggest first working on an official semantics
> for atom, then working on a better way to add general extensions to it
> that would work well with the semantics. This would be useful in getting
> a general semantics together and on making sure the extensions were
> meaningful.
>
>
> Yours sincerely,
>
> Henry Story
>
>
>
>
> On 1 Jul 2008, at 21:29, Dave Beckett wrote:
>> Mark Nottingham and myself have co-authored an internet draft for
>> transporting RDF in Atom. We've called it "Atom Triples" since
>> the focus is on Atom, annotating/adding the triples to the existing
>> format. Where we had a choice of the atom way or the rdf way, we
>> picked the atom way.
>>
>> So the purpose of this format is to allow adding of triples for
>> descriptions of the resources in an atom feed, using the URI
>> of one atom:link as the main resource. The body of the at:md
>> is typically the blank-node-closure of the graph associated with
>> the main resource. Or at least, that's how I've done it so far.
>>
>> This is Version 0 and we know there are some things in the example
>> that need clarifying and expanding and other questions, but here it is:
>>
>> AtomTriples: Embedding RDF Statements in Atom
>> http://www.ietf.org/internet-drafts/draft-nottingham-atomtriples-00.txt
>>
>> Usual IETF I-D caveat: this URL will expire.
>>
>> Dave
>> & Mark
>
Received on Wednesday, 2 July 2008 15:47:57 UTC