- From: Paul Groth <pgroth@gmail.com>
- Date: Thu, 13 Dec 2012 15:16:48 +0100
- To: Timothy Lebo <lebot@rpi.edu>
- Cc: Graham Klyne <GK@ninebynine.org>, W3C provenance WG <public-prov-wg@w3.org>
- Message-ID: <CAJCyKRpNOt8mPZ=DY02ZvJ=8Bq-EJe7N7zum3bffC4dbLZvcvg@mail.gmail.com>
Hi Graham, I think I'm with Tim here. We seem to be generating a ton of new link types. I'm already not that happy with the service/resource distinction, but understand why we need it. I think this idea of using the description of the service as a way to check, motivates the need for a service description other than rest compatibility. cheers Paul On Tue, Dec 11, 2012 at 6:10 PM, Timothy Lebo <lebot@rpi.edu> wrote: > Graham, > > On Dec 10, 2012, at 9:32 AM, Graham Klyne <GK@ninebynine.org> wrote: > > > Indicating SPARQL endpoints fort provenance information is one of the > points in PROV-AQ that I was actioned to raise for discussion as of the > last teleconference. > > > > See also: http://www.w3.org/2011/prov/track/issues/609 > > > > The question is asked: how do we discover a SPARQL endpoint for > provenance querying? > > > > The latest version has removed all text about using SPARQL to query > provenance, as this has been considered more appropriate for the FAQ (it > adds no new specification). But the question of discovering an endpoint > remains on the table. > > > > Here are some options (not necessarily exhaustive): > > 1. Say nothing: treat it as out of scope > > +.5 (since HTTP GET'ing the service would give me an RDF description that > says it's a SPARQL endpoint -- > -.5 since what I just said would be a best practice that people would need > to figure out themselves. > > > 2. Use a new link relation > > -1 it's superfluous proliferation that is more eloquently handled. > > > 3. Make it part of the provenance service description (different URI > from current REST provenance service) > > 4. Make it part of the provenance service as an option (same URI as > current REST provenance service) > > I don't see how the distinction of "same or different" URI applies. > I think you need to demote your "REST provenance service" as an option > among many, instead of the "requirement" that you're framing it as now. > When you do, "same or different URI" becomes moot, and it would either > report back that it's a URITemplate service or a SPARQL endpoint service or > a JDBC service or a TheNextWay service. > > > > > > Somewhat perversely, maybe, I'm going to discuss these in reverse > order... > > > > ... > > > > Of these, I oppose number 4: > > > > I think it makes a simple and RESTful interface service description > potentially much more complicated, and would drag us into a mire of detail > whose ultimate value is highly questionable. > > > > ... > > > > I think option 3, or something very similar, is proposed by Tim at > http://lists.w3.org/Archives/Public/public-prov-wg/2012Nov/0324.html > > > > The idea as I understand it is that on retrieving the service > description indicated by a provenance-service link, the description > indicates a SPARQL endpoint. > > > > Tim proposes that the service description returned should be (per > http://www.w3.org/TR/sparql11-service-description/): > > > > <service-URI> a prov:ProvenanceService, sd:Service ; > > ... > > > > I could go with this with one change: DO NOT return > prov:ProvenanceService as a type for this endpoint, as that causes > confusion with the RESTful service specification we already have; i.e. > return just: > > > > <service-URI> a sd:Service ; > > … > > > Then I think prov:ProvenanceService as it stands is over specified. > prov:ProvenanceService should be defined as "A service that provides > provenance information", and a SPARQL endpoint that returns PROV-O should > be a legitimate instance of this class. > (THIS has the beginnings of a blocker issue) > Otherwise, you're demanding *how* it should behave, instead of permitting > anyone's service to indicate that it is indeed something that PROV-savy > clients can "poke around in". > I suggest you relax your "RESTful service specification" to a suggestion > among many options and make it less of a requirement (similar to how I'm > suggesting you treat the URI template in another thread). > > > > > > > > ... > > > > Option 2 was my first suggestion. I think it has the advantage of > simplicity, but Tim argues against this "I'm not fond of another link > relation just to point to one specific service technology" [ > http://lists.w3.org/Archives/Public/public-prov-wg/2012Nov/0324.html]. > > Yes, I call it superfluous proliferation. > > > > > It seems to me that link relations are cheap and easy to decode, so I > don't fully go with this argument. But there's a comment by Eric Wilde > that I think is worth thinking about: > > > > [[ > > while this may be a bit fuzzy, typically link rels and media types serve > > different needs: > > > > - a link rel allows a client to understand why it might want to follow > > some link from a resource ("get a picture of the product here"). > > > The "why" should be "there's a service offering PROV over ?there" > (*independent* of implementation), not "There's a SPARQL (i.e., specific > implementation) endpoint over there". > Let linked data and REST do the work. If you want PROV, go request the > server's URI and find out about how it accepts requests. > > > > > - a media type then governs the actual interaction, where client and > > server need to agree on how to interact when the client has made the > > choice to engage in the interaction ("here's an image/gif, because you > > told me you know how to handle this media type"). > > ]] > > > Exactly. Follow the rel="provenance" and GET HTTP Accept > application/rdf+xml (or text/turtle) to get an RDF description of the > service. > Find out it's a SPARQL endpoint (or, JDBC, or uritemplated, or whatever) > and then follow suit if you know how to talk SPARQL, JDBC, uritemplated, or > whatever. > If the server uses another technology to describe it's interface, then it > can return that regardless of the HTTP Accept. It's just not a great > citizen of the [semantic] web. > > > > -- http://lists.w3.org/Archives/Public/public-ldp/2012Nov/0030.html > > > > Which suggests a decomposition into Why? (link del) and How? (resource > type - which might conceivable be extended to resource content) > > > > But see also some discussion that sheds doubt on the roles of media type: > > [[ > > Ah, I think I finally understand why you talk about different media > > types. I've never seen the need, and still can't quite say that I do, > > at least in the sense of "need" that derives from working within the > > constraints of REST. > > ]] > > > Yes, REST's dependence on MIME is unfortunately working at the format == > frbr:Manifestation level, not the content == frbr:Expression level. > If one wants the same behavior for "all RDF formats", then they need to > map those MIMEs into "abstract RDF" and behave appropriately regardless of > format. > > > > -- http://lists.w3.org/Archives/Public/public-ldp/2012Nov/0014.html > > > > Option 2 also has the advantage of being direct and simple, even though > it may somewhat go against the spirit of the why/how principle noted by > Eric Wilde. > > > Yes, breaking how and why would be pretty bad. > > > > > > From, a purely pragmatic viewpoint, I'd make a case that finer-grained > link relations are more efficient: if there are (say) a provenance REST > service (as defined by PROV_AQ) and a provenance query service following > the SPARQL service description, different link relations would allow me to > pick the one I want and get on with accessing the provenance. But if the > same link relation is used for each, I have to read the service documents > to decide which one to use. This has two problems: > > 1. Extra round-trips. > > 2. Increased client code complexity. > > > > Of these, I think the latter is more compelling. > > > Yes, this is a good argument for superfluously proliferating your link > types. > But you're just pushing the logic from one place to another, so why not > keep it where it is most natural? > Practically, how many different service implementations would one resource > have? I would think few. > Also, a well designed service could handle multiple service request types, > so it's not clear that the service implementations would proliferate. > > > > > > (An alternative might be to use a link extension parameter, but that too > can have the effect of making client code slightly more complex, as the > link header parsing rules get more involved.) > > > > ... > > > > Option 1 is our natural fallback if we don't find easy consensus on any > other approach. > > +.5, since my suggestion would go into the FAQ. > > -Tim > > > > > > > #g > > -- > > > > > > > > FURTHER NOTES > > > > See also: > > [[ > > RDF isn't RESTful it itself because it's not a hypermedia format > > ]] (!) > > -- http://lists.w3.org/Archives/Public/public-ldp/2012Nov/0008.html > > > > [[ > > RDF isn't RESTFul at all. It's just a webby entity relationship model > > : > > RDF based Linked Data is RESTful, ... > > ]] > > http://lists.w3.org/Archives/Public/public-ldp/2012Nov/0019.html > > > > > > > > > > > > >
Received on Thursday, 13 December 2012 14:17:17 UTC