The answer to this one is mostly presented in this other StackOverflow question which explains how to clone a vertex and all it's edges. Since this question is slightly different I thought I'd adapt it a bit rather this suggesting closing this as a duplicate.
gremlin> g.V().has('test','name','test 1').as('t1').
......1> outE('owns').as('e').inV().as('source').
......2> V().has('test','name','test 2').as('target').
......3> sideEffect(
......4> select('source').properties().as('p').
......5> select('target').
......6> property(select('p').key(), select('p').value())).
......7> sideEffect(
......8> select('t1').
......9> addE(select('e').label()).as('eclone').
.....10> to(select('target')).
.....11> select('e').properties().as('p').
.....12> select('eclone').
.....13> property(select('p').key(), select('p').value()))
==>v[3]
gremlin> g.E()
==>e[8][0-owns->6]
==>e[10][0-owns->3]
gremlin> g.V().valueMap(true)
==>[id:0,label:test,name:[test 1],id:[1]]
==>[id:3,label:test,name:[test 2],id:[3]]
==>[id:6,label:another,id:[3]]
Note that since labels are immutable, you are stuck with the vertex label being "another" given the way that you laid out your sample data. Also, I know it is just sample data, but note that overloading "id" isn't a good choice as it can lead to confusion with T.id
.