1

I am using Rexster to load data into a TitanDB. When posting / putting vertices, I can provide properties as JSON in the request's body. If a property's value is a number, it will correspondingly be stored as a number and can be retrieved as such. For example, the following body will in a post message will create a property "score" of type number:

{
  "score": 5
}

When POSTing / PUTing edges, though, it seems properties can only be provided as query parameters, e.g.:

POST .../graphs/graph/edges?_outV=256&_label=review&_inV=512&score=5

In this case, unfortunately, the 5 is always considered as a string: "5". Consequently, queries including numeric operations / comparisons do not work. For example, the following query will still return the posted edge (despite the posted score being 5):

v(256).outE('review').filter{it.getProperty('score')>9}

Is there a way to POST / PUT edges and their properties so that the number type is considered?

ErikWittern
  • 221
  • 3
  • 10

1 Answers1

1

I was reasonably sure you could POST JSON to the edge route, but even if you can't, you can use Rexster's explicit type system to post your integer properly:

$ curl -X POST "http://localhost:8182/graphs/tinkergraph/edges?_outV=1&_inV=2&_label=knows&score=(i,5)"

{
  "version":"2.7.0-SNAPSHOT",
  "results": {
    "score":5,"_id":"0","_type":"edge","_outV":"1","_inV":"2","_label":"knows"
  },
  "queryTime":31.79554
}
stephen mallette
  • 39,757
  • 4
  • 49
  • 112
  • I tried sending JSON in the body, with no success. The explicit type system, as you proposed, works as expected, though! Now, the outlined query will produce no results for values >5. Thanks for the answer! – ErikWittern Jan 14 '15 at 15:21