Hi, You can do nested ifThenElses. One way to think about things is not as "big ol' one-liners."
g.V.ifThenElse{ ifStatement } { thenStatement } { elseStatement } With new lines, the embeddness then starts to look like plain ol' C-style syntax. Also note that in Gremlin 1.4 (releasing this week), the _() will not be needed anymore for start objects. I learned how to solve that at SpringONE :). Thanks, Marko. http://markorodriguez.com On Dec 5, 2011, at 8:27 PM, Romiko Derbynew wrote: > Marko, > > I am thinking of using this statement. > g.V.ifThenElse{it.out('hasCentre').filter{it == aCentre}.hasNext()}{}{println > "${it} has center unknown"} > > to get nodes that DO NOT have a relationship, is this the best way to do it? > I guess so, if this is the case, I am now adding support to the .NET graph > client to support ifThenElse expressions. I am wondering though, as I am > designing the interface for it, can and ifThenElse have nested ifThenElse > expressions as well? I guess "it" and _() can be used within them? > > Cheers > > -----Original Message----- > From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On > Behalf Of Marko Rodriguez > Sent: Saturday, 3 December 2011 4:10 AM > To: Neo4j user discussions > Subject: Re: [Neo4j] Gremlin Query - Help > > Hi, > >> Scenario 1: >> I would like to get all Nodes that do not have a relationship to another >> node. What is the best way to do this Gremlin? >> >> Root => NodeA => NodeB >> Root => NodeC >> >> Output should be NodeC > > I don't understand the problem. > >> Scenario 2: >> Root = > User -> Centre >> >> I would like to get all centres for userA, and then get all users who >> are also linked to the same centres of the userA > > userA.out('hasCentre').in('hasCentre').except([userA]) > >> Scenario 3: >> User => Centre >> I would like to get all users that do not have a link to a Centre, and if >> this is the case, do a projection that returns a fake centre with property >> "Unknown" > > g.V.ifThenElse{it.out('hasCentre').filter{it == > aCentre}.hasNext()}{}{println "${it} has center unknown"} > > If you have an index of your Users, then its more efficient to hit that > index, then iterate through all vertices (g.V). E.g. > > g.idx(T.v)[[type:'User']].ifThenElse.... > >> Scenario 4: >> >> REFERRAL => PERSON >> >> I would like to combine a query that gets all Referrals that are >> linked to a person and project a table result (contains referrals and >> person property values (this is easy to do) However, I then want to do a >> SPLIT query, that gets referrals without the persons, and then MERGE both >> back into the table projection? So table projecton might look like this. >> I guess this is done with .table().it{}....cap, but what I am not sure, is >> how to do a split and merge in parallel and then get that merge projected >> into the same table. > > > I don't quite understand your problem, but here is an example of splitting > and merging. > > g.v(1).out('knows').copySplit(_().out('knows').name, > _().out('created').name).fairMerge > > This will get all the people that v[1] knows and then generate two parallel > pipeline. Each friend of v[1] is copied to each of the 2 parallel pipelines. > One pipeline will get their friend's names and one will get their created > project's names. It will then merge those two parallel pipelines into a > single stream. You can do either fairMerge or exhaustMerge depending on the > merging algorithm you want. fairMerge is more memory efficient. I need to > write more about split/merge in the Gremlin documentation. > > https://github.com/tinkerpop/gremlin/wiki/Split-Merge-Pattern <-- will > work on it :) > > HTH, > Marko. > > http://markorodriguez.com > > _______________________________________________ > Neo4j mailing list > User@lists.neo4j.org > https://lists.neo4j.org/mailman/listinfo/user > > > _______________________________________________ > Neo4j mailing list > User@lists.neo4j.org > https://lists.neo4j.org/mailman/listinfo/user > > -- > You received this message because you are subscribed to the Google Groups > "Neo4j User Discussions" group. > To post to this group, send email to u...@neo4j.org. > To unsubscribe from this group, send email to user+unsubscr...@neo4j.org. > For more options, visit this group at > http://groups.google.com/a/neo4j.org/group/user/?hl=en. > _______________________________________________ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user