- From: Andy Seaborne <andy.seaborne@epimorphics.com>
- Date: Mon, 30 Aug 2010 22:08:00 +0100
- To: Alexandre Passant <alexandre.passant@deri.org>
- CC: SPARQL Working Group <public-rdf-dawg@w3.org>
On 30/08/10 17:33, Alexandre Passant wrote:
> Hi all,
>
> I've committed first steps of the SPARQL Update formal model in CVS.
> It's available at http://www.w3.org/2009/sparql/docs/update-1.1/Overview.xml#sec_formalmodel for comments.
>
> So far it covers only the general definitions (GraphStore, GraphStoreState and UpdateOperation) and operations dealing with graph management (CreateOperation and DropOperation).
> Before going further, I'd like to get comments / feedback of the group, especially Andy + Steve to be sure it fits with definition of SPARQL Query, and Chimezie re. definitions in the Update document - while I checked both when doing that formal model, but feedback is welcome.
>
> Best
>
> Alex.
>
Hi Alex,
Makes sense to me.
[[
Definition: GraphStore
A GraphStore GS is a mutable container of RDF graphs.
It has one unnamed (default) slot and zero or more named slots
identified by an IRI <i>.
Each slot holds an RDF graph.
GS = (<DG>, {(<i>, <G_i>)})
]]
Typographical: (don't want <> around - it's not an IRI)
<DG> ==> DG
<G_i> ==> G_i
[[
Definition: CreateOperation
A CreateOperation OpC is an UpdateOperation in which (1) a new named
slot <j> and (2) a new graph are created in the GraphStore. The new
graph is held in the new slot. Other slots and graphs are not affected.
OpC(GSS(GS, t)) = (S(DG, t), {(<i>, S(G_i, t)}, (<j>, S(G_j, t+1))
]]
I think OpC needs to take some argument so we can talk about them on the
RHS. (As an side-effect or writing like that, I don't think the t is
needed at all but I've left them in below)
Something like:
OpC(<IRI>, silent, (S(DG, t+1), {(<i>, S(G_i, t+1)})) =
if <IRI> is one of <i> for some <i> in GS
if !silent then error else ;
if <IRI> is not one of <i> for any <i> in GS
(S(DG, t), {<i>, (G_i, t)} union {(<IRI>, {}, t+1))
that is, union a new pair into the named graph state of the graph store
(this is the non-error, non-silent case).
It'll have to OpCreate, not OpC as we have OpClear as well.
For OpDrop:
OpD(<IRI>, silent, (S(DG, t+1), {(<i>, S(G_i, t+1)})) = ...
OpD(DEFAULT, silent, (S(DG, t+1), NG) = (S({}, t+1), NG)
OpD(NAMED, silent, (S(DG, t+1), {(<i>, S(G_i, t+1)})) = S(DG, t, {})
OpD(ALL, silent, GS) =
OpD(DEFAULT, silent, OpD(NAMED, silent, GS))
or just
(S({},t+1), {})
Writing GSS out as it's definition on the LHS, gives the names for the
RHS as well.
--------------------
From this:
Do we want SILENT on
DROP NAMED / DROP ALL / DROP DEFAULT
CLEAR NAMED / CLEAR ALL / CLEAR DEFAULT
I think could move the SILENT to only apply for GRAPH <iri>
At the moment, the grammar has:
Clear := <CLEAR> ( <SILENT> )? GraphRefAll
Drop := <DROP> ( <SILENT> )? GraphRefAll
GraphRefAll := ( GraphRef | <DFT> | <NAMED> | <ALL> )?
Welcome to wonders of typesetting definitions in HTML.
Andy
Received on Monday, 30 August 2010 21:08:37 UTC