aboutsummaryrefslogtreecommitdiffstats
path: root/Metrics/Metrics-Calculation/SocialNetwork_plugin/src/ca/mcgill/ecse/socialnetwork/plugin/Queries.vql
blob: 3e7fc68c4293f0904f56aed207bfff3fc99c0748 (plain) (blame)
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package ca.mcgill.ecse.socialnetwork.plugin

import epackage "http://ecse.mcgill.ca/socialnetwork"

//@Constraint(message="terminatorAndInformation", severity="error", key={T})
//pattern terminatorAndInformation(T : FAMTerminator, I : InformationLink) = {
//	FunctionalOutput.outgoingLinks(Out,I);
//	FunctionalOutput.terminator(Out,T);
//} or {
//	InformationLink.to(I,In);
//	FunctionalInput.terminator(In,T);
//}

@Constraint(message="singleFriendship", severity="error", key={p1})
pattern singleFriendship(p1: Person) {
	find friendship(p1, p);
	neg find friendship(p, p1);
}

//@Constraint(message="cycle", severity="error", key={p})
//pattern cycleInParenthood(p: Person) {
//	find isAncestor(p, p);
//}

@Constraint(message="noFriend", severity="error", key={p})
pattern noFriend(p: Person){
	neg find friendship(p, _);
}

//@Constraint(message="brothhoodParent", severity="error", key={p1,p2})
//pattern brothhoodParent(p1: Person, p2: Person){
//	Person.parents(p1, parent1);
//	Person.parents(p2, parent2);
//	parent1 == parent2;
//	find isAncestor(p1, p2);
//}
@Constraint(message="selfFriend", severity="error", key={p})
pattern selfFriend(p: Person){
	Person.friends(p,p);
}

pattern friendship(p1: Person, p2: Person){
	Person.friends(p1,p2);
}

//pattern isAncestor(person : Person, ancestor : Person){
//	Person.parents(person, ancestor);
//} or {
//	Person.parents(person, parent);
//	find isAncestor(parent, ancestor);
//}