- From: ashok malhotra <ashok.malhotra@oracle.com>
- Date: Fri, 27 Mar 2015 11:10:28 -0400
- To: "henry.story@bblfish.net" <henry.story@bblfish.net>
- CC: "public-ldp-wg@w3.org" <public-ldp-wg@w3.org>, James M Snell <jasnell@gmail.com>
Hi Henry:
I am forwarding this to James Snell because he came up with the example
and will be able to defend it better than I can. I will respond to your
comment on cacheing separately.
All the best, Ashok
On 3/27/2015 8:47 AM, henry.story@bblfish.net wrote:
>
>> On 25 Mar 2015, at 23:52, ashok malhotra <ashok.malhotra@oracle.com> wrote:
>>
>> Please review the first draft of the Query Verb Proposal at:
>> https://github.com/jasnell/specs/blob/master/httpbis/draft-snell-search-method-00.txt
>>
>> This is a minimalistic proposal since it was felt that a smaller proposal had a better
>> chance of being accepted than a more complex proposal.
>>
>> Many different query syntaxes can be supported. Each with its own media type.
>
> Looks very good.
>
> Here are some questions:
>
> • section 2: "The response to a SEARCH request is not cacheable. "
>
> I suppose that is because a search may go beyond the limit of the resource requested,
> e.g. I suppose you could do a SEARCH on an LDPC that queries the LDPC but also the
> content. In that case the LDPC state may not change, but the results would differ.
>
> I suppose there could be cases where it was cacheable: e.g. when querying an LDP Graph.
> I wonder if there is a way to distinguish those two cases... Perhaps it would require
> a weak container etag, so that any change to the contained resources would change that
> etag.
>
> • section 4.1
>
> I think if one is to start with an example one really should start with a really good
> and simple one. But this one has exactly the wrong feel
>
> ```
> SEARCH /query HTTP/1.1
> Host: example.org
> Content-Type: application/sparql-query
> Accept: application/ld+json
>
> PREFIX foaf: <http://xmlns.com/foaf/0.1/>
> SELECT ?name ?email
> FROM <http://www.w3.org/People/Berners-Lee/card>
> WHERE {
> ?person foaf:name ?name .
> OPTIONAL { ?person foaf:mbox ?email }
> } ORDER BY ?name LIMIT 10 OFFSET 10
>
> ```
>
> This feels wrong because you are sending a query onto a specialised query
> resource, where the point of the SEARCH verb ( "QUERY" would make this a bit
> clearer here ) would be to query the resource directly. That is the
> prototypical query should be
>
> ```
> SEARCH /People/Berners-Lee/card HTTP/1.1
> Host: www.w3.org
> Content-Type: application/sparql-query
> Accept: application/ld+json
>
> PREFIX foaf: <http://xmlns.com/foaf/0.1/>
> SELECT ?name ?email
> WHERE {
> ?person foaf:name ?name .
> OPTIONAL { ?person foaf:mbox ?email }
> } ORDER BY ?name LIMIT 10 OFFSET 10
> ```
>
> This allows you to give an extra reason for the QUERY verb:
> that you are not going through a third party resource, which may
> be out of sync with the resource itself. Querying one resource about
> another is a very special case of a very special type of resource.
>
> It also makes for a better RESTful story, and would allow some
> better integration with the caching layer. It would also tie
> in much more nicely with LDP. It would allow you to argue that
> SEARCH is to GET what PATCH is to PUT.
>
> Hope this helps,
>
>
> Henry
>
> Social Web Architect
> http://bblfish.net/
>
>> --
>> All the best, Ashok
>>
>
>
>
Received on Friday, 27 March 2015 15:11:11 UTC