W3C home > Mailing lists > Public > public-rdf-dawg-comments@w3.org > August 2012

Re: Ambiguity about whether graphs are created or deleted

From: David Booth <david@dbooth.org>
Date: Tue, 07 Aug 2012 16:57:58 -0400
To: Paul Gearon <gearon@ieee.org>
Cc: public-rdf-dawg-comments <public-rdf-dawg-comments@w3.org>
Message-ID: <1344373078.23670.14504.camel@dbooth-laptop>
Hi Paul,

I am satisfied with this resolution.

Thanks!
David

On Tue, 2012-08-07 at 10:26 -0400, Paul Gearon wrote:
> David,
> 
> Thank you for your comment. We have addressed your concern below.
> 
> 
> David Booth wrote:
>  > Please add this to the wish list for the next version of SPARQL Update.
>  > I do not expect it to be addressed in the 1.1 version.
>  >
>  > At present the spec allows SPARQL servers to automatically delete empty
>  > graphs.  It also provides a CREATE operation for explicitly creating
>  > graphs, though it does not require that the CREATE operation be used,
>  > because graphs are created implicitly anyway.  Since I want my SPARQL
>  > code to work properly on any SPARQL 1.1 compliant server, as a user this
>  > ambiguity leads to a dilemma.  Consider the following sequence:
>  >
>  >   DROP SILENT ALL ;
>  >   CREATE GRAPH <one> ;
>  >   CREATE GRAPH <two> ;
>  >   ADD GRAPH <one> TO GRAPH <two>  ;
>  >
>  > The naive interpretation is that the above ADD operation should always
>  > succeed, since graph <one> was just created.  In implementations that
>  > keep empty graphs, the ADD operation will succeed.  But if the
>  > implementation automatically deletes empty graphs, then the CREATE
>  > operations will have no effect, and the ADD operation will fail, even
>  > though the graph *had* been "created", but merely happened to be empty.
>  > So even though an empty graph is a perfectly normal thing to have
>  > sometimes -- for example, the graph may be recording the sales of ice
>  > cream cones on a day when none were sold -- the ADD operation causes a
>  > failure.
>  >
>  > A workaround is to add the SILENT keyword to the ADD operation:
>  >
>  >   ADD SILENT GRAPH <one> TO GRAPH <two>  ;
>  >
>  > But this is not so great to do, because this will mask actual
>  > programming errors like this misspelling of "one":
>  >
>  >   ADD SILENT GRAPH <onnne> TO GRAPH <two>  ;
>  >
>  > Another workaround is to not use CREATE.  But if it isn't needed or
>  > helpful to some implementations, then why is it in the language?
>  >
>  > In short, the ambiguity that was allowed is harmful to users.  Please
>  > pick one style or the other and stick with it: either keeping empty
>  > graphs and requiring explicit CREATEs and DELETEs, or eliminating CREATE
>  > and DELETE from the language.
>  >
>  > Thanks!
> 
> 
> The existing ambiguity has been a compromise to support as many
> existing systems as possible. Some systems allowed explicit creation
> of empty graphs, whilst others implied the existence of a graph by the
> presence of triples in that graph, and could not support the concept
> of an empty graph. While not perfect, the Working Group felt that
> current approach would work with the majority of data stores.
> 
> The expectations of users and implementors may change as stores
> implement the implicit graph creation introduced in SPARQL Update 1.1,
> meaning that this compromise position may not be required in future
> versions. Consequently, your concern has been added to the Future Work
> list at:
> 
>   http://www.w3.org/2009/sparql/wiki/Future_Work_Items
> 
> We would be grateful if you would acknowledge that your comments have
> been answered by sending a reply to this mailing list.
> 
> Regards,
> Paul Gearon,
> On behalf of the SPARQL WG
> 
> 

-- 
David Booth, Ph.D.
http://dbooth.org/

Opinions expressed herein are those of the author and do not necessarily
reflect those of his employer.
Received on Tuesday, 7 August 2012 21:19:37 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 7 August 2012 21:19:37 GMT