NOTEScope of this page. This page covers named graph types, the catalog objects created via
CREATE GRAPH TYPE.
The inline (CREATE GRAPH <graph> { … }),LIKE, andAS COPY OFforms produce closed graphs whose graph type is embedded directly in the graph, they do not create a named graph type. For those, see Closed Graphs.
A graph type is a named, reusable schema definition, including a list of node types and edge types. Named graph types let multiple graphs share the same shape without redeclaring the schema each time.
Show graph types stored in the database:
GQLSHOW GRAPH TYPES
To inspect a single graph type:
GQLDESCRIBE GRAPH TYPE socialType -- DESC is a shorthand for DESCRIBE DESC GRAPH TYPE socialType
Each graph type provides the following essential metadata:
| Field | Description |
|---|---|
name | The unique name assigned to the graph type. |
node_type_count | Number of node types. |
edge_type_count | Number of edge types. |
node_types | Comma-separated list of node type names. |
edge_types | Comma-separated list of edge type names. |
definition | The type definitions. |
bound_graphs | Graphs that use this graph type. |
comment | The comment of the graph type. |
created_at | Creation time. |
updated_at | Last update time. |
You have three ways to create a graph type:
Syntax<create graph type statement> ::= "CREATE" { "GRAPH TYPE" [ "IF NOT EXISTS" ] | "OR REPLACE GRAPH TYPE" } <graph type name> <inline graph type> | <cloned graph type> | <inferred graph type>
Define the node and edge types directly in the CREATE GRAPH TYPE statement.
Syntax<inline graph type> ::= "{" [ <element type> [ { "," <element type> }... ] ] "}" <element type> = <node type> | <edge type>
Learn more about node types and edge types.
Create an empty graph type that schema can be added to later:
GQLCREATE GRAPH TYPE socialType
Create a graph type with an inline specification:
GQLCREATE GRAPH TYPE gType { NODE User ({name STRING, age UINT32}), NODE Club ({name STRING}), EDGE FOLLOWS ()-[{createdOn TIMESTAMP}]->(), EDGE JOINS ()-[]->() }
Syntax<cloned graph type> ::= "AS COPY OF" <graph type name>
Create a graph type that is a copy of another graph type:
GQLCREATE GRAPH TYPE socialType AS COPY OF gType
Syntax<inferred graph type> ::= "LIKE" <graph name>
Create a graph type by inferring the schema from an existing graph (the right-hand side is a graph name, not a graph type name). The system reads the labels and properties present in the graph and produces a matching type:
GQLCREATE GRAPH TYPE inferredType LIKE myGraph
When myGraph is an open graph, the inferred type captures only what has actually been inserted — labels seen, and the union of property names and types observed for each label.
You can use the IF NOT EXISTS clause to prevent errors when attempting to create a graph type that already exists. It allows the statement to be safely executed.
GQLCREATE GRAPH TYPE IF NOT EXISTS socialType { NODE Person ({name STRING, email STRING}) }
You can use OR REPLACE to drop the existing graph type with the same name and create a new one in its place:
GQLCREATE OR REPLACE GRAPH TYPE socialType { NODE Person ({name STRING, email STRING}) }
Add node and edge types to a graph type:
GQL-- Add node type Organization to socialType ALTER GRAPH TYPE socialType ADD NODE Organization ({name STRING}) -- Add edge type WorksAt to socialType ALTER GRAPH TYPE socialType ADD EDGE WorksAt (:Person)-[{since DATE}]->(:Organization)
Drop node and edge types from a graph type:
GQL-- Drop node type Organization from socialType ALTER GRAPH TYPE socialType DROP NODE Organization -- Drop edge type WorksAt from socialType ALTER GRAPH TYPE socialType DROP EDGE IF EXISTS WorksAt
Rename socialType to communityType:
GQLALTER GRAPH TYPE socialType RENAME TO communityType
Set comment for communityType:
GQLALTER GRAPH TYPE communityType COMMENT 'Schema for social-network graphs'
Drop the graph type socialType:
GQLDROP GRAPH TYPE socialType
The IF EXISTS clause is used to prevent errors when attempting to delete a graph type that does not exist. It allows the statement to be safely executed.
GQLDROP GRAPH TYPE IF EXISTS socialType
Create a graph using a named graph type, see Closed Graphs. Once a graph is bound to a graph type, the binding semantics are strict: