Multiple labels not working in mergeV() syntax for conditional inserts in AWS Neptune

I know that multiple labels are an AWS Neptune specific feature and TinkerPop model does not allow for multiple labels, but maybe someone else has encountered the same problem. While attempting to migrate conditional inserts (upserts) to the new mergeV/E() syntax, I encountered an issue with vertices that have multiple labels. It appears that creating a vertex with multiple labels only works with the addV() step, which was present in the fold()/coalesce()/unfold() pattern for conditional inserts. In the new syntax, the label property is specified in a map, and a string such as 'Label1::Label2::Label3' will be treated as a single label. For example, the following code written in Gremlin-Java, creates a vertex with a single label called 'Label1::Label2', instead of 2 separate labels:
Map<Object, Object> mergeMap = Map.of(T.id, someId);
Map<Object, Object> createMap = new HashMap<>(
Map.of(
T.id, someId, T.label, "Label1::Label2"
)
);

g.mergeV(mergeMap).option(Merge.onCreate, createMap)
Map<Object, Object> mergeMap = Map.of(T.id, someId);
Map<Object, Object> createMap = new HashMap<>(
Map.of(
T.id, someId, T.label, "Label1::Label2"
)
);

g.mergeV(mergeMap).option(Merge.onCreate, createMap)
Are there any alternative approaches to this issue that make use of the new syntax for efficient upserts?
S
spmallette385d ago
I'm sorry to say that qt this time Neptune doesn't support the multi-label syntax in the new mergeV() step. For multi-label, i'm afraid that for now you will need to stick to the fold()/coalesce()/unfold() pattern for now until @neptune can get that rectified.
K
kelvinl2816385d ago
This is really helpful feedback @tdgabriel - it's something we really need to take on in TinkerPop at some point and also good feedback for the Neptune implementation. We will make sure the right folks get to know about the need for multi label support in the Neptune flavor of mergeV .
T
tdgabriel383d ago
Great to hear that, thanks!