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

Reply via email to