Yes, you were right. Shortest path works in both directions. I was trying
for djikstra's, but the method that I use to create relationships isn't
letting me add properties to the relations. Eg.
chain = neo4j.Path(firstNode, triplet[1], secondNode)
path = chain.get_or_create(db)..
I want to add property to the relation triplet[1] say {cost : 0.5}. And
also, since I have added a lot of such relations already in my graph I need
some method to assign random costs to these relations.
Regards
Abhishek
On Wednesday, 25 December 2013 02:14:48 UTC+5:30, Johannes Mockenhaupt
wrote:
>
> This is a bit of a guess as I haven't worked with the REST API directly
> yet, but is the 'direction' parameter mandatory? And if so, would it
> take 'both' instead of 'out', like with the other APIs? Failing that,
> Cypher has the shortestPath function[1] which doesn't require a
> direction. That's also another way to invoke the algorithm.
>
> [1]
> http://docs.neo4j.org/chunked/milestone/query-match.html#_shortest_path
>
> On 12/24/2013 07:55 PM, Abhishek Gupta wrote:
> > Thanks for such an insightful comment, and the attached link. I was able
> > to write my query as a directed search using certain structural
> properties.
> >
> > |
> > MATCH p=((alpha
> >
> {name:"alpha_name"})-[r1]->(node1)-[r2]->(node2)<-[r3]-(node3)<-[r4]-(beta{name:"beta_name"}))RETURN
>
>
> > p;
> > |
> >
> > But I am facing another problem related to my original problem. My
> > actual problem statement is to find shortest path in the weighted
> > undirected graph.
> >
> > Firstly, if I want to use Dijakstra's algorithm as given
> > on http://docs.neo4j.org/chunked/milestone/rest-api-graph-algos.html
> > then they operate on the directed graph.
> > Q: If I have to use these algorithms than do I have to make duplicate
> > edges, or is there any other solution?
> >
> > Secondly, py2neo doesn't seem to support these algorithms.
> > Q: Is rest api and java based solutions only approach to invoke these
> > algorithms?
> >
> > Thanks again for replying.
> > Abhishek
> >
> >
> > On Tuesday, 24 December 2013 21:56:44 UTC+5:30, Johannes Mockenhaupt
> wrote:
> >
> > As you probably know, Neo4j only supports directed relationship. The
> > idea is to make you think about what the direction means for your
> > domain. While at creation time you have to specify a direction,
> you're
> > free to ignore direction at query time - you don't have to create a
> > second relationship going backwards just for queries (or speed).
> > This is
> > what you most often do. However, in some cases, when you really want
> to
> > make the point that a relation is unidirectional in termns of the
> > domain, you'd create a second relationship with the inverse
> direction.
> > At first, this felt like a workaround to me, but now I really like
> that
> > I'm somewhat forced to thing about what the direction means for the
> > domain.
> > For a practical example, you might look at the second picture at
> > this[1]
> > (okay, my) graph gist. At the bottom right, there are the two modes
> > that
> > "Spring Data Neo4j" supports, which are both an alternative to each
> > other. Here it makes sense to have two relationships back and forth,
> as
> > they're an alternative to each other in terms of the domain and also
> > allow me to do a directed query like "Show me the alternatives to
> X",
> > where each mode shall list the other as an alternative.
> >
> > Hope that helps, I wasn't sure whether you're asking for a best
> > practice
> > way to insert relationships using Python or generally more in the
> sense
> > of domain modelling. I've obvisouly picked the second interpretation
> to
> > answer to and it probably won't hurt to consider those aspects in
> any
> > case :-)
> >
> > [1]
> >
> http://gist.neo4j.org/?github-jotomo/neo4j-gist-challenge//learning-graph/learning-graph.adoc
>
> > <
> http://gist.neo4j.org/?github-jotomo/neo4j-gist-challenge//learning-graph/learning-graph.adoc>
>
>
> >
> >
> > On 12/24/2013 05:02 PM, Abhishek Gupta wrote:
> > > What is the best way to create undirectional relationships in
> > neo4j? I
> > > am using neo4j, py2neo. Here is how I insert the nodes and the
> > > relationships:
> > >
> > > |
> > > index_name =db.get_or_create_index(neo4j.Node,"index_name")
> > >
> > > defcreate_node(name):
> > > returnindex_name.get_or_create("name",name,{"name":name})
> > >
> > > definsert_triplet(triplet):
> > > firstNode =create_node(triplet[0])
> > > secondNode =create_node(triplet[2])
> > > chain =neo4j.Path(firstNode,triplet[1],secondNode)
> > > path =chain.get_or_create(db)
> > > |
> > >
> > > Thanks in advance for replying.
> > >
> > > Regards
> > > Abhishek
> > >
> > > --
> > > You received this message because you are subscribed to the Google
> > > Groups "Neo4j" group.
> > > To unsubscribe from this group and stop receiving emails from it,
> > send
> > > an email to [email protected] <javascript:>.
> > > For more options, visit https://groups.google.com/groups/opt_out
> > <https://groups.google.com/groups/opt_out>.
> >
> > --
> > You received this message because you are subscribed to the Google
> > Groups "Neo4j" group.
> > To unsubscribe from this group and stop receiving emails from it, send
> > an email to [email protected] <javascript:>.
> > For more options, visit https://groups.google.com/groups/opt_out.
>
>
--
You received this message because you are subscribed to the Google Groups
"Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.