- From: Seaborne, Andy <andy.seaborne@hp.com>
- Date: Fri, 16 Dec 2005 16:22:27 +0000
- To: Pat Hayes <phayes@ihmc.us>
- CC: "Eric Prud'hommeaux" <eric@w3.org>, RDF Data Access Working Group <public-rdf-dawg@w3.org>
Pat Hayes wrote:
>>Pat: specific question:
>>
>>In 2.7, you suggest text
>>
>>"""
>>Blank nodes in the results of a query are identical to those
>>occurring in the dataset graphs ...
>>"""
>>
>>Not sure about "identical".
>>
>>A solution matches a basic graph by simple entailment so any bNode
>>in the solution is not necesarily the same as the one corresponding
>>one in the graph.
>
>
> BUt there is an additional restriction (in the definition of pattern
> solution), that the range of the substitution is a subset of the
> terms actually occurring in the graph. So the answer bindings have to
> be the actual IRIs, literals and bnodes in the graph. (Otherwise
> there could be infinitely many bnodes in answer bindings, and every
> matching query would have infinitely many answers; and without this
> the told-bnode trick wouldnt work.)
>
>
>> Together with the document scope of bNode labels in teh XML rsult
>>format and in any RDF serialization, means that even if they were
>>the same, you can't tell.
>
>
> If there aren't any told bnodes, you can't tell, its true. We still
> need a way to stop bnode-bleeding in the answer bindings, however.
>
> Pat
>
That condition isn't enough though - there can be rearrangement. _:a and _:b
in the graph may be _:b and _:a in the results. I couldn't see a way to
connect the solution to the data except via a layer of entailement.
Data:
_:a :p 1 .
_:b :p 2 .
Query: { ?x :p ?v }
Results
?x/_:b ?v/1
?x/_:a ?v/2
meets the conditions of being RDF terms from the graph. The restriction of
being from the graph at least means a finite input graph leads to finite results.
I'm not sure we are in a different position here because we want query over
deductive closure to work and give finite results.
Andy
>
>
>> All that is transmitted is whether two bNodes in the document are
>>the same or different.
>>
>>Or have I missed something?
>>
>> Andy
>>
>>
>>>>PS. One other rewording in section 2.7:
>>>>
>>>>"An application or client receiving the results of a query can
>>>>tell that two solutions or two variable bindings differ in blank
>>>>nodes but this information is only scoped to the results as
>>>>defined in "SPARQL Variable Binding Results XML Format" or the
>>>>CONSTRUCT result form."
>>>>//
>>>>SIMPLE CASE A:
>>>>"Blank nodes in the results of a query are identical to those
>>>>occurring in the dataset graphs, but this information cannot be
>>>>used by an application or client which receives these results,
>>>>since all blank nodes in subsequent queries are treated as being
>>>>local to that query. In effect, this means that information about
>>>>co-occurrences of blank nodes may be treated as scoped to the
>>>>results as defined in "SPARQL Variable Binding Results XML Format"
>>>>or the CONSTRUCT result form."
>>>>
>>>>OR, complex case B with persistent bnodes:
>>>>
>>>>//"Blank nodes in the results of a query are identical to those
>>>>occurring in the dataset graphs, and may be re-used in subsequent
>>>>queries as persistent blank nodes. Servers which accept a query
>>>>containing a persistent blank node must respect the identity of
>>>>such blank node identifiers across multiple queries and answer
>>>>bindings. In contrast, blank nodes which appear in queries as
>>>>nonpersistent blank nodes are treated as being local to that
>>>>query, and bear no relationship to occurrences of the same blank
>>>>node in other queries or their answer bindings."
>
>
>
Received on Friday, 16 December 2005 16:23:12 UTC