2010/3/30 Marko Rodriguez <okramma...@gmail.com>

> Hi guys,
>
> For what its worth----
>
> I have yet to use the Neo4j traversal framework because it is simply is not
> expressive enough. The traverser framework is like a single-relational
> traverser on a multi-relational graph. You only allow or disallow certain
> edge labels--not the ordered concatenation of labels. Moreover, even with
> ordered labels defined, the choices that a traverser make at every element
> (edge and vertex) should be predicated on general purpose
> computing---predicated on the state/history of the walker, the properties of
> the elements,  ... anything.
>
> >
> >    "relationships": [
> >       { "direction": "outgoing",
> >         "type": "KNOWS" },
> >       { "type": "LOVES" }
> >    ],
> >    "max depth": 4 }
>
> What if I want to find all the people that love my post popular (by
> eigenvector centrality) friends who also know me? Thus, simply taking
> "knows" and "loves" relationships arbitrarily doesn't tell me that. What
> comes into play in such situations are edge weights, ordered paths, loops,
> sampling, etc.
>
> A general purpose traverser framework requires that you be able to define
> adjacency arbitrarily. The traverser must be able to ask the engineer, at
> every step (edge and vertex [1]), what do you mean by "adjacent" ---- where
> do I go next?
>
> [1] edges should be treated just as vertices---they have properties that
> can be reasoned on. many times you want edges returned, not just vertices.
>
As I see it traversers are fundamentally different from pipes/gremlin, where
the pipes/gremlin style is very explicit in which steps to traverse. F.ex.
you must specify that it must first traverse relationships of type X and
then of type Y a.s.o. and have an exact knowledge of the graph you're
traversing.

The neo4j traversers doesn't have that (although they will have soon), but
they instead can traverse any graph with arbitrary depth and all that...
f.ex. if you are "standing" on a file in a tree on depth D (i.e. there are D
parent folders above it) and you'd like to know the OWNER of that file. If
the OWNER relationships sits on the top-level folders and want to find it
you'd just tell the traverser to traverse incoming TREE_CHILD and outgoing
OWNER relationships and return nodes/paths which ends with and OWNER
relationship and you have your results, however deep the file is in the
tree.

These two ways of traversing a graph complement each other, it's not that
one is "better" than the other. Would you agree on this?

>
> Take care,
> Marko.
>
> http://markorodriguez.com
>
> _______________________________________________
> Neo mailing list
> User@lists.neo4j.org
> https://lists.neo4j.org/mailman/listinfo/user
>



-- 
Mattias Persson, [matt...@neotechnology.com]
Hacker, Neo Technology
www.neotechnology.com
_______________________________________________
Neo mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to