It works with graph-algo 0.6-SNAPSHOT and there's an AStar.java (which is the "old" version) and one ExperimentalAStar.java which uses the new traversal framework.
2010/6/23 Alex Averbuch <alex.averb...@gmail.com> > Hi guys, > thanks! > > I've pulled the latest java-astar-routing and looking at it now. > Have changed to SNAPSHOT 0.6 too. > > Has the AStar algorithm been changed to use the Traversal framework now? > If so, is there any way I can use the old AStar version? > > The last one required neo4j-apoc 1.1-SNAPSHOT & neo4j-graph-algo > 0.5-SNAPSHOT, but no longer works with these. > Is there any combination of neo4j-graph-algo and neo4j-apoc that will work > with the old version of AStar? > > My problem is this... > We are in the final stages of evaluation for our thesis and have been asked > if we can run a bunch of extra experiments. > We use AStar on the GIS dataset experiments. > We do NOT want to use the Traversal framework at all as the way we log > "traffic" is by "listening" to the Add, Remove, Delete, Get, etc methods of > GraphDatabaseService. > The Traversal framework goes around these as far as I know, so we would > lose > our ability to monitor. > > Any suggestions would be great! > > Thanks, > Alex > > > On Wed, Jun 23, 2010 at 3:52 PM, Mattias Persson > <matt...@neotechnology.com>wrote: > > > Also, the latest graph-algo is 0.6-SNAPSHOT... so use that instead > > > > 2010/6/23 Anders Nawroth <and...@neotechnology.com> > > > > > Hi! > > > > > > See: > > > http://www.mail-archive.com/user@lists.neo4j.org/msg04044.html > > > > > > /anders > > > > > > On 06/23/2010 03:44 PM, Alex Averbuch wrote: > > > > Hi Tobias, > > > > It seems as though the new changes have broken the AStar code I'm > > using. > > > > > > > > I use: > > > > neo4j-apoc 1.1-SNAPSHOT > > > > neo4j-graph-algo 0.5-SNAPSHOT > > > > > > > > AStar uses DefaultExpander and can no longer find it. > > > > > > > > Here's an example of the code that worked until now. > > > > > > > > DefaultExpander relExpander = new DefaultExpander(); > > > > relExpander.add(GISRelationshipTypes.BICYCLE_WAY, Direction.BOTH); > > > > AStar sp = new AStar(graphDb, relExpander, costEval, estimateEval); > > > > Path path = sp.findSinglePath(startNode, endNode); > > > > > > > > The problem seems to be that AStar wants a RelationshipExpander but > now > > I > > > > can only create an Expansion<Relationship>. > > > > > > > > Do you have any suggestions as to how to make this work again? > > > > > > > > Regards, > > > > Alex > > > > > > > > > > > > On Wed, Jun 23, 2010 at 11:14 AM, Tobias Ivarsson< > > > > tobias.ivars...@neotechnology.com> wrote: > > > > > > > >> Hi Neo4j enthusiasts! > > > >> > > > >> Yesterday I committed an API that Mattias and I have been working on > > for > > > a > > > >> few days. It comes in the form of two new interfaces Expander and > > > Expansion > > > >> (in the org.neo4j.graphdb package), and four new methods in the Node > > > >> interface (method names starting with "expand"). > > > >> > > > >> The two main problems this API solves are: > > > >> 1. Adds a clean way for getting related nodes from a source node. > > > >> 2. Adds a type safe way for declaratively specifying any combination > > of > > > >> RelationshipTypes and Directions to expand. > > > >> > > > >> This replaces what was actually an anti-pattern, but something we > saw > > > >> people > > > >> doing a lot: using a depth-one traversal to get the nodes related to > a > > > >> node, > > > >> without needing to bother with the Relationship interface. Example: > > > >> > > > >> // The most convenient way to write it in the past: > > > >> Node source = ... > > > >> Traverser traverser = source.traverse( > > > >> Traverser.Order.DEPTH_FIRST, > > > >> new StopAtDepth( 1 ), > > > >> ReturnableEvaluator.ALL_BUT_START_NODE, > > > >> TYPE_ONE, Direction.INCOMING, > > > >> TYPE_TWO, Direction.OUTGOING); > > > >> for (Node related : traverser) { > > > >> doSomethingWith( related ); > > > >> } > > > >> > > > >> // The previously recommended (and bloated) way of doing it: > > > >> Node source = ... > > > >> for (Relationship rel : source.getRelationships( TYPE_ONE, TYPE_TWO > )) > > { > > > >> Node related; > > > >> if (rel.isType(TYPE_ONE)) { > > > >> related = rel.getStartNode(); > > > >> if (related.equals(source)) continue; // we only want > INCOMING > > > >> TYPE_ONE > > > >> } else if (rel.isType(TYPE_TWO)) { > > > >> related = rel.getEndNode(); > > > >> if (related.equals(source)) continue; // we only want > OUTGOING > > > >> TYPE_TWO > > > >> } else { > > > >> continue; // should never happen, but makes javac know that > > > related > > > >> is != null > > > >> } > > > >> doSomethingWith( related ); > > > >> } > > > >> > > > >> // With the new API: > > > >> Node source = ... > > > >> for (Node related : source.expand( TYPE_ONE, Direction.INCOMING ) > > > >> .add( TYPE_TWO, Direction.OUTGOING > > ).nodes()) > > > { > > > >> doSomethingWith( related ); > > > >> } > > > >> > > > >> The return type of the Node.expand(...)-methods are the new > Expansion > > > type, > > > >> it defaults to expanding to Relationship, but the > > > Expansion.nodes()-method > > > >> makes it expand to Node. It also contains the add()-methods seen > above > > > for > > > >> specifying RelationshipTypes to include in the expansion. The > spelling > > > of > > > >> this method isn't perfectly decided yet, we are choosing between > > "add", > > > >> "and" and "include", we want something that reads nicely in the > code, > > > but > > > >> doesn't conflict with keywords in other JVM-languages ("and" is a > > > keyword > > > >> in > > > >> Python, and I think "include" means something special in Ruby). > There > > is > > > >> also an Expansion.exlude(RelationshipType)-method for use together > > with > > > the > > > >> Node.expandAll(). > > > >> > > > >> The Expansion is backed by the newly added companion interface > > Expander. > > > >> This is an extension of RelationshipExpander that adds builder > > > >> capabilities. > > > >> It turns the functionality of the DefultExpander implementation > class > > > (now > > > >> removed) into an interface in the API. RelationshipExpander is still > > > around > > > >> as a single method interface, which is useful for when you want to > > > >> implement > > > >> your own expansion logic. > > > >> > > > >> This API is added to trunk so that we can get feedback from everyone > > who > > > >> use > > > >> the snapshot builds of Neo4j, if the response to this API isn't > > > positive, > > > >> it > > > >> will probably be removed before the release of 1.1, so please submit > > > >> comments in this thread on what you think about this API. > > > >> > > > >> Happy Hacking, > > > >> -- > > > >> Tobias Ivarsson<tobias.ivars...@neotechnology.com> > > > >> Hacker, Neo Technology > > > >> www.neotechnology.com > > > >> Cellphone: +46 706 534857 > > > >> _______________________________________________ > > > >> 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 > > > _______________________________________________ > > > Neo4j mailing list > > > User@lists.neo4j.org > > > https://lists.neo4j.org/mailman/listinfo/user > > > > > > > > > > > -- > > Mattias Persson, [matt...@neotechnology.com] > > Hacker, Neo Technology > > www.neotechnology.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 > -- Mattias Persson, [matt...@neotechnology.com] Hacker, Neo Technology www.neotechnology.com _______________________________________________ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user