Declarative Objectivity (DO) Language : Tokens : Names
Names are identifiers for referring to attributes, classes, namespaces, operators, aliases, parameters, and variables.
A name consists of a combination of the following characters:
UPPERCASE letters ('A'..'Z')
lowercase letters ('a'..'z')
Numerals ('0'..'9')
Underscore characters ('_').
Any combination is allowed, with the following limitations:
A name cannot begin with a numeral.
A name cannot match a keyword.
A name is an identifier whose meaning depends on the context within which it is found. A name is interpreted based on the rules for the DO grammar and its expressions.
For example, the following statement provides sufficient context to enable FleetData to be interpreted as a namespace name; RentalCompany and Location as class names; name, airportCode, and locations as attribute names; and Airports to be interpreted as an alias:
UPDATE FleetData.RentalCompany WHERE name == 'Acme' ADD CREATE Location{airportCode: 'DFW'} TO locations RETURN locations.airportCode AS Airports;
The following table lists examples of valid and invalid names:
Valid Names
Invalid Names
last name
If your schema has namespace, class, or attribute names that match DO keywords, you may, but need not, enclose them in `back quotes`. For example, the following two statements are equivalent:
FROM Accounts WHERE not skip RETURN * SKIP 20 TAKE 20;
FROM Accounts WHERE not `skip` RETURN * SKIP 20 TAKE 20;
Class Names
Class names are names that identify schema classes.
className : name (. name)*;
Used In 
Source-Specifier Expressions, Object Structures 
A class name represents the name of a class that is defined in the schema. If the class is defined in a schema namespace, then the class name includes the namespace’s name.
Example. The following class name refers to the schema class Vehicle defined in the schema namespace FleetData:
Note:You can omit the namespace if the class’s unqualified name is unique across the entire schema.
Within a class name, each component is a name token. Multiple name tokens are separated either by a dot “.” or a double colon “::”.
Example. The following two class names are equivalent:
Note:Class names are not strings, and so are not enclosed in quotation marks. You can represent the name of an object’s class as a string using the CLASS_NAME operator.
Note:Class names are distinct from class literals in syntax and usage. Class names can be used as source specifiers or in object structures. In contrast, class literals can be used as operands of certain type-evaluation operators.