Я хочу сделать соединение между двумя типами вершин, используя gremlin
select * from type1 inner join type2 in type2.id = type1.type2_id
При использовании типов 1 и 2 в качестве меток вершин работает следующее:
g.V()
.hasLabel("type2").as("t2")
.inE("hasJoin")
.hasLabel("type1").as("t1")
.select("t1", "t2")
Однако мой график делаетне использовать метку вершины для представления типа, но вместо этого использует другую вершину, связанную через ребро hasType.
g.V()//
.addV("instance1").as("instance1")//
.addV("instance2").as("instance2")//
.addV("type1").as("type1")//
.addV("type2").as("type2")//
.addE("hasType").from("instance1").to("type1")//
.addE("hasType").from("instance2").to("type2")//
.addE("hasJoin").from("instance1").to("instance2")//
.iterate();
Мне нужно сделать что-то вроде замены
hasLabel("type2").as("t2")
на
hasLabel("type2").inE("hasType").outV().as("t2"):
, что приведет к
g.V()
.hasLabel("type2").inE("hasType").outV().as("t2")
.inE("hasJoin")
.hasLabel("type1").inE("hasType").outV().as("t1")
.select("t1", "t2")
Это работает для "t2", но не для "t1", как .inE ("hasJoin"). HasLabel ("type1") просто неправильно.Какую функцию мне нужно использовать для соединения "t1" и "t2"?