Is it possible this might be related to the problem I reported with subject Gremlig Plugin - Paramerterised Queries + Enumeration - Neo4j 1.5M02
It seems with 1.5M02 that Gremlin via REST is not working as expected. I am going to test the Gremlin Query in the console as well, and update my thread with the results. -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Michael Hunger Sent: Monday, 7 November 2011 11:25 PM To: Neo4j user discussions Subject: Re: [Neo4j] Wrong Gremlin results through REST interface 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 > gremlin> } >> > -1;m > ==>follows=1.1 > ==>owns=4.8 > > REST/webadmin console: > gremlin> m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it += 0.1 > gremlin> } >> > -1;m > ==> follows=11 > ==> owns=48 > gremlin> m = [:];g.v(33).bothE().label.groupCount(m) { it }{ it += 10 > gremlin> } >> > -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 < > [email protected]> 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 < >>> [email protected]> 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 >>>>> [email protected] >>>>> https://lists.neo4j.org/mailman/listinfo/user >>>> >>>> _______________________________________________ >>>> Neo4j mailing list >>>> [email protected] >>>> https://lists.neo4j.org/mailman/listinfo/user >>>> >>> _______________________________________________ >>> Neo4j mailing list >>> [email protected] >>> https://lists.neo4j.org/mailman/listinfo/user >> >> _______________________________________________ >> Neo4j mailing list >> [email protected] >> https://lists.neo4j.org/mailman/listinfo/user >> > _______________________________________________ > Neo4j mailing list > [email protected] > https://lists.neo4j.org/mailman/listinfo/user _______________________________________________ Neo4j mailing list [email protected] https://lists.neo4j.org/mailman/listinfo/user _______________________________________________ Neo4j mailing list [email protected] https://lists.neo4j.org/mailman/listinfo/user

