Github user spmallette commented on the pull request:
https://github.com/apache/tinkerpop/commit/e790e56aaa2118b07e36f2579502786bd9d79cc0#commitcomment-17841823
In docs/src/recipes/centrality.asciidoc:
In docs/src/recipes/centrality.asciidoc on line 75:
> Note that I had to remove the sack normalization as it seems to be buggy
for this query
I don't see that behavior actually - see the results below (first with
modern graph and then with my example graph from the recipe.
```text
gremlin> g.withSack(0).V().repeat(both().simplePath()).emit().path().
gremlin> group().by(project("a","b").by(limit(local, 1)).
gremlin> by(tail(local, 1))).
gremlin> by(order().by(count(local))).
gremlin> select(values).as("shortestPaths").
gremlin> V().as("v").map(select("shortestPaths").unfold().
gremlin> filter(unfold().where(eq("v"))).count()).
gremlin> sack(sum).barrier(normSack).sack().as("betweeness").
gremlin> select("v","betweeness")
==>[v:v[1], betweeness:0.21428571428571427]
==>[v:v[2], betweeness:0.11904761904761904]
==>[v:v[3], betweeness:0.21428571428571427]
==>[v:v[4], betweeness:0.21428571428571427]
==>[v:v[5], betweeness:0.11904761904761904]
==>[v:v[6], betweeness:0.11904761904761904]
gremlin>
gremlin>
g.withSack(0).V().store("x").repeat(both().simplePath()).emit().path().
gremlin> group().by(project("a","b").by(limit(local, 1)).
gremlin> by(tail(local, 1))).
gremlin> by(order().by(count(local))).
gremlin> select(values).as("shortestPaths").
gremlin> select("x").unfold().as("v").
gremlin> select("shortestPaths").
gremlin> map(unfold().filter(unfold().where(eq("v"))).count()).
gremlin> sack(sum).barrier(normSack).sack().as("betweeness").
gremlin> select("v","betweeness")
==>[v:v[1], betweeness:0.21428571428571427]
==>[v:v[2], betweeness:0.11904761904761904]
==>[v:v[3], betweeness:0.21428571428571427]
==>[v:v[4], betweeness:0.21428571428571427]
==>[v:v[5], betweeness:0.11904761904761904]
==>[v:v[6], betweeness:0.11904761904761904]
gremlin> graph = TinkerGraph.open()
==>tinkergraph[vertices:0 edges:0]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
gremlin> a = graph.addVertex('name','a')
==>v[0]
gremlin> b = graph.addVertex('name','b')
==>v[2]
gremlin> c = graph.addVertex('name','c')
==>v[4]
gremlin> d = graph.addVertex('name','d')
==>v[6]
gremlin> e = graph.addVertex('name','e')
==>v[8]
gremlin> a.addEdge('next',b)
==>e[10][0-next->2]
gremlin> b.addEdge('next',c)
==>e[11][2-next->4]
gremlin> c.addEdge('next',d)
==>e[12][4-next->6]
gremlin> d.addEdge('next',e)
==>e[13][6-next->8]
gremlin> g.withSack(0).V().repeat(both().simplePath()).emit().path().
gremlin> group().by(project("a","b").by(limit(local, 1)).
gremlin> by(tail(local, 1))).
gremlin> by(order().by(count(local))).
gremlin> select(values).as("shortestPaths").
gremlin> V().as("v").map(select("shortestPaths").unfold().
gremlin> filter(unfold().where(eq("v"))).count()).
gremlin> sack(sum).barrier(normSack).sack().as("betweeness").
gremlin> select("v","betweeness")
==>[v:v[0], betweeness:0.13333333333333333]
==>[v:v[2], betweeness:0.23333333333333334]
==>[v:v[4], betweeness:0.26666666666666666]
==>[v:v[6], betweeness:0.23333333333333334]
==>[v:v[8], betweeness:0.13333333333333333]
gremlin>
gremlin>
g.withSack(0).V().store("x").repeat(both().simplePath()).emit().path().
gremlin> group().by(project("a","b").by(limit(local, 1)).
gremlin> by(tail(local, 1))).
gremlin> by(order().by(count(local))).
gremlin> select(values).as("shortestPaths").
gremlin> select("x").unfold().as("v").
gremlin> select("shortestPaths").
gremlin> map(unfold().filter(unfold().where(eq("v"))).count()).
gremlin> sack(sum).barrier(normSack).sack().as("betweeness").
gremlin> select("v","betweeness")
==>[v:v[0], betweeness:0.13333333333333333]
==>[v:v[2], betweeness:0.23333333333333334]
==>[v:v[4], betweeness:0.26666666666666666]
==>[v:v[6], betweeness:0.23333333333333334]
==>[v:v[8], betweeness:0.13333333333333333]
```
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---