activefacts-metamodel 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,624 @@
1
+ require 'activefacts/metamodel/version'
2
+ require 'activefacts/api'
3
+
4
+ module ActiveFacts
5
+ module Metamodel
6
+
7
+ class Adjective < String
8
+ value_type :length => 64
9
+ end
10
+
11
+ class AgentName < String
12
+ value_type
13
+ one_to_one :agent # See Agent.agent_name
14
+ end
15
+
16
+ class AggregateCode < String
17
+ value_type :length => 32
18
+ one_to_one :aggregate # See Aggregate.aggregate_code
19
+ end
20
+
21
+ class Annotation < String
22
+ value_type
23
+ end
24
+
25
+ class Assimilation < String
26
+ value_type
27
+ restrict 'absorbed', 'partitioned', 'separate'
28
+ end
29
+
30
+ class ContextNoteKind < String
31
+ value_type
32
+ restrict 'as_opposed_to', 'because', 'so_that', 'to_avoid'
33
+ end
34
+
35
+ class Date < ::Date
36
+ value_type
37
+ end
38
+
39
+ class Denominator < UnsignedInteger
40
+ value_type :length => 32
41
+ end
42
+
43
+ class Discussion < String
44
+ value_type
45
+ end
46
+
47
+ class DisplayRoleNamesSetting < String
48
+ value_type
49
+ restrict 'false', 'true'
50
+ end
51
+
52
+ class EnforcementCode < String
53
+ value_type :length => 16
54
+ end
55
+
56
+ class EphemeraURL < String
57
+ value_type
58
+ end
59
+
60
+ class Exponent < SignedInteger
61
+ value_type :length => 16
62
+ end
63
+
64
+ class Frequency < UnsignedInteger
65
+ value_type :length => 32
66
+ end
67
+
68
+ class Guid < ::Guid
69
+ value_type
70
+ one_to_one :alternative_set # See AlternativeSet.guid
71
+ one_to_one :component # See Component.guid
72
+ one_to_one :composition # See Composition.guid
73
+ one_to_one :concept # See Concept.guid
74
+ one_to_one :role_sequence # See RoleSequence.guid
75
+ one_to_one :shape # See Shape.guid
76
+ one_to_one :step # See Step.guid
77
+ end
78
+
79
+ class ImplicationRuleName < String
80
+ value_type
81
+ one_to_one :implication_rule # See ImplicationRule.implication_rule_name
82
+ end
83
+
84
+ class Length < UnsignedInteger
85
+ value_type :length => 32
86
+ end
87
+
88
+ class Literal < String
89
+ value_type
90
+ end
91
+
92
+ class Name < String
93
+ value_type :length => 64
94
+ one_to_one :composition # See Composition.name
95
+ one_to_one :plural_named_unit, :class => "Unit", :counterpart => :plural_name # See Unit.plural_name
96
+ one_to_one :topic, :counterpart => :topic_name # See Topic.topic_name
97
+ one_to_one :unit # See Unit.name
98
+ one_to_one :vocabulary # See Vocabulary.name
99
+ end
100
+
101
+ class Numerator < Decimal
102
+ value_type
103
+ end
104
+
105
+ class Offset < Decimal
106
+ value_type
107
+ end
108
+
109
+ class Ordinal < UnsignedInteger
110
+ value_type :length => 16
111
+ end
112
+
113
+ class Pronoun < String
114
+ value_type :length => 20
115
+ restrict 'feminine', 'masculine', 'neuter', 'personal'
116
+ end
117
+
118
+ class RegularExpression < String
119
+ value_type
120
+ end
121
+
122
+ class RingType < String
123
+ value_type
124
+ end
125
+
126
+ class RotationSetting < String
127
+ value_type
128
+ restrict 'left', 'right'
129
+ end
130
+
131
+ class Scale < UnsignedInteger
132
+ value_type :length => 32
133
+ end
134
+
135
+ class Subscript < UnsignedInteger
136
+ value_type :length => 16
137
+ end
138
+
139
+ class Text < String
140
+ value_type :length => 256
141
+ end
142
+
143
+ class TransactionPhase < String
144
+ value_type
145
+ restrict 'assert', 'commit'
146
+ end
147
+
148
+ class X < SignedInteger
149
+ value_type :length => 32
150
+ end
151
+
152
+ class Y < SignedInteger
153
+ value_type :length => 32
154
+ end
155
+
156
+ class Agent
157
+ identified_by :agent_name
158
+ one_to_one :agent_name, :mandatory => true # See AgentName.agent
159
+ end
160
+
161
+ class Aggregate
162
+ identified_by :aggregate_code
163
+ one_to_one :aggregate_code, :mandatory => true # See AggregateCode.aggregate
164
+ end
165
+
166
+ class AlternativeSet
167
+ identified_by :guid
168
+ one_to_one :guid, :mandatory => true # See Guid.alternative_set
169
+ maybe :members_are_exclusive
170
+ end
171
+
172
+ class Coefficient
173
+ identified_by :numerator, :denominator, :is_precise
174
+ has_one :denominator, :mandatory => true # See Denominator.all_coefficient
175
+ maybe :is_precise
176
+ has_one :numerator, :mandatory => true # See Numerator.all_coefficient
177
+ end
178
+
179
+ class Component
180
+ identified_by :guid
181
+ one_to_one :guid, :mandatory => true # See Guid.component
182
+ has_one :mapping, :counterpart => :member # See Mapping.all_member
183
+ has_one :name # See Name.all_component
184
+ end
185
+
186
+ class Composition
187
+ identified_by :guid
188
+ one_to_one :guid, :mandatory => true # See Guid.composition
189
+ one_to_one :name, :mandatory => true # See Name.composition
190
+ end
191
+
192
+ class Concept
193
+ identified_by :guid
194
+ one_to_one :guid, :mandatory => true # See Guid.concept
195
+ has_one :implication_rule # See ImplicationRule.all_concept
196
+ has_one :topic # See Topic.all_concept
197
+ end
198
+
199
+ class ConceptAnnotation
200
+ identified_by :concept, :mapping_annotation
201
+ has_one :concept, :mandatory => true # See Concept.all_concept_annotation
202
+ has_one :mapping_annotation, :class => Annotation, :mandatory => true # See Annotation.all_concept_annotation_as_mapping_annotation
203
+ end
204
+
205
+ class Constraint
206
+ identified_by :concept
207
+ one_to_one :concept, :mandatory => true # See Concept.constraint
208
+ has_one :name # See Name.all_constraint
209
+ has_one :vocabulary # See Vocabulary.all_constraint
210
+ end
211
+
212
+ class ContextNote
213
+ identified_by :concept
214
+ one_to_one :concept, :mandatory => true # See Concept.context_note
215
+ has_one :context_note_kind, :mandatory => true # See ContextNoteKind.all_context_note
216
+ has_one :discussion, :mandatory => true # See Discussion.all_context_note
217
+ has_one :relevant_concept, :class => Concept # See Concept.all_context_note_as_relevant_concept
218
+ end
219
+
220
+ class Discriminator < Component
221
+ end
222
+
223
+ class Enforcement
224
+ identified_by :constraint
225
+ has_one :agent # See Agent.all_enforcement
226
+ one_to_one :constraint, :mandatory => true # See Constraint.enforcement
227
+ has_one :enforcement_code, :mandatory => true # See EnforcementCode.all_enforcement
228
+ end
229
+
230
+ class Fact
231
+ identified_by :concept
232
+ one_to_one :concept, :mandatory => true # See Concept.fact
233
+ has_one :fact_type, :mandatory => true # See FactType.all_fact
234
+ has_one :population, :mandatory => true # See Population.all_fact
235
+ end
236
+
237
+ class FactType
238
+ identified_by :concept
239
+ one_to_one :concept, :mandatory => true # See Concept.fact_type
240
+ end
241
+
242
+ class ImplicationRule
243
+ identified_by :implication_rule_name
244
+ one_to_one :implication_rule_name, :mandatory => true # See ImplicationRuleName.implication_rule
245
+ end
246
+
247
+ class Indicator < Component
248
+ has_one :role, :mandatory => true # See Role.all_indicator
249
+ end
250
+
251
+ class Instance
252
+ identified_by :concept
253
+ one_to_one :concept, :mandatory => true # See Concept.instance
254
+ one_to_one :fact # See Fact.instance
255
+ has_one :object_type, :mandatory => true # See ObjectType.all_instance
256
+ has_one :population, :mandatory => true # See Population.all_instance
257
+ has_one :value # See Value.all_instance
258
+ end
259
+
260
+ class LinkFactType < FactType
261
+ end
262
+
263
+ class Location
264
+ identified_by :x, :y
265
+ has_one :x, :mandatory => true # See X.all_location
266
+ has_one :y, :mandatory => true # See Y.all_location
267
+ end
268
+
269
+ class Mapping < Component
270
+ has_one :object_type, :mandatory => true # See ObjectType.all_mapping
271
+ end
272
+
273
+ class Nesting < Mapping
274
+ end
275
+
276
+ class PresenceConstraint < Constraint
277
+ maybe :is_mandatory
278
+ maybe :is_preferred_identifier
279
+ has_one :max_frequency, :class => Frequency # See Frequency.all_presence_constraint_as_max_frequency
280
+ has_one :min_frequency, :class => Frequency # See Frequency.all_presence_constraint_as_min_frequency
281
+ has_one :role_sequence, :mandatory => true # See RoleSequence.all_presence_constraint
282
+ end
283
+
284
+ class Query
285
+ identified_by :concept
286
+ one_to_one :concept, :mandatory => true # See Concept.query
287
+ end
288
+
289
+ class Reading
290
+ identified_by :fact_type, :ordinal
291
+ has_one :fact_type, :mandatory => true # See FactType.all_reading
292
+ maybe :is_negative
293
+ has_one :ordinal, :mandatory => true # See Ordinal.all_reading
294
+ has_one :role_sequence, :mandatory => true # See RoleSequence.all_reading
295
+ has_one :text, :mandatory => true # See Text.all_reading
296
+ end
297
+
298
+ class RingConstraint < Constraint
299
+ has_one :other_role, :class => "Role" # See Role.all_ring_constraint_as_other_role
300
+ has_one :ring_type, :mandatory => true # See RingType.all_ring_constraint
301
+ has_one :role # See Role.all_ring_constraint
302
+ end
303
+
304
+ class Role
305
+ identified_by :fact_type, :ordinal
306
+ one_to_one :concept, :mandatory => true # See Concept.role
307
+ has_one :fact_type, :mandatory => true # See FactType.all_role
308
+ one_to_one :link_fact_type, :counterpart => :implying_role # See LinkFactType.implying_role
309
+ has_one :object_type, :mandatory => true # See ObjectType.all_role
310
+ has_one :ordinal, :mandatory => true # See Ordinal.all_role
311
+ has_one :role_name, :class => Name # See Name.all_role_as_role_name
312
+ end
313
+
314
+ class RoleSequence
315
+ identified_by :guid
316
+ one_to_one :guid, :mandatory => true # See Guid.role_sequence
317
+ maybe :has_unused_dependency_to_force_table_in_norma
318
+ end
319
+
320
+ class RoleValue
321
+ identified_by :fact, :role
322
+ has_one :fact, :mandatory => true # See Fact.all_role_value
323
+ has_one :instance, :mandatory => true # See Instance.all_role_value
324
+ has_one :population, :mandatory => true # See Population.all_role_value
325
+ has_one :role, :mandatory => true # See Role.all_role_value
326
+ end
327
+
328
+ class SetConstraint < Constraint
329
+ end
330
+
331
+ class Shape
332
+ identified_by :guid
333
+ one_to_one :guid, :mandatory => true # See Guid.shape
334
+ maybe :is_expanded
335
+ has_one :location # See Location.all_shape
336
+ has_one :orm_diagram, :class => "ORMDiagram", :mandatory => true # See ORMDiagram.all_shape
337
+ end
338
+
339
+ class Step
340
+ identified_by :guid
341
+ has_one :alternative_set # See AlternativeSet.all_step
342
+ has_one :fact_type, :mandatory => true # See FactType.all_step
343
+ one_to_one :guid, :mandatory => true # See Guid.step
344
+ maybe :is_disallowed
345
+ maybe :is_optional
346
+ end
347
+
348
+ class SubsetConstraint < SetConstraint
349
+ has_one :subset_role_sequence, :class => RoleSequence, :mandatory => true # See RoleSequence.all_subset_constraint_as_subset_role_sequence
350
+ has_one :superset_role_sequence, :class => RoleSequence, :mandatory => true # See RoleSequence.all_subset_constraint_as_superset_role_sequence
351
+ end
352
+
353
+ class Topic
354
+ identified_by :topic_name
355
+ one_to_one :topic_name, :class => Name, :mandatory => true # See Name.topic_as_topic_name
356
+ end
357
+
358
+ class Unit
359
+ identified_by :concept
360
+ has_one :coefficient # See Coefficient.all_unit
361
+ one_to_one :concept, :mandatory => true # See Concept.unit
362
+ has_one :ephemera_url, :class => EphemeraURL # See EphemeraURL.all_unit
363
+ maybe :is_fundamental
364
+ one_to_one :name, :mandatory => true # See Name.unit
365
+ has_one :offset # See Offset.all_unit
366
+ one_to_one :plural_name, :class => Name, :counterpart => :plural_named_unit # See Name.plural_named_unit
367
+ has_one :vocabulary, :mandatory => true # See Vocabulary.all_unit
368
+ end
369
+
370
+ class Value
371
+ identified_by :literal, :is_literal_string, :unit
372
+ maybe :is_literal_string
373
+ has_one :literal, :mandatory => true # See Literal.all_value
374
+ has_one :unit # See Unit.all_value
375
+ has_one :value_type, :mandatory => true # See ValueType.all_value
376
+ end
377
+
378
+ class ValueConstraint < Constraint
379
+ has_one :regular_expression # See RegularExpression.all_value_constraint
380
+ one_to_one :role, :counterpart => :role_value_constraint # See Role.role_value_constraint
381
+ end
382
+
383
+ class Variable
384
+ identified_by :query, :ordinal
385
+ has_one :object_type, :mandatory => true # See ObjectType.all_variable
386
+ has_one :ordinal, :mandatory => true # See Ordinal.all_variable
387
+ one_to_one :projection, :class => Role # See Role.variable_as_projection
388
+ has_one :query, :mandatory => true # See Query.all_variable
389
+ has_one :role_name, :class => Name # See Name.all_variable_as_role_name
390
+ one_to_one :step, :counterpart => :objectification_variable # See Step.objectification_variable
391
+ has_one :subscript # See Subscript.all_variable
392
+ has_one :value # See Value.all_variable
393
+ end
394
+
395
+ class Vocabulary
396
+ identified_by :name
397
+ one_to_one :name, :mandatory => true # See Name.vocabulary
398
+ end
399
+
400
+ class Absorption < Mapping
401
+ has_one :child_role, :class => Role, :mandatory => true # See Role.all_absorption_as_child_role
402
+ maybe :flattens
403
+ has_one :index_role, :class => Role # See Role.all_absorption_as_index_role
404
+ has_one :parent_role, :class => Role, :mandatory => true # See Role.all_absorption_as_parent_role
405
+ end
406
+
407
+ class Aggregation
408
+ identified_by :aggregate, :aggregated_variable
409
+ has_one :aggregate, :mandatory => true # See Aggregate.all_aggregation
410
+ has_one :aggregated_variable, :class => Variable, :mandatory => true # See Variable.all_aggregation_as_aggregated_variable
411
+ has_one :variable, :mandatory => true # See Variable.all_aggregation
412
+ end
413
+
414
+ class Agreement
415
+ identified_by :context_note
416
+ one_to_one :context_note, :mandatory => true # See ContextNote.agreement
417
+ has_one :date # See Date.all_agreement
418
+ end
419
+
420
+ class Bound
421
+ identified_by :value, :is_inclusive
422
+ maybe :is_inclusive
423
+ has_one :value, :mandatory => true # See Value.all_bound
424
+ end
425
+
426
+ class Composite
427
+ identified_by :mapping
428
+ has_one :composition, :mandatory => true # See Composition.all_composite
429
+ one_to_one :mapping, :mandatory => true # See Mapping.composite
430
+ end
431
+
432
+ class ConstraintShape < Shape
433
+ has_one :constraint, :mandatory => true # See Constraint.all_constraint_shape
434
+ end
435
+
436
+ class ContextAccordingTo
437
+ identified_by :context_note, :agent
438
+ has_one :agent, :mandatory => true # See Agent.all_context_according_to
439
+ has_one :context_note, :mandatory => true # See ContextNote.all_context_according_to
440
+ has_one :date # See Date.all_context_according_to
441
+ end
442
+
443
+ class ContextAgreedBy
444
+ identified_by :agreement, :agent
445
+ has_one :agent, :mandatory => true # See Agent.all_context_agreed_by
446
+ has_one :agreement, :mandatory => true # See Agreement.all_context_agreed_by
447
+ end
448
+
449
+ class Derivation
450
+ identified_by :derived_unit, :base_unit
451
+ has_one :base_unit, :class => Unit, :mandatory => true # See Unit.all_derivation_as_base_unit
452
+ has_one :derived_unit, :class => Unit, :mandatory => true # See Unit.all_derivation_as_derived_unit
453
+ has_one :exponent # See Exponent.all_derivation
454
+ end
455
+
456
+ class Diagram
457
+ identified_by :vocabulary, :name
458
+ has_one :name, :mandatory => true # See Name.all_diagram
459
+ has_one :vocabulary, :mandatory => true # See Vocabulary.all_diagram
460
+ end
461
+
462
+ class DiscriminatedRole
463
+ identified_by :discriminator, :role
464
+ has_one :discriminator, :mandatory => true # See Discriminator.all_discriminated_role
465
+ has_one :role, :mandatory => true # See Role.all_discriminated_role
466
+ has_one :value, :mandatory => true # See Value.all_discriminated_role
467
+ end
468
+
469
+ class FactTypeShape < Shape
470
+ has_one :display_role_names_setting # See DisplayRoleNamesSetting.all_fact_type_shape
471
+ has_one :fact_type, :mandatory => true # See FactType.all_fact_type_shape
472
+ has_one :rotation_setting # See RotationSetting.all_fact_type_shape
473
+ end
474
+
475
+ class Injection < Mapping
476
+ end
477
+
478
+ class ModelNoteShape < Shape
479
+ has_one :context_note, :mandatory => true # See ContextNote.all_model_note_shape
480
+ end
481
+
482
+ class ORMDiagram < Diagram
483
+ end
484
+
485
+ class ObjectType
486
+ identified_by :vocabulary, :name
487
+ one_to_one :concept, :mandatory => true # See Concept.object_type
488
+ maybe :is_independent
489
+ has_one :name, :mandatory => true # See Name.all_object_type
490
+ has_one :pronoun # See Pronoun.all_object_type
491
+ has_one :vocabulary, :mandatory => true # See Vocabulary.all_object_type
492
+ end
493
+
494
+ class ObjectTypeShape < Shape
495
+ maybe :has_expanded_reference_mode
496
+ has_one :object_type, :mandatory => true # See ObjectType.all_object_type_shape
497
+ end
498
+
499
+ class ObjectifiedFactTypeNameShape < Shape
500
+ one_to_one :fact_type_shape, :mandatory => true # See FactTypeShape.objectified_fact_type_name_shape
501
+ end
502
+
503
+ class Play
504
+ identified_by :step, :role
505
+ has_one :role, :mandatory => true # See Role.all_play
506
+ has_one :step, :mandatory => true # See Step.all_play
507
+ has_one :variable, :mandatory => true # See Variable.all_play
508
+ maybe :is_input
509
+ end
510
+
511
+ class Population
512
+ identified_by :vocabulary, :name
513
+ one_to_one :concept, :mandatory => true # See Concept.population
514
+ has_one :name, :mandatory => true # See Name.all_population
515
+ has_one :vocabulary # See Vocabulary.all_population
516
+ end
517
+
518
+ class ReadingShape < Shape
519
+ one_to_one :fact_type_shape, :mandatory => true # See FactTypeShape.reading_shape
520
+ has_one :reading, :mandatory => true # See Reading.all_reading_shape
521
+ end
522
+
523
+ class RingConstraintShape < ConstraintShape
524
+ has_one :fact_type_shape, :mandatory => true # See FactTypeShape.all_ring_constraint_shape
525
+ end
526
+
527
+ class RoleDisplay
528
+ identified_by :fact_type_shape, :ordinal
529
+ has_one :fact_type_shape, :mandatory => true # See FactTypeShape.all_role_display
530
+ has_one :ordinal, :mandatory => true # See Ordinal.all_role_display
531
+ has_one :role, :mandatory => true # See Role.all_role_display
532
+ end
533
+
534
+ class RoleNameShape < Shape
535
+ one_to_one :role_display, :mandatory => true # See RoleDisplay.role_name_shape
536
+ end
537
+
538
+ class RoleRef
539
+ identified_by :role_sequence, :ordinal
540
+ has_one :ordinal, :mandatory => true # See Ordinal.all_role_ref
541
+ has_one :role, :mandatory => true # See Role.all_role_ref
542
+ has_one :role_sequence, :mandatory => true # See RoleSequence.all_role_ref
543
+ has_one :leading_adjective, :class => Adjective # See Adjective.all_role_ref_as_leading_adjective
544
+ one_to_one :play # See Play.role_ref
545
+ has_one :trailing_adjective, :class => Adjective # See Adjective.all_role_ref_as_trailing_adjective
546
+ end
547
+
548
+ class SetComparisonConstraint < SetConstraint
549
+ end
550
+
551
+ class SetComparisonRoles
552
+ identified_by :set_comparison_constraint, :ordinal
553
+ has_one :ordinal, :mandatory => true # See Ordinal.all_set_comparison_roles
554
+ has_one :role_sequence, :mandatory => true # See RoleSequence.all_set_comparison_roles
555
+ has_one :set_comparison_constraint, :mandatory => true # See SetComparisonConstraint.all_set_comparison_roles
556
+ end
557
+
558
+ class SetEqualityConstraint < SetComparisonConstraint
559
+ end
560
+
561
+ class SetExclusionConstraint < SetComparisonConstraint
562
+ maybe :is_mandatory
563
+ end
564
+
565
+ class ValueConstraintShape < ConstraintShape
566
+ has_one :object_type_shape # See ObjectTypeShape.all_value_constraint_shape
567
+ one_to_one :role_display # See RoleDisplay.value_constraint_shape
568
+ end
569
+
570
+ class ValueRange
571
+ identified_by :minimum_bound, :maximum_bound
572
+ has_one :maximum_bound, :class => Bound # See Bound.all_value_range_as_maximum_bound
573
+ has_one :minimum_bound, :class => Bound # See Bound.all_value_range_as_minimum_bound
574
+ end
575
+
576
+ class AllowedRange
577
+ identified_by :value_constraint, :value_range
578
+ has_one :value_constraint, :mandatory => true # See ValueConstraint.all_allowed_range
579
+ has_one :value_range, :mandatory => true # See ValueRange.all_allowed_range
580
+ end
581
+
582
+ class DomainObjectType < ObjectType
583
+ end
584
+
585
+ class EntityType < DomainObjectType
586
+ one_to_one :fact_type # See FactType.entity_type
587
+ end
588
+
589
+ class TypeInheritance < FactType
590
+ identified_by :subtype, :supertype
591
+ has_one :subtype, :class => EntityType, :mandatory => true # See EntityType.all_type_inheritance_as_subtype
592
+ has_one :supertype, :class => EntityType, :mandatory => true # See EntityType.all_type_inheritance_as_supertype
593
+ has_one :assimilation # See Assimilation.all_type_inheritance
594
+ maybe :provides_identification
595
+ end
596
+
597
+ class ValueType < DomainObjectType
598
+ has_one :length # See Length.all_value_type
599
+ has_one :scale # See Scale.all_value_type
600
+ has_one :supertype, :class => ValueType # See ValueType.all_value_type_as_supertype
601
+ has_one :transaction_phase # See TransactionPhase.all_value_type
602
+ has_one :unit # See Unit.all_value_type
603
+ one_to_one :value_constraint # See ValueConstraint.value_type
604
+ end
605
+
606
+ class ValueTypeParameter
607
+ identified_by :value_type, :name
608
+ has_one :name, :mandatory => true # See Name.all_value_type_parameter
609
+ has_one :value_type, :mandatory => true # See ValueType.all_value_type_parameter
610
+ has_one :facet_value_type, :class => ValueType, :mandatory => true # See ValueType.all_value_type_parameter_as_facet_value_type
611
+ end
612
+
613
+ class ValueTypeParameterRestriction
614
+ identified_by :value_type, :value_type_parameter
615
+ has_one :value_type, :mandatory => true # See ValueType.all_value_type_parameter_restriction
616
+ has_one :value_type_parameter, :mandatory => true # See ValueTypeParameter.all_value_type_parameter_restriction
617
+ has_one :value, :mandatory => true # See Value.all_value_type_parameter_restriction
618
+ end
619
+
620
+ class ImplicitBooleanValueType < ValueType
621
+ end
622
+
623
+ end
624
+ end