Skip to content

No support for Multi-label nodes #384

@lvca

Description

@lvca

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.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions