aboutsummaryrefslogtreecommitdiffstats
path: root/Metrics/Metrics-Calculation/RealisticRunner/queries/yakindu.vql
diff options
context:
space:
mode:
Diffstat (limited to 'Metrics/Metrics-Calculation/RealisticRunner/queries/yakindu.vql')
-rw-r--r--Metrics/Metrics-Calculation/RealisticRunner/queries/yakindu.vql226
1 files changed, 226 insertions, 0 deletions
diff --git a/Metrics/Metrics-Calculation/RealisticRunner/queries/yakindu.vql b/Metrics/Metrics-Calculation/RealisticRunner/queries/yakindu.vql
new file mode 100644
index 00000000..0d863ed2
--- /dev/null
+++ b/Metrics/Metrics-Calculation/RealisticRunner/queries/yakindu.vql
@@ -0,0 +1,226 @@
1package hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu
2import epackage "hu.bme.mit.inf.yakindumm"
3
4/////////
5// Entry
6/////////
7
8pattern entryInRegion(r1 : Region, e1 : Entry) {
9 Region.vertices(r1, e1);
10}
11
12@Constraint(severity="error", message="error", key = {r1})
13pattern noEntryInRegion(r1 : Region) {
14 neg find entryInRegion(r1, _);
15}
16
17@Constraint(severity="error", message="error", key = {r})
18pattern multipleEntryInRegion(r : Region) {
19 find entryInRegion(r, e1);
20 find entryInRegion(r, e2);
21 e1 != e2;
22}
23
24pattern transition(t : Transition, src : Vertex, trg : Vertex) {
25 Transition.source(t, src);
26 Transition.target(t, trg);
27}
28
29@Constraint(severity="error", message="error", key = {e})
30pattern incomingToEntry(t : Transition, e : Entry) {
31 find transition(t, _, e);
32}
33
34@Constraint(severity="error", message="error", key = {e})
35pattern noOutgoingTransitionFromEntry(e : Entry) {
36 neg find transition(_, e, _);
37}
38
39@Constraint(severity="error", message="error", key = {e})
40pattern multipleTransitionFromEntry(e : Entry, t1 : Transition, t2: Transition) {
41 Entry.outgoingTransitions(e,t1);
42 Entry.outgoingTransitions(e,t2);
43 t1!=t2;
44}
45
46/////////
47// Exit
48/////////
49
50@Constraint(severity="error", message="error", key = {e})
51pattern outgoingFromExit(t : Transition, e : Exit) {
52 Exit.outgoingTransitions(e,t);
53}
54
55/////////
56// Final
57/////////
58
59@Constraint(severity="error", message="error", key = {f})
60pattern outgoingFromFinal(t : Transition, f : FinalState) {
61 FinalState.outgoingTransitions(f,t);
62}
63
64/////////
65// State vs Region
66/////////
67
68@Constraint(severity="error", message="error", key = {region})
69pattern noStateInRegion(region: Region) {
70 neg find StateInRegion(region,_);
71}
72pattern StateInRegion(region: Region, state: State) {
73 Region.vertices(region,state);
74}
75
76/////////
77// Choice
78/////////
79
80@Constraint(severity="error", message="error", key = {c})
81pattern choiceHasNoOutgoing(c : Choice) {
82 neg find transition(_, c, _);
83}
84
85@Constraint(severity="error", message="error", key = {c})
86pattern choiceHasNoIncoming(c: Choice) {
87 neg find transition(_, _, c);
88}
89
90/////////
91// Synchronization
92/////////
93
94//@Constraint(severity="error", message="error", key = {s})
95//pattern synchHasNoOutgoing(s : Synchronization) {
96// neg find transition(_, s, _);
97//}
98//
99//@Constraint(severity="error", message="error", key = {s})
100//pattern synchHasNoIncoming(s : Synchronization) {
101// neg find transition(_, _, s);
102//}
103//
104//@Constraint(severity="error", message="error", key = {s})
105//pattern SynchronizedIncomingInSameRegion(s : Synchronization, v1 : Vertex, v2 : Vertex) {
106// find transition(t1, v1, s);
107// find transition(t2, v2, s);
108// t1!=t2;
109// Region.vertices(r, v1);
110// Region.vertices(r, v2);
111//} or {
112// find transition(t1, s, v1);
113// find transition(t2, s, v2);
114// t1!=t2;
115// Region.vertices(r, v1);
116// Region.vertices(r, v2);
117//}
118//
119//@Constraint(severity="error", message="error", key = {s})
120//pattern notSynchronizingStates(s : Synchronization) {
121// neg find hasMultipleOutgoingTrainsition(s);
122// neg find hasMultipleIncomingTrainsition(s);
123//}
124
125//pattern hasMultipleOutgoingTrainsition(v : Synchronization) {
126// find transition(_, v, trg1);
127// find transition(_, v, trg2);
128// trg1 != trg2;
129//}
130//
131//pattern hasMultipleIncomingTrainsition(v : Synchronization) {
132// find transition(_, src1, v);
133// find transition(_, src2, v);
134// src1 != src2;
135//}
136//
137//@Constraint(severity="error", message="error", key = {s})
138//pattern SynchronizedRegionsAreNotSiblings(s : Synchronization, v1 : Vertex, v2 : Vertex) {
139// find transition(_, v1, s);
140// find transition(_, v2, s);
141// CompositeElement.regions.vertices(r1, v1);
142// CompositeElement.regions.vertices(r2, v2);
143// r1 != r2;
144//} or {
145// find transition(_, s, v1);
146// find transition(_, s, v2);
147// CompositeElement.regions.vertices(r1, v1);
148// CompositeElement.regions.vertices(r2, v2);
149// r1 != r2;
150//}
151
152///////////////////////////////
153// Extra
154//
155//@Constraint(severity="error", message="error", key = {s})
156//pattern SynchronizedRegionDoesNotHaveParent(s : Synchronization, v : Vertex) {
157// find transition(_, v, s);
158// neg find child(_,v);
159//} or {
160// find transition(_, s, v);
161// neg find child(_,v);
162//}
163
164pattern child(parent: CompositeElement, child: Vertex) {
165 CompositeElement.regions.vertices(parent, child);
166}
167
168//@Constraint(severity="error", message="error", key = {s})
169//pattern SynchronizedRegionDoesNotHaveMultipleRegions(s : Synchronization, v : Vertex) {
170// find transition(_, v, s);
171// find child(c,v);
172// neg find hasMultipleRegions(c);
173//} or {
174// find transition(_, s, v);
175// find child(c,v);
176// neg find hasMultipleRegions(c);
177//}
178
179
180pattern hasMultipleRegions(composite: CompositeElement) {
181 CompositeElement.regions(composite,region1);
182 CompositeElement.regions(composite,region2);
183 region1 != region2;
184}
185
186/**
187 * Simplifying model generation
188 */
189//@Constraint(severity="error", message="error", key = {s})
190//pattern synchThree(s: Synchronization) {
191// Transition.target(t1,s);
192// Transition.target(t2,s);
193// Transition.target(t3,s);
194// t1!=t2;
195// t2!=t3;
196// t1!=t3;
197//} or {
198// Transition.source(t1,s);
199// Transition.source(t2,s);
200// Transition.source(t3,s);
201// t1!=t2;
202// t2!=t3;
203// t1!=t3;
204//}
205
206/**
207 * Simplifying model generation
208 */
209//@Constraint(severity="error", message="error", key = {s1,s2})
210//pattern twoSynch(s1 : Synchronization, s2 : Synchronization) {
211// Synchronization(s1);
212// Synchronization(s2);
213// s1 != s2;
214//}
215
216/**
217 * Model generation task: at least one synch
218 */
219//@Constraint(severity="error", message="error", key = {s})
220//pattern noSynch(s:Statechart) {
221// Statechart(s);
222// neg find synch(_);
223//}
224//pattern synch(s:Synchronization) {
225// Synchronization(s);
226//} \ No newline at end of file