Hi,
In Gremlin do,
g.v(torontoId).inE('traveled_to').outV.outE('traveled_to').inV
If you want it ranked by frequency, do:
m = [:];
g.v(torontoId).inE('traveled_to').outV.outE('traveled_to').inV.groupCount(m)
Take care,
Marko.
http://markorodriguez.com
On Mar 20, 2011, at 11:52 PM, Peter Neubauer wrote:
> Adriano,
> how about something like this?
>
>
> import org.junit.Test;
> import org.neo4j.graphdb.Node;
> import org.neo4j.graphdb.Path;
> import org.neo4j.graphdb.traversal.Evaluation;
> import org.neo4j.graphdb.traversal.Evaluator;
> import org.neo4j.graphdb.traversal.TraversalDescription;
> import org.neo4j.kernel.Traversal;
>
> import common.Neo4jAlgoTestCase;
>
>
> public class TraversalTest extends Neo4jAlgoTestCase
> {
>
> @Test public void test2Steps() {
> graph.makeEdge("John", "Paris");
> graph.makeEdge("Peter", "Paris");
> graph.makeEdge("John", "Rome");
> graph.makeEdge("Peter", "Toronto");
> graph.makeEdge("Adriano", "Toronto");
> graph.makeEdge("Adriano", "Tokyo");
> Node node = graph.getNode( "Toronto" );
> TraversalDescription td = Traversal.description().evaluator(
> new Evaluator()
> {
>
> @Override
> public Evaluation evaluate( Path path )
> {
> if (path.length() == 2) {
> return Evaluation.INCLUDE_AND_PRUNE;
> }
> return Evaluation.EXCLUDE_AND_CONTINUE;
> }
> });
> for (Node res : td.traverse( node ).nodes()){
> System.out.println(res);
> }
>
> }
> }
>
>
> 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 Sun, Mar 20, 2011 at 10:32 PM, Adriano Henrique de Almeida
> <[email protected]> wrote:
>> Hi,
>>
>> I have the following attached graph where I have persons who traveled to
>> some cities.
>>
>> What I want to find out is, for a given city, for instance Toronto, "the
>> ones who traveled there, also traveled to these other cities" (in the
>> attached graph are Tokyo (by Adriano) and Paris (by Peter)).
>>
>> To retrieve this information, I did the following code:
>>
>> Collection<Node> allNodes = new ArrayList<Node>();
>>
>> Node toronto = db.getNodeById(torontoId); // First I get Toronto node and
>> its relationships to know who traveled there
>>
>> Iterable<Relationship> relationships =
>> toronto.getRelationships(Relationships.TRAVELED_TO, Direction.INCOMING);
>>
>>
>> for (Relationship relationship : relationships) {
>>
>> Node[] nodes = relationship.getNodes(); // For each relationship found,
>> I all nodes that somehow is related to this relationship
>>
>> for (Node node : nodes) {
>>
>> Collection<Node> citiesNode = node.traverse(Order.DEPTH_FIRST,
>> StopEvaluator.DEPTH_ONE, ReturnableEvaluator.ALL_BUT_START_NODE,
>> Relationships.TRAVELED_TO, Direction.OUTGOING).getAllNodes(); // And finally
>> I traverse the graph to find to find from theses nodes where the other
>> people traveled to
>>
>> allNodes.addAll(citiesNode);
>>
>> }
>>
>> }
>>
>> Well, with this I can get the results I wanted, however, it seemed to me
>> that what I did was too complicated :) . So, my question is: "is there any
>> way to do this traversal in a more straightforward manner?".
>>
>> Thanks in advance.
>>
>> --
>> Adriano Almeida
>>
>> _______________________________________________
>> 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