- From: Kingsley Idehen <kidehen@openlinksw.com>
- Date: Mon, 17 Dec 2012 09:53:05 -0500
- To: public-ldp@w3.org
- Message-ID: <50CF31D1.2000504@openlinksw.com>
On 12/17/12 9:32 AM, Graham Klyne wrote:
> Eric,
> Mike,
>
> Thank you again for your patient explanations. I think I'm coming to
> better understand what you are describing. I still have some
> reservations about the client side complexity, but for the moment I'm
> going to assume they are misguided and try to move the discussion
> forwards. Specifically, I'd like to explore the role of media types
> in more detail.
>
> (By way of preparation, I've just re-read Roy Fielding's description
> of REST -
> http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm)
>
> The basic pattern for a REST interaction I'll aim to follow is:
>
> 1. use available information, possibly including link relations, to
> select a target resource ("why?")
>
> 2. retrieve a representation of the target resource and combine that
> with knowledge of how to process it based on its media type (aka
> content type - sorry, I tend to use the terms interchangeably), to
> access some further desired information. ("how?")
>
>
> The specific application I'm considering is how to access provenance
> about a resource using a service that (in general) has provenance
> information about many resources. (The simple case of directly
> accessing the provenance as a resource in its own right is covered
> separately - the service covers the case when the resource server does
> not have direct knowledge of a corresponding provenance resource.)
>
> Two mechanisms for accessing provenance for a specified resource are
> considered: SPARQL query and a simple interface in which a URI
> template [http://tools.ietf.org/html/rfc6570] is provided via a
> service description.
>
> It seems to me that RDF (in its various syntaxes) is a natural way to
> provide a service description. A client application needs to
> understand about RDF in general, and about specific RDF vocabularies
> that are used to describe services. A service provider can introduce
> new mechanisms by introducing new descriptions (using new vocabulary
> terms) into the RDF returned, without breaking existing clients.
>
> I think this approach is entirely consistent with Roy Fielding's
> description of REST, in which a representation is "a sequence of
> bytes, plus representation metadata". The metadata may include, but
> is not limited to, a media type description.
>
> Thus, in our RDF service description for accessing provenance, we
> might describe either or both of:
>
> (1) a REST service description, e.g. per
> http://www.w3.org/TR/prov-aq/#provenance-service-description, which
> introduces a resource with RDF type 'prov:ProvenanceService' (this is
> a fairly old PWD which is undergoing revision - part of my reason for
> this discussion is to figure out what should go here). One point of
> ongoing debate is whether the RDF type should cover all of the access
> mechanisms (REST and SPARQL).
>
> (2) a SPARQL endpoint description per
> http://www.w3.org/TR/sparql11-service-description/, being an RDF
> resource of type 'sd:Service'.
>
> But this does not use media type to discriminate between the options.
>
> Depending only on the client's knowledge of how to process the media
> types seems to me to be a narrow view compared with "examining and
> choosing from among the alternative state transitions in the current
> set of representations" [Fielding]. I'm concerned that this
> dependency leads to an overloading of media types, which "specify the
> native representation (canonical form) of such data"
> [http://tools.ietf.org/html/rfc2045] to also cover data semantics.
> For formats where the semantics is tied to a specific format, this
> seems not to be a problem, but does not sit so well with RDF which
> uses common syntax to convey arbitrary semantics.
>
> One thing we lose by not using a media type to distinguish between the
> access options is the ability to use content negotiation for
> selection. I think this is somewhat offset by a server easily being
> able to supply multiple RDF descriptions in a single response, so the
> process can proceed without any additional round-trips. (This doesn't
> preclude the use of media types and content negotiation for non-RDF
> service descriptions, so I think the essential flexibility and
> evolvability of the REST style is not compromised. In future, maybe
> we have a way to negotiate on RDF types?)
>
> In summary, I think there can be alternatives to using media types for
> guiding the "how?" of interactions, without compromising the essential
> evolvability properties of REST. But maybe you can point out where
> the problems lie in the approaches I sketch here?
>
+1
Kingsley
> #g
> --
>
> On 16/12/2012 17:56, Erik Wilde wrote:
>> hello graham.
>>
>> On 2012-12-16 3:27 , Graham Klyne wrote:
>>> On 10/12/2012 22:13, Erik Wilde wrote:
>>> > 100% agreed, but i don't think we ever disagreed on that one.
>>> Good - that suggests I've not properly understood what you were
>>> suggesting. We're hopefully less divergent in our views that the
>>> discussion so far may suggest.
>>
>> or maybe not ;-) link relations are all about the "why", and not
>> about the
>> "how". the "how" should be strictly runtime, and thus cannot by part
>> of the link
>> relation, but must be done through the uniform interface. media types
>> and maybe
>> OPTIONS, basically.
>>
>>> I just responded to Mike. I have a sense that part of our disconnect
>>> may be that I'm considering pure application-to-application
>>> interactions, with no direct human involvement, and no HTML.
>>
>> not at all. i think all of us do pretty much no human-facing
>> services; it's all
>> about machine-to-machine.
>>
>>> Consider the scenario where there are two ways to access provenance
>>> of a
>>> resource: one of them is via a REST service, and the other is by a
>>> SPARQL endpoint.
>>
>> hopefully, they both have their interactions exposed in a
>> self-describing way,
>> the REST service definitely through a media type, and the other one
>> also through
>> something more self-describing than just announcing general RDF
>> capabilities.
>>
>>> What I propose is to use the link relation type to distinguish between
>>> these endpoints: one pointing to a SPARQL endpoint, the other pointing
>>> to a REST service description (ala Atom "Service document" or @mnot's
>>> "API Home page").
>>
>> possible, but not what i would recommend. what you should do is link
>> to both in
>> a uniform way, and then distinguish at runtime, based on the uniform
>> interface.
>>
>>> The alternative seems to be to have some kind of service description
>>> that presents one or either of these as alternatives, but this seems
>>> more complicated to describe, and when I try to think about it, more
>>> complex to implement.
>>
>> not really, because that's the basic switching fabric of the web.
>> unless your
>> client doesn't work like the web and therefore you have to teach it,
>> but that's
>> a worthwhile thing to do.
>>
>>> Agreed. I was thinking about follow-your-nose type mechanisms that
>>> might allow an application to decide whether or not to use a link
>>> relation whose URI it's never seen before. But that's probably way
>>> beyond the scope of what I really wanted to find common ground on right
>>> now.
>>
>> the basic question is that of openness: if you hardcode media types
>> into link
>> relations, then you have to mint a new link relation for each new
>> media type
>> that appears. let's say in three years application/über-PROV appears,
>> the media
>> type specifying provenance in a way that blows everything else out of
>> the water.
>> in your scenario, everybody embedding links about PROV in their
>> resource will
>> need to learn about application/über-PROV and start embedding the
>> application/über-PROV link relation in their resources. in a web-like
>> design,
>> resource providers can happily still serve links to the PROV provider
>> they
>> always linked to, but now when clients follow those links they can
>> discover (at
>> run-time!), that the PROV service now (also) supports
>> application/über-PROV, and
>> everything can happily evolve without the need to change anything in
>> old services.
>>
>> cheers,
>>
>> dret.
>>
>
>
>
--
Regards,
Kingsley Idehen
Founder & CEO
OpenLink Software
Company Web: http://www.openlinksw.com
Personal Weblog: http://www.openlinksw.com/blog/~kidehen
Twitter/Identi.ca handle: @kidehen
Google+ Profile: https://plus.google.com/112399767740508618350/about
LinkedIn Profile: http://www.linkedin.com/in/kidehen
Attachments
- application/pkcs7-signature attachment: S/MIME Cryptographic Signature
Received on Monday, 17 December 2012 14:53:28 UTC