aboutsummaryrefslogtreecommitdiffstats
path: root/Domains
diff options
context:
space:
mode:
authorLibravatar ArenBabikian <aren.babikian@mail.mcgill.ca>2019-09-08 16:12:55 -0400
committerLibravatar ArenBabikian <aren.babikian@mail.mcgill.ca>2019-09-08 16:12:55 -0400
commit71108d462c2695d917e87acea6f49d3f2954c6f4 (patch)
tree755962edeb635f46f1c860e2ff4dcc0235099597 /Domains
parentVAMPIRE: complete first version of VampireModelInterpretation (diff)
downloadVIATRA-Generator-71108d462c2695d917e87acea6f49d3f2954c6f4.tar.gz
VIATRA-Generator-71108d462c2695d917e87acea6f49d3f2954c6f4.tar.zst
VIATRA-Generator-71108d462c2695d917e87acea6f49d3f2954c6f4.zip
VAMPIRE: Implement wf constraint handling
Diffstat (limited to 'Domains')
-rw-r--r--Domains/Examples/ModelGenExampleFAM_plugin/model/FamMetamodel.ecore12
-rw-r--r--Domains/Examples/ModelGenExampleFAM_plugin/plugin.xml13
-rw-r--r--Domains/Examples/ModelGenExampleFAM_plugin/src/hu/bme/mit/inf/dslreasoner/domains/transima/fam/FamPatterns.vql79
3 files changed, 42 insertions, 62 deletions
diff --git a/Domains/Examples/ModelGenExampleFAM_plugin/model/FamMetamodel.ecore b/Domains/Examples/ModelGenExampleFAM_plugin/model/FamMetamodel.ecore
index d8331ba8..81b2078f 100644
--- a/Domains/Examples/ModelGenExampleFAM_plugin/model/FamMetamodel.ecore
+++ b/Domains/Examples/ModelGenExampleFAM_plugin/model/FamMetamodel.ecore
@@ -9,11 +9,7 @@
9 <eStructuralFeatures xsi:type="ecore:EReference" name="interface" eType="#//FunctionalInterface" 9 <eStructuralFeatures xsi:type="ecore:EReference" name="interface" eType="#//FunctionalInterface"
10 containment="true" eOpposite="#//FunctionalInterface/element"/> 10 containment="true" eOpposite="#//FunctionalInterface/element"/>
11 <eStructuralFeatures xsi:type="ecore:EReference" name="model" lowerBound="1" eType="#//FunctionalArchitectureModel" 11 <eStructuralFeatures xsi:type="ecore:EReference" name="model" lowerBound="1" eType="#//FunctionalArchitectureModel"
12 volatile="true" transient="true" derived="true"> 12 volatile="true" transient="true" derived="true"/>
13 <eAnnotations source="org.eclipse.viatra.query.querybasedfeature">
14 <details key="patternFQN" value="hu.bme.mit.inf.dslreasoner.domains.transima.fam.model"/>
15 </eAnnotations>
16 </eStructuralFeatures>
17 <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//Function" 13 <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//Function"
18 eOpposite="#//Function/subElements"/> 14 eOpposite="#//Function/subElements"/>
19 </eClassifiers> 15 </eClassifiers>
@@ -25,11 +21,7 @@
25 <eStructuralFeatures xsi:type="ecore:EReference" name="subElements" upperBound="-1" 21 <eStructuralFeatures xsi:type="ecore:EReference" name="subElements" upperBound="-1"
26 eType="#//FunctionalElement" containment="true" eOpposite="#//FunctionalElement/parent"/> 22 eType="#//FunctionalElement" containment="true" eOpposite="#//FunctionalElement/parent"/>
27 <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1" eType="#//FunctionType" 23 <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1" eType="#//FunctionType"
28 changeable="false" volatile="true" transient="true" derived="true"> 24 changeable="false" volatile="true" transient="true" derived="true"/>
29 <eAnnotations source="org.eclipse.viatra.query.querybasedfeature">
30 <details key="patternFQN" value="hu.bme.mit.inf.dslreasoner.domains.transima.fam.type"/>
31 </eAnnotations>
32 </eStructuralFeatures>
33 </eClassifiers> 25 </eClassifiers>
34 <eClassifiers xsi:type="ecore:EClass" name="FAMTerminator"> 26 <eClassifiers xsi:type="ecore:EClass" name="FAMTerminator">
35 <eStructuralFeatures xsi:type="ecore:EReference" name="data" eType="#//FunctionalData" 27 <eStructuralFeatures xsi:type="ecore:EReference" name="data" eType="#//FunctionalData"
diff --git a/Domains/Examples/ModelGenExampleFAM_plugin/plugin.xml b/Domains/Examples/ModelGenExampleFAM_plugin/plugin.xml
index 3dce57aa..b8de244d 100644
--- a/Domains/Examples/ModelGenExampleFAM_plugin/plugin.xml
+++ b/Domains/Examples/ModelGenExampleFAM_plugin/plugin.xml
@@ -1,10 +1,4 @@
1<?xml version="1.0" encoding="UTF-8"?><plugin> 1<?xml version="1.0" encoding="UTF-8"?><plugin>
2 <extension id="extension.derived.hu.bme.mit.inf.dslreasoner.domains.transima.fam.model" point="org.eclipse.viatra.query.runtime.base.wellbehaving.derived.features">
3 <wellbehaving-derived-feature classifier-name="FunctionalElement" feature-name="model" package-nsUri="http://www.inf.mit.bme.hu/viatrasolver/example/fam"/>
4 </extension>
5 <extension id="extension.derived.hu.bme.mit.inf.dslreasoner.domains.transima.fam.type" point="org.eclipse.viatra.query.runtime.base.wellbehaving.derived.features">
6 <wellbehaving-derived-feature classifier-name="Function" feature-name="type" package-nsUri="http://www.inf.mit.bme.hu/viatrasolver/example/fam"/>
7 </extension>
8 <extension point="org.eclipse.emf.ecore.generated_package"> 2 <extension point="org.eclipse.emf.ecore.generated_package">
9 <!-- @generated FamMetamodel --> 3 <!-- @generated FamMetamodel -->
10 <package class="functionalarchitecture.FunctionalarchitecturePackage" genModel="model/FamMetamodel.genmodel" uri="http://www.inf.mit.bme.hu/viatrasolver/example/fam"/> 4 <package class="functionalarchitecture.FunctionalarchitecturePackage" genModel="model/FamMetamodel.genmodel" uri="http://www.inf.mit.bme.hu/viatrasolver/example/fam"/>
@@ -12,13 +6,6 @@
12 <extension id="hu.bme.mit.inf.dslreasoner.domains.transima.fam.FamPatterns" point="org.eclipse.viatra.query.runtime.queryspecification"> 6 <extension id="hu.bme.mit.inf.dslreasoner.domains.transima.fam.FamPatterns" point="org.eclipse.viatra.query.runtime.queryspecification">
13 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:hu.bme.mit.inf.dslreasoner.domains.transima.fam.FamPatterns" id="hu.bme.mit.inf.dslreasoner.domains.transima.fam.FamPatterns"> 7 <group group="org.eclipse.viatra.query.runtime.extensibility.SingletonExtensionFactory:hu.bme.mit.inf.dslreasoner.domains.transima.fam.FamPatterns" id="hu.bme.mit.inf.dslreasoner.domains.transima.fam.FamPatterns">
14 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.transima.fam.terminatorAndInformation"/> 8 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.transima.fam.terminatorAndInformation"/>
15 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.transima.fam.type"/>
16 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.transima.fam.rootElements"/>
17 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.transima.fam.parent"/>
18 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.transima.fam.model"/>
19 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.transima.fam.hasRoot"/>
20 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.transima.fam.hasInt"/>
21 <query-specification fqn="hu.bme.mit.inf.dslreasoner.domains.transima.fam.hasLeaf"/>
22 </group> 9 </group>
23 </extension> 10 </extension>
24</plugin> 11</plugin>
diff --git a/Domains/Examples/ModelGenExampleFAM_plugin/src/hu/bme/mit/inf/dslreasoner/domains/transima/fam/FamPatterns.vql b/Domains/Examples/ModelGenExampleFAM_plugin/src/hu/bme/mit/inf/dslreasoner/domains/transima/fam/FamPatterns.vql
index f0e48d42..15f70963 100644
--- a/Domains/Examples/ModelGenExampleFAM_plugin/src/hu/bme/mit/inf/dslreasoner/domains/transima/fam/FamPatterns.vql
+++ b/Domains/Examples/ModelGenExampleFAM_plugin/src/hu/bme/mit/inf/dslreasoner/domains/transima/fam/FamPatterns.vql
@@ -11,45 +11,46 @@ pattern terminatorAndInformation(T : FAMTerminator, I : InformationLink) = {
11 FunctionalInput.terminator(In,T); 11 FunctionalInput.terminator(In,T);
12} 12}
13 13
14@QueryBasedFeature 14//@QueryBasedFeature
15pattern type(This : Function, Target : FunctionType) = { 15//pattern type(This : Function, Target : FunctionType) = {
16 find rootElements(_Model, This); 16// find rootElements(_Model, This);
17 Target == FunctionType::Root; 17// Target == FunctionType::Root;
18} or { 18//} or {
19 neg find parent(_Child, This); 19// neg find parent(_Child, This);
20 neg find rootElements(_Model, This); 20// neg find rootElements(_Model, This);
21 Target == FunctionType::Leaf; 21// Target == FunctionType::Leaf;
22} or { 22//} or {
23 find parent(This, _Par); 23// find parent(This, _Par);
24 find parent(_Child, This); 24// find parent(_Child, This);
25 Target == FunctionType::Intermediate; 25// Target == FunctionType::Intermediate;
26} 26//}
27 27//
28pattern rootElements(Model: FunctionalArchitectureModel, Root : Function) = { 28////@Constraint
29 FunctionalArchitectureModel.rootElements(Model, Root); 29//pattern rootElements(Model: FunctionalArchitectureModel, Root : Function) = {
30} 30// FunctionalArchitectureModel.rootElements(Model, Root);
31 31//}
32pattern parent(Func : Function, Par : Function) = { 32//
33 Function.parent(Func, Par); 33//pattern parent(Func : Function, Par : Function) = {
34} 34// Function.parent(Func, Par);
35 35//}
36@QueryBasedFeature 36//
37pattern model(This:FunctionalElement, Target: FunctionalArchitectureModel) { 37//@QueryBasedFeature
38 FunctionalElement(This); 38//pattern model(This:FunctionalElement, Target: FunctionalArchitectureModel) {
39 FunctionalArchitectureModel(Target); 39// FunctionalElement(This);
40} 40// FunctionalArchitectureModel(Target);
41 41//}
42pattern hasRoot(F : Function) { 42//
43 find rootElements(_Model, F); 43//pattern hasRoot(F : Function) {
44} 44// find rootElements(_Model, F);
45pattern hasInt(F : Function) { 45//}
46 neg find parent(_Child, F); 46//pattern hasInt(F : Function) {
47 neg find rootElements(_Model, F); 47// neg find parent(_Child, F);
48} 48// neg find rootElements(_Model, F);
49pattern hasLeaf(F : Function) { 49//}
50 find parent(F, _Par); 50//pattern hasLeaf(F : Function) {
51 find parent(_Child, F); 51// find parent(F, _Par);
52} 52// find parent(_Child, F);
53//}
53/* 54/*
54@Constraint(message="noRoot", severity="error", key={fam}) 55@Constraint(message="noRoot", severity="error", key={fam})
55pattern noRoot(fam: FunctionalArchitectureModel) { 56pattern noRoot(fam: FunctionalArchitectureModel) {