0
votes
I am able to get all the child nodes and its related information under a parent node but in a array of objects format , for the query 

g.V(4128).repeat(out()).emit()


[
  {
    "id": 4152.0,
    "label": "location",
    "type": "vertex",
    "properties": {
      "displayName": [
        {
          "id": "1l3-37c-1l1",
          "value": "XYZ"
        }
      ],
      "description": [
        {
          "id": "1zb-37c-7wl",
          "value": "XYZ World"
        }
      ],
      "shortName": [
        {
          "id": "16v-37c-745",
          "value": "XYZ"
        }
      ]
    }
  },
  {
    "id": 4176.0,
    "label": "location",
    "type": "vertex",
    "properties": {
      "displayName": [
        {
          "id": "1l6-380-1l1",
          "value": "XYZ-XYZW"
        }
      ],
      "description": [
        {
          "id": "1ze-380-7wl",
          "value": "XYZ West Campus"
        }
      ],
      "shortName": [
        {
          "id": "16y-380-745",
          "value": "XYZW"
        }
      ]
    }
  },
  {
    "id": 8344.0,
    "label": "location",
    "type": "vertex",
    "properties": {
      "displayName": [
        {
          "id": "3kj-6fs-1l1",
          "value": "XYZ-XYZE"
        }
      ],
      "description": [
        {
          "id": "3yr-6fs-7wl",
          "value": "XYZ East Campus"
        }
      ],
      "shortName": [
        {
          "id": "36b-6fs-745",
          "value": "XYZE"
        }
      ]
    }
  },
  {
    "id": 4104.0,
    "label": "location",
    "type": "vertex",
    "properties": {
      "displayName": [
        {
          "id": "1kx-360-1l1",
          "value": "XYZ-XYZW-P1"
        }
      ],
      "description": [
        {
          "id": "1z5-360-7wl",
          "value": "XYZ West Campus-Phase-1"
        }
      ],
      "shortName": [
        {
          "id": "16p-360-745",
          "value": "P1"
        }
      ]
    }
  },
  {
    "id": 4296.0,
    "label": "location",
    "type": "vertex",
    "properties": {
      "displayName": [
        {
          "id": "1ll-3bc-1l1",
          "value": "XYZ-XYZW-P3"
        }
      ],
      "description": [
        {
          "id": "1zt-3bc-7wl",
          "value": "XYZ West Campus-Phase-3"
        }
      ],
      "shortName": [
        {
          "id": "17d-3bc-745",
          "value": "P3"
        }
      ]
    }
  },
  {
    "id": 8200.0,
    "label": "location",
    "type": "vertex",
    "properties": {
      "displayName": [
        {
          "id": "3k1-6bs-1l1",
          "value": "XYZ-XYZW-P2"
        }
      ],
      "description": [
        {
          "id": "3y9-6bs-7wl",
          "value": "XYZ West Campus-Phase-2"
        }
      ],
      "shortName": [
        {
          "id": "35t-6bs-745",
          "value": "P2"
        }
      ]
    }
  },
  {
    "id": 8224.0,
    "label": "location",
    "type": "vertex",
    "properties": {
      "displayName": [
        {
          "id": "3yc-6cg-1l1",
          "value": "XYZ-XYZE-P1"
        }
      ],
      "description": [
        {
          "id": "4ck-6cg-7wl",
          "value": "XYZ East Campus-Phase-1"
        }
      ],
      "shortName": [
        {
          "id": "3k4-6cg-745",
          "value": "P1"
        }
      ]
    }
  },
  {
    "id": 8392.0,
    "label": "location",
    "type": "vertex",
    "properties": {
      "displayName": [
        {
          "id": "3kp-6h4-1l1",
          "value": "XYZ-XYZE-P2"
        }
      ],
      "description": [
        {
          "id": "3yx-6h4-7wl",
          "value": "XYZ East Campus-Phase-2"
        }
      ],
      "shortName": [
        {
          "id": "36h-6h4-745",
          "value": "P2"
        }
      ]
    }
  }
]

I need to get the same information in hierarchial way .

I tried the following query

g.V(4128).repeat(out()).emit().tree().by(__.valueMap(true))

but I don't get the valid json.

I need to get the above data but in hierarchical way

Updated
I tried the following query
g.V(4128).repeat(out()).emit().tree().by(__.valueMap(true))

And the response I received was

[
   {
"{label = org, name = [XYZ], orgId = [00000000-0000-0000-0000-000000000001], desc = [XYZ Organization], id = 4128}": {
  "{label = location, displayName = [hh], description = [hfds], shortName = [kk], id = 8272}": {

  },
  "{label = location, displayName = [XYZ], description = [XYZ World], shortName = [XYZ], id = 4152}": {
    "{label = location, displayName = [XYZ-XYZW], description = [XYZ West Campus], shortName = [XYZW], id = 4176}": {
      "{label = location, displayName = [XYZ-XYZW-P3], description = [XYZ West Campus-Phase-3], shortName = [P3], id = 4296}": {

      },
      "{label = location, displayName = [XYZ-XYZW-P2], description = [XYZ West Campus-Phase-2], shortName = [P2], id = 8200}": {

      },
      "{label = location, displayName = [XYZ-XYZW-P1], description = [XYZ West Campus-Phase-1], shortName = [P1], id = 4104}": {

      }
    },
    "{label = location, displayName = [XYZ-XYZE], description = [XYZ East Campus], shortName = [XYZE], id = 8344}": {
      "{label = location, displayName = [XYZ-XYZE-P1], description = [XYZ East Campus-Phase-1], shortName = [P1], id = 8224}": {

      },
      "{label = location, displayName = [XYZ-XYZE-P2], description = [XYZ East Campus-Phase-2], shortName = [P2], id = 8392}": {

      }
    }
  },
  "{label = location, displayName = [hh], description = [hfds], shortName = [kk], id = 8248}": {

  },
  "{label = location, displayName = [hh], description = [hfds], shortName = [kk], id = 12488}": {

  }
}

} ]

Now as you can see the json so received is not appropriate because the key contains fields that are '=' separated .

Now as for the answer I also tried the folowing query

g.V(4128).repeat(out()).emit().tree().next()

but the response returned only ids and didnt resolve the vertex properties

[
  {
    "4128": {
      "8272": {},
      "4152": {
        "4176": {
          "4104": {},
          "4296": {},
          "8200": {}
        },
        "8344": {
          "8224": {},
          "8392": {}
        }
      },
      "8248": {},
      "12488": {}
    }
  }
]


For the context I am using the following configurations in my gremlin-server.yaml file

authentication: {className: org.apache.tinkerpop.gremlin.server.auth.AllowAllAuthenticator,
  config: null}
channelizer: org.apache.tinkerpop.gremlin.server.channel.HttpChannelizer
graphs: {graph: 'D:/graph-data-access/src/test/resources/titan-inmemory.properties'}
gremlinPool: 8
host: localhost
maxAccumulationBufferComponents: 1024
maxChunkSize: 8192
maxContentLength: 65536
maxHeaderSize: 8192
maxInitialLineLength: 4096
metrics:
  consoleReporter: null
  csvReporter: null
  gangliaReporter: null
  graphiteReporter: null
  jmxReporter: null
  slf4jReporter: {enabled: true, interval: 180000, loggerName: org.apache.tinkerpop.gremlin.server.Settings$Slf4jReporterMetrics}
plugins: [aurelius.titan, tinkerpop.gephi]
port: 8182
processors: []
resultIterationBatchSize: 64
scriptEngines:
  gremlin-groovy:
    config: null
    imports: [java.lang.Math]
    scripts: ['D:/graph-data-access/src/test/resources/generate-locations.groovy']
    staticImports: [java.lang.Math.PI]
scriptEvaluationTimeout: 30000
serializedResponseTimeout: 30000
serializers:
- className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0
  config: {useMapperFromGraph: graph}
- className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0
  config: {serializeResultToString: true}
- className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0
  config: {useMapperFromGraph: graph}
- className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0
  config: {useMapperFromGraph: graph}
ssl: {enabled: false, keyCertChainFile: null, keyFile: null, keyPassword: null, trustCertChainFile: null}
threadPoolBoss: 1
threadPoolWorker: 1
writeBufferHighWaterMark: 65536
writeBufferLowWaterMark: 32768

I am using Tinkerpop version 3.0.1 incubating as I am trying to use Titan 1.0.0 with DynamoDb as storage backend for the remote connection.

1

1 Answers

1
votes

Not sure what you mean by "but i don't get valid json". You should be able to serialized a Tree in GraphSON 1.0 if you don't include by(valueMap(true)) and just serialize the full vertex. There is a failure if you try to do it as just maps as it makes some assumptions about there being a graph Element as the key (which is probably bad).

gremlin> mapper = graph.io(graphson()).mapper().version(GraphSONVersion.V1_0).create().createMapper()
==>org.apache.tinkerpop.shaded.jackson.databind.ObjectMapper@6b2e0f78
gremlin> mapper.writeValueAsString(g.V(1).repeat(out()).emit().tree().next())
==>{"1":{"key":{"id":1,"label":"vertex","type":"vertex","properties":{"name":[{"id":0,"value":"marko"}],"age":[{"id":2,"value":29}]}},"value":{"2":{"key":{"id":2,"label":"vertex","type":"vertex","properties":{"name":[{"id":3,"value":"vadas"}],"age":[{"id":4,"value":27}]}},"value":{}},"3":{"key":{"id":3,"label":"vertex","type":"vertex","properties":{"name":[{"id":5,"value":"lop"}],"lang":[{"id":6,"value":"java"}]}},"value":{}},"4":{"key":{"id":4,"label":"vertex","type":"vertex","properties":{"name":[{"id":7,"value":"josh"}],"age":[{"id":8,"value":32}]}},"value":{"3":{"key":{"id":3,"label":"vertex","type":"vertex","properties":{"name":[{"id":5,"value":"lop"}],"lang":[{"id":6,"value":"java"}]}},"value":{}},"5":{"key":{"id":5,"label":"vertex","type":"vertex","properties":{"name":[{"id":9,"value":"ripple"}],"lang":[{"id":10,"value":"java"}]}},"value":{}}}}}}}

That formats to:

{
    "1": {
        "key": {
            "id": 1,
            "label": "vertex",
            "type": "vertex",
            "properties": {
                "name": [{
                    "id": 0,
                    "value": "marko"
                }],
                "age": [{
                    "id": 2,
                    "value": 29
                }]
            }
        },
        "value": {
            "2": {
                "key": {
                    "id": 2,
                    "label": "vertex",
                    "type": "vertex",
                    "properties": {
                        "name": [{
                            "id": 3,
                            "value": "vadas"
                        }],
                        "age": [{
                            "id": 4,
                            "value": 27
                        }]
                    }
                },
                "value": {}
            },
            "3": {
                "key": {
                    "id": 3,
                    "label": "vertex",
                    "type": "vertex",
                    "properties": {
                        "name": [{
                            "id": 5,
                            "value": "lop"
                        }],
                        "lang": [{
                            "id": 6,
                            "value": "java"
                        }]
                    }
                },
                "value": {}
            },
            "4": {
                "key": {
                    "id": 4,
                    "label": "vertex",
                    "type": "vertex",
                    "properties": {
                        "name": [{
                            "id": 7,
                            "value": "josh"
                        }],
                        "age": [{
                            "id": 8,
                            "value": 32
                        }]
                    }
                },
                "value": {
                    "3": {
                        "key": {
                            "id": 3,
                            "label": "vertex",
                            "type": "vertex",
                            "properties": {
                                "name": [{
                                    "id": 5,
                                    "value": "lop"
                                }],
                                "lang": [{
                                    "id": 6,
                                    "value": "java"
                                }]
                            }
                        },
                        "value": {}
                    },
                    "5": {
                        "key": {
                            "id": 5,
                            "label": "vertex",
                            "type": "vertex",
                            "properties": {
                                "name": [{
                                    "id": 9,
                                    "value": "ripple"
                                }],
                                "lang": [{
                                    "id": 10,
                                    "value": "java"
                                }]
                            }
                        },
                        "value": {}
                    }
                }
            }
        }
    }
}

In GraphSON 2.0 you get this:

gremlin> mapper = graph.io(graphson()).mapper().version(GraphSONVersion.V2_0).create().createMapper()
==>org.apache.tinkerpop.shaded.jackson.databind.ObjectMapper@3ffb3598
gremlin> mapper.writeValueAsString(g.V(1).repeat(out()).emit().tree().next())
==>{"@type":"g:Tree","@value":[{"key":{"@type":"g:Vertex","@value":{"id":{"@type":"g:Int32","@value":1},"label":"vertex","properties":{"name":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"g:Int32","@value":0},"value":"marko","label":"name"}}],"age":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"g:Int32","@value":2},"value":{"@type":"g:Int32","@value":29},"label":"age"}}]}}},"value":{"@type":"g:Tree","@value":[{"key":{"@type":"g:Vertex","@value":{"id":{"@type":"g:Int32","@value":2},"label":"vertex","properties":{"name":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"g:Int32","@value":3},"value":"vadas","label":"name"}}],"age":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"g:Int32","@value":4},"value":{"@type":"g:Int32","@value":27},"label":"age"}}]}}},"value":{"@type":"g:Tree","@value":[]}},{"key":{"@type":"g:Vertex","@value":{"id":{"@type":"g:Int32","@value":3},"label":"vertex","properties":{"name":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"g:Int32","@value":5},"value":"lop","label":"name"}}],"lang":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"g:Int32","@value":6},"value":"java","label":"lang"}}]}}},"value":{"@type":"g:Tree","@value":[]}},{"key":{"@type":"g:Vertex","@value":{"id":{"@type":"g:Int32","@value":4},"label":"vertex","properties":{"name":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"g:Int32","@value":7},"value":"josh","label":"name"}}],"age":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"g:Int32","@value":8},"value":{"@type":"g:Int32","@value":32},"label":"age"}}]}}},"value":{"@type":"g:Tree","@value":[{"key":{"@type":"g:Vertex","@value":{"id":{"@type":"g:Int32","@value":3},"label":"vertex","properties":{"name":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"g:Int32","@value":5},"value":"lop","label":"name"}}],"lang":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"g:Int32","@value":6},"value":"java","label":"lang"}}]}}},"value":{"@type":"g:Tree","@value":[]}},{"key":{"@type":"g:Vertex","@value":{"id":{"@type":"g:Int32","@value":5},"label":"vertex","properties":{"name":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"g:Int32","@value":9},"value":"ripple","label":"name"}}],"lang":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"g:Int32","@value":10},"value":"java","label":"lang"}}]}}},"value":{"@type":"g:Tree","@value":[]}}]}}]}}]}

which formats as:

{
    "@type": "g:Tree",
    "@value": [{
        "key": {
            "label": "vertex",
            "name": ["marko"],
            "id": {
                "@type": "g:Int32",
                "@value": 1
            },
            "age": [{
                "@type": "g:Int32",
                "@value": 29
            }]
        },
        "value": {
            "@type": "g:Tree",
            "@value": [{
                "key": {
                    "label": "vertex",
                    "name": ["lop"],
                    "id": {
                        "@type": "g:Int32",
                        "@value": 3
                    },
                    "lang": ["java"]
                },
                "value": {
                    "@type": "g:Tree",
                    "@value": []
                }
            }, {
                "key": {
                    "label": "vertex",
                    "name": ["vadas"],
                    "id": {
                        "@type": "g:Int32",
                        "@value": 2
                    },
                    "age": [{
                        "@type": "g:Int32",
                        "@value": 27
                    }]
                },
                "value": {
                    "@type": "g:Tree",
                    "@value": []
                }
            }, {
                "key": {
                    "label": "vertex",
                    "name": ["josh"],
                    "id": {
                        "@type": "g:Int32",
                        "@value": 4
                    },
                    "age": [{
                        "@type": "g:Int32",
                        "@value": 32
                    }]
                },
                "value": {
                    "@type": "g:Tree",
                    "@value": [{
                        "key": {
                            "label": "vertex",
                            "name": ["ripple"],
                            "id": {
                                "@type": "g:Int32",
                                "@value": 5
                            },
                            "lang": ["java"]
                        },
                        "value": {
                            "@type": "g:Tree",
                            "@value": []
                        }
                    }, {
                        "key": {
                            "label": "vertex",
                            "name": ["lop"],
                            "id": {
                                "@type": "g:Int32",
                                "@value": 3
                            },
                            "lang": ["java"]
                        },
                        "value": {
                            "@type": "g:Tree",
                            "@value": []
                        }
                    }]
                }
            }]
        }
    }]
}

Note that you can also use by(valueMap(true)) in the case of GraphSON 2.0:

gremlin> mapper.writeValueAsString(g.V(1).repeat(out()).emit().tree().by(valueMap(true)).next())
==>{"@type":"g:Tree","@value":[{"key":{"label":"vertex","name":["marko"],"id":{"@type":"g:Int32","@value":1},"age":[{"@type":"g:Int32","@value":29}]},"value":{"@type":"g:Tree","@value":[{"key":{"label":"vertex","name":["lop"],"id":{"@type":"g:Int32","@value":3},"lang":["java"]},"value":{"@type":"g:Tree","@value":[]}},{"key":{"label":"vertex","name":["vadas"],"id":{"@type":"g:Int32","@value":2},"age":[{"@type":"g:Int32","@value":27}]},"value":{"@type":"g:Tree","@value":[]}},{"key":{"label":"vertex","name":["josh"],"id":{"@type":"g:Int32","@value":4},"age":[{"@type":"g:Int32","@value":32}]},"value":{"@type":"g:Tree","@value":[{"key":{"label":"vertex","name":["ripple"],"id":{"@type":"g:Int32","@value":5},"lang":["java"]},"value":{"@type":"g:Tree","@value":[]}},{"key":{"label":"vertex","name":["lop"],"id":{"@type":"g:Int32","@value":3},"lang":["java"]},"value":{"@type":"g:Tree","@value":[]}}]}}]}}]}

which formats to:

{
    "@type": "g:Tree",
    "@value": [{
        "key": {
            "label": "vertex",
            "name": ["marko"],
            "id": {
                "@type": "g:Int32",
                "@value": 1
            },
            "age": [{
                "@type": "g:Int32",
                "@value": 29
            }]
        },
        "value": {
            "@type": "g:Tree",
            "@value": [{
                "key": {
                    "label": "vertex",
                    "name": ["lop"],
                    "id": {
                        "@type": "g:Int32",
                        "@value": 3
                    },
                    "lang": ["java"]
                },
                "value": {
                    "@type": "g:Tree",
                    "@value": []
                }
            }, {
                "key": {
                    "label": "vertex",
                    "name": ["vadas"],
                    "id": {
                        "@type": "g:Int32",
                        "@value": 2
                    },
                    "age": [{
                        "@type": "g:Int32",
                        "@value": 27
                    }]
                },
                "value": {
                    "@type": "g:Tree",
                    "@value": []
                }
            }, {
                "key": {
                    "label": "vertex",
                    "name": ["josh"],
                    "id": {
                        "@type": "g:Int32",
                        "@value": 4
                    },
                    "age": [{
                        "@type": "g:Int32",
                        "@value": 32
                    }]
                },
                "value": {
                    "@type": "g:Tree",
                    "@value": [{
                        "key": {
                            "label": "vertex",
                            "name": ["ripple"],
                            "id": {
                                "@type": "g:Int32",
                                "@value": 5
                            },
                            "lang": ["java"]
                        },
                        "value": {
                            "@type": "g:Tree",
                            "@value": []
                        }
                    }, {
                        "key": {
                            "label": "vertex",
                            "name": ["lop"],
                            "id": {
                                "@type": "g:Int32",
                                "@value": 3
                            },
                            "lang": ["java"]
                        },
                        "value": {
                            "@type": "g:Tree",
                            "@value": []
                        }
                    }]
                }
            }]
        }
    }]
}

If you are on older version of TinkerPop going back to 3.0.x, then there are some limitations with tree that aren't easily worked around. The only approach is to take a raw tree and post-process it to get it to a form that is friendly to JSON. Here is one way to do that:

gremlin> convert = { it.collectEntries{ k,v -> [(k.id()): [k, v.isEmpty() ? v : convert(v)]] }}
==>groovysh_evaluate$_run_closure1@255e5e2e
gremlin> t = g.V(1).repeat(out()).emit().tree().next()
==>v[1]={v[2]={}, v[3]={}, v[4]={v[3]={}, v[5]={}}}
gremlin> convert(t)
==>1=[v[1], {2=[v[2], {}], 3=[v[3], {}], 4=[v[4], {3=[v[3], {}], 5=[v[5], {}]}]}]
gremlin> mapper.writeValueAsString(convert(t))
==>{"1":[{"id":1,"label":"vertex","type":"vertex","properties":{"name":[{"id":0,"value":"marko"}],"age":[{"id":2,"value":29}]}},{"2":[{"id":2,"label":"vertex","type":"vertex","properties":{"name":[{"id":3,"value":"vadas"}],"age":[{"id":4,"value":27}]}},{}],"3":[{"id":3,"label":"vertex","type":"vertex","properties":{"name":[{"id":5,"value":"lop"}],"lang":[{"id":6,"value":"java"}]}},{}],"4":[{"id":4,"label":"vertex","type":"vertex","properties":{"name":[{"id":7,"value":"josh"}],"age":[{"id":8,"value":32}]}},{"3":[{"id":3,"label":"vertex","type":"vertex","properties":{"name":[{"id":5,"value":"lop"}],"lang":[{"id":6,"value":"java"}]}},{}],"5":[{"id":5,"label":"vertex","type":"vertex","properties":{"name":[{"id":9,"value":"ripple"}],"lang":[{"id":10,"value":"java"}]}},{}]}]}]}

This formats in GraphSON 1.0 (which is what is used in 3.0.x) to:

{
    "1": [{
        "id": 1,
        "label": "vertex",
        "type": "vertex",
        "properties": {
            "name": [{
                "id": 0,
                "value": "marko"
            }],
            "age": [{
                "id": 2,
                "value": 29
            }]
        }
    }, {
        "2": [{
            "id": 2,
            "label": "vertex",
            "type": "vertex",
            "properties": {
                "name": [{
                    "id": 3,
                    "value": "vadas"
                }],
                "age": [{
                    "id": 4,
                    "value": 27
                }]
            }
        }, {}],
        "3": [{
            "id": 3,
            "label": "vertex",
            "type": "vertex",
            "properties": {
                "name": [{
                    "id": 5,
                    "value": "lop"
                }],
                "lang": [{
                    "id": 6,
                    "value": "java"
                }]
            }
        }, {}],
        "4": [{
            "id": 4,
            "label": "vertex",
            "type": "vertex",
            "properties": {
                "name": [{
                    "id": 7,
                    "value": "josh"
                }],
                "age": [{
                    "id": 8,
                    "value": 32
                }]
            }
        }, {
            "3": [{
                "id": 3,
                "label": "vertex",
                "type": "vertex",
                "properties": {
                    "name": [{
                        "id": 5,
                        "value": "lop"
                    }],
                    "lang": [{
                        "id": 6,
                        "value": "java"
                    }]
                }
            }, {}],
            "5": [{
                "id": 5,
                "label": "vertex",
                "type": "vertex",
                "properties": {
                    "name": [{
                        "id": 9,
                        "value": "ripple"
                    }],
                    "lang": [{
                        "id": 10,
                        "value": "java"
                    }]
                }
            }, {}]
        }]
    }]
}

The convert() function i created just recursively iterates the tree and turns every [vertex: children] into [vertexId: [vertex,children]. You can convert to whatever format you like, so long as you build valid JSON where there is a usable String key field. I could have just as easily made the convert() function return [vertexId: [node: vertex, leaves: children]:

gremlin> convert = { it.collectEntries{ k,v -> [(k.id()): [node: k, leaves:v.isEmpty() ? v : convert(v)]] }}
==>groovysh_evaluate$_run_closure1@2ab5afc7
gremlin> mapper.writeValueAsString(convert(t))
==>{"1":{"node":{"id":1,"label":"vertex","type":"vertex","properties":{"name":[{"id":0,"value":"marko"}],"age":[{"id":2,"value":29}]}},"leaves":{"2":{"node":{"id":2,"label":"vertex","type":"vertex","properties":{"name":[{"id":3,"value":"vadas"}],"age":[{"id":4,"value":27}]}},"leaves":{}},"3":{"node":{"id":3,"label":"vertex","type":"vertex","properties":{"name":[{"id":5,"value":"lop"}],"lang":[{"id":6,"value":"java"}]}},"leaves":{}},"4":{"node":{"id":4,"label":"vertex","type":"vertex","properties":{"name":[{"id":7,"value":"josh"}],"age":[{"id":8,"value":32}]}},"leaves":{"3":{"node":{"id":3,"label":"vertex","type":"vertex","properties":{"name":[{"id":5,"value":"lop"}],"lang":[{"id":6,"value":"java"}]}},"leaves":{}},"5":{"node":{"id":5,"label":"vertex","type":"vertex","properties":{"name":[{"id":9,"value":"ripple"}],"lang":[{"id":10,"value":"java"}]}},"leaves":{}}}}}}}