activefacts 0.7.3 → 0.8.5
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +19 -0
- data/Manifest.txt +24 -2
- data/Rakefile +25 -3
- data/bin/afgen +1 -1
- data/bin/cql +13 -2
- data/css/offline.css +3 -0
- data/css/orm2.css +24 -0
- data/css/print.css +8 -0
- data/css/style-print.css +357 -0
- data/css/style.css +387 -0
- data/download.html +85 -0
- data/examples/CQL/Address.cql +3 -3
- data/examples/CQL/Blog.cql +13 -14
- data/examples/CQL/CompanyDirectorEmployee.cql +4 -4
- data/examples/CQL/Death.cql +3 -2
- data/examples/CQL/Genealogy.cql +13 -11
- data/examples/CQL/Marriage.cql +2 -2
- data/examples/CQL/Metamodel.cql +136 -93
- data/examples/CQL/MultiInheritance.cql +2 -2
- data/examples/CQL/OilSupply.cql +14 -10
- data/examples/CQL/Orienteering.cql +22 -19
- data/examples/CQL/PersonPlaysGame.cql +3 -2
- data/examples/CQL/SchoolActivities.cql +4 -2
- data/examples/CQL/SimplestUnary.cql +1 -1
- data/examples/CQL/SubtypePI.cql +6 -7
- data/examples/CQL/Warehousing.cql +16 -19
- data/examples/CQL/unit.cql +584 -0
- data/examples/index.html +276 -0
- data/examples/intro.html +497 -0
- data/examples/local.css +20 -0
- data/index.html +96 -0
- data/lib/activefacts/api/concept.rb +48 -46
- data/lib/activefacts/api/constellation.rb +43 -23
- data/lib/activefacts/api/entity.rb +2 -2
- data/lib/activefacts/api/instance.rb +6 -2
- data/lib/activefacts/api/instance_index.rb +5 -0
- data/lib/activefacts/api/value.rb +8 -2
- data/lib/activefacts/api/vocabulary.rb +15 -10
- data/lib/activefacts/cql/CQLParser.treetop +109 -88
- data/lib/activefacts/cql/Concepts.treetop +32 -10
- data/lib/activefacts/cql/Context.treetop +34 -0
- data/lib/activefacts/cql/Expressions.treetop +9 -9
- data/lib/activefacts/cql/FactTypes.treetop +30 -31
- data/lib/activefacts/cql/Language/English.treetop +50 -0
- data/lib/activefacts/cql/LexicalRules.treetop +2 -1
- data/lib/activefacts/cql/Terms.treetop +117 -0
- data/lib/activefacts/cql/ValueTypes.treetop +152 -0
- data/lib/activefacts/cql/compiler.rb +1718 -0
- data/lib/activefacts/cql/parser.rb +124 -57
- data/lib/activefacts/generate/absorption.rb +1 -1
- data/lib/activefacts/generate/cql.rb +111 -100
- data/lib/activefacts/generate/cql/html.rb +5 -5
- data/lib/activefacts/generate/oo.rb +3 -3
- data/lib/activefacts/generate/ordered.rb +51 -19
- data/lib/activefacts/generate/ruby.rb +10 -8
- data/lib/activefacts/generate/sql/mysql.rb +14 -10
- data/lib/activefacts/generate/sql/server.rb +29 -24
- data/lib/activefacts/input/cql.rb +9 -1264
- data/lib/activefacts/input/orm.rb +213 -200
- data/lib/activefacts/persistence/columns.rb +11 -10
- data/lib/activefacts/persistence/index.rb +15 -18
- data/lib/activefacts/persistence/reference.rb +17 -17
- data/lib/activefacts/persistence/tables.rb +50 -51
- data/lib/activefacts/version.rb +1 -1
- data/lib/activefacts/vocabulary/extensions.rb +79 -8
- data/lib/activefacts/vocabulary/metamodel.rb +183 -114
- data/spec/absorption_ruby_spec.rb +99 -0
- data/spec/absorption_spec.rb +3 -4
- data/spec/api/constellation.rb +1 -1
- data/spec/api/entity_type.rb +3 -1
- data/spec/api/instance.rb +4 -2
- data/spec/api/roles.rb +8 -6
- data/spec/api_spec.rb +1 -2
- data/spec/cql/context_spec.rb +71 -0
- data/spec/cql/samples_spec.rb +154 -0
- data/spec/cql/unit_spec.rb +375 -0
- data/spec/cql_cql_spec.rb +31 -21
- data/spec/cql_mysql_spec.rb +70 -0
- data/spec/cql_parse_spec.rb +15 -9
- data/spec/cql_ruby_spec.rb +27 -13
- data/spec/cql_sql_spec.rb +42 -16
- data/spec/cql_symbol_tables_spec.rb +2 -3
- data/spec/cqldump_spec.rb +7 -7
- data/spec/helpers/file_matcher.rb +39 -0
- data/spec/norma_cql_spec.rb +20 -12
- data/spec/norma_ruby_spec.rb +6 -3
- data/spec/norma_sql_spec.rb +6 -3
- data/spec/norma_tables_spec.rb +6 -4
- data/spec/spec_helper.rb +27 -8
- data/status.html +69 -0
- data/why.html +60 -0
- metadata +34 -11
- data/lib/activefacts/cql/DataTypes.treetop +0 -81
- data/spec/cql_unit_spec.rb +0 -330
data/examples/CQL/Address.cql
CHANGED
@@ -4,11 +4,11 @@ vocabulary Address;
|
|
4
4
|
* Value Types
|
5
5
|
*/
|
6
6
|
City is written as VariableLengthText(64);
|
7
|
-
CompanyName is written as VariableLengthText
|
7
|
+
CompanyName is written as VariableLengthText;
|
8
8
|
FamilyName is written as VariableLengthText(20);
|
9
9
|
GivenNames is written as VariableLengthText(20);
|
10
10
|
Number is written as VariableLengthText(12);
|
11
|
-
Postcode is written as VariableLengthText
|
11
|
+
Postcode is written as VariableLengthText;
|
12
12
|
StreetLine is written as VariableLengthText(64);
|
13
13
|
|
14
14
|
/*
|
@@ -32,7 +32,7 @@ Address is identified by street-Number and Street and City and Postcode where
|
|
32
32
|
Address is at at most one street-Number,
|
33
33
|
Address is at one Street,
|
34
34
|
Address is in one City,
|
35
|
-
Address is in at most one Postcode,
|
35
|
+
Address is in at most one Postcode restricted to {1000..9999},
|
36
36
|
Postcode is of Address;
|
37
37
|
Company has head office at at most one Address;
|
38
38
|
Person lives at at most one Address;
|
data/examples/CQL/Blog.cql
CHANGED
@@ -3,14 +3,14 @@ vocabulary Blog;
|
|
3
3
|
/*
|
4
4
|
* Value Types
|
5
5
|
*/
|
6
|
-
AuthorId is written as AutoCounter
|
7
|
-
CommentId is written as AutoCounter
|
6
|
+
AuthorId is written as AutoCounter;
|
7
|
+
CommentId is written as AutoCounter;
|
8
8
|
Name is written as VariableLengthText(64);
|
9
9
|
Ordinal is written as UnsignedInteger(32);
|
10
|
-
PostId is written as AutoCounter
|
10
|
+
PostId is written as AutoCounter;
|
11
11
|
Style is written as VariableLengthText(20);
|
12
|
-
Text is written as LargeLengthText
|
13
|
-
TopicId is written as AutoCounter
|
12
|
+
Text is written as LargeLengthText;
|
13
|
+
TopicId is written as AutoCounter;
|
14
14
|
|
15
15
|
/*
|
16
16
|
* Entity Types
|
@@ -32,12 +32,6 @@ Content provides text of Comment,
|
|
32
32
|
|
33
33
|
Post is identified by its Id;
|
34
34
|
Post was written by one Author;
|
35
|
-
Paragraph is where
|
36
|
-
Post includes Ordinal paragraph;
|
37
|
-
Content is of Paragraph,
|
38
|
-
Paragraph contains one Content;
|
39
|
-
Paragraph has Comment,
|
40
|
-
Comment is on one Paragraph;
|
41
35
|
|
42
36
|
Topic is identified by its Id;
|
43
37
|
Post belongs to one Topic,
|
@@ -46,9 +40,14 @@ Topic belongs to at most one parent-Topic [acyclic];
|
|
46
40
|
Topic is called one topic-Name,
|
47
41
|
Name is of at most one Topic;
|
48
42
|
|
43
|
+
Paragraph is where
|
44
|
+
Post includes Ordinal paragraph;
|
45
|
+
Content is of Paragraph,
|
46
|
+
Paragraph contains one Content;
|
47
|
+
Paragraph has Comment,
|
48
|
+
Comment is on one Paragraph;
|
49
|
+
|
49
50
|
/*
|
50
51
|
* Constraints:
|
51
52
|
*/
|
52
|
-
|
53
|
-
Content provides text of Comment,
|
54
|
-
Content is of Paragraph;
|
53
|
+
either Content provides text of Comment or Content is of Paragraph but not both;
|
@@ -25,10 +25,12 @@ Person is identified by given-Name and family-Name where
|
|
25
25
|
given-Name is of Person,
|
26
26
|
family-Name is of Person,
|
27
27
|
Person is called at most one family-Name;
|
28
|
-
Person was born on at most one birth-Date;
|
28
|
+
Person was born on at most one birth-Date restricted to {'1900/01/01'..};
|
29
|
+
|
29
30
|
Attendance is where
|
30
31
|
Person (as Attendee) attended Meeting,
|
31
32
|
Meeting was attended by Attendee;
|
33
|
+
|
32
34
|
Directorship is where
|
33
35
|
Person (as Director) directs Company,
|
34
36
|
Company is directed by at least one Director;
|
@@ -46,6 +48,4 @@ Manager is ceo;
|
|
46
48
|
/*
|
47
49
|
* Constraints:
|
48
50
|
*/
|
49
|
-
|
50
|
-
that Employee is ceo,
|
51
|
-
that Employee is supervised by some Manager;
|
51
|
+
either that Employee is ceo or that Employee is supervised by some Manager but not both;
|
data/examples/CQL/Death.cql
CHANGED
@@ -3,13 +3,14 @@ vocabulary Death;
|
|
3
3
|
/*
|
4
4
|
* Value Types
|
5
5
|
*/
|
6
|
-
CauseOfDeath is written as VariableLengthText
|
6
|
+
CauseOfDeath is written as VariableLengthText;
|
7
7
|
PersonName is written as VariableLengthText(40);
|
8
8
|
|
9
9
|
/*
|
10
10
|
* Entity Types
|
11
11
|
*/
|
12
|
-
Person is identified by its Name;
|
12
|
+
Person is identified by its Name [independent];
|
13
|
+
|
13
14
|
Death is where
|
14
15
|
Person is dead;
|
15
16
|
Death was due to at most one CauseOfDeath;
|
data/examples/CQL/Genealogy.cql
CHANGED
@@ -7,22 +7,22 @@ Address is written as VariableLengthText(128);
|
|
7
7
|
Certificate is written as VariableLengthText(64);
|
8
8
|
Day is written as UnsignedInteger(32) restricted to {1..31};
|
9
9
|
Email is written as VariableLengthText(64);
|
10
|
-
EventID is written as AutoCounter
|
10
|
+
EventID is written as AutoCounter;
|
11
11
|
EventLocation is written as VariableLengthText(128);
|
12
|
-
EventRoleName is written as VariableLengthText
|
13
|
-
EventTypeID is written as AutoCounter
|
12
|
+
EventRoleName is written as VariableLengthText restricted to {'Celebrant', 'Father', 'Husband', 'Mother', 'Subject', 'Wife'};
|
13
|
+
EventTypeID is written as AutoCounter;
|
14
14
|
EventTypeName is written as VariableLengthText(16) restricted to {'Birth', 'Burial', 'Christening', 'Death', 'Divorce', 'Marriage'};
|
15
15
|
Gender is written as FixedLengthText(1) restricted to {'F', 'M'};
|
16
16
|
Month is written as UnsignedInteger(32) restricted to {1..12};
|
17
17
|
Name is written as VariableLengthText(128);
|
18
18
|
Occupation is written as VariableLengthText(128);
|
19
19
|
Official is written as VariableLengthText(64);
|
20
|
-
PersonID is written as AutoCounter
|
20
|
+
PersonID is written as AutoCounter;
|
21
21
|
Picture is written as PictureRawData(20);
|
22
|
-
RoleID is written as AutoCounter
|
23
|
-
SourceID is written as AutoCounter
|
22
|
+
RoleID is written as AutoCounter;
|
23
|
+
SourceID is written as AutoCounter;
|
24
24
|
SourceName is written as VariableLengthText(128);
|
25
|
-
UserID is written as AutoCounter
|
25
|
+
UserID is written as AutoCounter;
|
26
26
|
Year is written as UnsignedInteger(32);
|
27
27
|
|
28
28
|
/*
|
@@ -67,20 +67,22 @@ Role is called one EventRoleName,
|
|
67
67
|
Source is identified by its ID;
|
68
68
|
Source has one SourceName,
|
69
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
70
|
|
75
71
|
User is identified by its ID;
|
76
72
|
Email is of User,
|
77
73
|
User has at most one Email;
|
78
74
|
User provided Source,
|
79
75
|
Source was provided by one User;
|
76
|
+
|
80
77
|
Friend is where
|
81
78
|
User is friend of other-User [symmetric];
|
82
79
|
Friend is confirmed;
|
83
80
|
|
81
|
+
Participation is where
|
82
|
+
Person played Role in Event according to Source,
|
83
|
+
Person was involved in Event according to Source in Role,
|
84
|
+
Source claims Person played Role in Event;
|
85
|
+
|
84
86
|
/*
|
85
87
|
* Constraints:
|
86
88
|
*/
|
data/examples/CQL/Marriage.cql
CHANGED
@@ -3,12 +3,12 @@ vocabulary Marriage;
|
|
3
3
|
/*
|
4
4
|
* Value Types
|
5
5
|
*/
|
6
|
-
Name is written as VariableLengthText
|
6
|
+
Name is written as VariableLengthText;
|
7
7
|
|
8
8
|
/*
|
9
9
|
* Entity Types
|
10
10
|
*/
|
11
|
-
Person is identified by given-Name and family-Name where
|
11
|
+
Person is identified by given-Name and family-Name [independent] where
|
12
12
|
Person has one given-Name,
|
13
13
|
Person has one family-Name;
|
14
14
|
|
data/examples/CQL/Metamodel.cql
CHANGED
@@ -4,36 +4,36 @@ vocabulary Metamodel;
|
|
4
4
|
* Value Types
|
5
5
|
*/
|
6
6
|
Adjective is written as VariableLengthText(64);
|
7
|
-
|
7
|
+
Assimilation is written as VariableLengthText restricted to {'partitioned', 'separate'};
|
8
|
+
ConstraintId is written as AutoCounter;
|
9
|
+
ContextNoteId is written as AutoCounter;
|
10
|
+
ContextNoteKind is written as VariableLengthText restricted to {'as_opposed_to', 'because', 'so_that', 'to_avoid'};
|
8
11
|
Denominator is written as UnsignedInteger(32);
|
12
|
+
Discussion is written as VariableLengthText;
|
9
13
|
Enforcement is written as VariableLengthText(16);
|
10
14
|
Exponent is written as SignedSmallInteger(32);
|
11
|
-
FactId is written as AutoCounter
|
12
|
-
FactTypeId is written as AutoCounter
|
15
|
+
FactId is written as AutoCounter;
|
16
|
+
FactTypeId is written as AutoCounter;
|
13
17
|
Frequency is written as UnsignedInteger(32);
|
14
|
-
InstanceId is written as AutoCounter
|
18
|
+
InstanceId is written as AutoCounter;
|
15
19
|
Length is written as UnsignedInteger(32);
|
20
|
+
Literal is written as VariableLengthText;
|
16
21
|
Name is written as VariableLengthText(64);
|
17
|
-
Numerator is written as Decimal
|
18
|
-
Offset is written as Decimal
|
22
|
+
Numerator is written as Decimal;
|
23
|
+
Offset is written as Decimal;
|
19
24
|
Ordinal is written as UnsignedSmallInteger(32);
|
20
|
-
|
21
|
-
|
22
|
-
|
25
|
+
PersonName is written as VariableLengthText;
|
26
|
+
Pronoun is written as VariableLengthText(20) restricted to {'feminine', 'masculine', 'neuter', 'personal'};
|
27
|
+
RingType is written as VariableLengthText;
|
28
|
+
RoleSequenceId is written as AutoCounter;
|
23
29
|
Scale is written as UnsignedInteger(32);
|
24
30
|
Text is written as VariableLengthText(256);
|
25
|
-
UnitId is written as AutoCounter
|
26
|
-
|
27
|
-
ValueRestrictionId is written as AutoCounter();
|
31
|
+
UnitId is written as AutoCounter;
|
32
|
+
ValueRestrictionId is written as AutoCounter;
|
28
33
|
|
29
34
|
/*
|
30
35
|
* Entity Types
|
31
36
|
*/
|
32
|
-
Bound is identified by Value and Bound is inclusive where
|
33
|
-
Bound has one Value,
|
34
|
-
Value is of at least one Bound,
|
35
|
-
Bound is inclusive;
|
36
|
-
|
37
37
|
Coefficient is identified by Numerator and Denominator and Coefficient is precise where
|
38
38
|
Coefficient has one Numerator,
|
39
39
|
Coefficient has one Denominator,
|
@@ -45,17 +45,29 @@ Constraint requires at most one Enforcement,
|
|
45
45
|
Name is of Constraint,
|
46
46
|
Constraint is called at most one Name;
|
47
47
|
|
48
|
+
ContextNote is identified by its Id;
|
49
|
+
Constraint has ContextNote,
|
50
|
+
ContextNote applies to at most one Constraint;
|
51
|
+
ContextNote has one ContextNoteKind,
|
52
|
+
ContextNoteKind is of ContextNote;
|
53
|
+
ContextNote has one Discussion,
|
54
|
+
Discussion is for ContextNote;
|
55
|
+
|
48
56
|
Fact is identified by its Id;
|
49
57
|
|
50
58
|
FactType is identified by its Id;
|
51
59
|
Fact is of one FactType;
|
60
|
+
FactType has ContextNote,
|
61
|
+
ContextNote applies to at most one FactType;
|
52
62
|
|
53
63
|
Instance is identified by its Id;
|
54
|
-
Instance
|
64
|
+
Instance objectifies at most one Fact;
|
65
|
+
|
66
|
+
Person is identified by its Name;
|
55
67
|
|
56
68
|
PresenceConstraint is a kind of Constraint;
|
57
|
-
PresenceConstraint has at most one max-Frequency;
|
58
|
-
PresenceConstraint has at most one min-Frequency;
|
69
|
+
PresenceConstraint has at most one max-Frequency restricted to {1..};
|
70
|
+
PresenceConstraint has at most one min-Frequency restricted to {2..};
|
59
71
|
PresenceConstraint is mandatory;
|
60
72
|
PresenceConstraint is preferred identifier;
|
61
73
|
|
@@ -69,6 +81,15 @@ Reading has one Text;
|
|
69
81
|
RingConstraint is a kind of Constraint;
|
70
82
|
RingConstraint is of one RingType;
|
71
83
|
|
84
|
+
Role is where
|
85
|
+
FactType has at least one Ordinal role;
|
86
|
+
Role is of RingConstraint,
|
87
|
+
RingConstraint has at most one Role;
|
88
|
+
Role has at most one role-Name,
|
89
|
+
role-Name is name of at least one Role;
|
90
|
+
other-Role is of RingConstraint,
|
91
|
+
RingConstraint has at most one other-Role;
|
92
|
+
|
72
93
|
RoleSequence is identified by its Id;
|
73
94
|
PresenceConstraint covers one RoleSequence;
|
74
95
|
Reading is in one RoleSequence,
|
@@ -79,6 +100,7 @@ RoleValue is identified by Instance and Fact where
|
|
79
100
|
RoleValue is of one Instance,
|
80
101
|
RoleValue fulfils one Fact,
|
81
102
|
Fact includes at least one RoleValue;
|
103
|
+
RoleValue is of one Role;
|
82
104
|
|
83
105
|
SetConstraint is a kind of Constraint;
|
84
106
|
|
@@ -91,18 +113,20 @@ Name is of Unit,
|
|
91
113
|
Unit is called one Name;
|
92
114
|
Unit has at most one Coefficient;
|
93
115
|
Unit has at most one Offset;
|
116
|
+
Unit is ephemeral;
|
94
117
|
Unit is fundamental;
|
95
|
-
Derivation is where
|
96
|
-
Unit (as DerivedUnit) is derived from base-Unit (as BaseUnit) [acyclic, intransitive];
|
97
|
-
Derivation has at most one Exponent;
|
98
118
|
|
99
|
-
|
100
|
-
|
101
|
-
|
119
|
+
Value is identified by Literal and Value is a string and Unit where
|
120
|
+
Value is represented by one Literal,
|
121
|
+
Literal represents Value,
|
122
|
+
Value is a string,
|
123
|
+
Value is in at most one Unit,
|
124
|
+
Unit is of Value;
|
125
|
+
Instance has at most one Value;
|
102
126
|
|
103
127
|
ValueRestriction is identified by its Id;
|
104
|
-
|
105
|
-
ValueRestriction
|
128
|
+
Role has at most one role-ValueRestriction,
|
129
|
+
ValueRestriction applies to Role;
|
106
130
|
|
107
131
|
Vocabulary is identified by Name where
|
108
132
|
Vocabulary is called one Name;
|
@@ -111,10 +135,43 @@ Vocabulary contains Constraint,
|
|
111
135
|
Vocabulary includes Unit,
|
112
136
|
Unit is in one Vocabulary;
|
113
137
|
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
138
|
+
Agreement is identified by ContextNote where
|
139
|
+
ContextNote was added by at most one Agreement,
|
140
|
+
Agreement covers one ContextNote;
|
141
|
+
Agreement was on at most one Date;
|
142
|
+
|
143
|
+
Bound is identified by Value and Bound is inclusive where
|
144
|
+
Bound has one Value,
|
145
|
+
Value is of at least one Bound,
|
146
|
+
Bound is inclusive;
|
147
|
+
|
148
|
+
Concept is identified by Vocabulary and Name where
|
149
|
+
Concept belongs to one Vocabulary,
|
150
|
+
Vocabulary contains Concept,
|
151
|
+
Concept is called one Name;
|
152
|
+
Concept has ContextNote,
|
153
|
+
ContextNote applies to at most one Concept;
|
154
|
+
Concept uses at most one Pronoun;
|
155
|
+
Concept plays Role,
|
156
|
+
Role is played by one Concept;
|
157
|
+
Concept is independent;
|
158
|
+
Instance is of one Concept;
|
159
|
+
|
160
|
+
ContextAccordingTo is where
|
161
|
+
ContextNote is according to Person,
|
162
|
+
Person claims ContextNote;
|
163
|
+
|
164
|
+
ContextAgreedBy is where
|
165
|
+
Agreement was reached by Person,
|
166
|
+
Person agreed on Agreement;
|
167
|
+
|
168
|
+
Derivation is where
|
169
|
+
Unit (as DerivedUnit) is derived from base-Unit (as BaseUnit) [acyclic, intransitive];
|
170
|
+
Derivation has at most one Exponent;
|
171
|
+
|
172
|
+
EntityType is a kind of Concept;
|
173
|
+
EntityType nests at most one FactType,
|
174
|
+
FactType is nested as at most one EntityType;
|
118
175
|
|
119
176
|
Population is identified by Vocabulary and Name where
|
120
177
|
Vocabulary includes Population,
|
@@ -128,7 +185,16 @@ Population includes Instance,
|
|
128
185
|
Population includes RoleValue,
|
129
186
|
RoleValue belongs to one Population;
|
130
187
|
|
188
|
+
RoleRef is where
|
189
|
+
RoleSequence in Ordinal position includes at most one Role,
|
190
|
+
Role is in RoleSequence in at most one Ordinal place,
|
191
|
+
RoleSequence includes Role in Ordinal place,
|
192
|
+
Role has Ordinal place in RoleSequence;
|
193
|
+
RoleRef has at most one leading-Adjective;
|
194
|
+
RoleRef has at most one trailing-Adjective;
|
195
|
+
|
131
196
|
SetComparisonConstraint is a kind of SetConstraint;
|
197
|
+
|
132
198
|
SetComparisonRoles is where
|
133
199
|
SetComparisonConstraint has in Ordinal position at most one RoleSequence,
|
134
200
|
RoleSequence is Ordinal in SetComparisonConstraint,
|
@@ -140,45 +206,17 @@ SetEqualityConstraint is a kind of SetComparisonConstraint;
|
|
140
206
|
SetExclusionConstraint is a kind of SetComparisonConstraint;
|
141
207
|
SetExclusionConstraint is mandatory;
|
142
208
|
|
143
|
-
Concept is a kind of Feature;
|
144
|
-
Concept uses at most one Pronoun;
|
145
|
-
Concept is independent;
|
146
|
-
Instance is of one Concept;
|
147
|
-
Role is where
|
148
|
-
FactType has Ordinal role played by Concept,
|
149
|
-
Concept plays role in FactType in Ordinal place,
|
150
|
-
Concept plays Ordinal role in FactType;
|
151
|
-
Role is of RingConstraint,
|
152
|
-
RingConstraint has at most one Role;
|
153
|
-
Role has at most one role-Name,
|
154
|
-
role-Name is name of at least one Role;
|
155
|
-
Role has at most one role-ValueRestriction,
|
156
|
-
ValueRestriction applies to Role;
|
157
|
-
RoleValue is of one Role;
|
158
|
-
other-Role is of RingConstraint,
|
159
|
-
RingConstraint has at most one other-Role;
|
160
|
-
RoleRef is where
|
161
|
-
RoleSequence in Ordinal position includes at most one Role,
|
162
|
-
Role is in RoleSequence in at most one Ordinal place,
|
163
|
-
RoleSequence includes Role in Ordinal place,
|
164
|
-
Role has Ordinal place in RoleSequence;
|
165
|
-
RoleRef has at most one leading-Adjective;
|
166
|
-
RoleRef has at most one trailing-Adjective;
|
167
|
-
Join is where
|
168
|
-
RoleRef has Ordinal (as JoinStep) join;
|
169
|
-
Join traverses at most one Concept,
|
170
|
-
Concept is traversed by Join;
|
171
|
-
Join has at most one input-Role;
|
172
|
-
Join has at most one output-Role;
|
173
|
-
|
174
|
-
EntityType is a kind of Concept;
|
175
|
-
EntityType nests at most one FactType,
|
176
|
-
FactType is nested as at most one EntityType;
|
177
209
|
TypeInheritance is a kind of FactType identified by Subtype and Supertype where
|
178
210
|
EntityType (as Subtype) is subtype of super-EntityType (as Supertype) [acyclic],
|
179
211
|
Supertype is supertype of Subtype;
|
212
|
+
Assimilation applies to TypeInheritance,
|
213
|
+
TypeInheritance uses at most one Assimilation;
|
180
214
|
TypeInheritance provides identification;
|
181
215
|
|
216
|
+
ValueRange is identified by minimum-Bound and maximum-Bound where
|
217
|
+
ValueRange has at most one minimum-Bound,
|
218
|
+
ValueRange has at most one maximum-Bound;
|
219
|
+
|
182
220
|
ValueType is a kind of Concept;
|
183
221
|
ValueType has at most one Length,
|
184
222
|
Length is of ValueType;
|
@@ -188,39 +226,48 @@ ValueType is of at most one Unit;
|
|
188
226
|
ValueType has at most one ValueRestriction;
|
189
227
|
ValueType is subtype of at most one super-ValueType (as Supertype) [acyclic],
|
190
228
|
Supertype is supertype of ValueType;
|
229
|
+
|
230
|
+
AllowedRange is where
|
231
|
+
ValueRestriction allows at least one ValueRange;
|
232
|
+
|
233
|
+
Join is where
|
234
|
+
RoleRef has Ordinal (as JoinStep) join;
|
235
|
+
Join traverses at most one Concept,
|
236
|
+
Concept is traversed by Join;
|
237
|
+
Join has at most one input-Role;
|
238
|
+
Join has at most one output-Role;
|
239
|
+
|
191
240
|
Parameter is where
|
192
241
|
Name is a parameter of ValueType,
|
193
242
|
ValueType has parameter called Name;
|
243
|
+
|
194
244
|
ParamValue is where
|
195
245
|
Value for Parameter applies to at most one ValueType;
|
196
246
|
|
197
247
|
/*
|
198
248
|
* Constraints:
|
199
249
|
*/
|
200
|
-
|
201
|
-
EntityType is a subtype of Concept,
|
202
|
-
ValueType is a subtype of Concept;
|
250
|
+
either Concept is an EntityType or Concept is a ValueType but not both;
|
203
251
|
for each Constraint exactly one of these holds:
|
204
|
-
PresenceConstraint is a
|
205
|
-
SetConstraint is a
|
206
|
-
RingConstraint is a
|
207
|
-
for each
|
208
|
-
Concept
|
252
|
+
PresenceConstraint is a kind of Constraint,
|
253
|
+
SetConstraint is a kind of Constraint,
|
254
|
+
RingConstraint is a kind of Constraint;
|
255
|
+
for each ContextNote exactly one of these holds:
|
256
|
+
Concept has ContextNote,
|
257
|
+
FactType has ContextNote,
|
258
|
+
Constraint has ContextNote;
|
259
|
+
for each Instance at most one of these holds:
|
260
|
+
Instance has Value,
|
261
|
+
Instance objectifies Fact;
|
209
262
|
Instance plays RoleValue and Instance is of Concept
|
210
263
|
if and only if
|
211
|
-
RoleValue is of Role and
|
264
|
+
RoleValue is of Role and Concept plays Role;
|
212
265
|
RoleValue fulfils Fact and Fact is of FactType
|
213
266
|
if and only if
|
214
|
-
RoleValue is of Role and FactType has Ordinal role
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
for each SetConstraint exactly one of these holds:
|
219
|
-
SetComparisonConstraint is a subtype of SetConstraint,
|
220
|
-
SubsetConstraint is a subtype of SetConstraint;
|
221
|
-
for each Unit exactly one of these holds:
|
222
|
-
Unit is fundamental,
|
223
|
-
that Unit is derived from some base-Unit;
|
267
|
+
RoleValue is of Role and FactType has Ordinal role;
|
268
|
+
either SetComparisonConstraint is a SetExclusionConstraint or SetComparisonConstraint is a SetEqualityConstraint but not both;
|
269
|
+
either SetConstraint is a SetComparisonConstraint or SetConstraint is a SubsetConstraint but not both;
|
270
|
+
either Unit is fundamental or that Unit is derived from some base-Unit but not both;
|
224
271
|
PresenceConstraint is preferred identifier
|
225
272
|
only if PresenceConstraint has max-Frequency;
|
226
273
|
ValueType has Scale
|
@@ -228,20 +275,16 @@ ValueType has Scale
|
|
228
275
|
each combination EntityType, TypeInheritance occurs at most one time in
|
229
276
|
EntityType is subtype of super-EntityType,
|
230
277
|
TypeInheritance provides identification;
|
231
|
-
each
|
232
|
-
|
233
|
-
|
234
|
-
Join has input-Role,
|
235
|
-
Join has output-Role;
|
278
|
+
each Fact occurs at most one time in
|
279
|
+
Instance objectifies Fact;
|
280
|
+
either Join has input-Role or Join has output-Role;
|
236
281
|
each PresenceConstraint occurs at least one time in
|
237
282
|
PresenceConstraint has min-Frequency,
|
238
283
|
PresenceConstraint has max-Frequency,
|
239
284
|
PresenceConstraint is mandatory;
|
240
285
|
each RoleSequence occurs at least one time in
|
241
286
|
RoleSequence in Ordinal position includes Role;
|
242
|
-
|
243
|
-
ValueRange has minimum-Bound,
|
244
|
-
ValueRange has maximum-Bound;
|
287
|
+
either ValueRange has minimum-Bound or ValueRange has maximum-Bound;
|
245
288
|
each combination Vocabulary, Name occurs at most one time in
|
246
289
|
Vocabulary contains Constraint,
|
247
290
|
Name is of Constraint;
|