Hi Vinayak,
Actually, query 4 was easier to rework. It could read somewhat like:
g.V().has('property1', 'vertex1').as('v1').outE().has('property1', 'edge1').limit(100).as('e').inV().has('property1', 'vertex1').as('v2').
select('v1','e','v2').by(valueMap().by(unfold())).aggregate('x').fold().
V().has('property1', 'vertex1').as('v1').outE().has('property1', 'edge2').limit(100).as('e').inV().has('property1', 'vertex2').as('v2').
select('v1','e','v2').by(valueMap().by(unfold())).aggregate('x').fold().
V().has('property1', 'vertex3').as('v1').outE().has('property1', 'edge3').limit(100).as('e').inV().has('property1', 'vertex2').as('v2').
select('v1','e','v2').by(valueMap().by(unfold())).aggregate('x').fold().
V().has('property1', 'vertex3').as('v1').outE().has('property1', 'Component_Of').limit(100).as('e').inV().has('property1', 'vertex1').as('v2')).
select('v1','e','v2').by(valueMap().by(unfold())).aggregate('x').fold().
cap('x')
Best wishes, Marc