Re: Update comment

On 23/03/11 23:30, Lee Feigenbaum wrote:
> On 3/23/2011 6:14 PM, Andy Seaborne wrote:
>> On 23/03/11 21:53, Lee Feigenbaum wrote:
>>> The SPARQL query spec only specifies an indirect relationship between
>>> graph name and contents for FROM and FROM NAMED, right?. USING should
>>> be the same thing -- I don't think I understand the problem?
>>>
>>> Lee
>>
>> It's not the indirect relationship involved FROM NAMED (query sec
>> 13.2.2). Let's just talk about FROM.
>
> OK. I still think there's either a misunderstanding somewhere or just a
> different worldview, because I still have trouble coming to the same
> conclusion you are coming to.
>
> My understanding is that the SPARQL query spec (particularly
> http://www.w3.org/TR/rdf-sparql-query/#unnamedGraph) is silent about the
> proper way to get at the contents of the graph specified in a FROM
> clause. The text says:
>
> "the graphs obtained from representations of the resources identified by
> the given IRIs"
>
> I've always assumed that this is purposefully underspecified, and that
> it is implementation-defined as to how a SPARQL processor decides what
> graph is meant by g in a "FROM g" clause. (This is why, for instance,
> it's fine in some systems to do "FROM <tag:foo>".)
>
>> The problem is that FROM typically cause a graph to be read form the web
>> (yes - not in Anzo or Mulgara, but that's unusual).
>
> I don't really think it matters what is usual or unusual, just that
> according to the spec it's implementation-defined as to where the graph
> comes from.
>
>> The update spec says USING is identical to FROM (it uses the word
>> "identical").
>
> Right -- as in, it's identical as far as the spec concerned, which means
> it too is implementation-defined. The spec doesn't say (nor would it
> really have license to say) that a processor must use the same algorithm
> for figuring out the triples in g via USING as it does via FROM, does it?

By using the word "identical", I think it makes it hard to justify 
having FROM and USING doing different things in the same engine even if 
both within the spec.

I think USING should be restricted to the graph store, in the same way 
that the WHERE clause of an update operation applies to the graph store. 
  (This is my recollection of the ad hoc telecon we had.)

It is also in inline with the formal definitions because an update 
operation is

Op(GSt, Args) = GSt+1

and

OpDeleteInsert(GS, modify_templateDEL, modify_templateINS, P)

so the args relevant are GS, no other dataset.

(Aside: something on the matching process would be a good idea, 
specifically, the dataset for the WHERE clause is the state of the graph 
store at the beginning of each operation:

for
GS = (DG, {(irii, Gi) | 1 <= i <= n})
the dataset is:
DS = { DG, (<u1>, G1), (<u2>, G2), ... (<un>, Gn) }

We already has a comment about whether the matching is on the evolving 
graph store or the state at the start of the operation.)

>> So a reasonable expectation of an engine that reads from the web is that
>> USING does as well. We added USING so the graph can be picked from the
>> graph store so its not identical in such a system.
>
> I thought we just added USING to have a way to assemble a specific RDF
> dataset. I assumed that some stores that pick graphs off the Web would
> continue to do so for USING/USING NAMED. Why wouldn't they?
>
>> And the text goes onto indirectly imply this as well by talking about
>> WITH which does mean a graph in the store.
>>
>> Earlier:
>> "The WITH uri defines the graph"...
>> would be better as
>> "The WITH uri defines the graph in the graph store "...
>
> Agree.
>
> All that said, I'm not exactly sure where my our understandings are
> diverging, but do you have suggested alternate text that would address
> your concerns?

"""
The USING [NAMED] <uri> clauses define a dataset to be used in matching 
the WHERE clause.  uris identify graphs in the graph store. All uris in 
a USING <uri> form are used to form a graph which is the union of the 
graphs named, and is teh default graph of the dataset, and all uris in a 
USING NAMED <uri> form the named graph of the datasets.

If a USING or USING NAMED clause appears, then this will override any 
effect that WITH may have on the WHERE clause, and only the WHERE clause.
"""
Notes: "named graphs" is a term defined in SPARQL 1.0.

Lots of s/uri/iri/ for the update document.

	Andy

Received on Thursday, 24 March 2011 09:12:30 UTC