Annotations are named values associated with schema items and
are designed to hold arbitrary schema-level metadata represented as a
str
.
There is a number of annotations defined in the standard library. The following are the annotations which can be set on any schema item:
title
description
deprecated
For example, consider the following declaration:
type Status {
annotation title := 'Activity status';
annotation description := 'All possible user activities';
required property name -> str {
constraint exclusive
}
}
The above annotations can be extracted via schema introspection queries and used to create a descriptive UI for an admin tool:
db> ... ... ... ... ... ... ... ...
WITH MODULE schema
SELECT ObjectType {
name,
annotations: {
name,
@value
}
}
FILTER .name = 'default::Status';
{ Object { name: 'default::Status', annotations: { Object { name: 'std::description', @value: 'All possible user activities' }, Object { name: 'std::title', @value: 'Activity status' } } } }
The deprecated
annotation is used to mark deprecated items (e.g.
str_rpad()
) and to provide some information such as what
should be used instead.
Annotation SDL, DDL, and introspection.