Tonto
Language

Classes and Natures

Use Tonto class stereotypes and ontological natures to model UFO and OntoUML concepts.

Tonto class declarations use OntoUML/UFO stereotypes as language keywords.

kind Person
role Student specializes Person
category PhysicalObject of objects

Declaration shape

<stereotype> <Name> of <nature1>, <nature2> (instanceOf <Type>) specializes <Parent1>, <Parent2> {
  label { @en "..." }
  description { @en "..." }
}

All parts after the name are optional. Choose the most precise stereotype you can.

Example with the optional parts in their grammar order:

kind Vehicle
powertype VehicleModel specializes Vehicle

subkind ElectricCar (instanceOf VehicleModel) specializes Vehicle {
  label { @en "Electric car" }
  description { @en "A car whose propulsion is supplied by electric motors." }
}

Diagram convention: specialization uses UML generalization notation. The hollow triangle points to the most general type, which is shown above the more specific types.

Ultimate sortals

Ultimate sortals provide or specialize identity principles.

StereotypeUse for
kindFunctional complexes, such as Person, Car, or Organization.
collectiveCollections with members, such as Team or Fleet.
quantityAmounts of matter, such as WaterPortion.
qualityMeasurable qualities, such as Weight or Color.
modeIntrinsic moments that are not modeled as values.
intrinsicModeExplicit intrinsic mode.
extrinsicModeExplicit externally dependent mode.
relatorTruth-makers of material relations, such as Employment.
typeHigher-order types whose instances are types.
powertypePowertypes over possible specializations of a base type.

Example:

kind Person
relator Enrollment
type CourseLevel

Base sortals

Base sortals inherit identity from exactly one ultimate sortal.

StereotypeRigidityExample
subkindRigidsubkind Employee specializes Person when every employee in scope is essentially an employee.
phaseAnti-rigid, intrinsicphase Child specializes Person.
roleAnti-rigid, relationalrole Student specializes Person.
historicalRoleAnti-rigid, event-basedhistoricalRole FormerStudent specializes Person.
kind Person

phase Child specializes Person
role Student specializes Person
historicalRole Alumnus specializes Person

Child, Student, and Alumnus all inherit the identity principle supplied by Person; their stereotypes explain why membership can change over time.

Non-sortals

Non-sortals classify instances that can belong to multiple kinds.

StereotypeMeaning
categoryRigid common properties across kinds.
mixinSemi-rigid properties.
phaseMixinAnti-rigid intrinsic properties across kinds.
roleMixinAnti-rigid relational properties across kinds.
historicalRoleMixinEvent-based historical properties across kinds.

Non-sortals should usually declare an ontological nature:

category PhysicalObject of objects
roleMixin Customer of functional-complexes, collectives

Use non-sortals when the classification is shared across multiple identity providers. If the concept applies only under one kind, a role, phase, or subkind is usually clearer.

Perdurants

Tonto also supports non-endurant stereotypes:

StereotypeUse for
eventOccurrences that unfold in time.
situationStates of affairs at a time.
processOngoing perdurants.
event EnrollmentCeremony
situation RegistrationOpen
process CourseDelivery

Ontological natures

Use of to restrict possible natures:

category SocialEntity of functional-complexes, relators
roleMixin ServiceProvider of objects

Supported natures:

objects
functional-complexes
collectives
quantities
relators
intrinsic-modes
extrinsic-modes
qualities
events
situations
types
abstract-individuals

Validation expectations

Tonto validators check common OntoUML constraints:

  • Ultimate sortals should not specialize other ultimate sortals.
  • Sortals should specialize exactly one ultimate sortal directly or indirectly.
  • Rigid types should not specialize anti-rigid types.
  • Explicit natures should be compatible and non-redundant.
  • Duplicate declarations and circular specializations are reported.

Use class only as a temporary placeholder. It is useful during rough modeling but should be replaced before publication.