activefacts 0.8.18 → 1.0.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.
Files changed (42) hide show
  1. checksums.yaml +8 -8
  2. data/Rakefile +0 -8
  3. data/examples/CQL/CompanyDirectorEmployee.cql +12 -8
  4. data/examples/CQL/Metamodel.cql +40 -24
  5. data/examples/CQL/OilSupply.cql +10 -8
  6. data/examples/CQL/unit.cql +52 -51
  7. data/lib/activefacts/cql/LexicalRules.treetop +1 -1
  8. data/lib/activefacts/cql/compiler.rb +1 -1
  9. data/lib/activefacts/cql/compiler/clause.rb +16 -24
  10. data/lib/activefacts/cql/compiler/constraint.rb +4 -4
  11. data/lib/activefacts/cql/compiler/entity_type.rb +16 -16
  12. data/lib/activefacts/cql/compiler/expression.rb +3 -3
  13. data/lib/activefacts/cql/compiler/fact.rb +1 -1
  14. data/lib/activefacts/cql/compiler/fact_type.rb +14 -4
  15. data/lib/activefacts/cql/compiler/shared.rb +1 -1
  16. data/lib/activefacts/cql/compiler/value_type.rb +2 -2
  17. data/lib/activefacts/generate/cql.rb +10 -34
  18. data/lib/activefacts/generate/helpers/oo.rb +10 -6
  19. data/lib/activefacts/generate/helpers/ordered.rb +32 -6
  20. data/lib/activefacts/generate/json.rb +2 -2
  21. data/lib/activefacts/generate/ruby.rb +7 -15
  22. data/lib/activefacts/generate/transform/surrogate.rb +7 -7
  23. data/lib/activefacts/input/orm.rb +23 -26
  24. data/lib/activefacts/persistence/index.rb +1 -1
  25. data/lib/activefacts/persistence/reference.rb +5 -2
  26. data/lib/activefacts/version.rb +3 -3
  27. data/lib/activefacts/vocabulary/extensions.rb +59 -19
  28. data/lib/activefacts/vocabulary/metamodel.rb +30 -14
  29. data/spec/cql/parser/bad_literals_spec.rb +1 -1
  30. data/spec/cql/parser/expressions_spec.rb +1 -1
  31. data/spec/cql_dm_spec.rb +15 -0
  32. data/spec/cql_mysql_spec.rb +1 -1
  33. data/spec/cqldump_spec.rb +12 -12
  34. data/spec/norma_cql_spec.rb +0 -1
  35. data/spec/norma_ruby_sql_spec.rb +3 -2
  36. data/spec/norma_tables_spec.rb +1 -1
  37. metadata +78 -127
  38. data/examples/CQL/JoinEquality.cql +0 -35
  39. data/examples/CQL/MonthInSeason.cql +0 -23
  40. data/examples/CQL/Moon.cql +0 -23
  41. data/examples/CQL/SubtypePI.cql +0 -31
  42. data/examples/CQL/Tests.Test5.Load.cql +0 -38
@@ -1,35 +0,0 @@
1
- vocabulary JoinEquality;
2
-
3
- /*
4
- * Value Types
5
- */
6
- Event Id is written as Auto Counter;
7
- Number is written as Unsigned Integer(16);
8
- Reserve is written as String(20);
9
- Row is written as Char(2);
10
- Venue Id is written as Auto Counter;
11
-
12
- /*
13
- * Entity Types
14
- */
15
- Event is identified by its Id;
16
-
17
- Venue is independent identified by its Id;
18
- Event is held at one Venue;
19
-
20
- Seat is independent identified by Venue and Reserve and Row and Number where
21
- Seat is at one Venue,
22
- Seat is in one Reserve,
23
- Seat is in one Row,
24
- Seat has one Number;
25
-
26
- Ticket is identified by Event and Seat where
27
- Ticket is for one Event,
28
- Ticket is for one Seat;
29
-
30
- /*
31
- * Constraints:
32
- */
33
- Ticket is for Seat that is at Venue
34
- if and only if
35
- Ticket is for Event that is held at Venue;
@@ -1,23 +0,0 @@
1
- vocabulary MonthInSeason;
2
-
3
- /*
4
- * Value Types
5
- */
6
- Event Id is written as Auto Counter;
7
- Month is written as String;
8
- Season is written as String;
9
-
10
- /*
11
- * Entity Types
12
- */
13
- Event is identified by its Id;
14
-
15
- Occurrence is where
16
- Event occurred in Month;
17
-
18
- /*
19
- * Fact Types
20
- */
21
- Month is in at most one Season,
22
- Season contains at least one Month;
23
-
@@ -1,23 +0,0 @@
1
- vocabulary Moon;
2
-
3
- /*
4
- * Value Types
5
- */
6
- Moon Name is written as String;
7
- Nr Days Nr is written as Signed Integer(32);
8
- Planet Name is written as String;
9
-
10
- /*
11
- * Entity Types
12
- */
13
- Moon is identified by its Name;
14
-
15
- Nr Days is identified by its Nr;
16
-
17
- Orbit is where
18
- Moon is in orbit;
19
- Orbit has a synodic period of at most one Nr Days;
20
-
21
- Planet is identified by its Name;
22
- Orbit is around one Planet;
23
-
@@ -1,31 +0,0 @@
1
- vocabulary SubtypePI;
2
-
3
- /*
4
- * Value Types
5
- */
6
- Entrant ID is written as Auto Counter;
7
- Family Name is written as String;
8
- Given Name is written as String;
9
- Team ID is written as Auto Counter;
10
-
11
- /*
12
- * Entity Types
13
- */
14
- Entrant is identified by its ID;
15
-
16
- Entrant Given Name is where
17
- Entrant has at least one Given Name,
18
- Given Name is of Entrant;
19
-
20
- Team is a kind of Entrant identified by its ID;
21
-
22
- Competitor is a kind of Entrant;
23
- Competitor has one Family Name;
24
-
25
- /*
26
- * Constraints:
27
- */
28
- either Entrant is a Competitor or Entrant is a Team but not both;
29
- each combination Family Name, Given Name occurs at most one time in
30
- Competitor has Family Name,
31
- Entrant has Given Name;
@@ -1,38 +0,0 @@
1
- vocabulary ORMModel1;
2
-
3
- /*
4
- * Value Types
5
- */
6
- Accuracy Level is written as Signed Integer(32);
7
- Party Id is written as Auto Counter;
8
- Party Name is written as String;
9
- ymd is written as Date;
10
-
11
- /*
12
- * Entity Types
13
- */
14
- Accuracy is identified by its Level restricted to {1..5};
15
-
16
- Event Date is identified by ymd where
17
- Event Date has one ymd,
18
- ymd is of at most one Event Date;
19
-
20
- Party is independent identified by its Id;
21
-
22
- Party Moniker is where
23
- Party is called one Party Name;
24
- Party Moniker has one Accuracy;
25
-
26
- Person is a kind of Party;
27
-
28
- Birth is where
29
- Person was born on one Event Date;
30
-
31
- Death is where
32
- Person died;
33
- Death occurred on at most one death-Event Date;
34
-
35
- Doctor is a kind of Person;
36
- Birth was assisted by at most one attending-Doctor,
37
- Doctor attended Birth;
38
-