Hello Scott, thank you for the very quick response.

> 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

So I will have to create two queries - one for inserting the triples and then a 
second to remove the "duplicates" that are created without the NOT EXISTS. 
In the example, the goal is to create the "represents" triple exactly once, 
even when a resource is involved in multiple knows relations.

So for the (likely) case ...

        Peter knows Tom
        Peter knows Mary

I'd like to create ...

        _:go1 represents Peter

but not ...

        _:go1 represents Peter
        _:go2 represents Peter

I think a second query deleting the duplicates will do the job then. Although I 
don't quite like the idea of creating triples just to delete them in the next 
step.


> (I wasn't really able to understand the intent of your query):

(Go stands for graphic object here. A parallel graph of graphic objects shall 
be constructed for the source data.)

Thank you again for clarifying this though it was only a SPARQL-question, as it 
seems.
Jan


> 
> 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

--
Dipl. Medien-Inf. Jan Polowinski
Research Assistant

Technische Universität Dresden
Department of Computer Science
Software- and Multimedia-Technology
01062 Dresden

Phone: +49 351 463 38608
Mobil: +49 176 80158257
E-Mail: [email protected]

-- 
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