diff options
author | ArenBabikian <aren.babikian@mail.mcgill.ca> | 2020-05-17 01:58:13 -0400 |
---|---|---|
committer | ArenBabikian <aren.babikian@mail.mcgill.ca> | 2020-05-17 01:58:13 -0400 |
commit | 48871e1be75169e4e3768a7c0c47791e02c7e634 (patch) | |
tree | cfcd4e4fdc0dea4f4b0102a610459ed7509f47f8 /Tests/MODELS2020-CaseStudies/case.study.pledge.run/bin | |
parent | Adjust Taxation model. (diff) | |
download | VIATRA-Generator-48871e1be75169e4e3768a7c0c47791e02c7e634.tar.gz VIATRA-Generator-48871e1be75169e4e3768a7c0c47791e02c7e634.tar.zst VIATRA-Generator-48871e1be75169e4e3768a7c0c47791e02c7e634.zip |
update measurements setup. make archives.
Diffstat (limited to 'Tests/MODELS2020-CaseStudies/case.study.pledge.run/bin')
-rw-r--r-- | Tests/MODELS2020-CaseStudies/case.study.pledge.run/bin/queries/NewOCLFileX.ocl | 45 | ||||
-rw-r--r-- | Tests/MODELS2020-CaseStudies/case.study.pledge.run/bin/queries/case_study_A.vql | 361 |
2 files changed, 0 insertions, 406 deletions
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/bin/queries/NewOCLFileX.ocl b/Tests/MODELS2020-CaseStudies/case.study.pledge.run/bin/queries/NewOCLFileX.ocl deleted file mode 100644 index 66ae728e..00000000 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/bin/queries/NewOCLFileX.ocl +++ /dev/null | |||
@@ -1,45 +0,0 @@ | |||
1 | import 'file:/Users/Aren Babikian/git/VIATRA-Attributes/case.study.a.model/model/Taxation.ecore' | ||
2 | |||
3 | package Taxation | ||
4 | |||
5 | --context Income inv inv8: | ||
6 | --if(not self.income_type.oclIsTypeOf(Employment_Income)) then | ||
7 | --self.details->forAll(d| d.distance = 0) | ||
8 | --else | ||
9 | --self.details->forAll(d| d.distance >= 0.0 and d.distance <= 100) | ||
10 | --endif | ||
11 | -- | ||
12 | --context Legal_Union_Record inv inv490: | ||
13 | --self.individual_A.oclIsKindOf(Tax_Payer) | ||
14 | -- | ||
15 | --context Legal_Union_Record inv inv491: | ||
16 | --self.individual_B->forAll(i | i.oclIsKindOf(Physical_Person) ) | ||
17 | -- | ||
18 | --context Legal_Union_Record inv inv492: | ||
19 | --self.individual_B->forAll(i | not i.oclIsTypeOf(Dependent) ) | ||
20 | -- | ||
21 | --context Legal_Union_Record inv inv493: | ||
22 | --self.individual_A <> self.individual_B | ||
23 | -- | ||
24 | --context Tax_Payer inv inv13: | ||
25 | -- self.addresses->exists( hab_add:Address | hab_add.oclIsTypeOf(Habitual_Address) = true and hab_add.country=Country::ZZ) | ||
26 | --implies | ||
27 | -- self.oclIsTypeOf(Resident_Tax_Payer) | ||
28 | |||
29 | context Income inv inv7: | ||
30 | let val:Real =self.details->asOrderedSet()->first().distance in | ||
31 | self.details->forAll(d: Income_Detail|d.distance = val) | ||
32 | |||
33 | --context External_Allowance inv inv15: | ||
34 | --let child:Dependent = self.person in | ||
35 | --let h:Household = Household.allInstances()->select(children->includes(child))->asOrderedSet()->first() in | ||
36 | --let t1:Set(Physical_Person) = Set{h.parents.individual_A}->union(h.parents.individual_B)->select(oclIsKindOf(Tax_Payer)) in | ||
37 | --if(t1->size()=1) then | ||
38 | --self.reciver = t1->asOrderedSet()->first() | ||
39 | --else | ||
40 | --self.reciver = t1->asOrderedSet()->at(2) or self.reciver = t1->asOrderedSet()->at(1) | ||
41 | --endif | ||
42 | |||
43 | |||
44 | |||
45 | endpackage \ No newline at end of file | ||
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/bin/queries/case_study_A.vql b/Tests/MODELS2020-CaseStudies/case.study.pledge.run/bin/queries/case_study_A.vql deleted file mode 100644 index 05bffd2d..00000000 --- a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/bin/queries/case_study_A.vql +++ /dev/null | |||
@@ -1,361 +0,0 @@ | |||
1 | package queries | ||
2 | |||
3 | import "http:///TaxCard.ecore" | ||
4 | |||
5 | //AttributeRemoved -> DF | ||
6 | |||
7 | //inv1-External_Allowance.amount is a derived feature (TODOcheck) | ||
8 | //inv2-Tax_Card.income.taxPayer.taxesDue is a derived feature (TODOcheck) | ||
9 | |||
10 | //inv3-multiplicity adjusted | ||
11 | @Constraint(message = "inv03", severity = "error", key = {dep}) | ||
12 | pattern inv03(dep : Dependent) { | ||
13 | find x_inv03_eligAll(dep); | ||
14 | neg find x_inv03_hasAll(dep); | ||
15 | } or { | ||
16 | Dependent.birth_year(dep, by); | ||
17 | check(2018-by > 21); | ||
18 | Dependent.continued_studies(dep, false); | ||
19 | Dependent.allowances(dep, _); | ||
20 | } | ||
21 | pattern x_inv03_eligAll(dep : Dependent) { | ||
22 | Dependent.birth_year(dep, by); | ||
23 | check(2018-by <= 21); | ||
24 | } or { | ||
25 | Dependent.continued_studies(dep, true); | ||
26 | } | ||
27 | pattern x_inv03_hasAll(dep : Dependent) { | ||
28 | Dependent.allowances(dep, _); | ||
29 | } | ||
30 | |||
31 | //inv5 - oclIsTypeOf - handled here | ||
32 | @Constraint(message = "inv05", severity = "error", key = {inc}) | ||
33 | pattern inv05(inc : Income) { | ||
34 | //income_type: None | ||
35 | neg find x_inv08_noType(inc); | ||
36 | Income.details.worked_days(inc, wd); | ||
37 | check(wd != 0); | ||
38 | } or { | ||
39 | //income_type: Not Employment_Income | ||
40 | Income.income_type(inc, type); | ||
41 | neg find x_inv08_notEI(type); | ||
42 | Income.details.worked_days(inc, wd); | ||
43 | check(wd != 0); | ||
44 | } or { | ||
45 | //income_type: Employment Income | ||
46 | Income.income_type(inc, type); | ||
47 | Employment_Income(type); | ||
48 | find x_inv05_inRange(inc); | ||
49 | } | ||
50 | pattern x_inv05_inRange(inc : Income) { | ||
51 | Income.details.worked_days(inc, wd); | ||
52 | check(wd < 1); | ||
53 | } or { | ||
54 | Income.details.worked_days(inc, wd); | ||
55 | check(wd > 25); | ||
56 | } | ||
57 | |||
58 | //inv6-Does not make sens, but directly from OCL | ||
59 | //first part of or from definition of getAge() | ||
60 | @Constraint(message = "inv06", severity = "error", key = {tp}) | ||
61 | pattern inv06(tp : Tax_Payer) { | ||
62 | Tax_Payer.dependents(tp, _); | ||
63 | Tax_Payer.birth_year(tp, TPBy); | ||
64 | check(2018 - TPBy > 2018-16); | ||
65 | } or { | ||
66 | Tax_Payer.birth_year(tp, TPBy); | ||
67 | Tax_Payer.dependents(tp, dep); | ||
68 | Dependent.birth_year(dep, DepBy); | ||
69 | check(2018-DepBy <= 2018-TPBy-16); | ||
70 | } | ||
71 | |||
72 | //inv7-OrderedSet | ||
73 | @Constraint(message = "inv07", severity = "error", key = {inc}) | ||
74 | pattern inv07(inc : Income) { | ||
75 | Income.details.distance(inc, d1); | ||
76 | Income.details.distance(inc, d2); | ||
77 | check(d1 != d2);//compare values | ||
78 | } | ||
79 | |||
80 | //user_complete_details-AttributeRemoved | ||
81 | |||
82 | //inv8 - oclIsTypeOf - handled here | ||
83 | @Constraint(message = "inv08", severity = "error", key = {inc}) | ||
84 | pattern inv08(inc : Income) { | ||
85 | //income_type: None | ||
86 | neg find x_inv08_noType(inc); | ||
87 | Income.details.distance(inc, dist); | ||
88 | check(dist != 0); | ||
89 | } or { | ||
90 | //income_type: Not Employment_Income | ||
91 | Income.income_type(inc, type); | ||
92 | neg find x_inv08_notEI(type); | ||
93 | Income.details.distance(inc, dist); | ||
94 | check(dist != 0); | ||
95 | } or { | ||
96 | //income_type: Employment Income | ||
97 | Income.income_type(inc, type); | ||
98 | Employment_Income(type); | ||
99 | find x_inv08_inRange(inc); | ||
100 | } | ||
101 | pattern x_inv08_notEI(type : Employment_Income) { | ||
102 | Employment_Income(type); | ||
103 | } | ||
104 | pattern x_inv08_noType(inc : Income) { | ||
105 | Income.income_type(inc, _); | ||
106 | } | ||
107 | pattern x_inv08_inRange(inc : Income) { | ||
108 | Income.details.distance(inc, dist); | ||
109 | check(dist < 0); | ||
110 | } or { | ||
111 | Income.details.distance(inc, dist); | ||
112 | check(dist > 100); | ||
113 | } | ||
114 | //inv9-DerivedFeature | ||
115 | |||
116 | //inv10-Ordered Sets | ||
117 | @Constraint(message = "inv10", severity = "error", key = {inc}) | ||
118 | pattern inv10(inc : Income) { | ||
119 | Income.details.amount(inc, a1); | ||
120 | Income.details.amount(inc, a2); | ||
121 | check(a1 != a2);//compare values | ||
122 | } | ||
123 | |||
124 | //inv11-attributes-handled by multiplicity | ||
125 | @Constraint(message = "inv11", severity = "error", key = {exp}) | ||
126 | pattern inv11(exp : Expense) { | ||
127 | find x_inv11_incOver100(exp); | ||
128 | find x_inv11_incNotOver100(exp); | ||
129 | } | ||
130 | pattern x_inv11_incOver100(exp : Expense) { | ||
131 | Expense.income.income_amount(exp, incVal); | ||
132 | check(incVal / 2 > 50); | ||
133 | |||
134 | } or { | ||
135 | Expense.declared_amount(exp, decl); | ||
136 | check(decl != 50); | ||
137 | } | ||
138 | pattern x_inv11_incNotOver100(exp : Expense) { | ||
139 | Expense.income.income_amount(exp, incVal); | ||
140 | check(incVal / 2 <= 50); | ||
141 | } or { | ||
142 | Expense.declared_amount(exp, decl); | ||
143 | check(decl < 50); | ||
144 | } or { | ||
145 | Expense.income.income_amount(exp, incVal); | ||
146 | Expense.declared_amount(exp, decl); | ||
147 | check(decl > incVal/2); | ||
148 | } | ||
149 | |||
150 | //inv12 | ||
151 | //exists - handled logically | ||
152 | @Constraint(message = "inv12", severity = "error", key = {tp}) | ||
153 | pattern inv12(tp : Tax_Payer) { | ||
154 | Tax_Payer.addresses(tp, hab_add); | ||
155 | Habitual_Address(hab_add); | ||
156 | neg find x_inv12_notZZ(hab_add); | ||
157 | Tax_Payer.incomes(tp, inc); | ||
158 | Local_Income(inc); | ||
159 | neg find x_inv12_notNonRes(tp); | ||
160 | } | ||
161 | pattern x_inv12_notNonRes(tp : Non_Resident_Tax_Payer) { | ||
162 | Non_Resident_Tax_Payer(tp); | ||
163 | } | ||
164 | pattern x_inv12_notZZ(hab_add : Habitual_Address) { | ||
165 | Address.country(hab_add, ::ZZ); | ||
166 | } | ||
167 | |||
168 | //inv13 - Added new containment rel Phys_Pers->Address | ||
169 | //exists - handled logically | ||
170 | @Constraint(message = "inv13", severity = "error", key = {tp}) | ||
171 | pattern inv13(tp : Tax_Payer) { | ||
172 | Tax_Payer.addresses(tp, hab_add); | ||
173 | Habitual_Address(hab_add); | ||
174 | Address.country(hab_add, ::ZZ); | ||
175 | neg find x_inv13(tp); | ||
176 | } | ||
177 | pattern x_inv13(tp : Resident_Tax_Payer) { | ||
178 | Resident_Tax_Payer(tp); | ||
179 | } | ||
180 | |||
181 | //inv14-MultiplicityChanged | ||
182 | |||
183 | //inv15-Ordered Sets in assignment if block | ||
184 | //ERROR if no household object | ||
185 | //@Constraint(message = "inv15", severity = "error", key = {ea}) | ||
186 | //pattern inv15(ea : External_Allowance) { | ||
187 | // neg find x_inv15(ea); | ||
188 | //} | ||
189 | //pattern x_inv15(ea : External_Allowance) { | ||
190 | // External_Allowance.person(ea, child); | ||
191 | // Household.children(h, child);//only one due to multiplicity | ||
192 | // Household.parents.individual_A(h, iA); | ||
193 | // Tax_Payer(iA); | ||
194 | // External_Allowance.reciver(ea, iA); | ||
195 | //} or { | ||
196 | // External_Allowance.person(ea, child); | ||
197 | // Household.children(h, child);//only one due to multiplicity | ||
198 | // Household.parents.individual_B(h, iB); | ||
199 | // Tax_Payer(iB); | ||
200 | // External_Allowance.reciver(ea, iB); | ||
201 | //} | ||
202 | |||
203 | @Constraint(message = "inv15", severity = "error", key = {ea}) | ||
204 | pattern inv15(ea : External_Allowance) { | ||
205 | External_Allowance.person(ea, child); | ||
206 | Household.children(h, child);//only one due to multiplicity | ||
207 | Household.parents.individual_A(h, iA); | ||
208 | Household.parents.individual_B(h, iB); | ||
209 | |||
210 | Dependant(iA) | ||
211 | Dependant(iB) | ||
212 | neg find x_inv15(ea); | ||
213 | } | ||
214 | pattern x_inv15(ea : External_Allowance) { | ||
215 | |||
216 | Tax_Payer(iA); | ||
217 | External_Allowance.reciver(ea, iA); | ||
218 | } or { | ||
219 | External_Allowance.person(ea, child); | ||
220 | Household.children(h, child);//only one due to multiplicity | ||
221 | |||
222 | Tax_Payer(iB); | ||
223 | External_Allowance.reciver(ea, iB); | ||
224 | } | ||
225 | |||
226 | //inv16-Tax_Card.tax_card_type is a derived feature | ||
227 | |||
228 | //inv17-attribute-handled by multiplicity | ||
229 | @Constraint(message = "inv17", severity = "error", key = {lur}) | ||
230 | pattern inv17(lur : Legal_Union_Record) { | ||
231 | Legal_Union_Record.start_year(lur, sy); | ||
232 | check(sy < 1950); | ||
233 | } or { | ||
234 | Legal_Union_Record.start_year(lur, sy); | ||
235 | check(sy > 2018); | ||
236 | } | ||
237 | |||
238 | //inv18-MultiplicityChecked | ||
239 | //inv19-MultiplicityChecked | ||
240 | |||
241 | //inv20-Useless constraint since both edges are containment (TODOCheck) | ||
242 | //OclIsUndefined-Handled by multiplicity | ||
243 | @Constraint(message = "inv20", severity = "error", key = {lur}) | ||
244 | pattern inv20(lur : Legal_Union_Record) { | ||
245 | Legal_Union_Record.individual_A(lur, iA); | ||
246 | Legal_Union_Record.individual_B(lur, iB); | ||
247 | iA == iB; | ||
248 | } | ||
249 | //inv21-MultiplicityChecked | ||
250 | //inv22-MultiplicityChecked | ||
251 | //inv23-MultiplicityChecked | ||
252 | //inv24-MultiplicityChecked | ||
253 | //inv25-MultiplicityChecked | ||
254 | //inv26-MultiplicityChanged | ||
255 | //inv27-dupOfInv24 | ||
256 | //inv28-dubOfInv23 | ||
257 | //inv29-MultiplicityChanged | ||
258 | //inv30-AttributeRemoved | ||
259 | //inv31-AttributeRemoved | ||
260 | //inv32-AttributeRemoved | ||
261 | |||
262 | //inv33-attribute-handled by multiplicity | ||
263 | @Constraint(message = "inv33", severity = "error", key = {p}) | ||
264 | pattern inv33(p : Physical_Person) { | ||
265 | Physical_Person.birth_year(p, by); | ||
266 | check(2018-by < 0); | ||
267 | } or { | ||
268 | Physical_Person.birth_year(p, by); | ||
269 | check(2018-by > 100); | ||
270 | } | ||
271 | |||
272 | //inv34-attribute-handled by multiplicity | ||
273 | @Constraint(message = "inv34", severity = "error", key = {p}) | ||
274 | pattern inv34(p : Physical_Person) { | ||
275 | Physical_Person.birth_month(p, birthMonth); | ||
276 | check(birthMonth < 1); | ||
277 | } or { | ||
278 | Physical_Person.birth_month(p, birthMonth); | ||
279 | check(birthMonth > 12); | ||
280 | } | ||
281 | |||
282 | //inv35-attribute-handled by multiplicity | ||
283 | @Constraint(message = "inv35", severity = "error", key = {p}) | ||
284 | pattern inv35(p : Physical_Person) { | ||
285 | Physical_Person.birth_day(p, birthDay); | ||
286 | check(birthDay < 1); | ||
287 | } or { | ||
288 | Physical_Person.birth_day(p, birthDay); | ||
289 | check(birthDay > 28); | ||
290 | } | ||
291 | |||
292 | //inv36-AttributeRemoved | ||
293 | //inv37-AttributeRemoved | ||
294 | //inv38-AttributeRemoved | ||
295 | //inv39-AttributeRemoved | ||
296 | //inv40-AttributeRemoved | ||
297 | //inv41-AttributeRemoved | ||
298 | //inv42-AttributeRemoved | ||
299 | //inv43-AttributeRemoved | ||
300 | //inv44-AttributeRemoved | ||
301 | //inv45-AttributeRemoved | ||
302 | //inv46-AttributeRemoved | ||
303 | |||
304 | //inv47-attributes-handled by multiplicity | ||
305 | @Constraint(message = "inv47", severity = "error", key = {lur}) | ||
306 | pattern inv47(lur : Legal_Union_Record) { | ||
307 | Legal_Union_Record.end_year(lur, endY); | ||
308 | Legal_Union_Record.start_year(lur, startY); | ||
309 | neg find x_inv47(lur); | ||
310 | check(startY >= endY); | ||
311 | } or { | ||
312 | Legal_Union_Record.end_year(lur, endY); | ||
313 | Legal_Union_Record.start_year(lur, startY); | ||
314 | check(endY!= -1); | ||
315 | check(startY >= endY); | ||
316 | } | ||
317 | pattern x_inv47(lur : Legal_Union_Record) { | ||
318 | Legal_Union_Record.separation_cause(lur, ::NONE); | ||
319 | } | ||
320 | |||
321 | //inv48-attributes-handled by multiplicity | ||
322 | @Constraint(message = "inv48", severity = "error", key = {p}) | ||
323 | pattern inv48(p : Physical_Person) { | ||
324 | Physical_Person.disability_percentage(p, disPer); | ||
325 | check(disPer > 1.0); | ||
326 | } or { | ||
327 | Physical_Person.disability_percentage(p, disPer); | ||
328 | check(disPer < 0.0); | ||
329 | } or { | ||
330 | Physical_Person.disability_type(p, ::NONE); | ||
331 | Physical_Person.disability_percentage(p, disPer); | ||
332 | check(disPer != 0.0); | ||
333 | } or { | ||
334 | neg find x_inv48(p); | ||
335 | Physical_Person.disability_percentage(p, disPer); | ||
336 | check(disPer == 0.0); | ||
337 | } | ||
338 | pattern x_inv48(p : Physical_Person) { | ||
339 | Physical_Person.disability_type(p, ::NONE); | ||
340 | } | ||
341 | |||
342 | //inv49-OclKindOf-handled by multiplicity | ||
343 | @Constraint(message = "inv49", severity = "error", key = {lur}) | ||
344 | pattern inv49_A(lur : Legal_Union_Record) { | ||
345 | Legal_Union_Record.individual_A(lur, i); | ||
346 | Legal_Union_Record.individual_B(lur, i); | ||
347 | } | ||
348 | //inv49-OclKindOf-handled by multiplicity | ||
349 | @Constraint(message = "inv49", severity = "error", key = {lur}) | ||
350 | pattern inv49_B(lur : Legal_Union_Record) { | ||
351 | Legal_Union_Record.individual_A(lur, i); | ||
352 | Dependent(i); | ||
353 | } or { | ||
354 | Legal_Union_Record.individual_B(lur, i); | ||
355 | Dependent(i); | ||
356 | } | ||
357 | |||
358 | //inv50-MultiplicityChecked | ||
359 | //inv51-MultiplicityChecked | ||
360 | //inv52-MultiplicityChecked | ||
361 | //inv53-MultiplicityChecked \ No newline at end of file | ||