activefacts 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +4 -0
- data/Manifest.txt +83 -0
- data/README.rdoc +81 -0
- data/Rakefile +41 -0
- data/bin/afgen +46 -0
- data/bin/cql +52 -0
- data/examples/CQL/Address.cql +46 -0
- data/examples/CQL/Blog.cql +54 -0
- data/examples/CQL/CompanyDirectorEmployee.cql +51 -0
- data/examples/CQL/Death.cql +16 -0
- data/examples/CQL/Genealogy.cql +95 -0
- data/examples/CQL/Marriage.cql +18 -0
- data/examples/CQL/Metamodel.cql +238 -0
- data/examples/CQL/MultiInheritance.cql +19 -0
- data/examples/CQL/OilSupply.cql +47 -0
- data/examples/CQL/Orienteering.cql +108 -0
- data/examples/CQL/PersonPlaysGame.cql +17 -0
- data/examples/CQL/SchoolActivities.cql +31 -0
- data/examples/CQL/SimplestUnary.cql +12 -0
- data/examples/CQL/SubtypePI.cql +32 -0
- data/examples/CQL/Warehousing.cql +99 -0
- data/examples/CQL/WindowInRoomInBldg.cql +22 -0
- data/lib/activefacts.rb +10 -0
- data/lib/activefacts/api.rb +25 -0
- data/lib/activefacts/api/concept.rb +384 -0
- data/lib/activefacts/api/constellation.rb +106 -0
- data/lib/activefacts/api/entity.rb +239 -0
- data/lib/activefacts/api/instance.rb +54 -0
- data/lib/activefacts/api/numeric.rb +158 -0
- data/lib/activefacts/api/role.rb +94 -0
- data/lib/activefacts/api/standard_types.rb +67 -0
- data/lib/activefacts/api/support.rb +59 -0
- data/lib/activefacts/api/value.rb +122 -0
- data/lib/activefacts/api/vocabulary.rb +120 -0
- data/lib/activefacts/cql.rb +31 -0
- data/lib/activefacts/cql/CQLParser.treetop +104 -0
- data/lib/activefacts/cql/Concepts.treetop +112 -0
- data/lib/activefacts/cql/DataTypes.treetop +66 -0
- data/lib/activefacts/cql/Expressions.treetop +113 -0
- data/lib/activefacts/cql/FactTypes.treetop +185 -0
- data/lib/activefacts/cql/Language/English.treetop +92 -0
- data/lib/activefacts/cql/LexicalRules.treetop +169 -0
- data/lib/activefacts/cql/Rakefile +6 -0
- data/lib/activefacts/cql/parser.rb +88 -0
- data/lib/activefacts/generate/absorption.rb +87 -0
- data/lib/activefacts/generate/cql.rb +441 -0
- data/lib/activefacts/generate/cql/html.rb +397 -0
- data/lib/activefacts/generate/null.rb +19 -0
- data/lib/activefacts/generate/ordered.rb +557 -0
- data/lib/activefacts/generate/ruby.rb +326 -0
- data/lib/activefacts/generate/sql/server.rb +164 -0
- data/lib/activefacts/generate/text.rb +21 -0
- data/lib/activefacts/input/cql.rb +1268 -0
- data/lib/activefacts/input/orm.rb +926 -0
- data/lib/activefacts/persistence.rb +1 -0
- data/lib/activefacts/persistence/composition.rb +653 -0
- data/lib/activefacts/support.rb +51 -0
- data/lib/activefacts/version.rb +3 -0
- data/lib/activefacts/vocabulary.rb +6 -0
- data/lib/activefacts/vocabulary/extensions.rb +343 -0
- data/lib/activefacts/vocabulary/metamodel.rb +303 -0
- data/script/txt2html +71 -0
- data/spec/absorption_spec.rb +95 -0
- data/spec/api/autocounter.rb +82 -0
- data/spec/api/constellation.rb +130 -0
- data/spec/api/entity_type.rb +101 -0
- data/spec/api/instance.rb +428 -0
- data/spec/api/roles.rb +122 -0
- data/spec/api/value_type.rb +112 -0
- data/spec/api_spec.rb +14 -0
- data/spec/cql_cql_spec.rb +58 -0
- data/spec/cql_parse_spec.rb +31 -0
- data/spec/cql_ruby_spec.rb +60 -0
- data/spec/cql_sql_spec.rb +54 -0
- data/spec/cql_symbol_tables_spec.rb +259 -0
- data/spec/cql_unit_spec.rb +336 -0
- data/spec/cqldump_spec.rb +169 -0
- data/spec/norma_cql_spec.rb +48 -0
- data/spec/norma_ruby_spec.rb +50 -0
- data/spec/norma_sql_spec.rb +45 -0
- data/spec/norma_tables_spec.rb +94 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +10 -0
- metadata +173 -0
@@ -0,0 +1,16 @@
|
|
1
|
+
vocabulary DeathAsUnary;
|
2
|
+
|
3
|
+
/*
|
4
|
+
* Value Types
|
5
|
+
*/
|
6
|
+
CauseOfDeath is defined as VariableLengthText();
|
7
|
+
PersonName is defined as VariableLengthText(40);
|
8
|
+
|
9
|
+
/*
|
10
|
+
* Entity Types
|
11
|
+
*/
|
12
|
+
Person is identified by its Name;
|
13
|
+
Death is where
|
14
|
+
Person is dead;
|
15
|
+
Death was due to at most one CauseOfDeath;
|
16
|
+
|
@@ -0,0 +1,95 @@
|
|
1
|
+
vocabulary Genealogy;
|
2
|
+
|
3
|
+
/*
|
4
|
+
* Value Types
|
5
|
+
*/
|
6
|
+
Address is defined as VariableLengthText(128);
|
7
|
+
Certificate is defined as VariableLengthText(64);
|
8
|
+
Day is defined as UnsignedInteger(32) restricted to {1..31};
|
9
|
+
Email is defined as VariableLengthText(64);
|
10
|
+
EventID is defined as AutoCounter();
|
11
|
+
EventLocation is defined as VariableLengthText(128);
|
12
|
+
EventRoleName is defined as VariableLengthText() restricted to {'Subject', 'Father', 'Mother', 'Husband', 'Wife', 'Celebrant'};
|
13
|
+
EventTypeID is defined as AutoCounter();
|
14
|
+
EventTypeName is defined as VariableLengthText(16) restricted to {'Birth', 'Christening', 'Marriage', 'Divorce', 'Death', 'Burial'};
|
15
|
+
Gender is defined as FixedLengthText(1) restricted to {'M', 'F'};
|
16
|
+
Month is defined as UnsignedInteger(32) restricted to {1..12};
|
17
|
+
Name is defined as VariableLengthText(128);
|
18
|
+
Occupation is defined as VariableLengthText(128);
|
19
|
+
Official is defined as VariableLengthText(64);
|
20
|
+
PersonID is defined as AutoCounter();
|
21
|
+
Picture is defined as PictureRawData(20);
|
22
|
+
RoleID is defined as AutoCounter();
|
23
|
+
SourceID is defined as AutoCounter();
|
24
|
+
SourceName is defined as VariableLengthText(128);
|
25
|
+
UserID is defined as AutoCounter();
|
26
|
+
Year is defined as UnsignedInteger(32);
|
27
|
+
|
28
|
+
/*
|
29
|
+
* Entity Types
|
30
|
+
*/
|
31
|
+
Event is identified by its ID;
|
32
|
+
Event is certified by at most one Certificate;
|
33
|
+
Event occurred at at most one EventLocation;
|
34
|
+
Event was confirmed by at most one Official;
|
35
|
+
|
36
|
+
EventDate is identified by min-Year and max-Year and Month and Day where
|
37
|
+
EventDate wasnt before at most one min-Year,
|
38
|
+
EventDate wasnt after at most one max-Year,
|
39
|
+
EventDate occurred in at most one Month,
|
40
|
+
EventDate occurred on at most one Day;
|
41
|
+
Event occurred on at most one EventDate;
|
42
|
+
|
43
|
+
EventType is identified by its ID;
|
44
|
+
Event is of at most one EventType;
|
45
|
+
EventType is called one EventTypeName,
|
46
|
+
EventTypeName is name of at most one EventType;
|
47
|
+
|
48
|
+
Person is identified by its ID;
|
49
|
+
Address is of Person,
|
50
|
+
Person lives at at most one Address;
|
51
|
+
Email is of Person,
|
52
|
+
Person has at most one Email;
|
53
|
+
Occupation is of Person,
|
54
|
+
Person is employed in at most one Occupation;
|
55
|
+
Person is of at most one Gender;
|
56
|
+
Person is called at most one family-Name,
|
57
|
+
family-Name is of Person;
|
58
|
+
given-Name is name of Person,
|
59
|
+
Person is called at most one given-Name;
|
60
|
+
preferred-Picture is of Person,
|
61
|
+
Person has at most one preferred-Picture;
|
62
|
+
|
63
|
+
Role is identified by its ID;
|
64
|
+
Role is called one EventRoleName,
|
65
|
+
EventRoleName is name of one Role;
|
66
|
+
|
67
|
+
Source is identified by its ID;
|
68
|
+
Source has one SourceName,
|
69
|
+
SourceName is of at most one Source;
|
70
|
+
Participation is where
|
71
|
+
Person played Role in Event according to Source,
|
72
|
+
Person was involved in Event according to Source in Role,
|
73
|
+
Source claims Person played Role in Event;
|
74
|
+
|
75
|
+
User is identified by its ID;
|
76
|
+
Email is of User,
|
77
|
+
User has at most one Email;
|
78
|
+
User provided Source,
|
79
|
+
Source was provided by one User;
|
80
|
+
Friend is where
|
81
|
+
User is friend of other-User [symmetric];
|
82
|
+
Friend is confirmed;
|
83
|
+
|
84
|
+
/*
|
85
|
+
* Constraints:
|
86
|
+
*/
|
87
|
+
each Event occurs at least one time in
|
88
|
+
Person played Role in Event according to Source;
|
89
|
+
each EventDate occurs at least one time in
|
90
|
+
EventDate wasnt before min-Year,
|
91
|
+
EventDate wasnt after max-Year,
|
92
|
+
EventDate occurred in Month,
|
93
|
+
EventDate occurred on Day;
|
94
|
+
each Person occurs at least one time in
|
95
|
+
Person played Role in Event according to Source;
|
@@ -0,0 +1,18 @@
|
|
1
|
+
vocabulary Marriage;
|
2
|
+
|
3
|
+
/*
|
4
|
+
* Value Types
|
5
|
+
*/
|
6
|
+
Name is defined as VariableLengthText();
|
7
|
+
|
8
|
+
/*
|
9
|
+
* Entity Types
|
10
|
+
*/
|
11
|
+
Person is identified by given-Name and family-Name where
|
12
|
+
Person has one given-Name,
|
13
|
+
Person has one family-Name;
|
14
|
+
|
15
|
+
Marriage is identified by Husband and Wife where
|
16
|
+
Marriage is by one husband-Person (as Husband),
|
17
|
+
Marriage is of one wife-Person (as Wife);
|
18
|
+
|
@@ -0,0 +1,238 @@
|
|
1
|
+
vocabulary Metamodel;
|
2
|
+
|
3
|
+
/*
|
4
|
+
* Value Types
|
5
|
+
*/
|
6
|
+
Adjective is defined as VariableLengthText(64);
|
7
|
+
ConstraintId is defined as AutoCounter();
|
8
|
+
Denominator is defined as UnsignedInteger(32);
|
9
|
+
Enforcement is defined as VariableLengthText(16);
|
10
|
+
Exponent is defined as SignedSmallInteger(32);
|
11
|
+
FactId is defined as AutoCounter();
|
12
|
+
FactTypeId is defined as AutoCounter();
|
13
|
+
Frequency is defined as UnsignedInteger(32);
|
14
|
+
InstanceId is defined as AutoCounter();
|
15
|
+
Length is defined as UnsignedInteger(32);
|
16
|
+
Name is defined as VariableLengthText(64);
|
17
|
+
Numerator is defined as Decimal();
|
18
|
+
Ordinal is defined as UnsignedSmallInteger(32);
|
19
|
+
ReadingText is defined as VariableLengthText(256);
|
20
|
+
RingType is defined as VariableLengthText();
|
21
|
+
RoleSequenceId is defined as AutoCounter();
|
22
|
+
Scale is defined as UnsignedInteger(32);
|
23
|
+
UnitId is defined as AutoCounter();
|
24
|
+
Value is defined as VariableLengthText(256);
|
25
|
+
ValueRestrictionId is defined as AutoCounter();
|
26
|
+
|
27
|
+
/*
|
28
|
+
* Entity Types
|
29
|
+
*/
|
30
|
+
Bound is identified by Value and Bound is inclusive where
|
31
|
+
Bound has one Value,
|
32
|
+
Value is of at least one Bound,
|
33
|
+
Bound is inclusive;
|
34
|
+
|
35
|
+
Coefficient is identified by Numerator and Denominator and Coefficient is precise where
|
36
|
+
Coefficient has one Numerator,
|
37
|
+
Coefficient has one Denominator,
|
38
|
+
Coefficient is precise;
|
39
|
+
|
40
|
+
Constraint is identified by its Id;
|
41
|
+
Constraint requires at most one Enforcement,
|
42
|
+
Enforcement applies to Constraint;
|
43
|
+
Name is of Constraint,
|
44
|
+
Constraint is called at most one Name;
|
45
|
+
|
46
|
+
Fact is identified by its Id;
|
47
|
+
|
48
|
+
FactType is identified by its Id;
|
49
|
+
Fact is of one FactType;
|
50
|
+
|
51
|
+
Instance is identified by its Id;
|
52
|
+
Instance has at most one Value;
|
53
|
+
|
54
|
+
PresenceConstraint is a kind of Constraint;
|
55
|
+
PresenceConstraint has at most one max-Frequency;
|
56
|
+
PresenceConstraint has at most one min-Frequency;
|
57
|
+
PresenceConstraint is mandatory;
|
58
|
+
PresenceConstraint is preferred identifier;
|
59
|
+
|
60
|
+
Reading is identified by FactType and Ordinal where
|
61
|
+
FactType has at least one Reading,
|
62
|
+
Reading is for one FactType,
|
63
|
+
Reading is in at most one Ordinal position,
|
64
|
+
Ordinal reading for fact type is Reading;
|
65
|
+
Reading has one ReadingText;
|
66
|
+
|
67
|
+
RingConstraint is a kind of Constraint;
|
68
|
+
RingConstraint is of one RingType;
|
69
|
+
|
70
|
+
RoleSequence is identified by its Id;
|
71
|
+
PresenceConstraint covers one RoleSequence;
|
72
|
+
Reading is in one RoleSequence,
|
73
|
+
RoleSequence is for Reading;
|
74
|
+
|
75
|
+
RoleValue is identified by Instance and Fact where
|
76
|
+
Instance plays RoleValue,
|
77
|
+
RoleValue is of one Instance,
|
78
|
+
RoleValue fulfils one Fact,
|
79
|
+
Fact includes at least one RoleValue;
|
80
|
+
|
81
|
+
SetConstraint is a kind of Constraint;
|
82
|
+
|
83
|
+
SubsetConstraint is a kind of SetConstraint;
|
84
|
+
SubsetConstraint covers one subset-RoleSequence;
|
85
|
+
SubsetConstraint covers one superset-RoleSequence;
|
86
|
+
|
87
|
+
Unit is identified by its Id;
|
88
|
+
Name is of Unit,
|
89
|
+
Unit is called one Name;
|
90
|
+
Unit has at most one Coefficient;
|
91
|
+
Unit is fundamental;
|
92
|
+
UnitBasis is where
|
93
|
+
Unit (as DerivedUnit) is derived from base-Unit (as BaseUnit) [acyclic, intransitive];
|
94
|
+
UnitBasis has at most one Exponent;
|
95
|
+
|
96
|
+
ValueRange is identified by minimum-Bound and maximum-Bound where
|
97
|
+
ValueRange has at most one minimum-Bound,
|
98
|
+
ValueRange has at most one maximum-Bound;
|
99
|
+
|
100
|
+
ValueRestriction is identified by its Id;
|
101
|
+
AllowedRange is where
|
102
|
+
ValueRestriction allows at least one ValueRange;
|
103
|
+
|
104
|
+
Vocabulary is identified by Name where
|
105
|
+
Vocabulary is called one Name;
|
106
|
+
Vocabulary contains Constraint,
|
107
|
+
Constraint belongs to at most one Vocabulary;
|
108
|
+
Import is where
|
109
|
+
Vocabulary imports imported-Vocabulary [acyclic];
|
110
|
+
|
111
|
+
Feature is identified by Name and Vocabulary where
|
112
|
+
Feature is called one Name,
|
113
|
+
Feature belongs to at most one Vocabulary,
|
114
|
+
Vocabulary contains Feature;
|
115
|
+
Correspondence is where
|
116
|
+
in Import imported-Feature corresponds to at most one local-Feature;
|
117
|
+
|
118
|
+
Population is identified by Vocabulary and Name where
|
119
|
+
Vocabulary includes Population,
|
120
|
+
Population belongs to at most one Vocabulary,
|
121
|
+
Population has one Name,
|
122
|
+
Name is of Population;
|
123
|
+
Population includes Fact,
|
124
|
+
Fact belongs to one Population;
|
125
|
+
Population includes Instance,
|
126
|
+
Instance belongs to one Population;
|
127
|
+
Population includes RoleValue,
|
128
|
+
RoleValue belongs to one Population;
|
129
|
+
|
130
|
+
SetComparisonConstraint is a kind of SetConstraint;
|
131
|
+
SetComparisonRoles is where
|
132
|
+
SetComparisonConstraint covers at least one RoleSequence;
|
133
|
+
|
134
|
+
SetEqualityConstraint is a kind of SetComparisonConstraint;
|
135
|
+
|
136
|
+
SetExclusionConstraint is a kind of SetComparisonConstraint;
|
137
|
+
SetExclusionConstraint is mandatory;
|
138
|
+
|
139
|
+
Alias is a kind of Feature;
|
140
|
+
|
141
|
+
Concept is a kind of Feature;
|
142
|
+
Concept is independent;
|
143
|
+
Concept is personal;
|
144
|
+
Instance is of one Concept;
|
145
|
+
Role is where
|
146
|
+
FactType has Ordinal role played by Concept,
|
147
|
+
Concept plays role in FactType in Ordinal place,
|
148
|
+
Concept plays Ordinal role in FactType;
|
149
|
+
Role is of RingConstraint,
|
150
|
+
RingConstraint has at most one Role;
|
151
|
+
Role has at most one role-Name,
|
152
|
+
role-Name is name of at least one Role;
|
153
|
+
Role has at most one role-ValueRestriction,
|
154
|
+
ValueRestriction applies to Role;
|
155
|
+
RoleValue is of one Role;
|
156
|
+
other-Role is of RingConstraint,
|
157
|
+
RingConstraint has at most one other-Role;
|
158
|
+
RoleRef is where
|
159
|
+
RoleSequence in Ordinal position includes at most one Role,
|
160
|
+
Role is in RoleSequence in at most one Ordinal place,
|
161
|
+
RoleSequence includes Role in Ordinal place,
|
162
|
+
Role has Ordinal place in RoleSequence;
|
163
|
+
RoleRef has at most one leading-Adjective;
|
164
|
+
RoleRef has at most one trailing-Adjective;
|
165
|
+
JoinPath is where
|
166
|
+
RoleRef has Ordinal (as JoinStep) path;
|
167
|
+
JoinPath traverses at most one Concept,
|
168
|
+
Concept is traversed by JoinPath;
|
169
|
+
JoinPath has one input-Role;
|
170
|
+
JoinPath has one output-Role;
|
171
|
+
|
172
|
+
EntityType is a kind of Concept;
|
173
|
+
EntityType nests at most one FactType,
|
174
|
+
FactType is nested as at most one EntityType;
|
175
|
+
TypeInheritance is a kind of FactType identified by Subtype and Supertype where
|
176
|
+
EntityType (as Subtype) is subtype of super-EntityType (as Supertype) [acyclic],
|
177
|
+
Supertype is supertype of Subtype;
|
178
|
+
TypeInheritance provides identification;
|
179
|
+
|
180
|
+
ValueType is a kind of Concept;
|
181
|
+
ValueType has at most one Length,
|
182
|
+
Length is of ValueType;
|
183
|
+
ValueType has at most one Scale,
|
184
|
+
Scale is of ValueType;
|
185
|
+
ValueType is of at most one Unit;
|
186
|
+
ValueType has at most one ValueRestriction;
|
187
|
+
ValueType is subtype of at most one super-ValueType (as Supertype) [acyclic],
|
188
|
+
Supertype is supertype of ValueType;
|
189
|
+
|
190
|
+
/*
|
191
|
+
* Constraints:
|
192
|
+
*/
|
193
|
+
for each Concept exactly one of these holds:
|
194
|
+
EntityType is a subtype of Concept,
|
195
|
+
ValueType is a subtype of Concept;
|
196
|
+
for each Constraint exactly one of these holds:
|
197
|
+
PresenceConstraint is a subtype of Constraint,
|
198
|
+
SetConstraint is a subtype of Constraint,
|
199
|
+
RingConstraint is a subtype of Constraint;
|
200
|
+
for each Feature exactly one of these holds:
|
201
|
+
Concept is a subtype of Feature,
|
202
|
+
Alias is a subtype of Feature;
|
203
|
+
Instance plays RoleValue and Instance is of Concept
|
204
|
+
if and only if
|
205
|
+
RoleValue is of Role and FactType has Ordinal role played by Concept;
|
206
|
+
RoleValue fulfils Fact and Fact is of FactType
|
207
|
+
if and only if
|
208
|
+
RoleValue is of Role and FactType has Ordinal role played by Concept;
|
209
|
+
for each SetComparisonConstraint exactly one of these holds:
|
210
|
+
SetExclusionConstraint is a subtype of SetComparisonConstraint,
|
211
|
+
SetEqualityConstraint is a subtype of SetComparisonConstraint;
|
212
|
+
for each SetConstraint exactly one of these holds:
|
213
|
+
SetComparisonConstraint is a subtype of SetConstraint,
|
214
|
+
SubsetConstraint is a subtype of SetConstraint;
|
215
|
+
for each Unit exactly one of these holds:
|
216
|
+
Unit is fundamental,
|
217
|
+
that Unit is derived from some base-Unit;
|
218
|
+
PresenceConstraint is preferred identifier
|
219
|
+
only if PresenceConstraint has max-Frequency;
|
220
|
+
ValueType has Scale
|
221
|
+
only if ValueType has Length;
|
222
|
+
each combination EntityType, TypeInheritance occurs at most one time in
|
223
|
+
EntityType is subtype of super-EntityType,
|
224
|
+
TypeInheritance provides identification;
|
225
|
+
each FactType occurs at least one time in
|
226
|
+
FactType has Ordinal role played by Concept;
|
227
|
+
each combination Name, Vocabulary occurs at most one time in
|
228
|
+
Name is of Constraint,
|
229
|
+
Vocabulary contains Constraint;
|
230
|
+
each PresenceConstraint occurs at least one time in
|
231
|
+
PresenceConstraint has min-Frequency,
|
232
|
+
PresenceConstraint has max-Frequency,
|
233
|
+
PresenceConstraint is mandatory;
|
234
|
+
each RoleSequence occurs at least one time in
|
235
|
+
RoleSequence in Ordinal position includes Role;
|
236
|
+
each ValueRange occurs at least one time in
|
237
|
+
ValueRange has minimum-Bound,
|
238
|
+
ValueRange has maximum-Bound;
|
@@ -0,0 +1,19 @@
|
|
1
|
+
vocabulary MultiInheritance;
|
2
|
+
|
3
|
+
/*
|
4
|
+
* Value Types
|
5
|
+
*/
|
6
|
+
EmployeeID is defined as AutoCounter();
|
7
|
+
PersonName is defined as VariableLengthText();
|
8
|
+
|
9
|
+
/*
|
10
|
+
* Entity Types
|
11
|
+
*/
|
12
|
+
Person is identified by its Name;
|
13
|
+
|
14
|
+
Australian is a kind of Person;
|
15
|
+
|
16
|
+
Employee is a kind of Person identified by its ID;
|
17
|
+
|
18
|
+
AustralianEmployee is a kind of Employee, Australian;
|
19
|
+
|
@@ -0,0 +1,47 @@
|
|
1
|
+
vocabulary OilSupply;
|
2
|
+
|
3
|
+
/*
|
4
|
+
* Value Types
|
5
|
+
*/
|
6
|
+
Cost is defined as Money();
|
7
|
+
MonthCode is defined as FixedLengthText();
|
8
|
+
ProductName is defined as VariableLengthText();
|
9
|
+
Quantity is defined as UnsignedInteger(32);
|
10
|
+
RefineryName is defined as VariableLengthText(80);
|
11
|
+
RegionName is defined as VariableLengthText();
|
12
|
+
Season is defined as VariableLengthText(6) restricted to {'Spring', 'Summer', 'Autumn', 'Winter'};
|
13
|
+
TransportMethod is defined as VariableLengthText() restricted to {'Rail', 'Road', 'Sea'};
|
14
|
+
YearNr is defined as SignedInteger(32);
|
15
|
+
|
16
|
+
/*
|
17
|
+
* Entity Types
|
18
|
+
*/
|
19
|
+
Month is identified by its Code;
|
20
|
+
Month is in one Season;
|
21
|
+
|
22
|
+
Product is identified by its Name;
|
23
|
+
AcceptableSubstitutes is where
|
24
|
+
Product may be substituted by alternate-Product in Season [acyclic, intransitive],
|
25
|
+
alternate-Product is an acceptable substitute for Product in Season;
|
26
|
+
|
27
|
+
Refinery is identified by its Name;
|
28
|
+
|
29
|
+
Region is identified by its Name;
|
30
|
+
TransportRoute is where
|
31
|
+
TransportMethod transportation is available from Refinery to Region,
|
32
|
+
TransportMethod transportation is available to Region from Refinery;
|
33
|
+
TransportRoute incurs at most one Cost per kl;
|
34
|
+
|
35
|
+
Year is identified by its Nr;
|
36
|
+
|
37
|
+
SupplyPeriod is identified by Month and Year where
|
38
|
+
SupplyPeriod is in one Month,
|
39
|
+
SupplyPeriod is in one Year;
|
40
|
+
ProductionForecast is where
|
41
|
+
Refinery forecasts production of Product in SupplyPeriod;
|
42
|
+
RegionalDemand is where
|
43
|
+
Region will need Product in SupplyPeriod;
|
44
|
+
ProductionForecast predicts at most one Cost;
|
45
|
+
ProductionForecast is for one Quantity;
|
46
|
+
RegionalDemand is for at most one Quantity;
|
47
|
+
|
@@ -0,0 +1,108 @@
|
|
1
|
+
vocabulary Orienteering;
|
2
|
+
|
3
|
+
/*
|
4
|
+
* Value Types
|
5
|
+
*/
|
6
|
+
Accessibility is defined as FixedLengthText(1) restricted to {'A'..'D'};
|
7
|
+
ClubCode is defined as VariableLengthText(6);
|
8
|
+
ClubName is defined as VariableLengthText(32);
|
9
|
+
ControlNumber is defined as UnsignedInteger(32) restricted to {1..1000};
|
10
|
+
Course is defined as VariableLengthText(16) restricted to {'A'..'E', 'PW'};
|
11
|
+
EntryID is defined as AutoCounter();
|
12
|
+
EventID is defined as AutoCounter();
|
13
|
+
EventName is defined as VariableLengthText(50);
|
14
|
+
FamilyName is defined as VariableLengthText(48);
|
15
|
+
Gender is defined as FixedLengthText(1) restricted to {'M', 'F'};
|
16
|
+
GivenName is defined as VariableLengthText(48);
|
17
|
+
Location is defined as VariableLengthText(200);
|
18
|
+
MapID is defined as AutoCounter();
|
19
|
+
MapName is defined as VariableLengthText(80);
|
20
|
+
Number is defined as UnsignedInteger(32) restricted to {1..100};
|
21
|
+
PersonID is defined as AutoCounter();
|
22
|
+
Placing is defined as UnsignedInteger(32);
|
23
|
+
PointValue is defined as UnsignedInteger(32);
|
24
|
+
PostCode is defined as UnsignedInteger(32);
|
25
|
+
PunchID is defined as AutoCounter();
|
26
|
+
Score is defined as SignedInteger(32);
|
27
|
+
ScoringMethod is defined as VariableLengthText(32) restricted to {'Score', 'Scatter', 'Special'};
|
28
|
+
SeriesID is defined as AutoCounter();
|
29
|
+
SeriesName is defined as VariableLengthText(40);
|
30
|
+
StartTime is defined as DateAndTime();
|
31
|
+
Time is defined as DateAndTime();
|
32
|
+
Year is defined as UnsignedInteger(32) restricted to {1900..3000};
|
33
|
+
|
34
|
+
/*
|
35
|
+
* Entity Types
|
36
|
+
*/
|
37
|
+
Club is identified by its Code;
|
38
|
+
ClubName is name of at most one Club,
|
39
|
+
Club is called one ClubName;
|
40
|
+
|
41
|
+
Event is identified by its ID;
|
42
|
+
Club runs Event,
|
43
|
+
Event is run by one Club;
|
44
|
+
Event is called at most one EventName,
|
45
|
+
EventName is name of at most one Event;
|
46
|
+
Event has at most one Number;
|
47
|
+
Event is held on one StartTime;
|
48
|
+
Event starts at one start-Location,
|
49
|
+
Location is where Event starts;
|
50
|
+
EventControl is where
|
51
|
+
Event includes at least one ControlNumber;
|
52
|
+
EventScoringMethod is where
|
53
|
+
ScoringMethod is used for Course of Event,
|
54
|
+
Course of Event uses at most one ScoringMethod;
|
55
|
+
EventControl has at most one PointValue;
|
56
|
+
|
57
|
+
Map is identified by its ID;
|
58
|
+
Club (as Owner) owns Map,
|
59
|
+
Map is owned by one Owner;
|
60
|
+
Map has at most one Accessibility;
|
61
|
+
Map is map for Event,
|
62
|
+
Event uses one Map;
|
63
|
+
Map has one MapName,
|
64
|
+
MapName is of at most one Map;
|
65
|
+
|
66
|
+
Person is identified by its ID;
|
67
|
+
Person is member of at most one Club;
|
68
|
+
Person has one FamilyName,
|
69
|
+
FamilyName is of Person;
|
70
|
+
Person is of at most one Gender;
|
71
|
+
Person has one GivenName,
|
72
|
+
GivenName is name of Person;
|
73
|
+
Person has at most one PostCode;
|
74
|
+
Person was born in at most one birth-Year;
|
75
|
+
Entry is identified by its ID where
|
76
|
+
Person entered Course of Event,
|
77
|
+
Person entered Event in at most one Course;
|
78
|
+
Entry received at most one Score;
|
79
|
+
Entry finished in at most one finish-Placing;
|
80
|
+
|
81
|
+
Punch is identified by its ID;
|
82
|
+
PunchPlacement is where
|
83
|
+
Punch is placed at EventControl;
|
84
|
+
Visit is where
|
85
|
+
Punch was visited by Entry at Time;
|
86
|
+
|
87
|
+
Series is identified by its ID;
|
88
|
+
Event is in at most one Series;
|
89
|
+
Series has one SeriesName (as Name),
|
90
|
+
Name is of at most one Series;
|
91
|
+
|
92
|
+
/*
|
93
|
+
* Constraints:
|
94
|
+
*/
|
95
|
+
Event is in Series
|
96
|
+
if and only if
|
97
|
+
Event has Number;
|
98
|
+
each Event occurs at least one time in
|
99
|
+
Event is called EventName,
|
100
|
+
Event is in Series;
|
101
|
+
each EventControl occurs at least one time in
|
102
|
+
Punch is placed at EventControl;
|
103
|
+
each combination GivenName, FamilyName occurs at most one time in
|
104
|
+
Person has GivenName,
|
105
|
+
Person has FamilyName;
|
106
|
+
each combination Series, Number occurs at most one time in
|
107
|
+
Event is in Series,
|
108
|
+
Event has Number;
|