1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
package ca.mcgill.ecse.dslreasoner.standalone.test.ecore.queries
import epackage "http://www.eclipse.org/emf/2002/Ecore"
pattern directSupertype(a: EClass, b:EClass) {
EClass.eSuperTypes(a,b);
}
@Constraint(key={a}, severity="error", message="error")
pattern loopInInheritence(a: EClass) {
find directSupertype+(a,a);
}
pattern opposite(a:EReference, b: EReference) {
EReference.eOpposite(a,b);
}
@Constraint(key={a}, severity="error", message="error")
pattern oppositeDifferentClass(a:EReference) {
EReference.eOpposite(a,b);
EReference.eContainingClass(a,aContaining);
EReference.eType(b,bTarget);
aContaining != bTarget;
}
@Constraint(key={a}, severity="error", message="error")
pattern nonSymmetricOpposite(a:EReference, b:EReference) {
find opposite(a,b);
neg find opposite(b,a);
}
|