>
> > 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?
>

I think I agree. I would hope to be able to use XPath/Gremlin style querying
for most things, and a more programatic system for more complex ones.

> a JSON document describing the traverser, like:
>
>   { "order": "depth first",
>     "uniquness": "node",
>     "return evaluator":
>        { "language": "javascript",
>          "body": "function shouldReturn( pos ) {...}" },
>     "prune evaluator":
>        { "language": "javascript",
>          "body": "function...." },
>     "relationships": [
>        { "direction": "outgoing",
>          "type": "KNOWS" },
>        { "type": "LOVES" }
>     ],
>     "max depth": 4 }

Looks good for my needs. Using javascript in this form looks sensible.

Any idea about the performance implications of using a javax.scripting
language here? I guess not too severe.

Is there any need for a shared context between calls to the evaluators? So I
could store custom information and access it again when traversing further
nodes. So, you could passing a 'context' object (with its initial values)
that gets passed in as a second parameter to each evaluator function. Then
again, this is probably bad practice....

Any idea how you will handle pagination? Obviously sorting is an issue as
you are unlikely to want the nodes in the traversal order. In my mind it
would be nice to allow the return evaluator to return a 'sorting value' that
indicates that nodes rank in the result set. E.g. sorting on a score
attribute of the node:

function shouldReturn(pos)
{
    if (!some_condition) return false;

    return pos.currentNode().score;
}

But I guess this is a comment on the Neo API as a whole?

Cheers

Al
_______________________________________________
Neo mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to