- From: Steve Harris <steve.harris@garlik.com>
- Date: Fri, 7 Oct 2011 11:02:45 +0100
- To: Sandro Hawke <sandro@w3.org>
- Cc: public-rdf-wg <public-rdf-wg@w3.org>
This direction has some appeal to me personally. I don't immediately see how you could use it to represent the data you get from a single URI at different points of time, in the same Dataset, but that's something that could be worked out. - Steve On 2011-10-07, at 03:04, Sandro Hawke wrote: > Here's a proposal for what the fourth column should mean. It's kind of > obvious, and I think it's how many of us just assumed Named Graphs were > supposed to work. But I don't think it's been written down in a form > we can use, so here it is, in a first draft. > > I haven't really tried to motivate this, but one thing it does is allow > folks to refer to a graphs using just one URI. As [1] points out rather > painfully, as things stand now, you need multiple URIs just to identify > each g-box (and thus g-snap). (That is, you need to say which sparql > endpoint you're talking about, and then which graph within its > dataset.) > > My starting question was: what is the relationship between the IRI (the > "graph name") and its associated g-snap in an RDF Dataset. This > applies to the dataset backing any SPARQL end point, as well as the > dataset serialized in any multigraph syntax, like TriG or N-Quads. > Another way to look at it: what does it mean to assert a TriG > document? If you send me the TriG Document "<a> { <s> <p> <o> }", and > I trust you, what do I now know? > > Richard, I think, has been arguing for a minimalist position, > answering "nothing", or "it depends on out-of-band agreements". This > "Web Semantics" proposal is an alternative. > > === Proposal > > The idea here is to make the relationship between the URI and the > graph be the standard Web naming relationship, similar to what we all > use for Web pages. When you dereference the URI, you get the graph. > > This has the feature of being, to some extent, observable. Just like > triples are claims about some domain of discourse, quads become claims > about idealized Web dereference behavior. > > Specifically: Consider a "graph naming" to be the association of a > graph name N with a graph G. For the graph naming to hold, every > successful dereference of N yielding an RDF graph must yield G. For a > dataset D to hold, its default graph must hold (as normal in RDF) and > every graph naming pair in D must hold. > > Example 1: This dataset > > <http://example.org> { <s> <p> <o>. } > > means that if anyone is able to dereference "http://example.org" > and obtain an RDF graph serialization, the serialized graph will > consist of the single triple, <s> <p> <o>. Failure to dereference > does not make the graph naming untrue, but a successful dereference > yielding a different graph does. > > Example 2: This dataset can never be true: > > <http://example.org> { <s> <p> 1. } > <HTTP://example.org> { <s> <p> 2. } > > ... since one cannot get different results dereferencing URIs that > differ only in the case of the scheme component (as per RFC 3986). > > Example 3: This dataset: > > <tag:hawke.org,2010-10-06:eg1> { <s> <p> <o>. } > > cannot be tested using Web protocols, since the "tag" URI scheme is > (by design) not dereferenceable. Whether it is true or false cannot > be determined experimentally. > > ==== Temporal Context > > How can we say: > > <http://example.org> { <s> <p> <o>. } > > if we suspect that "http://example.org" might serve some other content > tomorrow? > > The answer is that datasets often need temporal qualification just > like RDF graphs do. It's just like saying in RDF: > > <http://example.org/Alice> foaf:age 25. > > One solution for foaf:age triples is to include triples like: > <> dc:temporal "2011-10-06"^^xs:dateTime. > > and that can be done in datasets as well, using the default graph. > More work is needed on this, but I'm pretty sure this proposal can use > whatever solution people come up with for RDF and doesn't make matters > much worse than they are already. > > ==== Practical Deployment Choices > > Any system which maintains a dataset (eg a sparql endpoint) or > generates multigraph documents like TriG has to do one (or more) of > the following: > > 1. Use new non-dereferenceable graph names. These could be tag or > uuid URIs, or http URIs in your own name space which you choose to > leave 404. > > 2. Use your own dereferenceable graph names, perhaps relative to the > endpoint or TriG document URI. If you do serve RDF content at > those URIs, it MUST be the same content (give or take stated time > lag). > > 3. Use someone else's graph names. Here, the key thing is temporal > metadata. You have to decide what you want (copy once vs > synchronize with what accuracy) and (somehow) share that temporal > metadata. > > > ... > > Okay, that's enough for now. Give me a +1 if you think this is headed > in a useful direction. > > -- Sandro > > [1] http://www.w3.org/2011/prov/wiki/Using_named_graphs_to_model_Accounts > > -- Steve Harris, CTO, Garlik Limited 1-3 Halford Road, Richmond, TW10 6AW, UK +44 20 8439 8203 http://www.garlik.com/ Registered in England and Wales 535 7233 VAT # 849 0517 11 Registered office: Thames House, Portsmouth Road, Esher, Surrey, KT10 9AD
Received on Friday, 7 October 2011 10:03:33 UTC