- From: Alexandre Passant <alexandre.passant@deri.org>
- Date: Tue, 31 Aug 2010 12:39:35 +0100
- To: Andy Seaborne <andy.seaborne@epimorphics.com>
- Cc: SPARQL Working Group <public-rdf-dawg@w3.org>
Hi, On 30 Aug 2010, at 22:08, Andy Seaborne wrote: > > > 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 > Fixed > [[ > 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. Makes sense, I've added the following the the update operation definition: ""It can accept some arguments"" > (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 keeping the timestamp, I'd rather use t on the left side, and got t+1 as a result on the right side So OpC(<IRI>, silent, GSS(GS, t)) = something_at_t+1 But t might indeed be not needed anymore > > 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). Should silent be in the formal model ? To me, it's more from the implementation pov, as it having it or not does not make any change to the graph state after the operation. OpC(<IRI>, silent, GSS(GS, t)) = GSS(GS, t) UNION (<IRI>, {}_t+1) W/o timestamp, that will be OpC(<IRI>, silent, GSS(GS)) = GSS(GS) UNION (<IRI>, {}) Might be indeed clearer > > It'll have to OpCreate, not OpC as we have OpClear as well. Fixed > > For OpDrop: (checking as well w/o timestamp, do they make sense ?) > > OpD(<IRI>, silent, (S(DG, t+1), {(<i>, S(G_i, t+1)})) = ... OpD(<URI>, silent, GSS(GS)) = (S(DG), {(<i-1>, S(G_i-1))} > > OpD(DEFAULT, silent, (S(DG, t+1), NG) = (S({}, t+1), NG) OpD(DEFAULT, silent, GSS(GS)) = ({}, {(<i>, S(G_i))} > > OpD(NAMED, silent, (S(DG, t+1), {(<i>, S(G_i, t+1)})) = S(DG, t, {}) > OpD(NAMED, silent, GSS(GS)) = (S(DG), {()}) > 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> What will be the default behavior for DROP NAMED if there's no named graphs and if we remove SILENT ? I'd rather keeping it for all for consistency, even if in practice, X SILENT DEFAULT will not be useful as DEFAULT graph always exists. Alex. > > 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 -- Dr. Alexandre Passant Digital Enterprise Research Institute National University of Ireland, Galway :me owl:sameAs <http://apassant.net/alex> .
Received on Tuesday, 31 August 2010 11:40:09 UTC