- From: John Arwe <johnarwe@us.ibm.com>
- Date: Wed, 1 May 2013 13:50:31 -0400
- To: Linked Data Platform Working Group <public-ldp-wg@w3.org>
- Message-ID: <OF9D74D4FE.4D37C911-ON85257B5E.005F0B31-85257B5E.00620378@us.ibm.com>
Yes, I do remember that [1] now. I did like it at the time. I think it has the same problem I attempted to outline in my May 1 email however. Although it might be possible to handle that as part of the definition of the new header (more on that after I attempt to demo the problem). Re-pasting option D from Arnaud's April 30 email [2] Option D: # The following is the representation of # http://example.org/netWorth/nw1 @prefix dcterms: <http://purl.org/dc/terms/>. @prefix ldp: <http://www.w3.org/ns/ldp#>. @prefix o: <http://example.org/ontology/>. <> a o:NetWorth, ldp:Container; ldp:membershipPredicate o:asset; o:asset <a1>, <a2>. <a1> a o:Stock; o:value 10000. <a2> a o:Bond; o:value 20000. HTTP Headers: X-Cacheable-for: http://example.org/netWorth/nw1/a1 X-Cacheable-for: http://example.org/netWorth/nw1/a2 I think that does work *in the subset of cases* where the following is also true (below are representations of <a1> and <a2>): # The following is the representation of # http://example.org/netWorth/nw1/a1 @prefix o: <http://example.org/ontology/>. <a1> a o:Stock; o:value 10000. # The following is the representation of # http://example.org/netWorth/nw1/a2 @prefix o: <http://example.org/ontology/>. <a2> a o:Bond; o:value 20000. In other words, it works when HTTP GET <URL> returns a representation whose triples (assumption 1: it's an RDF media type, not a text file) all have a subject of <URL> or <URL#anything>. If you prefer, all the triples have a subject whose effective HTTP request URI would be <URL>. A very natural case for anyone familiar with OO, certainly all of my devs start off with this case in mind. I don't think it works in the general case of RDF/LDP where /a1 and /a2 may contain other triples. If you add in Steve's wish for etags, then you also need to match up each etag value with the correct URI it describes ... probably doable, and maybe even worthwhile, but you can see the direction it goes in I suspect. (counter-) Example: I think it fails in the case where the assets happen to link back to their container, which is something we've discussed. If the linkage changes the representation of /a1 to the following (trivial to imagine similar changes to /a2) # The following is the representation of # http://example.org/netWorth/nw1/a1 @prefix o: <http://example.org/ontology/>. <a1> a o:Stock; o:value 10000. <http://example.org/netWorth/nw1> o:asset <a1>. Then Arnaud's example (including new headers) is valid, but ...wait for it... how would a cache know that <nw1,o:asset,a1> triple was part of <a1> rather than <nw1>? I don't see that it can know without actually performing the retrieval action -- which is what this new header is trying to avoid/enable in the first place. To push things to an extreme: how does the cache know from the original nw1 response whether or not <nw1,a,ldp:Container> (or ANY other triple) is part of ANY of the resources named in the new extension header? I am unable to answer that question. One easy fix might be to say that the server is only permitted to expose this new header for LDPRs when the additional assumptions are met. I suspect that IF we attempt that some of us would like to permit my counter-example too - this is a pattern that some parts of IBM use quite happily. Doing so would require more thought (I'm optimistic that doing so is feasible, just have not attempted it). There might easily be other patterns like my counter-example that others want to admit as well. [1] http://lists.w3.org/Archives/Public/public-ldp-wg/2013Apr/0049.html (thank you Roger) [2] http://lists.w3.org/Archives/Public/public-ldp-wg/2013Apr/0141.html Best Regards, John Voice US 845-435-9470 BluePages Tivoli OSLC Lead - Show me the Scenario From: John Arwe/Poughkeepsie/IBM@IBMUS To: Linked Data Platform Working Group <public-ldp-wg@w3.org>, Date: 05/01/2013 07:09 AM Subject: Re: On ISSUE-58: Property for asserting that complete description of members is included in LDPC representation > My preference would be for option D (I was convinced by Pierre-Antoine's argumentation a few weeks ago). Could someone provide a [URL] to some version of that argumentation ? I have a sense it occurred on one of the calls I missed for travel. In advance of that, I'm hopeful that it tells me what kind of cache could use this proposed header and how. I don't think an HTTP cache would find it useful. Without knowing which subset of the response where the header occurs corresponds to the response for each of the asserted cacheable members' contents, I don't see any way for a pure HTTP cache (by which I mean one unaware of RDF and LDP) could do this, even given the proposed cacheable assertion and matching etags. If we talk instead about an RDF/LDP-aware cache, I can see how it Might work for storing triples only but as soon as the HTTP response comes into it I'm back to it not knowing how to divide up one response into several, since the set of triples returned by each HTTP URL can overlap arbitrarily in the general case. There are assumptions under which things are easier (e.g. 1 HTTP URL == 1 RDF resource, i.e. a given HTTP URL's state consists only of RDF triples whose subject URI's HTTP request URI == the HTTP URL lvalue), but that is an assumption not anything that LDP guarantees. Best Regards, John Voice US 845-435-9470 BluePages Tivoli OSLC Lead - Show me the Scenario
Received on Wednesday, 1 May 2013 17:51:04 UTC