- From: Pierre-Antoine Champin <pierre-antoine.champin@liris.cnrs.fr>
- Date: Wed, 19 Oct 2011 09:03:57 +0200
- To: Sandro Hawke <sandro@w3.org>
- CC: Richard Cyganiak <richard@cyganiak.de>, public-rdf-wg <public-rdf-wg@w3.org>
Sandro, my point is not to "dismiss" the facebook example, nor to tell facebook they should do things differently. My concern is that we can either: * keep a restrictive definition of "graph container", relying on the notion of *state*, and in that case the facebook example does not fit the definition (which does not mean it is uninteresting or incorrect!); * define "graph container" is broader sense that include the facebook example, like "anything that, when poked, returns an RDF graph" Note that I use the fuzzy term "poke" (suggested by Pat in a previous conversation) rather than "dereference", because I want the definition to apply in a "non-web" context (namely, I would like an instance of rdflib.Graph or jena.rdf.model.Model to be considered a graph container). But this fuzziness in terms makes virtually anything a graph container -- even *I* can produce an RDF graph if you poke me. Does that make me graph container?? So, my concern is that, with too broad a definition, the notion becomes fuzzy, too general and potentially useless. This is just an intuition, though. And on the other hand, keeping a restrictive definition for graph container does not mean that anything that does not fit that definition is uninteresting. pa On 10/15/2011 03:41 AM, Sandro Hawke wrote: > On Fri, 2011-10-14 at 16:52 +0100, Pierre-Antoine Champin wrote: >> This is a reaction to Richard's question below... >> >> On 10/13/2011 12:16 PM, Richard Cyganiak wrote: >>> On 12 Oct 2011, at 22:04, Sandro Hawke wrote: >>>> 1. If a system successfully dereferences URL "L" and obtains a >>>> representation of an RDF graph, then <L> is a GraphContainer. That >>>> is, "L" denotes a GraphContainer. Logically, GraphContainer is >>>> disjoint from foaf:Person (I think!!) so a document that includes "<> >>>> a foaf:Person" is (by this proposal) logically inconsistent with it >>>> being served on the Web. >>> >>> This seems a logical consequence from httpRange-14. >> >> At first I agreed, but depending how you precisely define a graph >> container, it may not be true. See below... >> >>>> 2. So, owl:Ontology heavily overlaps GraphContainer. It might even be >>>> a subclass of it. (Many OWL ontologies say "<> a owl:Ontology", where >>>> the <> will be resolved to the address the ontologies is fetched from, >>>> aka L.) >>> >>> Well, sort of. They are orthogonal by definition, but overlap in practice because it can be useful to treat owl:Ontologies as graph containers. >>> >>>> 3. Some GraphContainers, "SerialGraphContainers" are functions mapping >>>> from time to RDF Graphs. We can talk about next & previous & current >>>> RDF Graphs in a SerialGraphContainer, but not about GraphContainers in >>>> general. (cf facebook's api for fetching RDF data, which returns >>>> different RDF data depending on your credentials). >>> >>> I don't understand that. If graph containers are mutable, then doesn't that already mean they are functions mapping from time to RDF graphs? >> >> Well, as I understood it, we have defined a graph container as something >> whose state is an RDF graph; for me, "state" reads "a function from time >> to X", so I concur with Richard: the definition SerialGraphContainers >> should apply GraphContainer. >> >> However, I see where Sandro is coming from: see the facebook example he >> gives above. However, if Facebook returns different *graphs* for the >> same resource at the same time, depending on another parameter >> (credential), then the *state* of the resource is *not* an RDF graph, it >> is something more (a "graph+ACL" or something like that). >> >> Hence, if that resource (in the RESTest sense) has a state which is not >> a graph, this is not a graph container as we defined it. QED. >> >> >> Of course, we could extend our definition so that it encompasses >> X-varying graph containers (where X can be "credential", "location", >> ...) but the open nature of X makes it the definition very generic, may >> be too much... >> >> So my reaction would be to stick to the safe side and restrict "Graph >> Containers" to vary with time only. Of course, many other things may >> "hold" graphs in different fashions that depend on other factors, but >> this WG can/should not define all of them. > > Your proof sounds good on paper, but I don't think you can dismiss the > facebook example so simply. Yes, we can say their thing isn't a > GraphContainer, via the web that's it's not, since we did a deref and > got back an RDF graph. :-( > > I suppose one could ask them to redirect to parameterized URIs, so I ask > for: > http://my.example.com (not a GraphContainer) > when logged in as sandro and it redirects (302 FOUND) to > http://example.com/sandro/ (a GraphContainer) > and then gives me the content. > > But I'm guessing facebook (and others) aren't willing to burden their > users with an extra round trip just for this kind of architectural > purism. (Some people will like to use the second form URI, but not > everyone wants to bother.) > > Another technical/http solution: > > I ask for http://my.example.com and get the response, but it includes a > "Content-Location: http://example.com/sandro/" header. The client > could use that header as a flag to indicate the URL that really denotes > that GraphContainer. And if facebook doesn't include such a header it > would just be ... "broken". Yeah, that might work. > > I don't know how widely Content-Location is used. I know w3.org uses it > a lot, but I don't know about the web at large. The Google results I > see for it suggest it's not widely used, but maybe that's okay. It > seems pretty ReSTful to me. > > One final note -- giving a quick look at the facebook API, I don't > actually see this kind of URL where each person sees a totally different > thing. Someone said in the meeting they do that; even if they don't, > surely someone else does or will. What I do see is this: > > GET -H 'Accept: text/turtle' https://graph.facebook.com/sandro.hawke > > -- Sandro > >> pa >> >> >> >>> >>>> 4. A ConstantGraphContainer always holds the same RDF Graph. This can >>>> be used for when you want to attach a dereferenceable URL to a g-snap. >>>> You put it in a ConstantGraphContainer. >>> >>> Seems reasonable. >>> >>> Richard >> >> > >
Received on Wednesday, 19 October 2011 07:04:54 UTC