gremlin> :import org.apache.tinkerpop.gremlin.structure.util.star.*
==>groovy.grape.Grape, org.apache.commons.configuration.*, .... , org.apache.tinkerpop.gremlin.structure.util.star.*
gremlin> :remote connect tinkerpop.server conf/remote-objects.yaml
gremlin> :> g.V().map{StarGraph.of(it.get())} // assume this is the "subgraph" - the key is to convert Vertex to StarGraph
==>stargraph[starOf:v[1]]
==>stargraph[starOf:v[2]]
==>stargraph[starOf:v[3]]
==>stargraph[starOf:v[4]]
==>stargraph[starOf:v[5]]
==>stargraph[starOf:v[6]]
gremlin> graph = TinkerGraph.open()
==>tinkergraph[vertices:0 edges:0]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
gremlin> result.each{it.get(StarGraph).getStarVertex().edges(OUT).each{e->e.attach(Attachable.Method.getOrCreate(graph))}}
==>result{object=stargraph[starOf:v[1]] class=org.apache.tinkerpop.gremlin.structure.util.star.StarGraph}
==>result{object=stargraph[starOf:v[2]] class=org.apache.tinkerpop.gremlin.structure.util.star.StarGraph}
==>result{object=stargraph[starOf:v[3]] class=org.apache.tinkerpop.gremlin.structure.util.star.StarGraph}
==>result{object=stargraph[starOf:v[4]] class=org.apache.tinkerpop.gremlin.structure.util.star.StarGraph}
==>result{object=stargraph[starOf:v[5]] class=org.apache.tinkerpop.gremlin.structure.util.star.StarGraph}
==>result{object=stargraph[starOf:v[6]] class=org.apache.tinkerpop.gremlin.structure.util.star.StarGraph}
gremlin> graph
==>tinkergraph[vertices:6 edges:6]
gremlin> g.E()
==>e[7][1-knows->2]
==>e[8][1-knows->4]
==>e[9][1-created->3]
==>e[10][4-created->5]
==>e[11][4-created->3]
==>e[12][6-created->3]
gremlin> g.V(1L).out('knows')
==>v[2]
==>v[4]
Now you can create a remote to Gephi and submit the Console side subgraph to as you please. I kinda wish this was nicer:
gremlin> result.each{it.get(StarGraph).getStarVertex().edges(OUT).each{e->e.attach(Attachable.Method.getOrCreate(graph))}}
it's not hard to see what's going on once you stare at it for a bit, but i wonder if we couldn't have something more streamlined - added this for future thought:
while a bit less efficient, it seems like we really should be able to shorten this:
result.each{it.get(StarGraph).getStarVertex().edges(OUT).each{e->e.attach(Attachable.Method.getOrCreate(graph))}}
result.each{it.get(StarGraph).edges().each{e->e.attach(Attachable.Method.getOrCreate(graph))}}
but it doesn't seem to work - throws an exception stating the edge id already exists.....