一般来说,我是 Graph DBs 的新手,正在尝试学习 Gremlin QL。我想知道是否有一种方法可以直接合并 id 已知的两个顶点的两个直接邻居。例如,在下图中

我不想遍历整个图,我只想让两个子图根据它们的共同邻居进行合并,并根据通向同一顶点的两条边的权重之和进行排序。
在上图中,我希望能够在使用 verticesA, B, C, D进行查询时显示这些顶点1 and 2。我希望能够合并顶点1和顶点2的outE,聚合(edge 1 -> A and Edge 2 -> A),(edge 1 -> B and Edge 2 -> B),(edge 1 -> C and Edge 2 -> C) and (edge 1 -> D and Edge 2 -> D) 并根据这个组合分数对结果进行排序。
图表创建的代码如下
g.addV().property('id',1).property("type","A").as('1')
addV().property('id',2).property("type","B").as('2').
addV().property('id',A).property("type","X").as('A').
addV().property('id',B).property("type","X").as('B').
addV().property('id',C).property("type","X").as('C').
addV().property('id',D).property("type","X").as('D').
addE('connects').from('1').to('A').property("weight",0.1d)
addE('connects').from('1').to('B').property("weight",0.4d)
addE('connects').from('1').to('C').property("weight",0.2d)
addE('connects').from('1').to('D').property("weight",0.7d)
addE('connects').from('2').to('A').property("weight",0.5d)
addE('connects').from('2').to('B').property("weight",0.2d)
addE('connects').from('2').to('C').property("weight",0.7d)
addE('connects').from('2').to('D').property("weight",0.4d).iterate()
如果我要在 SQL 中表示上述数据,示例模型如下
create table items(id varchar(20), toId varchar(20), weight double(5,4), primary key (id, toId);
insert into items values("1","A",0.1);
insert into items values("1","B",0.4);
insert into items values("1","C",0.2);
insert into items values("1","D",0.7);
insert into items values("2","A",0.5);
insert into items values("2","B",0.2);
insert into items values("2","C",0.7);
insert into items values("2","D",0.4);
select toId, a.weight+b.weight as weight from items a, items b where a.id = "1" and b.id = "2" and a.toId = b.toId order by weight desc;
这通常返回
D, 0.11
C, 0.9
B, 0.6
A, 0.5
对此的任何帮助都将受到高度赞赏。