activefacts 0.8.9 → 0.8.10
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/.gemtest +0 -0
- data/Manifest.txt +28 -33
- data/Rakefile +11 -12
- data/bin/cql +90 -46
- data/examples/CQL/Blog.cql +2 -1
- data/examples/CQL/CompanyDirectorEmployee.cql +2 -2
- data/examples/CQL/Death.cql +1 -1
- data/examples/CQL/Diplomacy.cql +9 -9
- data/examples/CQL/Genealogy.cql +3 -2
- data/examples/CQL/Insurance.cql +10 -7
- data/examples/CQL/JoinEquality.cql +2 -2
- data/examples/CQL/Marriage.cql +1 -1
- data/examples/CQL/Metamodel.cql +73 -53
- data/examples/CQL/MetamodelNext.cql +89 -67
- data/examples/CQL/OneToOnes.cql +2 -2
- data/examples/CQL/ServiceDirector.cql +10 -5
- data/examples/CQL/Supervision.cql +3 -3
- data/examples/CQL/Tests.Test5.Load.cql +1 -1
- data/examples/CQL/Warehousing.cql +4 -2
- data/lib/activefacts/cql/CQLParser.treetop +26 -60
- data/lib/activefacts/cql/Context.treetop +12 -2
- data/lib/activefacts/cql/Expressions.treetop +14 -30
- data/lib/activefacts/cql/FactTypes.treetop +165 -110
- data/lib/activefacts/cql/Language/English.treetop +167 -54
- data/lib/activefacts/cql/LexicalRules.treetop +16 -2
- data/lib/activefacts/cql/{Concepts.treetop → ObjectTypes.treetop} +36 -37
- data/lib/activefacts/cql/Terms.treetop +57 -27
- data/lib/activefacts/cql/ValueTypes.treetop +39 -13
- data/lib/activefacts/cql/compiler.rb +5 -3
- data/lib/activefacts/cql/compiler/{reading.rb → clause.rb} +407 -285
- data/lib/activefacts/cql/compiler/constraint.rb +178 -275
- data/lib/activefacts/cql/compiler/entity_type.rb +73 -64
- data/lib/activefacts/cql/compiler/expression.rb +418 -0
- data/lib/activefacts/cql/compiler/fact.rb +146 -145
- data/lib/activefacts/cql/compiler/fact_type.rb +197 -80
- data/lib/activefacts/cql/compiler/join.rb +159 -0
- data/lib/activefacts/cql/compiler/shared.rb +51 -23
- data/lib/activefacts/cql/compiler/value_type.rb +56 -2
- data/lib/activefacts/cql/parser.rb +15 -4
- data/lib/activefacts/generate/absorption.rb +7 -7
- data/lib/activefacts/generate/cql.rb +100 -37
- data/lib/activefacts/generate/oo.rb +28 -51
- data/lib/activefacts/generate/ordered.rb +60 -36
- data/lib/activefacts/generate/ruby.rb +6 -6
- data/lib/activefacts/generate/sql/server.rb +4 -4
- data/lib/activefacts/input/orm.rb +71 -53
- data/lib/activefacts/persistence.rb +1 -1
- data/lib/activefacts/persistence/columns.rb +27 -23
- data/lib/activefacts/persistence/foreignkey.rb +6 -6
- data/lib/activefacts/persistence/index.rb +17 -17
- data/lib/activefacts/persistence/{concept.rb → object_type.rb} +9 -9
- data/lib/activefacts/persistence/reference.rb +61 -36
- data/lib/activefacts/persistence/tables.rb +61 -59
- data/lib/activefacts/support.rb +54 -29
- data/lib/activefacts/version.rb +1 -1
- data/lib/activefacts/vocabulary/extensions.rb +99 -54
- data/lib/activefacts/vocabulary/metamodel.rb +43 -37
- data/lib/activefacts/vocabulary/verbaliser.rb +134 -109
- data/spec/absorption_spec.rb +8 -8
- data/spec/cql/comparison_spec.rb +91 -0
- data/spec/cql/contractions_spec.rb +251 -0
- data/spec/cql/entity_type_spec.rb +319 -0
- data/spec/cql/expressions_spec.rb +63 -0
- data/spec/cql/fact_type_matching_spec.rb +283 -0
- data/spec/cql/french_spec.rb +21 -0
- data/spec/cql/parser/bad_literals_spec.rb +86 -0
- data/spec/cql/parser/constraints_spec.rb +19 -0
- data/spec/cql/parser/entity_types_spec.rb +106 -0
- data/spec/cql/parser/expressions_spec.rb +179 -0
- data/spec/cql/parser/fact_types_spec.rb +41 -0
- data/spec/cql/parser/literals_spec.rb +312 -0
- data/spec/cql/parser/pragmas_spec.rb +89 -0
- data/spec/cql/parser/value_types_spec.rb +42 -0
- data/spec/cql/role_matching_spec.rb +147 -0
- data/spec/cql/samples_spec.rb +9 -9
- data/spec/cql_cql_spec.rb +1 -1
- data/spec/cql_dm_spec.rb +116 -0
- data/spec/cql_mysql_spec.rb +1 -1
- data/spec/cql_ruby_spec.rb +1 -1
- data/spec/cql_sql_spec.rb +3 -3
- data/spec/cql_symbol_tables_spec.rb +30 -30
- data/spec/cqldump_spec.rb +4 -4
- data/spec/helpers/array_matcher.rb +32 -27
- data/spec/helpers/diff_matcher.rb +6 -26
- data/spec/helpers/file_matcher.rb +41 -32
- data/spec/helpers/parse_to_ast_matcher.rb +76 -0
- data/spec/helpers/string_matcher.rb +32 -31
- data/spec/norma_cql_spec.rb +1 -1
- data/spec/norma_ruby_spec.rb +1 -1
- data/spec/norma_ruby_sql_spec.rb +1 -1
- data/spec/norma_sql_spec.rb +3 -1
- data/spec/norma_tables_spec.rb +1 -1
- data/spec/ruby_api_spec.rb +23 -0
- data/spec/spec_helper.rb +5 -4
- metadata +66 -66
- data/examples/CQL/OrienteeringER.cql +0 -58
- data/lib/activefacts/api.rb +0 -44
- data/lib/activefacts/api/concept.rb +0 -410
- data/lib/activefacts/api/constellation.rb +0 -128
- data/lib/activefacts/api/entity.rb +0 -256
- data/lib/activefacts/api/instance.rb +0 -60
- data/lib/activefacts/api/instance_index.rb +0 -80
- data/lib/activefacts/api/numeric.rb +0 -167
- data/lib/activefacts/api/role.rb +0 -80
- data/lib/activefacts/api/role_proxy.rb +0 -70
- data/lib/activefacts/api/role_values.rb +0 -117
- data/lib/activefacts/api/standard_types.rb +0 -87
- data/lib/activefacts/api/support.rb +0 -65
- data/lib/activefacts/api/value.rb +0 -135
- data/lib/activefacts/api/vocabulary.rb +0 -82
- data/spec/api/autocounter.rb +0 -82
- data/spec/api/constellation.rb +0 -130
- data/spec/api/entity_type.rb +0 -103
- data/spec/api/instance.rb +0 -461
- data/spec/api/roles.rb +0 -124
- data/spec/api/value_type.rb +0 -112
- data/spec/api_spec.rb +0 -13
- data/spec/cql/matching_spec.rb +0 -517
- data/spec/cql/unit_spec.rb +0 -394
- data/spec/spec.opts +0 -1
data/examples/CQL/Genealogy.cql
CHANGED
|
@@ -55,6 +55,7 @@ Occupation is of Person,
|
|
|
55
55
|
Person is of at most one Gender;
|
|
56
56
|
Person is called at most one family-Name,
|
|
57
57
|
family-Name is of Person;
|
|
58
|
+
given-Name is name of Person; // Avoid ambiguity; this is a new fact type
|
|
58
59
|
given-Name is name of Person,
|
|
59
60
|
Person is called at most one given-Name;
|
|
60
61
|
preferred-Picture is of Person,
|
|
@@ -87,8 +88,8 @@ Participation is where
|
|
|
87
88
|
* Constraints:
|
|
88
89
|
*/
|
|
89
90
|
each Event Date occurs at least one time in
|
|
90
|
-
Event Date wasnt before min Year,
|
|
91
|
-
Event Date wasnt after max Year,
|
|
91
|
+
Event Date wasnt before min Year(2),
|
|
92
|
+
Event Date wasnt after max Year(1),
|
|
92
93
|
Event Date occurred in Month,
|
|
93
94
|
Event Date occurred on Day;
|
|
94
95
|
each Event occurs at least one time in
|
data/examples/CQL/Insurance.cql
CHANGED
|
@@ -70,7 +70,7 @@ Cover Type is identified by its Code;
|
|
|
70
70
|
Cover Type has one Cover Type Name,
|
|
71
71
|
Cover Type Name is of at most one Cover Type;
|
|
72
72
|
|
|
73
|
-
Demerit Kind is identified by its Name
|
|
73
|
+
Demerit Kind is independent identified by its Name;
|
|
74
74
|
|
|
75
75
|
Incident is identified by Claim where
|
|
76
76
|
Claim concerns at most one Incident,
|
|
@@ -101,8 +101,11 @@ Person is a kind of Party;
|
|
|
101
101
|
Person has at most one Occupation;
|
|
102
102
|
Person has one Title;
|
|
103
103
|
Person has at most one birth-Date;
|
|
104
|
-
Person has one family-Name
|
|
105
|
-
|
|
104
|
+
Person has one family-Name,
|
|
105
|
+
family-Name is of Person;
|
|
106
|
+
Person has given-Name; // Avoid ambiguity; this is a new fact type
|
|
107
|
+
Person has one given-Name,
|
|
108
|
+
given-Name is of Person;
|
|
106
109
|
|
|
107
110
|
Phone is identified by its Nr;
|
|
108
111
|
|
|
@@ -125,7 +128,7 @@ Prod Description is of at most one Product,
|
|
|
125
128
|
|
|
126
129
|
Registration is identified by its Nr;
|
|
127
130
|
|
|
128
|
-
State is identified by its Code
|
|
131
|
+
State is independent identified by its Code;
|
|
129
132
|
State Name is of at most one State,
|
|
130
133
|
State has at most one State Name;
|
|
131
134
|
|
|
@@ -301,9 +304,9 @@ Party is a Company that has contact Person
|
|
|
301
304
|
if and only if
|
|
302
305
|
Party is a company;
|
|
303
306
|
each Contact Methods occurs at least one time in
|
|
304
|
-
Contact Methods includes mobile Phone,
|
|
305
|
-
Contact Methods includes home Phone,
|
|
306
|
-
Contact Methods includes business Phone,
|
|
307
|
+
Contact Methods includes mobile Phone(3),
|
|
308
|
+
Contact Methods includes home Phone(2),
|
|
309
|
+
Contact Methods includes business Phone(1),
|
|
307
310
|
Contact Methods includes Email;
|
|
308
311
|
each combination Policy, Claim Sequence occurs at most one time in
|
|
309
312
|
Claim is on Policy,
|
|
@@ -14,10 +14,10 @@ Venue Id is written as Auto Counter;
|
|
|
14
14
|
*/
|
|
15
15
|
Event is identified by its Id;
|
|
16
16
|
|
|
17
|
-
Venue is identified by its Id
|
|
17
|
+
Venue is independent identified by its Id;
|
|
18
18
|
Event is held at one Venue;
|
|
19
19
|
|
|
20
|
-
Seat is identified by Venue and Reserve and Row and Number
|
|
20
|
+
Seat is independent identified by Venue and Reserve and Row and Number where
|
|
21
21
|
Seat is at one Venue,
|
|
22
22
|
Seat is in one Reserve,
|
|
23
23
|
Seat is in one Row,
|
data/examples/CQL/Marriage.cql
CHANGED
|
@@ -8,7 +8,7 @@ Name is written as String;
|
|
|
8
8
|
/*
|
|
9
9
|
* Entity Types
|
|
10
10
|
*/
|
|
11
|
-
Person is identified by given-Name and family-Name
|
|
11
|
+
Person is independent identified by given-Name and family-Name where
|
|
12
12
|
Person has one given-Name,
|
|
13
13
|
Person has one family-Name;
|
|
14
14
|
|
data/examples/CQL/Metamodel.cql
CHANGED
|
@@ -12,6 +12,7 @@ Context Note Kind is written as String restricted to {'as_opposed_to', 'because'
|
|
|
12
12
|
Date is written as Date;
|
|
13
13
|
Denominator is written as Unsigned Integer(32);
|
|
14
14
|
Discussion is written as String;
|
|
15
|
+
Disjunction Id is written as Auto Counter;
|
|
15
16
|
Display Role Names Setting is written as String restricted to {'false', 'true'};
|
|
16
17
|
Enforcement Code is written as String(16);
|
|
17
18
|
Ephemera URL is written as String;
|
|
@@ -35,6 +36,7 @@ Scale is written as Unsigned Integer(32);
|
|
|
35
36
|
Shape Id is written as Auto Counter;
|
|
36
37
|
Subscript is written as Unsigned Integer(16);
|
|
37
38
|
Text is written as String(256);
|
|
39
|
+
Transaction Timing is written as String restricted to {'assert', 'commit'};
|
|
38
40
|
Unit Id is written as Auto Counter;
|
|
39
41
|
X is written as Signed Integer(32);
|
|
40
42
|
Y is written as Signed Integer(32);
|
|
@@ -61,6 +63,8 @@ Context Note has one Context Note Kind,
|
|
|
61
63
|
Context Note has one Discussion,
|
|
62
64
|
Discussion is for Context Note;
|
|
63
65
|
|
|
66
|
+
Disjunction is identified by its Id;
|
|
67
|
+
|
|
64
68
|
Enforcement is identified by Constraint where
|
|
65
69
|
Constraint requires at most one Enforcement,
|
|
66
70
|
Enforcement applies to one Constraint;
|
|
@@ -89,6 +93,8 @@ Join Node is identified by Join and Ordinal where
|
|
|
89
93
|
Join Node has one Ordinal position;
|
|
90
94
|
Join Node has at most one Subscript,
|
|
91
95
|
Subscript is of Join Node;
|
|
96
|
+
Join Node has at most one role-Name,
|
|
97
|
+
Name is of Join Node;
|
|
92
98
|
|
|
93
99
|
Position is identified by X and Y where
|
|
94
100
|
Position is at one X,
|
|
@@ -112,11 +118,11 @@ Ring Constraint is of one Ring Type;
|
|
|
112
118
|
|
|
113
119
|
Role is where
|
|
114
120
|
Fact Type has at least one Ordinal role;
|
|
115
|
-
Implicit Fact Type is implied by one Role,
|
|
116
|
-
Role implies at most one Implicit Fact Type;
|
|
117
|
-
Ring Constraint has at most one other-Role
|
|
118
|
-
Ring Constraint has other-Role,
|
|
121
|
+
Implicit Fact Type is implied by one Role (as Implying Role),
|
|
122
|
+
Implying Role implies at most one Implicit Fact Type;
|
|
123
|
+
Ring Constraint has at most one other-Role,
|
|
119
124
|
other-Role is of Ring Constraint;
|
|
125
|
+
Role is of Ring Constraint; // Avoid ambiguity; this is a new fact type
|
|
120
126
|
Role is of Ring Constraint,
|
|
121
127
|
Ring Constraint has at most one Role;
|
|
122
128
|
Role has at most one role-Name,
|
|
@@ -186,20 +192,6 @@ Bound is identified by Value and Bound is inclusive where
|
|
|
186
192
|
Value is of at least one Bound,
|
|
187
193
|
Bound is inclusive;
|
|
188
194
|
|
|
189
|
-
Concept is identified by Vocabulary and Name where
|
|
190
|
-
Concept belongs to one Vocabulary,
|
|
191
|
-
Vocabulary contains Concept,
|
|
192
|
-
Concept is called one Name;
|
|
193
|
-
Concept has Context Note,
|
|
194
|
-
Context Note applies to at most one Concept;
|
|
195
|
-
Concept uses at most one Pronoun;
|
|
196
|
-
Concept plays Role,
|
|
197
|
-
Role is played by one Concept;
|
|
198
|
-
Concept is independent;
|
|
199
|
-
Instance is of one Concept;
|
|
200
|
-
Join Node is for one Concept,
|
|
201
|
-
Concept is referenced in Join Node;
|
|
202
|
-
|
|
203
195
|
Constraint Shape is a kind of Shape;
|
|
204
196
|
Constraint Shape is for one Constraint;
|
|
205
197
|
|
|
@@ -224,35 +216,48 @@ Diagram is identified by Vocabulary and Name where
|
|
|
224
216
|
Shape is in one Diagram,
|
|
225
217
|
Diagram includes Shape;
|
|
226
218
|
|
|
227
|
-
Entity Type is a kind of Concept;
|
|
228
|
-
Entity Type nests at most one Fact Type,
|
|
229
|
-
Fact Type is nested as at most one Entity Type;
|
|
230
|
-
|
|
231
219
|
Fact Type Shape is a kind of Shape;
|
|
232
220
|
Fact Type Shape has at most one Display Role Names Setting;
|
|
233
221
|
Fact Type Shape is for one Fact Type,
|
|
234
222
|
Fact Type has Fact Type Shape;
|
|
235
223
|
Fact Type Shape has at most one Rotation Setting;
|
|
236
224
|
|
|
237
|
-
Join Role is where
|
|
225
|
+
Join Role is independent where
|
|
238
226
|
Join Node includes at least one Role,
|
|
239
227
|
Role connects to Join Node;
|
|
240
228
|
|
|
241
229
|
Join Step is identified by input-Join Role and output-Join Role where
|
|
242
230
|
Join Step has one input-Join Role,
|
|
243
231
|
Join Step has one output-Join Role;
|
|
232
|
+
Join Step falls under at most one Disjunction,
|
|
233
|
+
Disjunction covers at least one Join Step;
|
|
244
234
|
Join Step traverses one Fact Type,
|
|
245
235
|
Fact Type directs Join Step;
|
|
246
|
-
Join Step involves incidental-Join Role
|
|
236
|
+
Join Step involves incidental-Join Role,
|
|
237
|
+
Join Role is incidentally involved in at most one Join Step;
|
|
247
238
|
is anti Join Step;
|
|
248
239
|
Join Step is outer;
|
|
249
240
|
|
|
250
241
|
Model Note Shape is a kind of Shape;
|
|
251
242
|
Model Note Shape is for one Context Note;
|
|
252
243
|
|
|
244
|
+
Object Type is identified by Vocabulary and Name where
|
|
245
|
+
Object Type belongs to one Vocabulary,
|
|
246
|
+
Vocabulary contains Object Type,
|
|
247
|
+
Object Type is called one Name;
|
|
248
|
+
Instance is of one Object Type;
|
|
249
|
+
Join Node is for one Object Type,
|
|
250
|
+
Object Type is referenced in Join Node;
|
|
251
|
+
Object Type has Context Note,
|
|
252
|
+
Context Note applies to at most one Object Type;
|
|
253
|
+
Object Type uses at most one Pronoun;
|
|
254
|
+
Object Type plays Role,
|
|
255
|
+
Role is played by one Object Type;
|
|
256
|
+
Object Type is independent;
|
|
257
|
+
|
|
253
258
|
Object Type Shape is a kind of Shape;
|
|
254
|
-
Object Type Shape is for one
|
|
255
|
-
|
|
259
|
+
Object Type Shape is for one Object Type,
|
|
260
|
+
Object Type has Object Type Shape;
|
|
256
261
|
Object Type Shape has expanded reference mode;
|
|
257
262
|
|
|
258
263
|
Objectified Fact Type Name Shape is a kind of Shape identified by Fact Type Shape where
|
|
@@ -310,13 +315,6 @@ Set Equality Constraint is a kind of Set Comparison Constraint;
|
|
|
310
315
|
Set Exclusion Constraint is a kind of Set Comparison Constraint;
|
|
311
316
|
Set Exclusion Constraint is mandatory;
|
|
312
317
|
|
|
313
|
-
Type Inheritance is a kind of Fact Type identified by Subtype and Supertype where
|
|
314
|
-
Entity Type (as Subtype) is subtype of super-Entity Type (as Supertype) [acyclic],
|
|
315
|
-
Supertype is supertype of Subtype;
|
|
316
|
-
Assimilation applies to Type Inheritance,
|
|
317
|
-
Type Inheritance uses at most one Assimilation;
|
|
318
|
-
Type Inheritance provides identification;
|
|
319
|
-
|
|
320
318
|
Value Constraint Shape is a kind of Constraint Shape;
|
|
321
319
|
Role Display has at most one Value Constraint Shape,
|
|
322
320
|
Value Constraint Shape is for at most one Role Display;
|
|
@@ -327,7 +325,7 @@ Value Range is identified by minimum-Bound and maximum-Bound where
|
|
|
327
325
|
Value Range has at most one minimum-Bound,
|
|
328
326
|
Value Range has at most one maximum-Bound;
|
|
329
327
|
|
|
330
|
-
Value Type is a kind of
|
|
328
|
+
Value Type is a kind of Object Type;
|
|
331
329
|
Value Type has at most one Length,
|
|
332
330
|
Length is of Value Type;
|
|
333
331
|
Value Type has at most one Scale,
|
|
@@ -335,34 +333,52 @@ Value Type has at most one Scale,
|
|
|
335
333
|
Value Type is of at most one Unit;
|
|
336
334
|
Value Type has at most one Value Constraint,
|
|
337
335
|
Value Constraint constrains at most one Value Type;
|
|
336
|
+
Value Type has at most one auto- assigned Transaction Timing;
|
|
338
337
|
Value Type is subtype of at most one super-Value Type (as Supertype) [acyclic],
|
|
339
338
|
Supertype is supertype of Value Type;
|
|
340
|
-
Value Type is auto-assigned;
|
|
341
339
|
|
|
342
340
|
Allowed Range is where
|
|
343
341
|
Value Constraint allows at least one Value Range;
|
|
344
342
|
|
|
345
|
-
|
|
343
|
+
Entity Type is a kind of Object Type;
|
|
344
|
+
Entity Type nests at most one Fact Type,
|
|
345
|
+
Fact Type is nested as at most one Entity Type;
|
|
346
|
+
|
|
347
|
+
Facet is where
|
|
348
|
+
Value Type has facet called Name,
|
|
349
|
+
Name is a facet of Value Type;
|
|
350
|
+
|
|
351
|
+
Facet Value is where
|
|
352
|
+
Value Type defines Facet as having one Value,
|
|
353
|
+
Value for Facet applies to Value Type;
|
|
346
354
|
|
|
347
|
-
|
|
348
|
-
Name is a parameter of Value Type,
|
|
349
|
-
Value Type has parameter called Name;
|
|
355
|
+
Implicit Boolean Value Type is a kind of Value Type;
|
|
350
356
|
|
|
351
|
-
|
|
352
|
-
|
|
357
|
+
Type Inheritance is a kind of Fact Type identified by Subtype and Supertype where
|
|
358
|
+
Entity Type (as Subtype) is subtype of super-Entity Type (as Supertype) [acyclic, intransitive],
|
|
359
|
+
Supertype is supertype of Subtype;
|
|
360
|
+
Assimilation applies to Type Inheritance,
|
|
361
|
+
Type Inheritance uses at most one Assimilation;
|
|
362
|
+
Type Inheritance provides identification;
|
|
353
363
|
|
|
354
364
|
/*
|
|
355
365
|
* Constraints:
|
|
356
366
|
*/
|
|
357
|
-
either Concept is an Entity Type or Concept is a Value Type but not both;
|
|
358
367
|
for each Constraint exactly one of these holds:
|
|
359
368
|
Constraint is a Presence Constraint,
|
|
360
369
|
Constraint is a Set Constraint,
|
|
361
370
|
Constraint is a Ring Constraint;
|
|
362
371
|
for each Context Note exactly one of these holds:
|
|
363
|
-
Context Note applies to
|
|
372
|
+
Context Note applies to Object Type,
|
|
364
373
|
Context Note applies to Fact Type,
|
|
365
374
|
Context Note applies to Constraint;
|
|
375
|
+
either Object Type is an Entity Type or Object Type is a Value Type but not both;
|
|
376
|
+
for each Role Sequence exactly one of these holds:
|
|
377
|
+
Role Sequence is for Reading,
|
|
378
|
+
Presence Constraint covers Role Sequence,
|
|
379
|
+
Subset Constraint(1) covers subset-Role Sequence,
|
|
380
|
+
Subset Constraint(2) covers superset-Role Sequence,
|
|
381
|
+
Role Sequence is Ordinal in Set Comparison Constraint;
|
|
366
382
|
either Set Comparison Constraint is a Set Exclusion Constraint or Set Comparison Constraint is a Set Equality Constraint but not both;
|
|
367
383
|
either Set Constraint is a Set Comparison Constraint or Set Constraint is a Subset Constraint but not both;
|
|
368
384
|
either Unit uses coefficient from Ephemera URL or Unit has Coefficient but not both;
|
|
@@ -372,12 +388,18 @@ either Value Constraint constrains Value Type or Value Constraint applies to Rol
|
|
|
372
388
|
for each Instance at most one of these holds:
|
|
373
389
|
Instance has Value,
|
|
374
390
|
Instance objectifies Fact;
|
|
375
|
-
Join
|
|
391
|
+
for each Join Role at most one of these holds:
|
|
392
|
+
Join Step(1) has input-Join Role,
|
|
393
|
+
Join Role is incidentally involved in Join Step;
|
|
394
|
+
for each Join Role at most one of these holds:
|
|
395
|
+
Join Step(1) has output-Join Role,
|
|
396
|
+
Join Role is incidentally involved in Join Step;
|
|
397
|
+
Join Node is for Object Type that plays Role
|
|
376
398
|
if and only if
|
|
377
399
|
Join Node includes Role;
|
|
378
|
-
Role Value is of Instance that is of
|
|
400
|
+
Role Value is of Instance that is of Object Type
|
|
379
401
|
if and only if
|
|
380
|
-
Role Value is of Role that is played by
|
|
402
|
+
Role Value is of Role that is played by Object Type;
|
|
381
403
|
Role Value fulfils Fact that is of Fact Type
|
|
382
404
|
if and only if
|
|
383
405
|
Role Value is of Role (where Fact Type has Ordinal role);
|
|
@@ -389,14 +411,12 @@ either Agreement was reached by Agent or Agreement was on Date;
|
|
|
389
411
|
each combination Diagram, Position occurs at most one time in
|
|
390
412
|
Shape is in Diagram,
|
|
391
413
|
Shape is at Position;
|
|
392
|
-
each combination Entity Type, Type Inheritance occurs at most one time in
|
|
393
|
-
Entity Type is subtype of super Entity Type,
|
|
414
|
+
each combination Entity Type(1), Type Inheritance occurs at most one time in
|
|
415
|
+
Entity Type(1) is subtype of super Entity Type(2),
|
|
394
416
|
Type Inheritance provides identification;
|
|
395
|
-
each Join Role occurs at most one time in
|
|
396
|
-
Join Step involves incidental Join Role;
|
|
397
417
|
each Presence Constraint occurs at least one time in
|
|
398
|
-
Presence Constraint has min Frequency,
|
|
399
|
-
Presence Constraint has max Frequency,
|
|
418
|
+
Presence Constraint has min Frequency(2),
|
|
419
|
+
Presence Constraint has max Frequency(1),
|
|
400
420
|
Presence Constraint is mandatory;
|
|
401
421
|
each Role Ref occurs at most one time in
|
|
402
422
|
Join Role projects Role Ref;
|
|
@@ -404,7 +424,7 @@ each Role Sequence occurs at least one time in
|
|
|
404
424
|
Role Sequence in Ordinal position includes Role;
|
|
405
425
|
each Set Comparison Constraint occurs at least 2 times in
|
|
406
426
|
Set Comparison Constraint has in Ordinal position Role Sequence;
|
|
407
|
-
either Value Range has minimum Bound or Value Range has maximum Bound;
|
|
427
|
+
either Value Range has minimum Bound(2) or Value Range has maximum Bound(1);
|
|
408
428
|
each combination Vocabulary, Name occurs at most one time in
|
|
409
429
|
Constraint belongs to Vocabulary,
|
|
410
430
|
Constraint is called Name;
|
|
@@ -6,7 +6,6 @@ vocabulary Metamodel;
|
|
|
6
6
|
Adjective is written as String(64);
|
|
7
7
|
Agent Name is written as String;
|
|
8
8
|
Assimilation is written as String restricted to {'partitioned', 'separate'};
|
|
9
|
-
Context Note Id is written as Auto Counter;
|
|
10
9
|
Context Note Kind is written as String restricted to {'as_opposed_to', 'because', 'so_that', 'to_avoid'};
|
|
11
10
|
Date is written as Date;
|
|
12
11
|
Denominator is written as Unsigned Integer(32);
|
|
@@ -15,11 +14,9 @@ Display Role Names Setting is written as String restricted to {'false', 'true'};
|
|
|
15
14
|
Enforcement Code is written as String(16);
|
|
16
15
|
Ephemera URL is written as String;
|
|
17
16
|
Exponent is written as Signed Integer(16);
|
|
18
|
-
Fact Id is written as Auto Counter;
|
|
19
17
|
Frequency is written as Unsigned Integer(32);
|
|
20
18
|
GUID is written as String;
|
|
21
|
-
|
|
22
|
-
Join Id is written as Auto Counter;
|
|
19
|
+
Language Code is written as Char(3);
|
|
23
20
|
Length is written as Unsigned Integer(32);
|
|
24
21
|
Literal is written as String;
|
|
25
22
|
Name is written as String(64);
|
|
@@ -28,13 +25,12 @@ Offset is written as Decimal;
|
|
|
28
25
|
Ordinal is written as Unsigned Integer(16);
|
|
29
26
|
Pronoun is written as String(20) restricted to {'feminine', 'masculine', 'neuter', 'personal'};
|
|
30
27
|
Ring Type is written as String;
|
|
31
|
-
Role Sequence Id is written as Auto Counter;
|
|
32
28
|
Rotation Setting is written as String restricted to {'left', 'right'};
|
|
33
29
|
Scale is written as Unsigned Integer(32);
|
|
34
|
-
|
|
35
|
-
Subscript is written as String;
|
|
30
|
+
Subscript is written as Unsigned Integer(16);
|
|
36
31
|
Text is written as String(256);
|
|
37
|
-
|
|
32
|
+
Transaction Timing is written as String restricted to {'assert', 'commit'};
|
|
33
|
+
Unit Code is written as Char;
|
|
38
34
|
X is written as Signed Integer(32);
|
|
39
35
|
Y is written as Signed Integer(32);
|
|
40
36
|
|
|
@@ -52,11 +48,13 @@ Concept is identified by GUID where
|
|
|
52
48
|
Concept has one GUID,
|
|
53
49
|
GUID is of at most one Concept;
|
|
54
50
|
|
|
55
|
-
Constraint is a kind of Concept
|
|
51
|
+
Constraint is a kind of Concept;
|
|
56
52
|
Name is of Constraint,
|
|
57
53
|
Constraint is called at most one Name;
|
|
58
54
|
|
|
59
|
-
Context Note is identified by
|
|
55
|
+
Context Note is identified by GUID where
|
|
56
|
+
Context Note has one GUID,
|
|
57
|
+
GUID is of at most one Context Note;
|
|
60
58
|
Concept has Context Note,
|
|
61
59
|
Context Note applies to at most one Concept;
|
|
62
60
|
Context Note has one Context Note Kind,
|
|
@@ -71,18 +69,24 @@ Enforcement notifies at most one Agent;
|
|
|
71
69
|
Enforcement has one Enforcement Code,
|
|
72
70
|
Enforcement Code is of Enforcement;
|
|
73
71
|
|
|
74
|
-
Fact is identified by
|
|
72
|
+
Fact is identified by GUID where
|
|
73
|
+
Fact has one GUID,
|
|
74
|
+
GUID is of at most one Fact;
|
|
75
75
|
|
|
76
|
-
Fact Type is a kind of Concept
|
|
76
|
+
Fact Type is a kind of Concept;
|
|
77
77
|
Fact is of one Fact Type;
|
|
78
78
|
|
|
79
79
|
Implicit Fact Type is a kind of Fact Type;
|
|
80
80
|
|
|
81
|
-
Instance is identified by
|
|
81
|
+
Instance is identified by GUID where
|
|
82
|
+
Instance has one GUID,
|
|
83
|
+
GUID is of at most one Instance;
|
|
82
84
|
Instance objectifies at most one Fact,
|
|
83
85
|
Fact is objectified as at most one Instance;
|
|
84
86
|
|
|
85
|
-
Join is identified by
|
|
87
|
+
Join is identified by GUID where
|
|
88
|
+
Join has one GUID,
|
|
89
|
+
GUID is of at most one Join;
|
|
86
90
|
|
|
87
91
|
Join Node is identified by Join and Ordinal where
|
|
88
92
|
Join includes Join Node,
|
|
@@ -90,8 +94,12 @@ Join Node is identified by Join and Ordinal where
|
|
|
90
94
|
Join Node has one Ordinal position;
|
|
91
95
|
Join Node has at most one Subscript,
|
|
92
96
|
Subscript is of Join Node;
|
|
97
|
+
Join Node has at most one role-Name,
|
|
98
|
+
Name is of Join Node;
|
|
93
99
|
|
|
94
|
-
|
|
100
|
+
Language is identified by its Code;
|
|
101
|
+
|
|
102
|
+
Object Type is a kind of Concept;
|
|
95
103
|
Instance is of one Object Type;
|
|
96
104
|
Join Node is for one Object Type,
|
|
97
105
|
Object Type is referenced in Join Node;
|
|
@@ -118,19 +126,21 @@ Reading has one Text;
|
|
|
118
126
|
Ring Constraint is a kind of Constraint;
|
|
119
127
|
Ring Constraint is of one Ring Type;
|
|
120
128
|
|
|
121
|
-
Role is a kind of Concept
|
|
129
|
+
Role is a kind of Concept where
|
|
122
130
|
Fact Type has at least one Ordinal role;
|
|
123
|
-
Implicit Fact Type is implied by one Role,
|
|
124
|
-
Role implies at most one Implicit Fact Type;
|
|
131
|
+
Implicit Fact Type is implied by one Role (as Implying Role),
|
|
132
|
+
Implying Role implies at most one Implicit Fact Type;
|
|
125
133
|
Object Type plays Role,
|
|
126
134
|
Role is played by one Object Type;
|
|
127
|
-
Ring Constraint has at most one other-Role;
|
|
128
135
|
Ring Constraint has at most one other-Role,
|
|
129
136
|
other-Role is of Ring Constraint;
|
|
137
|
+
Role is of Ring Constraint; // Avoid ambiguity; this is a new fact type
|
|
130
138
|
Role is of Ring Constraint,
|
|
131
139
|
Ring Constraint has at most one Role;
|
|
132
140
|
|
|
133
|
-
Role Sequence is identified by
|
|
141
|
+
Role Sequence is identified by GUID where
|
|
142
|
+
Role Sequence has one GUID,
|
|
143
|
+
GUID is of at most one Role Sequence;
|
|
134
144
|
Presence Constraint covers one Role Sequence;
|
|
135
145
|
Reading is in one Role Sequence,
|
|
136
146
|
Role Sequence is for Reading;
|
|
@@ -145,7 +155,9 @@ Role Value is of one Role;
|
|
|
145
155
|
|
|
146
156
|
Set Constraint is a kind of Constraint;
|
|
147
157
|
|
|
148
|
-
Shape is identified by
|
|
158
|
+
Shape is identified by GUID where
|
|
159
|
+
Shape has one GUID,
|
|
160
|
+
GUID is of at most one Shape;
|
|
149
161
|
Shape is at at most one Position;
|
|
150
162
|
Shape is expanded;
|
|
151
163
|
|
|
@@ -153,7 +165,11 @@ Subset Constraint is a kind of Set Constraint;
|
|
|
153
165
|
Subset Constraint covers one subset-Role Sequence;
|
|
154
166
|
Subset Constraint covers one superset-Role Sequence;
|
|
155
167
|
|
|
156
|
-
|
|
168
|
+
Topic is identified by Name where
|
|
169
|
+
Topic has one Name,
|
|
170
|
+
Name is of at most one Topic;
|
|
171
|
+
|
|
172
|
+
Unit is identified by its Code;
|
|
157
173
|
Ephemera URL provides Unit coefficient,
|
|
158
174
|
Unit uses coefficient from at most one Ephemera URL;
|
|
159
175
|
Name is of Unit,
|
|
@@ -169,7 +185,8 @@ Value is identified by Literal and Value is a string and Unit where
|
|
|
169
185
|
Value is a string,
|
|
170
186
|
Value is in at most one Unit,
|
|
171
187
|
Unit is of Value;
|
|
172
|
-
Instance has at most one Value
|
|
188
|
+
Instance has at most one Value,
|
|
189
|
+
Value is of Instance;
|
|
173
190
|
Join Node has at most one Value;
|
|
174
191
|
|
|
175
192
|
Value Constraint is a kind of Constraint;
|
|
@@ -184,11 +201,15 @@ Value Type has at most one Scale,
|
|
|
184
201
|
Value Type is of at most one Unit;
|
|
185
202
|
Value Type has at most one Value Constraint,
|
|
186
203
|
Value Constraint constrains at most one Value Type;
|
|
204
|
+
Value Type has at most one auto- assigned Transaction Timing;
|
|
187
205
|
Value Type is subtype of at most one super-Value Type (as Supertype) [acyclic],
|
|
188
206
|
Supertype is supertype of Value Type;
|
|
189
207
|
|
|
190
|
-
Vocabulary is
|
|
191
|
-
|
|
208
|
+
Vocabulary is where
|
|
209
|
+
Topic is described in Language,
|
|
210
|
+
Language describes Topic;
|
|
211
|
+
Reading is for at most one Vocabulary,
|
|
212
|
+
Vocabulary contains Reading;
|
|
192
213
|
Vocabulary contains Constraint,
|
|
193
214
|
Constraint belongs to at most one Vocabulary;
|
|
194
215
|
Vocabulary includes Unit,
|
|
@@ -230,8 +251,17 @@ Shape is in one Diagram,
|
|
|
230
251
|
Diagram includes Shape;
|
|
231
252
|
|
|
232
253
|
Entity Type is a kind of Object Type;
|
|
233
|
-
Entity Type
|
|
234
|
-
Fact Type is
|
|
254
|
+
Entity Type objectifies at most one Fact Type,
|
|
255
|
+
Fact Type is objectified as at most one Entity Type;
|
|
256
|
+
|
|
257
|
+
Facet is where
|
|
258
|
+
Value Type has facet called Name,
|
|
259
|
+
Name is a facet of Value Type;
|
|
260
|
+
Facet has values of at most one Value Type;
|
|
261
|
+
|
|
262
|
+
Facet Value is where
|
|
263
|
+
Value Type defines Facet as having one Value,
|
|
264
|
+
Value for Facet applies to Value Type;
|
|
235
265
|
|
|
236
266
|
Fact Type Shape is a kind of Shape;
|
|
237
267
|
Fact Type Shape has at most one Display Role Names Setting;
|
|
@@ -239,10 +269,10 @@ Fact Type Shape is for one Fact Type,
|
|
|
239
269
|
Fact Type has Fact Type Shape;
|
|
240
270
|
Fact Type Shape has at most one Rotation Setting;
|
|
241
271
|
|
|
242
|
-
|
|
272
|
+
Implicit Boolean Value Type is a kind of Value Type;
|
|
243
273
|
|
|
244
|
-
Join Role is where
|
|
245
|
-
Join Node includes Role,
|
|
274
|
+
Join Role is independent where
|
|
275
|
+
Join Node includes at least one Role,
|
|
246
276
|
Role connects to Join Node;
|
|
247
277
|
|
|
248
278
|
Join Step is identified by input-Join Role and output-Join Role where
|
|
@@ -250,6 +280,8 @@ Join Step is identified by input-Join Role and output-Join Role where
|
|
|
250
280
|
Join Step has one output-Join Role;
|
|
251
281
|
Join Step traverses one Fact Type,
|
|
252
282
|
Fact Type directs Join Step;
|
|
283
|
+
Join Step involves incidental-Join Role,
|
|
284
|
+
Join Role is incidentally involved in at most one Join Step;
|
|
253
285
|
is anti Join Step;
|
|
254
286
|
Join Step is outer;
|
|
255
287
|
|
|
@@ -265,13 +297,9 @@ Objectified Fact Type Name Shape is a kind of Shape identified by Fact Type Shap
|
|
|
265
297
|
Objectified Fact Type Name Shape is for one Fact Type Shape,
|
|
266
298
|
Fact Type Shape has at most one Objectified Fact Type Name Shape;
|
|
267
299
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
Population is identified by Vocabulary and Name where
|
|
273
|
-
Vocabulary includes Population,
|
|
274
|
-
Population belongs to at most one Vocabulary,
|
|
300
|
+
Population is identified by Topic and Name where
|
|
301
|
+
Topic includes Population,
|
|
302
|
+
Population belongs to at most one Topic,
|
|
275
303
|
Population has one Name,
|
|
276
304
|
Name is of Population;
|
|
277
305
|
Population includes Fact,
|
|
@@ -321,19 +349,20 @@ Set Exclusion Constraint is a kind of Set Comparison Constraint;
|
|
|
321
349
|
Set Exclusion Constraint is mandatory;
|
|
322
350
|
|
|
323
351
|
Term is where
|
|
324
|
-
Vocabulary
|
|
325
|
-
|
|
326
|
-
Object Type
|
|
327
|
-
Term
|
|
328
|
-
|
|
329
|
-
Term
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
Type Inheritance is a kind of Fact Type identified by Subtype and Supertype where
|
|
352
|
+
Vocabulary uses Name for one Object Type,
|
|
353
|
+
Vocabulary refers to Object Type as Name,
|
|
354
|
+
Name applies to Object Type in Vocabulary;
|
|
355
|
+
Term (as Role Name) is name of Role,
|
|
356
|
+
Role has at most one Role Name;
|
|
357
|
+
Term is preferred;
|
|
358
|
+
|
|
359
|
+
Type Inheritance is where
|
|
333
360
|
Entity Type (as Subtype) is subtype of super-Entity Type (as Supertype) [acyclic, intransitive],
|
|
334
361
|
Supertype is supertype of Subtype;
|
|
335
362
|
Assimilation applies to Type Inheritance,
|
|
336
363
|
Type Inheritance uses at most one Assimilation;
|
|
364
|
+
Type Inheritance implies one Fact Type,
|
|
365
|
+
Fact Type is implied by at most one Type Inheritance;
|
|
337
366
|
Type Inheritance provides identification;
|
|
338
367
|
|
|
339
368
|
Value Constraint Shape is a kind of Constraint Shape;
|
|
@@ -349,9 +378,6 @@ Value Range is identified by minimum-Bound and maximum-Bound where
|
|
|
349
378
|
Allowed Range is where
|
|
350
379
|
Value Constraint allows at least one Value Range;
|
|
351
380
|
|
|
352
|
-
Param Value is where
|
|
353
|
-
Value for Parameter applies to one Value Type;
|
|
354
|
-
|
|
355
381
|
/*
|
|
356
382
|
* Constraints:
|
|
357
383
|
*/
|
|
@@ -380,15 +406,12 @@ either Value Constraint constrains Value Type or Value Constraint applies to Rol
|
|
|
380
406
|
for each Instance at most one of these holds:
|
|
381
407
|
Instance has Value,
|
|
382
408
|
Instance objectifies Fact;
|
|
383
|
-
for each
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
for each
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
for each Term at most one of these holds:
|
|
390
|
-
Term is secondary for Object Type,
|
|
391
|
-
Term is name of Role Ref;
|
|
409
|
+
for each Join Role at most one of these holds:
|
|
410
|
+
Join Step(1) has input-Join Role,
|
|
411
|
+
Join Role is incidentally involved in Join Step;
|
|
412
|
+
for each Join Role at most one of these holds:
|
|
413
|
+
Join Step(1) has output-Join Role,
|
|
414
|
+
Join Role is incidentally involved in Join Step;
|
|
392
415
|
Join Node is for Object Type that plays Role
|
|
393
416
|
if and only if
|
|
394
417
|
Join Node includes Role;
|
|
@@ -406,12 +429,12 @@ either Agreement was reached by Agent or Agreement was on Date;
|
|
|
406
429
|
each combination Diagram, Position occurs at most one time in
|
|
407
430
|
Shape is in Diagram,
|
|
408
431
|
Shape is at Position;
|
|
409
|
-
each combination Entity Type, Type Inheritance occurs at most one time in
|
|
410
|
-
Entity Type is subtype of super Entity Type,
|
|
432
|
+
each combination Entity Type(1), Type Inheritance occurs at most one time in
|
|
433
|
+
Entity Type(1) is subtype of super Entity Type(2),
|
|
411
434
|
Type Inheritance provides identification;
|
|
412
435
|
each Presence Constraint occurs at least one time in
|
|
413
|
-
Presence Constraint has min Frequency,
|
|
414
|
-
Presence Constraint has max Frequency,
|
|
436
|
+
Presence Constraint has min Frequency(2),
|
|
437
|
+
Presence Constraint has max Frequency(1),
|
|
415
438
|
Presence Constraint is mandatory;
|
|
416
439
|
each Role Ref occurs at most one time in
|
|
417
440
|
Join Role projects Role Ref;
|
|
@@ -419,14 +442,13 @@ each Role Sequence occurs at least one time in
|
|
|
419
442
|
Role Sequence in Ordinal position includes Role;
|
|
420
443
|
each Set Comparison Constraint occurs at least 2 times in
|
|
421
444
|
Set Comparison Constraint has in Ordinal position Role Sequence;
|
|
422
|
-
|
|
423
|
-
Term designates Object Type,
|
|
424
|
-
Term is secondary for Object Type,
|
|
425
|
-
Term is name of Role Ref;
|
|
426
|
-
either Value Range has minimum Bound or Value Range has maximum Bound;
|
|
445
|
+
either Value Range has minimum Bound(2) or Value Range has maximum Bound(1);
|
|
427
446
|
each combination Vocabulary, Name occurs at most one time in
|
|
428
447
|
Constraint belongs to Vocabulary,
|
|
429
448
|
Constraint is called Name;
|
|
430
449
|
each combination Vocabulary, Name occurs at most one time in
|
|
431
450
|
Unit is in Vocabulary,
|
|
432
451
|
Unit is called Name;
|
|
452
|
+
each combination Vocabulary, Object Type, Term occurs at most one time in
|
|
453
|
+
Vocabulary uses Name for Object Type,
|
|
454
|
+
Term is preferred;
|