-
-
Notifications
You must be signed in to change notification settings - Fork 90
Description
Discussed in #362
Originally posted by datanostra April 8, 2022
Hi,
I'm working on a graph db benchmark and I have a specific use case that might often occurred which is : create an edge without knowing the type of the source or the target nodes.
I can make it works using inheritance in SQL, creating a Node type, which is extended by all my types :
Create types :
CREATE VERTEX TYPE Node;
CREATE VERTEX TYPE Transaction EXTENDS Node;
CREATE VERTEX TYPE City EXTENDS Node;
Create Nodes :
INSERT INTO Transaction set id = "A"
INSERT INTO City set id = "B"
Then I can query my ingested objects without knowing if they are of types Transaction or City :
- SELECT FROM Node WHERE id = 'id_source'
- CREATE EDGE Relation_Type FROM (SELECT FROM Node WHERE id = 'A') TO (SELECT FROM Node WHERE id = 'B') IF NOT EXISTS
Nevertheless, I would like to be able to create the same mechanism with Cypher.
The problems are :
-
the inheritance does not seem replicated to the graph model and then not accessible via Cypher.
-
multi-label mechanism does not seem available in ArcadDB. For example, this CYPHER query is not working : CREATE (n:Transaction:Node {id: 'some_id'})
-
Unlabeled Cypher queries does not seem to be scalable (MATCH (n) WHERE n.id = "some_id" RETURN n). One reason of this is that we can't benefit from indexes to get optimized access to nodes.