New ACM paper, free-tier cloud, and open-source license


The abstract keyword is used in TypeQL to define a type as an abstract type.


The syntax of a simple statement with the type keyword:

<type label> abstract;

The abstract keyword doesn’t use any object, so after the keyword always follows either a comma, or a semicolon.


TypeQL statements with the abstract keyword are used in Define queries to define (declare) that the type is abstract.

An abstract type can’t be used to insert a data instance but can be used to create a subtype or to query (for its subtypes).

Usage in a schema definition

For this example, use a database with the IAM schema and sample data loaded.

Since in Define queries you can’t use variables, the abstract keyword can be used only with a type label. It can be a part of a composite statement.

For example, to define a new abstract attribute type id as a subtype of the attribute root type, and then the email non-abstract (concrete) type as a subtype of the id, use:

Define an abstract type example
id sub attribute, abstract, value string;
email sub id, value string;

Learn more

Learn more about sub statement in TypeQL.

Learn more about type statement in TypeQL.

Learn more about types in TypeQL.

Provide Feedback