Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: Add Multi-Pattern Graph Visualization #1021

Open
InfamousSYN opened this issue Dec 17, 2024 · 0 comments
Open

Feature: Add Multi-Pattern Graph Visualization #1021

InfamousSYN opened this issue Dec 17, 2024 · 0 comments
Labels
enhancement New feature or request triage This issue requires triaging

Comments

@InfamousSYN
Copy link

Feature Description

Currently Bloodhound Community Edition (BHCE) only supports primary path visualisation (only display the match that is in the 1st position of the RETURN clause). Whereas Neo4j Browser supports multi-pattern visualization. The ask is to add multi-pattern visualization to BHCE.

Example:

  • BHCE will only display p
  • Neo4j will display p+p1+p2
MATCH p=(a:User)<-[:HasSession]-(b:Computer)
OPTIONAL MATCH p1=(a)-[:MemberOf*1..]->(c:Group)
OPTIONAL MATCH p2=(c)-[:AdminTo]->(:Computer)
RETURN p,p1,p2
LIMIT 100

Are you intending to implement this feature?

no

Current Behavior

BHCE is currently designed to focus on one primary path at a time, therefore only BHCE will only display the p in the below query.

MATCH p=(a:User)<-[:HasSession]-(b:Computer)
OPTIONAL MATCH p1=(a)-[:MemberOf*1..]->(c:Group)
OPTIONAL MATCH p2=(c)-[:AdminTo]->(:Computer)
RETURN p,p1,p2
LIMIT 100

Note: It is possible to expose Neo4j to perform the queries, however it lacks BHCE's icons.

Desired Behavior

Introduce the multi-pattern capability (return the sum of p+p1+p2) to BHCE to then display more complex/comprehensive graphs.

MATCH p=(a:User)<-[:HasSession]-(b:Computer)
OPTIONAL MATCH p1=(a)-[:MemberOf*1..]->(c:Group)
OPTIONAL MATCH p2=(c)-[:AdminTo]->(:Computer)
RETURN p,p1,p2
LIMIT 100

Use Case

It allows for more speculative queries to be written that will return some data even when not all conditions are met, allowing for greater flexible in use cases in an unknown environment.

Implementation Suggestions

I have no implementation insights/suggestions.

Additional Information

It would be possible to write the about example query using a serialised method. However it would that if any part of the query fails or is not a match, the entire query would return no results.

MATCH p=(:Computer)-->(a)-[:MemberOf*1..]->(:Group)-[:AdminTo]->(:Computer)
RETURN p
LIMIT 100
@InfamousSYN InfamousSYN added enhancement New feature or request triage This issue requires triaging labels Dec 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request triage This issue requires triaging
Projects
None yet
Development

No branches or pull requests

1 participant