This guide sketches the University model used throughout the legacy documentation.

Project layout
university-model/
tonto.json
src/
datatypes.tonto
people.tonto
organization.tonto
academic.tonto
Datatypes
src/datatypes.tonto:
global package university.datatypes
datatype EmailAddress specializes string
datatype RegistrationNumber {
code: string [1]
}
People
src/people.tonto:
import university.datatypes
package university.people
kind Person {
label { @en "Person" }
name: string [1]
email: EmailAddress [0..1]
}
phase Child specializes Person
phase Adult specializes Person
role Student specializes Person
role Professor specializes Person
disjoint complete genset PersonAgePhases where Child, Adult specializes Person
Organization
src/organization.tonto:
package university.organization
kind University {
name: string [1]
@componentOf [1] <>-- hasDepartments -- [1..*] Department
}
kind Department {
name: string [1]
}
Academic relations
src/academic.tonto:
import university.people
import university.organization
import university.datatypes
package university.academic
relator Enrollment {
registration: RegistrationNumber [1]
enrollmentDate: date [1]
@mediation [1] -- [1] Student
@mediation [1] -- [1] University
}
relator TeachingAssignment {
startDate: date [1]
@mediation [1] -- [1] Professor
@mediation [1] -- [1] Department
}
@material relation Student [0..*] -- enrolledAt -- [0..*] University
@material relation Professor [0..*] -- teachesAt -- [0..*] Department
Validate and generate
tonto-cli validate .
tonto-cli generate .
tonto-cli plantuml . --layout left-to-right
Use the VS Code extension to inspect validations and diagram output while you refine the model.
