A tasl schema defines a set of classes. Each class has key and a type. A key is a term from a namespace, and a type is one of five kinds of types:

Two of these - products and coproducts - are composite, meaning they're composed of other types. Literals, URIs, and references are all primitive types.

a digram of a schema including two classes, a composite type, and a reference type

You can think of a schema as a forest of trees - each root is a class, and is attached to a tree of nested composite types all ending in leaf primitive types. References are a little special, since they point to other classes in the same schema (ie leaves that point to other roots).

In tasl, we declare classes using the class keyword. Here's a schema with one class with a key ex:Thing and a type {}.

namespace ex class ex:Thing {}

Other classes can have more complex types:

namespace ex class ex:Person { ex:name -> string ex:favoriteColor -> [ ex:red ex:green ex:blue ] }