Re: [Neo4j] Wrong Gremlin results through REST interface

2011-11-16 Thread Jeroen van Dijk

 If your versions are not consistent then this may be the reason why you're
 traversals in Gremlin REPL are working, but not in Gremlin Plugin (for
 example).


This was indeed the case for me, I compared the Gremlin version 1.3 locally
to 1.1 in the webconsole. Thanks for pointing this out.

Cheers,
Jeroen





 HTH,
 Marko.

 http://markorodriguez.com

 On Nov 8, 2011, at 8:52 AM, Peter Neubauer wrote:

  Hi all (and Romiko),
  it might be that this issue, as Romikos, is confusion about the use of
  the {}. In Gremlin 1.3, you have to explicitly use filter{} in order
  to do this, see https://github.com/neo4j/gremlin-plugin/issues/3 for
  an example.
 
  I have locally comitted a documentation example for this, but I am
  waiting for the release to finish before pushing it. Could you try
  this?
 
  Cheers,
 
  /peter neubauer
 
  GTalk:  neubauer.peter
  Skype   peter.neubauer
  Phone   +46 704 106975
  LinkedIn   http://www.linkedin.com/in/neubauer
  Twitter  http://twitter.com/peterneubauer
 
  http://www.neo4j.org  - NOSQL for the Enterprise.
  http://startupbootcamp.org/- Öresund - Innovation happens HERE.
 
 
 
  On Tue, Nov 8, 2011 at 11:43 AM, Peter Neubauer
  peter.neuba...@neotechnology.com wrote:
  Yup,
  I have at least Tathams issue to start with. Will report back and see
 if it
  solves this one too. Feel free to add this example to the issue on the
  Gremlin plugin.
 
  On Nov 8, 2011 12:32 PM, Michael Hunger 
 michael.hun...@neotechnology.com
  wrote:
 
  There are some weird things going on. Probably have to do with
  javax.script.ScriptEngine.eval()
 
  We should investigate this thoroughly.
 
  Perhaps Peter and Marko can spend some cycles on it.
 
  Michael
 
  1) behaviour native gremlin vs
  2) Neo4j web console vs.
  3) REST-calls
 
  Am 08.11.2011 um 12:02 schrieb Jeroen van Dijk:
 
  HI Michael,
 
  Thanks for this solution. The webconsole now gives me the right
 results
  also for recommendation query. There is however still something weird
  when
  I use this recommendation query in the gremlin console:
 
  gremlin node = g.v(14260); m = [:].withDefault{0.0}; a_total =
  node.inE().count(); node.in().out('owns').sideEffect{union = a_total
 +
  it.inE().count()}.groupCount(m) { it : it += (1.0/(union)) }  -1;
  m.sort{a,b - b.value = a.value}[0..9]
  No signature of method:
  com.tinkerpop.blueprints.pgm.impls.neo4j.Neo4jVertex.plus() is
  applicable
  for argument types: (java.math.BigDecimal) values: [0.0303030303]
  Possible solutions: values(), keys(), use([Ljava.lang.Object;),
  values(java.lang.Object), is(java.lang.Object),
  split(groovy.lang.Closure)
 
  The weird thing is that exact same query does work in the webconsole..
 
  Consider my issue solved though. Thanks a lot.
 
  Jeroen
 
  On Mon, Nov 7, 2011 at 1:25 PM, Michael Hunger 
  michael.hun...@neotechnology.com wrote:
 
  Jeroen,
 
  could you try to use the alternative syntax:
 
  ... groupCount(m) { it : it += 0.1 } ...
 
  It seems to be a problem with evaluation of the string in the
  javax.ScriptEngine for Groovy
 
  Here is the output from my web-console:
• gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{
 it
  += 0.1 }  -1;m
• == follows=11
• == owns=48
• gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it :
 it
  +=
  0.1 }  -1;m
• == follows=1.1
• == owns=4.8
 
  Michael
 
  Am 07.11.2011 um 12:55 schrieb Jeroen van Dijk:
 
  Ok i think I found an example that is independent of my data
 (adapted
  from
  http://docs.neo4j.org/chunked/snapshot/gremlin-plugin.html)
 
  Locally:
  gremlin m = [:];g.v(33).bothE().label.groupCount(m)  -1;m
 
  ==follows=11
  ==owns=48
  gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it +=
 0.1
  }
 
  -1;m
  ==follows=1.1
  ==owns=4.8
 
  REST/webadmin console:
  gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it +=
 0.1
  }
 
  -1;m
  == follows=11
  == owns=48
  gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it +=
 10
  }
 
  -1;m
  == follows=11
  == owns=48
  gremlin
 
  It seems like the closure block is not evaluated (to me as a
  Groovy/Gremlin/Neo4j noob)
 
  Michael, I will send you a link to my database in private.
 
  Thanks,
  Jeroen
 
 
 
  On Mon, Nov 7, 2011 at 12:41 PM, Michael Hunger 
  michael.hun...@neotechnology.com wrote:
 
  Jeroen,
 
  that would indeed help a lot.
  I'll find it.
 
  Michael
 
  Am 07.11.2011 um 12:34 schrieb Jeroen van Dijk:
 
  Hi Michael,
 
  I would like to provide a better example, but my Groovy is quite
  poor
  so
  it
  I'll take me some time. However I think the problem isn't in the
  JSON
  conversion. Because that would mean the results I get would be the
  same,
  but with a different score right? The thing is that I get
 different
  Vertices back through the REST interface than I do locally. To me
  that
  means things already fail during the Gremlin evaluation.
 
  I will try to come up 

Re: [Neo4j] Wrong Gremlin results through REST interface

2011-11-08 Thread Jeroen van Dijk
HI Michael,

Thanks for this solution. The webconsole now gives me the right results
also for recommendation query. There is however still something weird when
I use this recommendation query in the gremlin console:

gremlin node = g.v(14260); m = [:].withDefault{0.0}; a_total =
node.inE().count(); node.in().out('owns').sideEffect{union = a_total +
it.inE().count()}.groupCount(m) { it : it += (1.0/(union)) }  -1;
m.sort{a,b - b.value = a.value}[0..9]
No signature of method:
com.tinkerpop.blueprints.pgm.impls.neo4j.Neo4jVertex.plus() is applicable
for argument types: (java.math.BigDecimal) values: [0.0303030303]
Possible solutions: values(), keys(), use([Ljava.lang.Object;),
values(java.lang.Object), is(java.lang.Object), split(groovy.lang.Closure)

The weird thing is that exact same query does work in the webconsole..

Consider my issue solved though. Thanks a lot.

Jeroen

On Mon, Nov 7, 2011 at 1:25 PM, Michael Hunger 
michael.hun...@neotechnology.com wrote:

 Jeroen,

 could you try to use the alternative syntax:

 ... groupCount(m) { it : it += 0.1 } ...

 It seems to be a problem with evaluation of the string in the
 javax.ScriptEngine for Groovy

 Here is the output from my web-console:
• gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it
 += 0.1 }  -1;m
• == follows=11
• == owns=48
• gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it : it +=
 0.1 }  -1;m
• == follows=1.1
• == owns=4.8

 Michael

 Am 07.11.2011 um 12:55 schrieb Jeroen van Dijk:

  Ok i think I found an example that is independent of my data (adapted
 from
  http://docs.neo4j.org/chunked/snapshot/gremlin-plugin.html)
 
  Locally:
  gremlin m = [:];g.v(33).bothE().label.groupCount(m)  -1;m
 
  ==follows=11
  ==owns=48
  gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it += 0.1 }
 
  -1;m
  ==follows=1.1
  ==owns=4.8
 
  REST/webadmin console:
  gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it += 0.1 }
 
  -1;m
  == follows=11
  == owns=48
  gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it += 10 }
 
  -1;m
  == follows=11
  == owns=48
  gremlin
 
  It seems like the closure block is not evaluated (to me as a
  Groovy/Gremlin/Neo4j noob)
 
  Michael, I will send you a link to my database in private.
 
  Thanks,
  Jeroen
 
 
 
  On Mon, Nov 7, 2011 at 12:41 PM, Michael Hunger 
  michael.hun...@neotechnology.com wrote:
 
  Jeroen,
 
  that would indeed help a lot.
  I'll find it.
 
  Michael
 
  Am 07.11.2011 um 12:34 schrieb Jeroen van Dijk:
 
  Hi Michael,
 
  I would like to provide a better example, but my Groovy is quite poor
 so
  it
  I'll take me some time. However I think the problem isn't in the JSON
  conversion. Because that would mean the results I get would be the
 same,
  but with a different score right? The thing is that I get different
  Vertices back through the REST interface than I do locally. To me that
  means things already fail during the Gremlin evaluation.
 
  I will try to come up with a more isolated example. If it helps I could
  give you access to my dataset on Heroku (or through a Zip file).
 
  thanks,
  Jeroen
 
  On Mon, Nov 7, 2011 at 11:34 AM, Michael Hunger 
  michael.hun...@neotechnology.com wrote:
 
  Jeroen,
 
  can you narrow it down to a simpler operation, like just a division?
 
  Perhaps in the conversion from the division result (be it Float,
 Double,
  BigDecimal) to
  JSON something goes awry.
 
  In the GremlinPlugin the code for that is:
 
  } else if (result instanceof Double || result instanceof Float) {
   return ValueRepresentation.number(((Number)
  result).doubleValue());
  }
 
  I'm not sure what datatype groovy creates as result of your operation,
  perhaps you can determine that as well.
 
  If we have a simple gremlin / groovy calculation that yields the wrong
  results, we can easily inspect and fix the plugin.
 
  Thanks a lot
 
  Michael
 
  Am 07.11.2011 um 11:12 schrieb Jeroen van Dijk:
 
  Hi all,
 
  I'm using Gremlin to perform a recommendation query. Locally in the
  gremlin
  shell I get amazingly useful results. However when I use the webadmin
  gremlin console I get different results, both locally and in the
 Heroku
  addon environment. I get the same wrong results when I use the rest
  interface, so I assume something is incorrect in the Gremlin REST
  interface. In all these cases the data is the same or on the same
  database.
 
  The gremlin query is below (it is own of my first so probably not the
  most
  efficient). It returns the top 10 list of most similar items
 according
  to
  the Jaccard similarity index (= (Intersection(A, B) / Union(A, B) ):
 
  node = g.v(14260); m = [:].withDefault{0.0}; a_total =
  node.inE().count();
  node.in().out('owns').sideEffect{union = a_total +
  it.inE().count()}.groupCount(m) { it }{ it += (1/(union)) }  -1;
  m.sort{a,b - b.value = a.value}[0..9]
 
  When I do the following locally everything is fine:
 
   

Re: [Neo4j] Wrong Gremlin results through REST interface

2011-11-08 Thread Michael Hunger
There are some weird things going on. Probably have to do with 
javax.script.ScriptEngine.eval()

We should investigate this thoroughly.

Perhaps Peter and Marko can spend some cycles on it.

Michael

1) behaviour native gremlin vs
2) Neo4j web console vs.
3) REST-calls

Am 08.11.2011 um 12:02 schrieb Jeroen van Dijk:

 HI Michael,
 
 Thanks for this solution. The webconsole now gives me the right results
 also for recommendation query. There is however still something weird when
 I use this recommendation query in the gremlin console:
 
 gremlin node = g.v(14260); m = [:].withDefault{0.0}; a_total =
 node.inE().count(); node.in().out('owns').sideEffect{union = a_total +
 it.inE().count()}.groupCount(m) { it : it += (1.0/(union)) }  -1;
 m.sort{a,b - b.value = a.value}[0..9]
 No signature of method:
 com.tinkerpop.blueprints.pgm.impls.neo4j.Neo4jVertex.plus() is applicable
 for argument types: (java.math.BigDecimal) values: [0.0303030303]
 Possible solutions: values(), keys(), use([Ljava.lang.Object;),
 values(java.lang.Object), is(java.lang.Object), split(groovy.lang.Closure)
 
 The weird thing is that exact same query does work in the webconsole..
 
 Consider my issue solved though. Thanks a lot.
 
 Jeroen
 
 On Mon, Nov 7, 2011 at 1:25 PM, Michael Hunger 
 michael.hun...@neotechnology.com wrote:
 
 Jeroen,
 
 could you try to use the alternative syntax:
 
 ... groupCount(m) { it : it += 0.1 } ...
 
 It seems to be a problem with evaluation of the string in the
 javax.ScriptEngine for Groovy
 
 Here is the output from my web-console:
   • gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it
 += 0.1 }  -1;m
   • == follows=11
   • == owns=48
   • gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it : it +=
 0.1 }  -1;m
   • == follows=1.1
   • == owns=4.8
 
 Michael
 
 Am 07.11.2011 um 12:55 schrieb Jeroen van Dijk:
 
 Ok i think I found an example that is independent of my data (adapted
 from
 http://docs.neo4j.org/chunked/snapshot/gremlin-plugin.html)
 
 Locally:
 gremlin m = [:];g.v(33).bothE().label.groupCount(m)  -1;m
 
 ==follows=11
 ==owns=48
 gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it += 0.1 }
 
 -1;m
 ==follows=1.1
 ==owns=4.8
 
 REST/webadmin console:
 gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it += 0.1 }
 
 -1;m
 == follows=11
 == owns=48
 gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it += 10 }
 
 -1;m
 == follows=11
 == owns=48
 gremlin
 
 It seems like the closure block is not evaluated (to me as a
 Groovy/Gremlin/Neo4j noob)
 
 Michael, I will send you a link to my database in private.
 
 Thanks,
 Jeroen
 
 
 
 On Mon, Nov 7, 2011 at 12:41 PM, Michael Hunger 
 michael.hun...@neotechnology.com wrote:
 
 Jeroen,
 
 that would indeed help a lot.
 I'll find it.
 
 Michael
 
 Am 07.11.2011 um 12:34 schrieb Jeroen van Dijk:
 
 Hi Michael,
 
 I would like to provide a better example, but my Groovy is quite poor
 so
 it
 I'll take me some time. However I think the problem isn't in the JSON
 conversion. Because that would mean the results I get would be the
 same,
 but with a different score right? The thing is that I get different
 Vertices back through the REST interface than I do locally. To me that
 means things already fail during the Gremlin evaluation.
 
 I will try to come up with a more isolated example. If it helps I could
 give you access to my dataset on Heroku (or through a Zip file).
 
 thanks,
 Jeroen
 
 On Mon, Nov 7, 2011 at 11:34 AM, Michael Hunger 
 michael.hun...@neotechnology.com wrote:
 
 Jeroen,
 
 can you narrow it down to a simpler operation, like just a division?
 
 Perhaps in the conversion from the division result (be it Float,
 Double,
 BigDecimal) to
 JSON something goes awry.
 
 In the GremlinPlugin the code for that is:
 
 } else if (result instanceof Double || result instanceof Float) {
 return ValueRepresentation.number(((Number)
 result).doubleValue());
 }
 
 I'm not sure what datatype groovy creates as result of your operation,
 perhaps you can determine that as well.
 
 If we have a simple gremlin / groovy calculation that yields the wrong
 results, we can easily inspect and fix the plugin.
 
 Thanks a lot
 
 Michael
 
 Am 07.11.2011 um 11:12 schrieb Jeroen van Dijk:
 
 Hi all,
 
 I'm using Gremlin to perform a recommendation query. Locally in the
 gremlin
 shell I get amazingly useful results. However when I use the webadmin
 gremlin console I get different results, both locally and in the
 Heroku
 addon environment. I get the same wrong results when I use the rest
 interface, so I assume something is incorrect in the Gremlin REST
 interface. In all these cases the data is the same or on the same
 database.
 
 The gremlin query is below (it is own of my first so probably not the
 most
 efficient). It returns the top 10 list of most similar items
 according
 to
 the Jaccard similarity index (= (Intersection(A, B) / Union(A, B) ):
 
 node = g.v(14260); m = 

Re: [Neo4j] Wrong Gremlin results through REST interface

2011-11-08 Thread Peter Neubauer
Yup,
I have at least Tathams issue to start with. Will report back and see if it
solves this one too. Feel free to add this example to the issue on the
Gremlin plugin.
On Nov 8, 2011 12:32 PM, Michael Hunger michael.hun...@neotechnology.com
wrote:

 There are some weird things going on. Probably have to do with
 javax.script.ScriptEngine.eval()

 We should investigate this thoroughly.

 Perhaps Peter and Marko can spend some cycles on it.

 Michael

 1) behaviour native gremlin vs
 2) Neo4j web console vs.
 3) REST-calls

 Am 08.11.2011 um 12:02 schrieb Jeroen van Dijk:

  HI Michael,
 
  Thanks for this solution. The webconsole now gives me the right results
  also for recommendation query. There is however still something weird
 when
  I use this recommendation query in the gremlin console:
 
  gremlin node = g.v(14260); m = [:].withDefault{0.0}; a_total =
  node.inE().count(); node.in().out('owns').sideEffect{union = a_total +
  it.inE().count()}.groupCount(m) { it : it += (1.0/(union)) }  -1;
  m.sort{a,b - b.value = a.value}[0..9]
  No signature of method:
  com.tinkerpop.blueprints.pgm.impls.neo4j.Neo4jVertex.plus() is applicable
  for argument types: (java.math.BigDecimal) values: [0.0303030303]
  Possible solutions: values(), keys(), use([Ljava.lang.Object;),
  values(java.lang.Object), is(java.lang.Object),
 split(groovy.lang.Closure)
 
  The weird thing is that exact same query does work in the webconsole..
 
  Consider my issue solved though. Thanks a lot.
 
  Jeroen
 
  On Mon, Nov 7, 2011 at 1:25 PM, Michael Hunger 
  michael.hun...@neotechnology.com wrote:
 
  Jeroen,
 
  could you try to use the alternative syntax:
 
  ... groupCount(m) { it : it += 0.1 } ...
 
  It seems to be a problem with evaluation of the string in the
  javax.ScriptEngine for Groovy
 
  Here is the output from my web-console:
• gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it
  += 0.1 }  -1;m
• == follows=11
• == owns=48
• gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it : it
 +=
  0.1 }  -1;m
• == follows=1.1
• == owns=4.8
 
  Michael
 
  Am 07.11.2011 um 12:55 schrieb Jeroen van Dijk:
 
  Ok i think I found an example that is independent of my data (adapted
  from
  http://docs.neo4j.org/chunked/snapshot/gremlin-plugin.html)
 
  Locally:
  gremlin m = [:];g.v(33).bothE().label.groupCount(m)  -1;m
 
  ==follows=11
  ==owns=48
  gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it += 0.1
 }
 
  -1;m
  ==follows=1.1
  ==owns=4.8
 
  REST/webadmin console:
  gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it += 0.1
 }
 
  -1;m
  == follows=11
  == owns=48
  gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it += 10 }
 
  -1;m
  == follows=11
  == owns=48
  gremlin
 
  It seems like the closure block is not evaluated (to me as a
  Groovy/Gremlin/Neo4j noob)
 
  Michael, I will send you a link to my database in private.
 
  Thanks,
  Jeroen
 
 
 
  On Mon, Nov 7, 2011 at 12:41 PM, Michael Hunger 
  michael.hun...@neotechnology.com wrote:
 
  Jeroen,
 
  that would indeed help a lot.
  I'll find it.
 
  Michael
 
  Am 07.11.2011 um 12:34 schrieb Jeroen van Dijk:
 
  Hi Michael,
 
  I would like to provide a better example, but my Groovy is quite poor
  so
  it
  I'll take me some time. However I think the problem isn't in the JSON
  conversion. Because that would mean the results I get would be the
  same,
  but with a different score right? The thing is that I get different
  Vertices back through the REST interface than I do locally. To me
 that
  means things already fail during the Gremlin evaluation.
 
  I will try to come up with a more isolated example. If it helps I
 could
  give you access to my dataset on Heroku (or through a Zip file).
 
  thanks,
  Jeroen
 
  On Mon, Nov 7, 2011 at 11:34 AM, Michael Hunger 
  michael.hun...@neotechnology.com wrote:
 
  Jeroen,
 
  can you narrow it down to a simpler operation, like just a division?
 
  Perhaps in the conversion from the division result (be it Float,
  Double,
  BigDecimal) to
  JSON something goes awry.
 
  In the GremlinPlugin the code for that is:
 
  } else if (result instanceof Double || result instanceof Float) {
  return ValueRepresentation.number(((Number)
  result).doubleValue());
  }
 
  I'm not sure what datatype groovy creates as result of your
 operation,
  perhaps you can determine that as well.
 
  If we have a simple gremlin / groovy calculation that yields the
 wrong
  results, we can easily inspect and fix the plugin.
 
  Thanks a lot
 
  Michael
 
  Am 07.11.2011 um 11:12 schrieb Jeroen van Dijk:
 
  Hi all,
 
  I'm using Gremlin to perform a recommendation query. Locally in the
  gremlin
  shell I get amazingly useful results. However when I use the
 webadmin
  gremlin console I get different results, both locally and in the
  Heroku
  addon environment. I get the same wrong results when I use the rest
  interface, so I assume 

Re: [Neo4j] Wrong Gremlin results through REST interface

2011-11-08 Thread Peter Neubauer
Hi all (and Romiko),
it might be that this issue, as Romikos, is confusion about the use of
the {}. In Gremlin 1.3, you have to explicitly use filter{} in order
to do this, see https://github.com/neo4j/gremlin-plugin/issues/3 for
an example.

I have locally comitted a documentation example for this, but I am
waiting for the release to finish before pushing it. Could you try
this?

Cheers,

/peter neubauer

GTalk:      neubauer.peter
Skype       peter.neubauer
Phone       +46 704 106975
LinkedIn   http://www.linkedin.com/in/neubauer
Twitter      http://twitter.com/peterneubauer

http://www.neo4j.org              - NOSQL for the Enterprise.
http://startupbootcamp.org/    - Öresund - Innovation happens HERE.



On Tue, Nov 8, 2011 at 11:43 AM, Peter Neubauer
peter.neuba...@neotechnology.com wrote:
 Yup,
 I have at least Tathams issue to start with. Will report back and see if it
 solves this one too. Feel free to add this example to the issue on the
 Gremlin plugin.

 On Nov 8, 2011 12:32 PM, Michael Hunger michael.hun...@neotechnology.com
 wrote:

 There are some weird things going on. Probably have to do with
 javax.script.ScriptEngine.eval()

 We should investigate this thoroughly.

 Perhaps Peter and Marko can spend some cycles on it.

 Michael

 1) behaviour native gremlin vs
 2) Neo4j web console vs.
 3) REST-calls

 Am 08.11.2011 um 12:02 schrieb Jeroen van Dijk:

  HI Michael,
 
  Thanks for this solution. The webconsole now gives me the right results
  also for recommendation query. There is however still something weird
  when
  I use this recommendation query in the gremlin console:
 
  gremlin node = g.v(14260); m = [:].withDefault{0.0}; a_total =
  node.inE().count(); node.in().out('owns').sideEffect{union = a_total +
  it.inE().count()}.groupCount(m) { it : it += (1.0/(union)) }  -1;
  m.sort{a,b - b.value = a.value}[0..9]
  No signature of method:
  com.tinkerpop.blueprints.pgm.impls.neo4j.Neo4jVertex.plus() is
  applicable
  for argument types: (java.math.BigDecimal) values: [0.0303030303]
  Possible solutions: values(), keys(), use([Ljava.lang.Object;),
  values(java.lang.Object), is(java.lang.Object),
  split(groovy.lang.Closure)
 
  The weird thing is that exact same query does work in the webconsole..
 
  Consider my issue solved though. Thanks a lot.
 
  Jeroen
 
  On Mon, Nov 7, 2011 at 1:25 PM, Michael Hunger 
  michael.hun...@neotechnology.com wrote:
 
  Jeroen,
 
  could you try to use the alternative syntax:
 
  ... groupCount(m) { it : it += 0.1 } ...
 
  It seems to be a problem with evaluation of the string in the
  javax.ScriptEngine for Groovy
 
  Here is the output from my web-console:
        • gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it
  += 0.1 }  -1;m
        • == follows=11
        • == owns=48
        • gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it : it
  +=
  0.1 }  -1;m
        • == follows=1.1
        • == owns=4.8
 
  Michael
 
  Am 07.11.2011 um 12:55 schrieb Jeroen van Dijk:
 
  Ok i think I found an example that is independent of my data (adapted
  from
  http://docs.neo4j.org/chunked/snapshot/gremlin-plugin.html)
 
  Locally:
  gremlin m = [:];g.v(33).bothE().label.groupCount(m)  -1;m
 
  ==follows=11
  ==owns=48
  gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it += 0.1
  }
 
  -1;m
  ==follows=1.1
  ==owns=4.8
 
  REST/webadmin console:
  gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it += 0.1
  }
 
  -1;m
  == follows=11
  == owns=48
  gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it += 10
  }
 
  -1;m
  == follows=11
  == owns=48
  gremlin
 
  It seems like the closure block is not evaluated (to me as a
  Groovy/Gremlin/Neo4j noob)
 
  Michael, I will send you a link to my database in private.
 
  Thanks,
  Jeroen
 
 
 
  On Mon, Nov 7, 2011 at 12:41 PM, Michael Hunger 
  michael.hun...@neotechnology.com wrote:
 
  Jeroen,
 
  that would indeed help a lot.
  I'll find it.
 
  Michael
 
  Am 07.11.2011 um 12:34 schrieb Jeroen van Dijk:
 
  Hi Michael,
 
  I would like to provide a better example, but my Groovy is quite
  poor
  so
  it
  I'll take me some time. However I think the problem isn't in the
  JSON
  conversion. Because that would mean the results I get would be the
  same,
  but with a different score right? The thing is that I get different
  Vertices back through the REST interface than I do locally. To me
  that
  means things already fail during the Gremlin evaluation.
 
  I will try to come up with a more isolated example. If it helps I
  could
  give you access to my dataset on Heroku (or through a Zip file).
 
  thanks,
  Jeroen
 
  On Mon, Nov 7, 2011 at 11:34 AM, Michael Hunger 
  michael.hun...@neotechnology.com wrote:
 
  Jeroen,
 
  can you narrow it down to a simpler operation, like just a
  division?
 
  Perhaps in the conversion from the division result (be it Float,
  Double,
  BigDecimal) to
  JSON something goes awry.
 
  In the GremlinPlugin the code for that 

Re: [Neo4j] Wrong Gremlin results through REST interface

2011-11-08 Thread Marko Rodriguez
Hey,

To expand on Peter's point. I suspect people are mixing versions of Gremlin. 
Gremlin is generally (not usually) backwards compatible from version to 
version. If you are using Gremlin REPL, GremlinPlugin, and Gremlin from Neo4j 
WebAdmin, its good to make sure you have the same version of Gremlin in 
instances. Here is how you check:

GremlinTokens.VERSION 
(for old skool Gremlin)
Gremlin.version()   
(for new skool Gremlin)

If your versions are not consistent then this may be the reason why you're 
traversals in Gremlin REPL are working, but not in Gremlin Plugin (for example).

HTH,
Marko.

http://markorodriguez.com

On Nov 8, 2011, at 8:52 AM, Peter Neubauer wrote:

 Hi all (and Romiko),
 it might be that this issue, as Romikos, is confusion about the use of
 the {}. In Gremlin 1.3, you have to explicitly use filter{} in order
 to do this, see https://github.com/neo4j/gremlin-plugin/issues/3 for
 an example.
 
 I have locally comitted a documentation example for this, but I am
 waiting for the release to finish before pushing it. Could you try
 this?
 
 Cheers,
 
 /peter neubauer
 
 GTalk:  neubauer.peter
 Skype   peter.neubauer
 Phone   +46 704 106975
 LinkedIn   http://www.linkedin.com/in/neubauer
 Twitter  http://twitter.com/peterneubauer
 
 http://www.neo4j.org  - NOSQL for the Enterprise.
 http://startupbootcamp.org/- Öresund - Innovation happens HERE.
 
 
 
 On Tue, Nov 8, 2011 at 11:43 AM, Peter Neubauer
 peter.neuba...@neotechnology.com wrote:
 Yup,
 I have at least Tathams issue to start with. Will report back and see if it
 solves this one too. Feel free to add this example to the issue on the
 Gremlin plugin.
 
 On Nov 8, 2011 12:32 PM, Michael Hunger michael.hun...@neotechnology.com
 wrote:
 
 There are some weird things going on. Probably have to do with
 javax.script.ScriptEngine.eval()
 
 We should investigate this thoroughly.
 
 Perhaps Peter and Marko can spend some cycles on it.
 
 Michael
 
 1) behaviour native gremlin vs
 2) Neo4j web console vs.
 3) REST-calls
 
 Am 08.11.2011 um 12:02 schrieb Jeroen van Dijk:
 
 HI Michael,
 
 Thanks for this solution. The webconsole now gives me the right results
 also for recommendation query. There is however still something weird
 when
 I use this recommendation query in the gremlin console:
 
 gremlin node = g.v(14260); m = [:].withDefault{0.0}; a_total =
 node.inE().count(); node.in().out('owns').sideEffect{union = a_total +
 it.inE().count()}.groupCount(m) { it : it += (1.0/(union)) }  -1;
 m.sort{a,b - b.value = a.value}[0..9]
 No signature of method:
 com.tinkerpop.blueprints.pgm.impls.neo4j.Neo4jVertex.plus() is
 applicable
 for argument types: (java.math.BigDecimal) values: [0.0303030303]
 Possible solutions: values(), keys(), use([Ljava.lang.Object;),
 values(java.lang.Object), is(java.lang.Object),
 split(groovy.lang.Closure)
 
 The weird thing is that exact same query does work in the webconsole..
 
 Consider my issue solved though. Thanks a lot.
 
 Jeroen
 
 On Mon, Nov 7, 2011 at 1:25 PM, Michael Hunger 
 michael.hun...@neotechnology.com wrote:
 
 Jeroen,
 
 could you try to use the alternative syntax:
 
 ... groupCount(m) { it : it += 0.1 } ...
 
 It seems to be a problem with evaluation of the string in the
 javax.ScriptEngine for Groovy
 
 Here is the output from my web-console:
   • gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it
 += 0.1 }  -1;m
   • == follows=11
   • == owns=48
   • gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it : it
 +=
 0.1 }  -1;m
   • == follows=1.1
   • == owns=4.8
 
 Michael
 
 Am 07.11.2011 um 12:55 schrieb Jeroen van Dijk:
 
 Ok i think I found an example that is independent of my data (adapted
 from
 http://docs.neo4j.org/chunked/snapshot/gremlin-plugin.html)
 
 Locally:
 gremlin m = [:];g.v(33).bothE().label.groupCount(m)  -1;m
 
 ==follows=11
 ==owns=48
 gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it += 0.1
 }
 
 -1;m
 ==follows=1.1
 ==owns=4.8
 
 REST/webadmin console:
 gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it += 0.1
 }
 
 -1;m
 == follows=11
 == owns=48
 gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it += 10
 }
 
 -1;m
 == follows=11
 == owns=48
 gremlin
 
 It seems like the closure block is not evaluated (to me as a
 Groovy/Gremlin/Neo4j noob)
 
 Michael, I will send you a link to my database in private.
 
 Thanks,
 Jeroen
 
 
 
 On Mon, Nov 7, 2011 at 12:41 PM, Michael Hunger 
 michael.hun...@neotechnology.com wrote:
 
 Jeroen,
 
 that would indeed help a lot.
 I'll find it.
 
 Michael
 
 Am 07.11.2011 um 12:34 schrieb Jeroen van Dijk:
 
 Hi Michael,
 
 I would like to provide a better example, but my Groovy is quite
 poor
 so
 it
 I'll take me some time. However I think the problem isn't in the
 JSON
 conversion. Because that would mean the results I get would be the
 same,
 but with a different score 

Re: [Neo4j] Wrong Gremlin results through REST interface

2011-11-08 Thread Romiko Derbynew
Hi,

I am not sure of this, since the console version with .filter{ it works, 
and in rest it does not. I then ran a version in the console and via rest and 
they both the same version, am I doing something wrong?

Either way, I will update our rest client to use the explicit filter expression.

Console Version:
gremlin Gremlin.version()
== 1.2

REST Version
http://localhost:20001/db/data/ext/GremlinPlugin/graphdb/execute_script
User-Agent: Fiddler
Host: localhost:20001
Accept: application/json
Content-Type: application/x-www-form-urlencoded

Request Body: script=Gremlin.version()

Response: 1.2

Peter, is it possible to explain why the REST needs the explicit .filter and 
the console not? Just for future reference, since if the versions were 
different then it would make sense to me?

Thank You


-Original Message-
From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On 
Behalf Of Marko Rodriguez
Sent: Wednesday, 9 November 2011 3:06 AM
To: Peter Neubauer
Cc: Neo4j user discussions; Michael Hunger
Subject: Re: [Neo4j] Wrong Gremlin results through REST interface

Hey,

To expand on Peter's point. I suspect people are mixing versions of Gremlin. 
Gremlin is generally (not usually) backwards compatible from version to 
version. If you are using Gremlin REPL, GremlinPlugin, and Gremlin from Neo4j 
WebAdmin, its good to make sure you have the same version of Gremlin in 
instances. Here is how you check:

GremlinTokens.VERSION 
(for old skool Gremlin)
Gremlin.version()   
(for new skool Gremlin)

If your versions are not consistent then this may be the reason why you're 
traversals in Gremlin REPL are working, but not in Gremlin Plugin (for example).

HTH,
Marko.

http://markorodriguez.com

On Nov 8, 2011, at 8:52 AM, Peter Neubauer wrote:

 Hi all (and Romiko),
 it might be that this issue, as Romikos, is confusion about the use of 
 the {}. In Gremlin 1.3, you have to explicitly use filter{} in order 
 to do this, see https://github.com/neo4j/gremlin-plugin/issues/3 for 
 an example.
 
 I have locally comitted a documentation example for this, but I am 
 waiting for the release to finish before pushing it. Could you try 
 this?
 
 Cheers,
 
 /peter neubauer
 
 GTalk:  neubauer.peter
 Skype   peter.neubauer
 Phone   +46 704 106975
 LinkedIn   http://www.linkedin.com/in/neubauer
 Twitter  http://twitter.com/peterneubauer
 
 http://www.neo4j.org  - NOSQL for the Enterprise.
 http://startupbootcamp.org/- Öresund - Innovation happens HERE.
 
 
 
 On Tue, Nov 8, 2011 at 11:43 AM, Peter Neubauer 
 peter.neuba...@neotechnology.com wrote:
 Yup,
 I have at least Tathams issue to start with. Will report back and see 
 if it solves this one too. Feel free to add this example to the issue 
 on the Gremlin plugin.
 
 On Nov 8, 2011 12:32 PM, Michael Hunger 
 michael.hun...@neotechnology.com
 wrote:
 
 There are some weird things going on. Probably have to do with
 javax.script.ScriptEngine.eval()
 
 We should investigate this thoroughly.
 
 Perhaps Peter and Marko can spend some cycles on it.
 
 Michael
 
 1) behaviour native gremlin vs
 2) Neo4j web console vs.
 3) REST-calls
 
 Am 08.11.2011 um 12:02 schrieb Jeroen van Dijk:
 
 HI Michael,
 
 Thanks for this solution. The webconsole now gives me the right 
 results also for recommendation query. There is however still 
 something weird when I use this recommendation query in the gremlin 
 console:
 
 gremlin node = g.v(14260); m = [:].withDefault{0.0}; a_total =
 node.inE().count(); node.in().out('owns').sideEffect{union = 
 a_total +
 it.inE().count()}.groupCount(m) { it : it += (1.0/(union)) }  -1; 
 m.sort{a,b - b.value = a.value}[0..9] No signature of method:
 com.tinkerpop.blueprints.pgm.impls.neo4j.Neo4jVertex.plus() is 
 applicable for argument types: (java.math.BigDecimal) values: 
 [0.0303030303] Possible solutions: values(), keys(), 
 use([Ljava.lang.Object;), values(java.lang.Object), 
 is(java.lang.Object),
 split(groovy.lang.Closure)
 
 The weird thing is that exact same query does work in the webconsole..
 
 Consider my issue solved though. Thanks a lot.
 
 Jeroen
 
 On Mon, Nov 7, 2011 at 1:25 PM, Michael Hunger  
 michael.hun...@neotechnology.com wrote:
 
 Jeroen,
 
 could you try to use the alternative syntax:
 
 ... groupCount(m) { it : it += 0.1 } ...
 
 It seems to be a problem with evaluation of the string in the 
 javax.ScriptEngine for Groovy
 
 Here is the output from my web-console:
   . gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it 
 }{ it
 += 0.1 }  -1;m
   . == follows=11
   . == owns=48
   . gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it 
 : it
 +=
 0.1 }  -1;m
   . == follows=1.1
   . == owns=4.8
 
 Michael
 
 Am 07.11.2011 um 12:55 schrieb Jeroen van Dijk:
 
 Ok i think I found an example that is independent of my data 
 (adapted
 from
 http://docs.neo4j.org/chunked/snapshot

Re: [Neo4j] Wrong Gremlin results through REST interface

2011-11-07 Thread Michael Hunger
Jeroen,

that would indeed help a lot. 
I'll find it.

Michael

Am 07.11.2011 um 12:34 schrieb Jeroen van Dijk:

 Hi Michael,
 
 I would like to provide a better example, but my Groovy is quite poor so it
 I'll take me some time. However I think the problem isn't in the JSON
 conversion. Because that would mean the results I get would be the same,
 but with a different score right? The thing is that I get different
 Vertices back through the REST interface than I do locally. To me that
 means things already fail during the Gremlin evaluation.
 
 I will try to come up with a more isolated example. If it helps I could
 give you access to my dataset on Heroku (or through a Zip file).
 
 thanks,
 Jeroen
 
 On Mon, Nov 7, 2011 at 11:34 AM, Michael Hunger 
 michael.hun...@neotechnology.com wrote:
 
 Jeroen,
 
 can you narrow it down to a simpler operation, like just a division?
 
 Perhaps in the conversion from the division result (be it Float, Double,
 BigDecimal) to
 JSON something goes awry.
 
 In the GremlinPlugin the code for that is:
 
 } else if (result instanceof Double || result instanceof Float) {
   return ValueRepresentation.number(((Number)
 result).doubleValue());
 }
 
 I'm not sure what datatype groovy creates as result of your operation,
 perhaps you can determine that as well.
 
 If we have a simple gremlin / groovy calculation that yields the wrong
 results, we can easily inspect and fix the plugin.
 
 Thanks a lot
 
 Michael
 
 Am 07.11.2011 um 11:12 schrieb Jeroen van Dijk:
 
 Hi all,
 
 I'm using Gremlin to perform a recommendation query. Locally in the
 gremlin
 shell I get amazingly useful results. However when I use the webadmin
 gremlin console I get different results, both locally and in the Heroku
 addon environment. I get the same wrong results when I use the rest
 interface, so I assume something is incorrect in the Gremlin REST
 interface. In all these cases the data is the same or on the same
 database.
 
 The gremlin query is below (it is own of my first so probably not the
 most
 efficient). It returns the top 10 list of most similar items according to
 the Jaccard similarity index (= (Intersection(A, B) / Union(A, B) ):
 
 node = g.v(14260); m = [:].withDefault{0.0}; a_total =
 node.inE().count();
 node.in().out('owns').sideEffect{union = a_total +
 it.inE().count()}.groupCount(m) { it }{ it += (1/(union)) }  -1;
 m.sort{a,b - b.value = a.value}[0..9]
 
 When I do the following locally everything is fine:
 
   gremlin g = new
 Neo4jGraph('/usr/local/Cellar/neo4j/community-1.4/libexec/data/graph.db')
   ==neo4jgraph[EmbeddedGraphDatabase
 [/usr/local/Cellar/neo4j/community-1.4/libexec/data/graph.db]]
   gremlin node = g.v(14260); m = [:].withDefault{0.0}; a_total =
 node.inE().count(); node.in().out('owns').sideEffect{union = a_total +
 it.inE().count()}.groupCount(m) { it }{ it += (1/(union)) }  -1;
 m.sort{a,b - b.value = a.value}[0..9]
   ==v[14260]=0.500013
   ==v[12974]=0.1014492752
   ==v[12349]=0.0952380952
   ==v[12082]=0.083332
   ==v[15434]=0.0810810810
   ==v[11237]=0.0810810810
   ==v[17672]=0.0769230768
   ==v[18338]=0.0769230768
   ==v[12852]=0.0769230768
   ==v[11969]=0.075
   gremlin
 
 However when I repeat this using the webadmin console interface I get the
 following results:
 
   gremlin node = g.v(14260); m = [:].withDefault{0.0}; a_total =
 node.inE().count(); node.in().out('owns').sideEffect{union = a_total +
 it.inE().count()}.groupCount(m) { it }{ it += (1/(union)) }  -1;
 m.sort{a,b - b.value = a.value}[0..9]
   == v[14260]=31.0
   == v[9204]=30.0
   == v[8958]=29.0
   == v[15763]=22.0
   == v[13906]=22.0
   == v[18477]=21.0
   == v[9081]=20.0
   == v[9019]=19.0
   == v[9074]=18.0
   == v[9066]=18.0
 
 The values of a Jaccard Index should never be above 1 so something is
 clearly wrong. Any ideas?
 
 Thanks,
 Jeroen
 ___
 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

___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


Re: [Neo4j] Wrong Gremlin results through REST interface

2011-11-07 Thread Jeroen van Dijk
Ok i think I found an example that is independent of my data (adapted from
http://docs.neo4j.org/chunked/snapshot/gremlin-plugin.html)

Locally:
gremlin m = [:];g.v(33).bothE().label.groupCount(m)  -1;m

==follows=11
==owns=48
gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it += 0.1 } 
-1;m
==follows=1.1
==owns=4.8

REST/webadmin console:
gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it += 0.1 } 
-1;m
== follows=11
== owns=48
gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it += 10 } 
-1;m
== follows=11
== owns=48
gremlin

It seems like the closure block is not evaluated (to me as a
Groovy/Gremlin/Neo4j noob)

Michael, I will send you a link to my database in private.

Thanks,
Jeroen



On Mon, Nov 7, 2011 at 12:41 PM, Michael Hunger 
michael.hun...@neotechnology.com wrote:

 Jeroen,

 that would indeed help a lot.
 I'll find it.

 Michael

 Am 07.11.2011 um 12:34 schrieb Jeroen van Dijk:

  Hi Michael,
 
  I would like to provide a better example, but my Groovy is quite poor so
 it
  I'll take me some time. However I think the problem isn't in the JSON
  conversion. Because that would mean the results I get would be the same,
  but with a different score right? The thing is that I get different
  Vertices back through the REST interface than I do locally. To me that
  means things already fail during the Gremlin evaluation.
 
  I will try to come up with a more isolated example. If it helps I could
  give you access to my dataset on Heroku (or through a Zip file).
 
  thanks,
  Jeroen
 
  On Mon, Nov 7, 2011 at 11:34 AM, Michael Hunger 
  michael.hun...@neotechnology.com wrote:
 
  Jeroen,
 
  can you narrow it down to a simpler operation, like just a division?
 
  Perhaps in the conversion from the division result (be it Float, Double,
  BigDecimal) to
  JSON something goes awry.
 
  In the GremlinPlugin the code for that is:
 
  } else if (result instanceof Double || result instanceof Float) {
return ValueRepresentation.number(((Number)
  result).doubleValue());
  }
 
  I'm not sure what datatype groovy creates as result of your operation,
  perhaps you can determine that as well.
 
  If we have a simple gremlin / groovy calculation that yields the wrong
  results, we can easily inspect and fix the plugin.
 
  Thanks a lot
 
  Michael
 
  Am 07.11.2011 um 11:12 schrieb Jeroen van Dijk:
 
  Hi all,
 
  I'm using Gremlin to perform a recommendation query. Locally in the
  gremlin
  shell I get amazingly useful results. However when I use the webadmin
  gremlin console I get different results, both locally and in the Heroku
  addon environment. I get the same wrong results when I use the rest
  interface, so I assume something is incorrect in the Gremlin REST
  interface. In all these cases the data is the same or on the same
  database.
 
  The gremlin query is below (it is own of my first so probably not the
  most
  efficient). It returns the top 10 list of most similar items according
 to
  the Jaccard similarity index (= (Intersection(A, B) / Union(A, B) ):
 
  node = g.v(14260); m = [:].withDefault{0.0}; a_total =
  node.inE().count();
  node.in().out('owns').sideEffect{union = a_total +
  it.inE().count()}.groupCount(m) { it }{ it += (1/(union)) }  -1;
  m.sort{a,b - b.value = a.value}[0..9]
 
  When I do the following locally everything is fine:
 
gremlin g = new
 
 Neo4jGraph('/usr/local/Cellar/neo4j/community-1.4/libexec/data/graph.db')
==neo4jgraph[EmbeddedGraphDatabase
  [/usr/local/Cellar/neo4j/community-1.4/libexec/data/graph.db]]
gremlin node = g.v(14260); m = [:].withDefault{0.0}; a_total =
  node.inE().count(); node.in().out('owns').sideEffect{union = a_total +
  it.inE().count()}.groupCount(m) { it }{ it += (1/(union)) }  -1;
  m.sort{a,b - b.value = a.value}[0..9]
==v[14260]=0.500013
==v[12974]=0.1014492752
==v[12349]=0.0952380952
==v[12082]=0.083332
==v[15434]=0.0810810810
==v[11237]=0.0810810810
==v[17672]=0.0769230768
==v[18338]=0.0769230768
==v[12852]=0.0769230768
==v[11969]=0.075
gremlin
 
  However when I repeat this using the webadmin console interface I get
 the
  following results:
 
gremlin node = g.v(14260); m = [:].withDefault{0.0}; a_total =
  node.inE().count(); node.in().out('owns').sideEffect{union = a_total +
  it.inE().count()}.groupCount(m) { it }{ it += (1/(union)) }  -1;
  m.sort{a,b - b.value = a.value}[0..9]
== v[14260]=31.0
== v[9204]=30.0
== v[8958]=29.0
== v[15763]=22.0
== v[13906]=22.0
== v[18477]=21.0
== v[9081]=20.0
== v[9019]=19.0
== v[9074]=18.0
== v[9066]=18.0
 
  The values of a Jaccard Index should never be above 1 so something is
  clearly wrong. Any ideas?
 
  Thanks,
  Jeroen
  ___
  Neo4j mailing list
  User@lists.neo4j.org
  https://lists.neo4j.org/mailman/listinfo/user
 
  ___
  Neo4j mailing list
  

Re: [Neo4j] Wrong Gremlin results through REST interface

2011-11-07 Thread Michael Hunger
Jeroen,

could you try to use the alternative syntax:

... groupCount(m) { it : it += 0.1 } ...

It seems to be a problem with evaluation of the string in the 
javax.ScriptEngine for Groovy

Here is the output from my web-console:
• gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it += 
0.1 }  -1;m
• == follows=11
• == owns=48
• gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it : it += 0.1 
}  -1;m
• == follows=1.1
• == owns=4.8

Michael

Am 07.11.2011 um 12:55 schrieb Jeroen van Dijk:

 Ok i think I found an example that is independent of my data (adapted from
 http://docs.neo4j.org/chunked/snapshot/gremlin-plugin.html)
 
 Locally:
 gremlin m = [:];g.v(33).bothE().label.groupCount(m)  -1;m
 
 ==follows=11
 ==owns=48
 gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it += 0.1 } 
 -1;m
 ==follows=1.1
 ==owns=4.8
 
 REST/webadmin console:
 gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it += 0.1 } 
 -1;m
 == follows=11
 == owns=48
 gremlin m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it += 10 } 
 -1;m
 == follows=11
 == owns=48
 gremlin
 
 It seems like the closure block is not evaluated (to me as a
 Groovy/Gremlin/Neo4j noob)
 
 Michael, I will send you a link to my database in private.
 
 Thanks,
 Jeroen
 
 
 
 On Mon, Nov 7, 2011 at 12:41 PM, Michael Hunger 
 michael.hun...@neotechnology.com wrote:
 
 Jeroen,
 
 that would indeed help a lot.
 I'll find it.
 
 Michael
 
 Am 07.11.2011 um 12:34 schrieb Jeroen van Dijk:
 
 Hi Michael,
 
 I would like to provide a better example, but my Groovy is quite poor so
 it
 I'll take me some time. However I think the problem isn't in the JSON
 conversion. Because that would mean the results I get would be the same,
 but with a different score right? The thing is that I get different
 Vertices back through the REST interface than I do locally. To me that
 means things already fail during the Gremlin evaluation.
 
 I will try to come up with a more isolated example. If it helps I could
 give you access to my dataset on Heroku (or through a Zip file).
 
 thanks,
 Jeroen
 
 On Mon, Nov 7, 2011 at 11:34 AM, Michael Hunger 
 michael.hun...@neotechnology.com wrote:
 
 Jeroen,
 
 can you narrow it down to a simpler operation, like just a division?
 
 Perhaps in the conversion from the division result (be it Float, Double,
 BigDecimal) to
 JSON something goes awry.
 
 In the GremlinPlugin the code for that is:
 
 } else if (result instanceof Double || result instanceof Float) {
  return ValueRepresentation.number(((Number)
 result).doubleValue());
 }
 
 I'm not sure what datatype groovy creates as result of your operation,
 perhaps you can determine that as well.
 
 If we have a simple gremlin / groovy calculation that yields the wrong
 results, we can easily inspect and fix the plugin.
 
 Thanks a lot
 
 Michael
 
 Am 07.11.2011 um 11:12 schrieb Jeroen van Dijk:
 
 Hi all,
 
 I'm using Gremlin to perform a recommendation query. Locally in the
 gremlin
 shell I get amazingly useful results. However when I use the webadmin
 gremlin console I get different results, both locally and in the Heroku
 addon environment. I get the same wrong results when I use the rest
 interface, so I assume something is incorrect in the Gremlin REST
 interface. In all these cases the data is the same or on the same
 database.
 
 The gremlin query is below (it is own of my first so probably not the
 most
 efficient). It returns the top 10 list of most similar items according
 to
 the Jaccard similarity index (= (Intersection(A, B) / Union(A, B) ):
 
 node = g.v(14260); m = [:].withDefault{0.0}; a_total =
 node.inE().count();
 node.in().out('owns').sideEffect{union = a_total +
 it.inE().count()}.groupCount(m) { it }{ it += (1/(union)) }  -1;
 m.sort{a,b - b.value = a.value}[0..9]
 
 When I do the following locally everything is fine:
 
  gremlin g = new
 
 Neo4jGraph('/usr/local/Cellar/neo4j/community-1.4/libexec/data/graph.db')
  ==neo4jgraph[EmbeddedGraphDatabase
 [/usr/local/Cellar/neo4j/community-1.4/libexec/data/graph.db]]
  gremlin node = g.v(14260); m = [:].withDefault{0.0}; a_total =
 node.inE().count(); node.in().out('owns').sideEffect{union = a_total +
 it.inE().count()}.groupCount(m) { it }{ it += (1/(union)) }  -1;
 m.sort{a,b - b.value = a.value}[0..9]
  ==v[14260]=0.500013
  ==v[12974]=0.1014492752
  ==v[12349]=0.0952380952
  ==v[12082]=0.083332
  ==v[15434]=0.0810810810
  ==v[11237]=0.0810810810
  ==v[17672]=0.0769230768
  ==v[18338]=0.0769230768
  ==v[12852]=0.0769230768
  ==v[11969]=0.075
  gremlin
 
 However when I repeat this using the webadmin console interface I get
 the
 following results:
 
  gremlin node = g.v(14260); m = [:].withDefault{0.0}; a_total =
 node.inE().count(); node.in().out('owns').sideEffect{union = a_total +
 it.inE().count()}.groupCount(m) { it }{ it += (1/(union)) }  -1;
 m.sort{a,b - b.value = a.value}[0..9]
  == v[14260]=31.0
  == v[9204]=30.0