그래프에 neo4j가 있고, 주어진 노드 N에 대해 N에서 P 단계 이상 도달 할 수있는 모든 노드와 그 사이의 모든 링크를 찾고 싶습니다. 노드 세트. 이것은 Cypher 또는 Traversal 프레임 워크에서 가능할 수있는 것처럼 보입니다. 하나가 다른 것보다 선호됩니까? 필자는 내장 데이터베이스를 사용하여 Java에서이 작업을 수행하고 있으며 하위 그래프에 대한 추가 쿼리를 수행해야합니다. 나는 주위를 뚫고 결정적인 답을 찾지 못했습니다.neo4j에서 유도 된 부분 그래프
0
A
답변
2
나는 사이퍼는 가변 길이 경로에 대한 쿼리, 원하는 데이터를 얻을 수있는 가장 간결한 방법이라고 생각, 일부 수집 및 정제 :
n은 노드 N
의 내부 ID가하고 P
가 5 인 경우 :
START begin = node(n) // or e.g. index lookup
MATCH p = (begin)<-[r*..5]-(end) // match all paths of length up to 5
WITH distinct nodes(p) as nodes // collect the nodes contained in the paths
MATCH (x)<-[r]-(y) // find all relationships between nodes
WHERE x in nodes and y in nodes // which were found earlier
RETURN distinct x,r,y // and deduplicate as you find all pairs twice
그것은 가장 효율적인 방법이 될 않을 수도 있지만 적어도 http://console.neo4j.org/의 실행 계획 설명은 y in nodes
가 MATCH (x)-[r]-(y)
전에 간주됩니다 제안합니다.
나는 관계를 두 번 일치시키지 않기 위해 return 문에 distinct
을 생각할 수 없었다.
관련 문제
- 1. 노드 목록에 의해 유도 된 그래프의 부분 그래프 만들기
- 2. networkx는 : 에지로부터 유도 된 서브 그래프 작성
- 3. 유도 된 부분 그래프가 완료되었는지를 알아내는 빠른 알고리즘
- 4. 연결된 모든 유도 된 부분 그래프를 효율적으로 찾을 수 있습니다.
- 5. 원 패스 유도 그래프 드로잉 알고리즘
- 6. 유도 된 QTreeWidgetItem을 반환하십시오.
- 7. 유도 된 CSS 값
- 8. neo4j에서 레이블을 사용하지 않고 부분 그래프를 분리하는 방법
- 9. 부분 그래프 알고리즘
- 10. 그래프에서 부분 그래프 찾기
- 11. 공통 부분 그래프 찾기
- 12. NetworkX의 두 부분 그래프
- 13. 유도 된 벡터 : 수행 작업
- 14. Java - 유도 된 클래스의 유형
- 15. Neo4j에서 중첩 된 트리를 구현하는 방법은 무엇입니까?
- 16. FluentNhibernate, 부분 개체 그래프 검색
- 17. Neo4j에서 네트워크 라인을 표현하는 방법
- 18. Neo4j에서 jSON으로 데이터 내보내기
- 19. igraph : 두 그래프 사이의 일치하는 부분
- 20. 노드를 기반으로하는 부분 그래프 추출
- 21. neo4j에서 특정 경로를 가져 오는 중 그래프 데이터베이스
- 22. neo4j에서 여러 그래프에 액세스
- 23. 그래프 데이터베이스 Neo4j에서 리프 노드를 계산하는 방법은 무엇입니까?
- 24. 강한 유도?
- 25. 하위 집합 함수에서 생성 된 부분 집합에서 막대 그래프 만들기
- 26. Neo4j에서 카운트 관계 쌍
- 27. 중첩 된 고정을위한 유도 원리를 얻는 방법
- 28. 유도 그래프의 정점 수 - 동적 프로그래밍
- 29. Neo4j에서 인덱싱
- 30. Neo4j에서 검색
감사합니다. 시도해 보겠습니다. 새 내장 데이터베이스를 만들고 그 안에 그래프를 넣는 것이 해당 하위 그래프에 대한 추가 작업을 수행하는 가장 좋은 방법 인 것 같습니다. – betseyb