- From: Paul Gearon <gearon@ieee.org>
- Date: Thu, 7 Jan 2010 16:06:49 -0500
- To: Andy Seaborne <andy.seaborne@talis.com>
- Cc: SPARQL Working Group <public-rdf-dawg@w3.org>
On Wed, Dec 23, 2009 at 6:33 AM, Andy Seaborne <andy.seaborne@talis.com> wrote:
> ISSUE-20
>
> Pulled out because this interacts with query (1.0).
>
>> ISSUE-20: Difference between an empty graph and a non-existent graph?
>> We have agreed on the need to support a graph that exists and is
>> empty. Is there anything else to consider for this issue? Does it have
>> an impact on the Update document? By coming to this agreement, then I
>> think we*don't* need to worry about it in Update. We'd only have to
>> consider it if we disallowed empty graphs.
>>
>> I've left ISSUE-20 in, but if people agree that it's resolved, then
>> I'll take it out.
>
> My preference is that empty graphs and absent graphs are treated
> differently. This is based on seeing users expectations of systems I'm
> involved in.
This is my preference also.
In Mulgara, we explicitly manage graphs, rather than allow them to be
de facto formed through the insertion of a quad with a new graph URI.
It is certainly possible to detect and record new graph URIs, though
detecting the last use of a graph URI in a deleted quad could have
some potential overhead.
> It does make store writing harder and some of mine don't support this
> because they can only test for the presence or absence of quads. There is
> no separate graph management. No quads does not mean no graph, if empty
> graphs can exist.
>
> It can show up in query in
> SELECT * { GRAPH ?g {...} }
Just to be clear, we expect:
SELECT ?g { GRAPH ?g { ?s ?p ?o } }
to only return graphs with something in them, right? I suppose this
means there's no standard way to query for the existence of an empty
graph.
> Some related issues in update are about adding triples into an empty graph
> vs a non-existent graph (does it automatically get created?)
I'd rather not. If this is needed then it can be done with:
CREATE SILENT <uri>
INSERT DATA { GRAPH <uri> { triples } }
> whether CREATE
> on an existing (empty of otherwise) graph is an error and DROPping a graph
> not in the store.
We have already been operating on the assumption that creating an
existing graph or dropping a non-existent graph can lead to an error,
through the inclusion of SILENT in those commands.
Regards,
Paul
Received on Thursday, 7 January 2010 21:07:22 UTC