Unknown property type on: class java.math.BigDecimal while adding vertex with float property

450 views
Skip to first unread message

Nikhil Lanjewar

unread,
Feb 27, 2012, 7:15:49 AM2/27/12
to Gremlin-users
Hi,

I'm receiving the following error while adding a vertex with float
properties on it.

Gremlin script:

g.addVertex([description : 'Some Description',created_at : '2012-02-27
11:45:06',min : 200000.0,max : 100000.0,updated_at : '2012-02-27
11:45:06'])

Error message:
javax.script.ScriptException: java.lang.IllegalArgumentException:
Unknown property type on: 200000.0, class java.math.BigDecimal

I'm using Neography 0.0.22 from a Rails application to connect with my
Neo4j 1.6M03 instance over REST.

I tried executing the same script on a TinkerGraph from Rexster
console and could successfully create a vertex. AFAIR, all java
primitives are supported by Neo4j (float included), but things didn't
work for me.

rexster[groovy]> g = new TinkerGraph()
==>tinkergraph[vertices:0 edges:0]
rexster[groovy]> g.addVertex([description : 'Some
Description',created_at : '2012-02-27 11:45:06',min : 200000.0,max :
100000.0,updated_at : '2012-02-27 11:45:06'])
==>v[0]
rexster[groovy]> g.v(0)
==>v[0]
rexster[groovy]> g.v(0).map
==>{min=200000.0, max=100000.0, updated_at=2012-02-27 11:45:06,
description=Some Description, created_at=2012-02-27 11:45:06}
rexster[groovy]>

For now, I'm converting all Ruby Float, FixNum, BigNum, BigDecimal
types to strings before storing them. Could someone please correct me
if my script needs to be modified or point me to a solution?

--
Nikhil

Peter Neubauer

unread,
Feb 27, 2012, 7:25:54 AM2/27/12
to gremli...@googlegroups.com
Nikhil,
seems that BigDecimal is not supported, see
http://api.neo4j.org/1.6/org/neo4j/graphdb/PropertyContainer.html#setProperty(java.lang.String,
java.lang.Object)

Cheers,

/peter neubauer

G:  neubauer.peter
S:  peter.neubauer
P:  +46 704 106975
L:   http://www.linkedin.com/in/neubauer
T:   @peterneubauer

Neo4j 1.6 released                 - dzone.com/6S4K
The Neo4j Heroku Challenge   - http://neo4j-challenge.herokuapp.com/

Nikhil Lanjewar

unread,
Feb 27, 2012, 7:28:48 AM2/27/12
to Gremlin-users
Peter,

Thanks for pointing me to the documentation. I had checked it earlier
but could not understand the reason behind a float value (20000.0 in
my case) being coerced into a BigDecimal. It would be great if you
could please provide an example for adding vertex with a float
property.

--
Nikhil

On Feb 27, 5:25 pm, Peter Neubauer <peter.neuba...@neotechnology.com>
wrote:
> Nikhil,
> seems that BigDecimal is not supported, seehttp://api.neo4j.org/1.6/org/neo4j/graphdb/PropertyContainer.html#set...,
> java.lang.Object)
>
> Cheers,
>
> /peter neubauer
>
> G:  neubauer.peter
> S:  peter.neubauer
> P:  +46 704 106975
> L:   http://www.linkedin.com/in/neubauer
> T:   @peterneubauer
>
> Neo4j 1.6 released                 - dzone.com/6S4K
> The Neo4j Heroku Challenge   -http://neo4j-challenge.herokuapp.com/

Peter Neubauer

unread,
Feb 27, 2012, 8:25:53 AM2/27/12
to gremli...@googlegroups.com
Mmh,
Groovy being Java, maybe you could work with a

f = new Float(10000.0)

to force explicit Float or so?

Cheers,

/peter neubauer

G:  neubauer.peter
S:  peter.neubauer
P:  +46 704 106975
L:   http://www.linkedin.com/in/neubauer
T:   @peterneubauer

Neo4j 1.6 released                 - dzone.com/6S4K

The Neo4j Heroku Challenge   - http://neo4j-challenge.herokuapp.com/

Peter Neubauer

unread,
Feb 27, 2012, 8:27:20 AM2/27/12
to gremli...@googlegroups.com
g.v(0).name = new Float(1000.0)

Cheers,

/peter neubauer

G:  neubauer.peter
S:  peter.neubauer
P:  +46 704 106975
L:   http://www.linkedin.com/in/neubauer
T:   @peterneubauer

Neo4j 1.6 released                 - dzone.com/6S4K
The Neo4j Heroku Challenge   - http://neo4j-challenge.herokuapp.com/

Nikhil Lanjewar

unread,
Mar 1, 2012, 3:08:28 PM3/1/12
to gremli...@googlegroups.com
Hey Peter,

Your solution worked for me. I'm now explicitly type-casting values into Float. So my script becomes:

g.addVertex([description : 'Some Description',created_at : '2012-02-27 11:45:06',min : new Float(200000.0),max : new Float(100000.0),updated_at : '2012-02-27 11:45:06'])

But I'd like to know the reason behind a Float value being treated as a BigDecimal.



--
Nikhil

Peter Neubauer

unread,
Mar 5, 2012, 5:06:51 AM3/5/12
to gremli...@googlegroups.com
Just looked it up. This is a Groovy feature, to instantiate BigDecimal
as default, see http://groovy.codehaus.org/Groovy+Math

Cheers,

/peter neubauer

G:  neubauer.peter
S:  peter.neubauer
P:  +46 704 106975
L:   http://www.linkedin.com/in/neubauer
T:   @peterneubauer

Neo4j 1.6 released                 - dzone.com/6S4K
The Neo4j Heroku Challenge   - http://neo4j-challenge.herokuapp.com/

Reply all
Reply to author
Forward
0 new messages