- From: Andy Seaborne <andy.seaborne@epimorphics.com>
- Date: Wed, 15 Feb 2012 18:24:24 +0000
- To: Sandro Hawke <sandro@w3.org>
- CC: public-rdf-dawg@w3.org
Sandro, Thanks for the description. http://northeast-region.example.gov/wqdat/sparql is covered by the SPARQL Protocol, not the Graph Store Protocol. GET on that URL will return the service description as you describe. Service Description / sec 2: [[ SPARQL services made available via the SPARQL Protocol SHOULD return a service description document at the service endpoint when dereferenced using the HTTP GET operation. ]] Would it help to put the same point in the SPARQL Protocol document? Andy On 15/02/12 04:05, Sandro Hawke wrote: > On Tue, 2012-02-14 at 22:19 +0000, Andy Seaborne wrote: >> >> On 14/02/12 15:56, Sandro Hawke wrote: >>> Looking more closely, it's not 5.8 that I want back, it's this sentence: >>> >>> Within a service description document for an implementation of >>> this protocol, the object of an sd:defaultDataset statement is >>> understood to be the identifier of the Graph Store >> >> Where do you expect to read the service description from? >> >> Could you write out a concrete example, with URIs and actions, so I can >> understand the process you are envisaging that is behind your comments? >> I'm quite confused as to the information flow you are looking for. > > Imagine a national government wants data feeds about water quality from > each of its regional governments. Each region is responsible for > running a SPARQL endpoint serving the data, broken up into a different > graph for each km^2 and month. In the default graph is to be metadata > about each of those other graphs, saying when it's valid and what area > it covers. > > Now, the national government collects the endpoint addresses, one per > region, looking something like this: > > http://northeast-region.example.gov/wqdat/sparql > http://northwest-region.example.gov/~smith/fed/sparql > http://northcentral.example.gov/water/sparql > > Following normal SPARQL practice, some of the regions pick graph names > which are not actually working URLs which can be used to fetch the > associated data. Instead one region use tag URIs, one uses UUIDs, one > uses the URI of the most prominent geographic feature in the block, and > another uses a homegrown URI scheme which produces URIs like this: > > block:34.2234-34.2547,81.3331,80.9830:2010-01-01 > > This all works. Given this list of SPARQL endpoints, the nation govt > can write various clients which query each region's data as necessary. > They can also publish this list of endpoint addresses, and let the > general public query as they will. > > But there are some things we'd like to be able to do that we can't: > > * Alice wants to download all the graphs concerning a certain area and > time-range, crossing several regions, without knowing SPARQL. She just > wants a REST interface for GET'ing the default graphs and then the other > data graphs. > > * Bob is doing analysis for which he needs to provide provenance. He > wants a single URI for each of the graphs he's using, so he can put it > into the "source" field for that part of the analysis. > > * Charlie is on a data-quality crusade. He's getting people to double > check the data against other private data sources and their own > experience. He's built a system for flagging questionable blocks of > data, and even submitting corrections (patches). For this system, he > needs some way to refer to each graph which has been flagged for > correction. > > I think the simplest solution would be to just let everyone know they > can always use: > > ${endpoint_addr}?graph=${graph_name} > or > ${endpoint_addr}?default > > as a URI for the indicated graph. I'd hope most endpoints would > implement at least HTTP GET on those addresses, if not the whole GSP. > Even if they just having this convention -- with no code changes -- it > would address Bob and Charlie's problems. And Alice will know what to > try, in case GSP happens to be implemented. > > > Alternatively, if for some reason the SPARQL WG is not okay with using > the endpoint address this way, we could use Service Description, as was > in GSP until the most recent change [1]. With this, to get the URI of > the default graph for the first region, Alice would: > > 1. GET http://northeast-region.example.gov/wqdat/sparql > > and get back a SPARQL service description that includes triples like > this: > > @prefix sd:<http://www.w3.org/ns/sparql-service-description#> . > > <> a sd:Service; > sd:defaultDataset<http://northeast-region.example.gov/wqdat/dataset> . > > 2. Given this, and the text that used to be GSP, plus what's still there, > Alice knows the URL of the default graph for the northeast region is: > > http://northeast-region.example.gov/wqdat/dataset?default > > She can do a GET on this to get the contents of the default graph, which > has something like this: > > <urn:uuid:eee02beb-eca7-4cb7-839c-9fc6206caae0> geo:lon0 34.2234; > geo:lon1 34.2547; > geo:lat1 81.3331; > geo:lat0 80.9830; > dc:temporal "2010-01-01"^xs:datetime. > > 3. Now she can construct a URL from which she can fetch the data for > that region and that time, like this: > > http://northeast-region.example.gov/wqdat/dataset?graph=urn:uuid:eee02beb-eca7-4cb7-839c-9fc6206caae0 > > > And that's about it. Repeat 3 for each block in the region; repeat 1-2 > for each region. > > -- Sandro > > [1] > https://cvs.w3.org/Team/~checkout~/WWW/2009/sparql/docs/http-rdf-update/Overview.html?rev=1.81;content-type=text%2Fhtml#http-post and scroll down toward the end of that POST section. >
Received on Wednesday, 15 February 2012 18:24:53 UTC