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

Reply via email to