neo4j-contrib / neo4j-apoc-procedures

Awesome Procedures On Cypher for Neo4j - codenamed "apoc"                     If you like it, please ★ above ⇧            
https://neo4j.com/labs/apoc
Apache License 2.0
1.71k stars 494 forks source link

Support for Fabric - #1615

Closed graphadvantage closed 2 years ago

graphadvantage commented 4 years ago

Guidelines

Feature description (Mandatory)

Apoc support for Neo4j Fabric operations, ability to directly merge virtual nodes and rels queried from Fabric shards. Ability to create a symmetric index for semantically identical nodes across shards, and use this index to merge vNodes for downstream query operations. Merged vNodes should retain metadata on their provenance (fabric graph id and node id) to support write back to the source shard. --> apoc.merge.vNodeFromFabricNode() , apoc.merge.vGraphFromFabricPaths()

Considered alternatives

Have some workarounds using existing apoc.create.vNode and apoc.create.vRelationship, nothing elegant :( https://community.neo4j.com/t/neo4j-fabric-sharded-subgraph-reassembly-for-advanced-querying/22731

How this feature can improve the project?

Ability to perform downstream operations/queries with elements drawn from fabric graph shards will improve the utility and adoption of fabric and enterprise graph sharding. Any real world implementation of fabric will necessarily involve hierarchy and other entities stored in multiple graph shards that will need virtual reassembly by the federated query to construct an accurate subgraph for downstream query operations. https://github.com/neo4j/neo4j/issues/12563

thank you!

Michael

jexp commented 4 years ago

Can you provide a bit more detail / examples for what you want to do Michael?

graphadvantage commented 4 years ago

Hi Michael - yes I'll see if I can work something up for you using example data. The basic idea is to be able to search across fabric shards for an equivalent node, and then merge these equivalent nodes during the union step into a meaningful subgraph. Currently equivalent nodes are treated as unrelated nodes in the union output.