- From: Henry Story <henry.story@bblfish.net>
- Date: Wed, 6 Feb 2013 10:57:53 +0100
- To: "Wilde, Erik" <Erik.Wilde@emc.com>
- Cc: "public-ldp-wg@w3.org" <public-ldp-wg@w3.org>
- Message-Id: <9690E0FC-D7F1-491D-B3ED-6B8B15153F6E@bblfish.net>
On 4 Feb 2013, at 13:44, "Wilde, Erik" <Erik.Wilde@emc.com> wrote: > hello henry. > > good stuff, as usual, and i'll send a full response later on. a brief > remark: > > On 2013-02-04 11:37 , "Henry Story" <henry.story@bblfish.net> wrote: >> HTTP after all comes with a method to distinguish data and >> metadata: headers and content. This is not super-elegant >> because the HTTP syntax is pretty awkward and its semantics >> vague - but as far as the semantics goes that is not that >> different from atom, and the advantage is that it is widely >> deployed. > > HTTP does not specify a general metadata delivery architecture. it has a > select few places where data that matters for the uniform interface of > the web can be put. and if you have metadata that matters on the protocol > level, then you shold put it into these headers (such as ETags). Http may or may not specify a general metadata delivery architecture: it all depends what one means by that . It is clear that an HTTP request contains two parts: the headers and the content, and that at least some (if not most) of the headers are about the content, ie they are metadata about it. RFC5988 provides existential proof for at least one header being of this nature in its text on the Link header. In Section-5 it states: [[ The Link entity-header field provides a means for serialising one or more links in HTTP headers. It is semantically equivalent to the <LINK> element in HTML, as well as the atom:link feed-level element in Atom [RFC4287]. ] http://tools.ietf.org/html/rfc5988#section-5 ] So it even ties the header to elements of an atom:feed, which as it happens have the same semantics as the atom:entry. > however, seeing RFC 5988 as a general invitation to stuff any kind of metadata into > HTTP headers is not what this spec is about. Of course. Care should be taken in use of this feature, and one thing we need to explore is when it helps make the protocol simpler to use it. One important use case is that it makes it possible to provide a uniform metadata interface for all resources including binary ones and so provide a means to satisfy ISSUE-15 . For example it would allow each resource, binary or not, to point to an ACL resource, or a general metadata entry: --------------------------------- HEAD /pix/cat.gif HTTP/1.1 ------------------------->> HTTP/1.1 200 OK Content-Type: image/gif Link: <cat.gif;acl>; rel="acl" Link: <cat.gif.atom>; rel="meta" ... --------------------------------- or for a foaf profile: --------------------------------- HEAD /card HTTP/1.1 ------------------------->> HTTP/1.1 200 OK Content-Type: text/turtle Link: <card;acl>; rel="acl" Link: <card.atom>; rel="meta" ... --------------------------------- > media types should have their > ways of doing this, however they see fit (linking between data/metadata > usually is a good idea, if they are exposed as different resources, and > such describedby/describes links may be good candidates for Link: exposure > because they may be interesting for clients to traverse). ideally, you'd > like to divide things so that (in RESTspeak) the *client* can handle the > uniform interface and get what it needs to do that just from the uniform > interface level (parsing HTTP headers according to the well-defined > semantics of those headers), and the *user agent* then mostly works on > resources, and maybe some selective information exposed to it that might > be interesting for the user agent as well ("here's the expiry date of this > response."). RDF does give one the opportunity to do this with any statement of the form <> ?rel ?obj This provides a way for the document to make statements about itself. For example a foaf profile could declare { @prefix : <http://bblfish.net/work/atom-owl/2006-06-06/#> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . <> a foaf:Profile; atom:updated "2013-02-06T10:34:06Z"^^xsd:dateTime; atom:author <#spdr>; foaf:primeryTopic <#spdr> . <#spdr> a super:Hero; atom:name "Spiderman" . } The difference with the atom wrapper we discussed earlier in this thread, is that N3 allows us to clearly distinguish data and metadata. We can see this here: @prefix log: <http://www.w3.org/2000/10/swap/log#> . <card.atom> a atom:Entry; atom:updated "2013-02-06T10:34:06Z"^^xsd:dateTime; atom:author <#spdr>; atom:content <card> . <card> log:semantics { <> a foaf:Profile; foaf:primeryTopic <#spdr> . <#spdr> a super:Hero; foaf:name "Spiderman" . } . A client receiving the above n3 would be able to parse that into a graph containing (or referring to ) another graph and thereby cleanly distinguish the data and the metadata. So there are a number of places for the metadata to occur: * in the HTTP headers * in a resource that speaks of another resource ( eg: <card.atom> ) * in the body of the Turtle content * in N3 the same content can distinguish both data and metadata clearly This gives one a lot of space to manoeuvre. It seems to me that requiring therfore POSTed content in Turtle to an LDPC to be of an atom:entry type, as put forward in the Atom_Pub_example [1] would require eliminating quite a lot of options first. All the best, Henry [1] http://www.w3.org/2012/ldp/wiki/ISSUE-37#Atom_Pub_example_in_LDP Social Web Architect http://bblfish.net/
Attachments
- application/pkcs7-signature attachment: smime.p7s
Received on Wednesday, 6 February 2013 09:58:26 UTC