From 9145978c99d5841c5db3e9f135b5ed8e7f4bd961 Mon Sep 17 00:00:00 2001 From: ArenBabikian Date: Mon, 18 May 2020 19:57:25 -0400 Subject: Add most of the measurements --- .../src/queries/familyTreeConstraintsQual.vql | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 Tests/MODELS2020-CaseStudies/case.study.pledge.run/src/queries/familyTreeConstraintsQual.vql (limited to 'Tests/MODELS2020-CaseStudies/case.study.pledge.run/src') 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 @@ +package queries + +import "http://www.example.org/familytree" + +@Constraint(message="memberIsItsOwnParent", severity="error", key={m}) +pattern memberIsRecursiveParent(m: Member) = { + find isParent+(m, m); +} + +pattern isParent(m: Member, p: Member){ + Member.parents(m, p); +} + + +@Constraint(message="memberIsItsOwnParent", severity="error", key={m}) +pattern memberIsItsOwnParent(m: Member) = { + FamilyTree.members(_, m); + Member.parents(m, p); + m == p; +} + +@Constraint(message="twoMembersHaveNoParent", severity="error", key={m1, m2}) +pattern twoMembersHaveNoParent(m1:Member, m2:Member) = { + neg find memberHasParent(m1); + neg find memberHasParent(m2); + m1 != m2; +} + +pattern memberHasParent(m: Member) = { + Member.parents(m, _); +} + +@Constraint(message="negativeAge", severity="error",key={m}) +pattern negativeAge(m: Member) { + Member.age(m,mage); + check(mage<0); +} + +@Constraint(message="parentTooYoung", severity="error", key={c, p}) +pattern parentTooYoung(c: Member, p: Member) = { + FamilyTree.members(_, c); + Member.parents(c, p); + Member.age(c, cAge); + Member.age(p, pAge); + check (pAge <= (cAge + 12)); +} + + + + + -- cgit v1.2.3-70-g09d2