I've run into this type of scenario before as well. Would it be possible to have thread-safe variables that live outside of the modules of a given script and can be accessed from any module? Something we could use as counters, etc?
Tim > -----Original Message----- > From: [email protected] [mailto:topbraid- > [email protected]] On Behalf Of Barb > Sent: Wednesday, September 16, 2009 7:58 PM > To: TopBraid Composer Users > Subject: [tbc-users] Re: Iterate over select > > > Can you recommend an alternative? > > On Sep 16, 7:22 pm, [email protected] wrote: > > Hello Barb, > > > > The iterations of IterateOverSelect execute independently from each > > other, so "incrementing" a variable inside a loop will not work. > > > > Gokhan > > > > Quoting Barb <[email protected]>: > > > > > > > > > > > > > I have an iterateOverSelect where I'm querying for the children of > > > the > > > selectedResource. > > > I'm going to be creating a new composite:index for each child and > > > have > > > calculated my ?startIndex to be one less than that of the > > > selectedResource. > > > > > SELECT ?s ?selectedResource ?srIndex ?startIndex > > > WHERE { > > > ?s skos:broader ?selectedResource . > > > ?selectedResource composite:index ?srIndex . > > > LET (?startIndex := (smf:cast(?srIndex, xsd:float) - 1)) . > > > } > > > > > Once I have the above triples, I want to iterate over the results > and > > > insert a new composite:index for each (previously the > composite:index > > > was deleted) > > > My ?startIndex is one less than the parent node ... > > > So for example, if the parent's composite:index was 6, I want the > > > first child's index to be 6 and increment by 1 for each child > > > thereafter. (I will be deleting the parent node later and promoting > > > the children) > > > > > INSERT INTO <http://tb-session> > > > { > > > ?s composite:index ?newIndex . > > > } > > > WHERE > > > { > > > ?s skos:broader ?selectedResource > > > LET (?newIndex := (smf:cast(?startIndex, xsd:float) + 1)) . > > > } > > > > > After the insert, I reset my ?startIndex to the ?newIndex and I > want > > > to "repeat the loop". > > > > > SELECT ?startIndex > > > WHERE { > > > ?s composite:index ?startIndex . > > > } > > > > > Unfortunately, the composite:index is being set correctly for the > > > first child but never increments ... all children have the same > > > composite:index. > > > > > The above is only 3 modules (iterateOverSelect, Update, > BindBySelect) > > > but I'm missing something. > > > > > I'm hoping you can point out my error. > > > > > Barb- Hide quoted text - > > > > - Show quoted text - > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "TopBraid Composer Users" group. 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-composer-users?hl=en -~----------~----~----~----~------~----~------~--~---
