vocabulary Orienteering
;
/*
* Value Types */
Accessibility is written as Char(1) restricted to {'A'..'D'}; Club Code is written as String(6); Club Name is written as String(32); Control Number is written as Unsigned Integer(32) restricted to {1..1000}; Course is written as String(16) restricted to {'A'..'E', 'PW'}; Entry ID is written as Auto Counter; Event ID is written as Auto Counter; Event Name is written as String(50); Family Name is written as String(48); Gender is written as Char(1) restricted to {'F', 'M'}; Given Name is written as String(48); Location is written as String(200); Map ID is written as Auto Counter; Map Name is written as String(80); Number is written as Unsigned Integer(32) restricted to {1..100}; Person ID is written as Auto Counter; Placing is written as Unsigned Integer(32); Point Value is written as Unsigned Integer(32); Post Code is written as Unsigned Integer(32); Punch ID is written as Auto Counter; Score is written as Signed Integer(32); Scoring Method is written as String(32) restricted to {'Scatter', 'Score', 'Special'}; Series ID is written as Auto Counter; Series Name is written as String(40); Start Time is written as Date Time; Time is written as Date Time; Year is written as Unsigned Integer(32) restricted to {1900..3000};
/*
* Entity Types */
Club is identified by its Code; Club Name is name of at most one Club,
Club is called one Club Name;
Event is identified by its ID; Club runs Event,
Event is run by one Club;
Event is called at most one Event Name,
Event Name is name of at most one Event;
Event has at most one Number; Event is held on one Start Time; Event starts at one start-Location,
Location is place Event starts;
Event Control is where
Event includes at least one Control Number;
Event Control has at most one Point Value;
Event Scoring Method is where
Scoring Method is used for Course of Event, Course of Event uses one Scoring Method;
Map is identified by its ID; Club (as Owner) owns Map,
Map is owned by one Owner;
Map has at most one Accessibility; Map is map for Event,
Event uses one Map;
Map has one Map Name,
Map Name is of at most one Map;
Person is identified by its ID; Person is member of at most one Club; Person has one Family Name,
Family Name is of Person;
Person is of at most one Gender; Person has one Given Name,
Given Name is name of Person;
Person has at most one Post Code; Person was born in at most one birth-Year;
Punch is identified by its ID;
Punch Placement is where
Punch is placed at Event Control;
Series is identified by its ID; Event is in at most one Series; Series has one Series Name (as Name),
Name is of at most one Series;
Entry is identified by its ID where
Person entered Course of Event, Person entered Event in one Course;
Entry received at most one Score; Entry finished in at most one finish-Placing;
Visit is where
Punch was visited by Entry at Time;
/*
* Constraints: */
Event is in Series
if and only if Event has Number;
each Event Control occurs at least one time in
Punch is placed at Event Control;
either Event is called Event Name or Event is in Series; each combination Given Name, Family Name occurs at most one time in
Person has Given Name, Person has Family Name;
each combination Series, Number occurs at most one time in
Event is in Series, Event has Number;