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 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.5000000013 >> >>>>>>> ==>v[12974]=0.1014492752 >> >>>>>>> ==>v[12349]=0.0952380952 >> >>>>>>> ==>v[12082]=0.0833333332 >> >>>>>>> ==>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 >> >>>> >> >>> _______________________________________________ >> >>> 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