vocabulary Astronomy;

/*

* Value Types
*/

AstronomicalObject Code is written as String(12); Mass is written as Real(32); Moon Name is written as String(256); Nr Days is written as Real(32); Planet Name is written as String(256);

/*

* Entity Types
*/

AstronomicalObject is identified by its Code; AstronomicalObject has at most one Mass;

Moon is a kind of AstronomicalObject identified by its Name;

Orbit is where

AstronomicalObject is in orbit;

Orbit is around one AstronomicalObject (as Center) /* [acyclic, stronglyintransitive] */; Orbit has a synodic period of at most one Nr Days;

Planet is a kind of AstronomicalObject identified by its Name;

Star is a kind of AstronomicalObject;

/*

* Constraints:
*/

for each AstronomicalObject exactly one of these holds:

AstronomicalObject is a Star,
AstronomicalObject is a Planet,
AstronomicalObject is a Moon;