Jan, the WHERE clause of all SPARQL queries is applied to the current data graph.  CONSTRUCT, INSERT, DELETE, etc. are applied to the results of the WHERE clause.  Therefore the WHERE clause cannot recursively consider any INSERTs/DELETEs to the data.

To query the result of inserting some data, you will need to apply two queries: the insert, then the query. So it will be something like the following (I wasn't really able to understand the intent of your query):

INSERT
{ #using GRAPH to explicitly state where the data is inserted in highly recommended
   _:0 a :GO .
   _:0 :represents ?who .
}
WHERE
{  ?who :knows ?whom .
}

...then you can query the resulting graph:

SELECT ?who ?whom
WHERE
{    ?who :knows ?whom .
    NOT EXISTS
    {    ?someGO :represents ?who .
    } .
}

...which is a strange query because it cannot match anything after the INSERT.


--
Scott Henninger
Sr, Product & Support Engineer, TopQuadrant, Inc.,
tel: 402-429-3751 / fax: 703 991-8192 / main: 703 299-9330
Training:
   Semantic Technology Training and Intro to TopBraid - Sept. 12-15, 2011, Washington, DC
   TopBraid Advanced Products Training - Sept. 26-29, 2011, Washington, DC
TQ Blog: Voyages of the Semantic Enterprise



On 9/3/11 8:28 AM, Jan Polowinski wrote:
I'm trying to construct a graph depending on 

a) an existing graph + 
b) the already created part of the new graph.

 Does the WHERE part of an INSERT statement only consider the graph before starting the INSERT? Or should it consider the newly created triples already? Here is what I tried:


# construct a GO for all subjects in knows-relations
INSERT  {
    _:0 a :GO .
    _:0 :represents ?who .
}
WHERE {
    ?who :knows ?whom .
    NOT EXISTS {
        ?someGO :represents ?who .
    } .
}

Although using NOT EXISTS, in the first run, I create more blank nodes than I want to. In additional runs then everything works as expected.

I'm happy for any hints. Do I expect too much of SPARQL here? Or am I only missing some setting? I could not explicitly find something about this issue in the SPARQL 1.1 Update specification. Does anybody know an alternative to achieve that the newly created triples are immediately considered in the WHERE clause?

Jan




--
You received this message because you are subscribed to the Google
Group "TopBraid Suite Users", the topics of which include TopBraid Composer,
TopBraid Live, TopBraid Ensemble, SPARQLMotion and SPIN.
To post to this group, send email to
[email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/topbraid-users?hl=en

Reply via email to