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.

Take care,
Marko.

http://markorodriguez.com

_______________________________________________
Neo mailing list
[email protected]
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to