To add to this, following method lets me add properties to the relations
but I need to create relations using "Create Unique"
(http://blog.safaribooksonline.com/2013/08/07/managing-uniqueness-with-py2neo/)
# create two nodes with a connecting relationship
alice, bob, rel = graph_db.create(
{"name": "Alice"}, {"name": "Bob"},
(0, "KNOWS", 1, *{"since": 2006}*)
)
On Wednesday, 25 December 2013 16:17:40 UTC+5:30, Abhishek Gupta wrote:
>
> 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].
>> > 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.