diff options
Diffstat (limited to 'Tests/MODELS2020-CaseStudies/case.study.pledge.run/src')
-rw-r--r-- | Tests/MODELS2020-CaseStudies/case.study.pledge.run/src/queries/familyTreeConstraintsQual.vql | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/src/queries/familyTreeConstraintsQual.vql b/Tests/MODELS2020-CaseStudies/case.study.pledge.run/src/queries/familyTreeConstraintsQual.vql new file mode 100644 index 00000000..946451d1 --- /dev/null +++ b/Tests/MODELS2020-CaseStudies/case.study.pledge.run/src/queries/familyTreeConstraintsQual.vql | |||
@@ -0,0 +1,51 @@ | |||
1 | package queries | ||
2 | |||
3 | import "http://www.example.org/familytree" | ||
4 | |||
5 | @Constraint(message="memberIsItsOwnParent", severity="error", key={m}) | ||
6 | pattern memberIsRecursiveParent(m: Member) = { | ||
7 | find isParent+(m, m); | ||
8 | } | ||
9 | |||
10 | pattern isParent(m: Member, p: Member){ | ||
11 | Member.parents(m, p); | ||
12 | } | ||
13 | |||
14 | |||
15 | @Constraint(message="memberIsItsOwnParent", severity="error", key={m}) | ||
16 | pattern memberIsItsOwnParent(m: Member) = { | ||
17 | FamilyTree.members(_, m); | ||
18 | Member.parents(m, p); | ||
19 | m == p; | ||
20 | } | ||
21 | |||
22 | @Constraint(message="twoMembersHaveNoParent", severity="error", key={m1, m2}) | ||
23 | pattern twoMembersHaveNoParent(m1:Member, m2:Member) = { | ||
24 | neg find memberHasParent(m1); | ||
25 | neg find memberHasParent(m2); | ||
26 | m1 != m2; | ||
27 | } | ||
28 | |||
29 | pattern memberHasParent(m: Member) = { | ||
30 | Member.parents(m, _); | ||
31 | } | ||
32 | |||
33 | @Constraint(message="negativeAge", severity="error",key={m}) | ||
34 | pattern negativeAge(m: Member) { | ||
35 | Member.age(m,mage); | ||
36 | check(mage<0); | ||
37 | } | ||
38 | |||
39 | @Constraint(message="parentTooYoung", severity="error", key={c, p}) | ||
40 | pattern parentTooYoung(c: Member, p: Member) = { | ||
41 | FamilyTree.members(_, c); | ||
42 | Member.parents(c, p); | ||
43 | Member.age(c, cAge); | ||
44 | Member.age(p, pAge); | ||
45 | check (pAge <= (cAge + 12)); | ||
46 | } | ||
47 | |||
48 | |||
49 | |||
50 | |||
51 | |||