Hi,
In Gremlin (http://gremlin.tinkerpop.com), friends of a friend (FOAF) who are
not my friends:
x = [] as Set
g.v(1).out('friend').aggregate(x).out('friend').except(x)
- x is a Set to save intermediate friend vertices to to exclude (except) from
the final step.
- g is your graph (e.g. g = new Neo4jGraph('/tmp/graph'))
- g.v(1) will grab vertex 1 by its id
If you give me some particular things you want to say, I can provide you the
Gremlin code to do it.
Thanks,
Marko.
http://markorodriguez.com
On Jun 17, 2011, at 7:08 AM, [email protected] wrote:
> Oh thank you,
>
> As I mentioned, I am new to neo4j. So a little sample code would be very
> useful in my learning process. :)
>
> My current state is that I managed to add few nodes, and add friend
> relationship between several nodes.
>
> User - friend - other node.
>
> Friend is relationship
>
> I don't have a very big node number so I think your suggested approach will
> work.
>
> Fajar
>
> Sent from my BlackBerry® smartphone from Sinyal Bagus XL, Nyambung
> Teruuusss...!
>
> -----Original Message-----
> From: Peter Neubauer <[email protected]>
> Sender: [email protected]
> Date: Fri, 17 Jun 2011 14:12:48
> To: Neo4j user discussions<[email protected]>
> Reply-To: Neo4j user discussions <[email protected]>
> Subject: Re: [Neo4j] Find 2nd degree friends in order of mutual friend
>
> Hi Fajar,
> this is a depth 2 traversal from the person in question. While
> exhaustively traversing his friends, you increase the group count as
> for each FOAF you get on the second step.
>
> However, we have seen edge cases with supernodes where in a social
> network, persons can have 50K friends. There, you might use heuristics
> or indexing approaches to make this very fast.
>
> If you have some more details, I could write down the query in Gremlin
> or Cypher (http://docs.neo4j.org/chunked/snapshot/cypher-query-lang.html),
> but in principle, it would be like
> https://github.com/tinkerpop/gremlin/wiki (actually using 3 steps, I
> think we could get it down to 2) for Gremlin.
>
> In neo4j, if things are not cached, only the parts the data that are
> needed for this traversal wil be loaded from disk, so you don't need
> to hold all the graph in cache for this, since it is a data-local
> operation.
>
> HTH
>
> Cheers,
>
> /peter neubauer
>
> GTalk: neubauer.peter
> Skype peter.neubauer
> Phone +46 704 106975
> LinkedIn http://www.linkedin.com/in/neubauer
> Twitter http://twitter.com/peterneubauer
>
> http://www.neo4j.org - Your high performance graph database.
> http://startupbootcamp.org/ - Öresund - Innovation happens HERE.
> http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing party.
>
>
>
> On Fri, Jun 17, 2011 at 1:33 PM, Fajar Maulana Firdaus
> <[email protected]> wrote:
>> Hi all,
>>
>> I am new to neo4j and excited to know more about graph database.
>>
>> First of all, could anyone please help me to figure out the documentation
>> about the query or rest client?
>>
>> Then, back to my question, I want to find 2nd degree friends but ordered by
>> number of mutual friend. I understand that if I have all data in memory, I
>> could've traverse the graph to 2nd level, and keep counter for each nodes in
>> 2nd level. So in away its like finding all paths from start node to all
>> second degree friend, but if we do that, it would be inefficient.
>>
>> Does anyone have any idea how to do this with neo4j?
>>
>> Thank you,
>> Fajarmf
>> _______________________________________________
>> Neo4j mailing list
>> [email protected]
>> https://lists.neo4j.org/mailman/listinfo/user
>>
> _______________________________________________
> Neo4j mailing list
> [email protected]
> https://lists.neo4j.org/mailman/listinfo/user
> _______________________________________________
> Neo4j mailing list
> [email protected]
> https://lists.neo4j.org/mailman/listinfo/user
_______________________________________________
Neo4j mailing list
[email protected]
https://lists.neo4j.org/mailman/listinfo/user