aboutsummaryrefslogtreecommitdiffstats
path: root/Domains/Examples/ModelGenExampleFAM_standalone/inputs/FamPatterns.vql
diff options
context:
space:
mode:
authorLibravatar OszkarSemerath <oszkar.semerath@gmail.com>2018-03-24 22:08:23 -0400
committerLibravatar OszkarSemerath <oszkar.semerath@gmail.com>2018-03-24 22:08:23 -0400
commitdbbf707d78c76f4bc001d7df2418bd6ceab12db3 (patch)
tree08739c6d7739bc4fa404a9c850f98bef9ea994e7 /Domains/Examples/ModelGenExampleFAM_standalone/inputs/FamPatterns.vql
parentupgraded attribute support for the graph solver (diff)
downloadVIATRA-Generator-dbbf707d78c76f4bc001d7df2418bd6ceab12db3.tar.gz
VIATRA-Generator-dbbf707d78c76f4bc001d7df2418bd6ceab12db3.tar.zst
VIATRA-Generator-dbbf707d78c76f4bc001d7df2418bd6ceab12db3.zip
example projects added
Diffstat (limited to 'Domains/Examples/ModelGenExampleFAM_standalone/inputs/FamPatterns.vql')
-rw-r--r--Domains/Examples/ModelGenExampleFAM_standalone/inputs/FamPatterns.vql104
1 files changed, 104 insertions, 0 deletions
diff --git a/Domains/Examples/ModelGenExampleFAM_standalone/inputs/FamPatterns.vql b/Domains/Examples/ModelGenExampleFAM_standalone/inputs/FamPatterns.vql
new file mode 100644
index 00000000..34394ef6
--- /dev/null
+++ b/Domains/Examples/ModelGenExampleFAM_standalone/inputs/FamPatterns.vql
@@ -0,0 +1,104 @@
1package hu.bme.mit.inf.dslreasoner.domains.fam
2
3import epackage "http://www.inf.mit.bme.hu/viatrasolver/example/fam"
4//import epackage "platform:/resource/ModelGenExampleFAM/inputs/FamMetamodel.ecore";
5
6@Constraint(message="terminatorAndInformation", severity="error", key={T})
7pattern terminatorAndInformation(T : FAMTerminator, I : InformationLink) = {
8 FunctionalOutput.outgoingLinks(Out,I);
9 FunctionalOutput.terminator(Out,T);
10} or {
11 InformationLink.to(I,In);
12 FunctionalInput.terminator(In,T);
13}
14
15@QueryBasedFeature
16pattern type(This : Function, Target : FunctionType) = {
17 find rootElements(_Model, This);
18 Target == FunctionType::Root;
19} or {
20 neg find parent(_Child, This);
21 neg find rootElements(_Model, This);
22 Target == FunctionType::Leaf;
23} or {
24 find parent(This, _Par);
25 find parent(_Child, This);
26 Target == FunctionType::Intermediate;
27}
28
29pattern rootElements(Model: FunctionalArchitectureModel, Root : Function) = {
30 FunctionalArchitectureModel.rootElements(Model, Root);
31}
32
33pattern parent(Func : Function, Par : Function) = {
34 Function.parent(Func, Par);
35}
36
37@QueryBasedFeature
38pattern model(This:FunctionalElement, Target: FunctionalArchitectureModel) {
39 FunctionalElement(This);
40 FunctionalArchitectureModel(Target);
41}
42
43/*
44@Constraint(message="noRoot", severity="error", key={fam})
45pattern noRoot(fam: FunctionalArchitectureModel) {
46 FunctionalArchitectureModel(fam);
47 neg find hasRoot(_);
48}
49@Constraint(message="noIntermediate", severity="error", key={fam})
50pattern noInt(fam: FunctionalArchitectureModel) {
51 FunctionalArchitectureModel(fam);
52 neg find hasInt(_);
53}
54@Constraint(message="noLeaf", severity="error", key={fam})
55pattern noLeaf(fam: FunctionalArchitectureModel) {
56 FunctionalArchitectureModel(fam);
57 neg find hasLeaf(_);
58}
59*/
60
61/*
62@QueryBasedFeature
63pattern model(This : FunctionalElement, Target : FunctionalArchitectureModel) = {
64 find parent+(This, Parent);
65 find rootElements(Target, Parent);
66} or {
67 find rootElements(Target, This);
68}
69
70pattern interfaceData(FI : FunctionalInterface, FD : FunctionalData) = {
71 FunctionalInterface.data(FI, FD);
72}
73
74@QueryBasedFeature
75pattern inputs(This : FunctionalInterface, Target : FunctionalInput) = {
76 find interfaceData(This, Target);
77}
78
79@QueryBasedFeature
80pattern outputs(This : FunctionalInterface, Target : FunctionalOutput) = {
81 find interfaceData(This, Target);
82}
83
84@QueryBasedFeature
85pattern outgoingLinks(This : FunctionalElement, Target : InformationLink) = {
86 FunctionalElement.interface.outputs(This, Output);
87 InformationLink.from(Target, Output);
88}
89
90@QueryBasedFeature
91pattern incomingLinks(This : FunctionalElement, Target : InformationLink) = {
92 FunctionalElement.interface.inputs(This, Input);
93 InformationLink.to(Target, Input);
94}
95
96@QueryBasedFeature
97pattern connects(This : FunctionalElement, Target : FunctionalElement) = {
98 FunctionalElement.outgoingLinks(This,Link);
99 FunctionalElement.incomingLinks(Target,Link);
100}*/
101
102/*pattern frequency(a: Function, b : EInt) {
103 Function.minimumFrequency(a,b);
104}*/