아래에 설명 된대로 b1
노드 b2
가 존재 하지 않는 모든을 일치시키고 싶습니다 . 이것은 일종의 2- 홉 비대칭입니다. 것을 참고 존재하지 않는 b2
동일에 반드시 링크 c:C
등은 b1
, 그래서 다른 (a2) --> (b3) --> (a1)
만큼 무시 될 수는 b3
아무 가장자리가 없습니다 c:C
.
나는 다음을 시도했다 ...
graph.traversal().V()
.match(
as("c").hasLabel("C"),
as("a").hasLabel("A")
.out().hasLabel("B").as("b1")
.where(out().as("c"))
.out().hasLabel("A").as("a2"),
not(
as("a2")
.out().hasLabel("B").as("b2")
.where(out().as("c")
.out().as("a1")
)
)
...하지만 두 번째 MATCH 단계에서는 예외가 발생합니다.
java.lang.IllegalStateException: The provided match pattern is unsolvable: [[MatchStartStep(a1), HasStep([~label.eq(A)]), VertexStep(OUT,vertex), HasStep([~label.eq(B)]), WhereTraversalStep([WhereStartStep, VertexStep(OUT,vertex), WhereEndStep(c)])@[b1], VertexStep(OUT,vertex), HasStep([~label.eq(A)]), MatchEndStep(a2)], [MatchStartStep(a2), HasStep([~label.eq(B)]), WhereTraversalStep([NotStep([WhereStartStep, VertexStep(OUT,edge)])]), WhereTraversalStep([WhereStartStep, VertexStep(OUT,vertex)@[c], VertexStep(OUT,vertex), WhereEndStep(a1)])@[b2], MatchEndStep, MatchEndStep]]
안타깝게도이게 사이퍼와 일치하지 않습니다.
갑자기 범위 문제를 피하는 해결책을 찾았습니다.
graph.traversal().V()
as("a").hasLabel("A")
.out().hasLabel("B").as("b1")
.where(out().hasLabel("C"))
.out().hasLabel("A").as("a2")
.where(
not(
out().hasLabel("B")
.where(out().hasLabel("C"))
.out().as("a")
)
)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다