diff options
author | 2019-09-08 16:12:55 -0400 | |
---|---|---|
committer | 2019-09-08 16:12:55 -0400 | |
commit | 71108d462c2695d917e87acea6f49d3f2954c6f4 (patch) | |
tree | 755962edeb635f46f1c860e2ff4dcc0235099597 /Domains | |
parent | VAMPIRE: complete first version of VampireModelInterpretation (diff) | |
download | VIATRA-Generator-71108d462c2695d917e87acea6f49d3f2954c6f4.tar.gz VIATRA-Generator-71108d462c2695d917e87acea6f49d3f2954c6f4.tar.zst VIATRA-Generator-71108d462c2695d917e87acea6f49d3f2954c6f4.zip |
VAMPIRE: Implement wf constraint handling
Diffstat (limited to 'Domains')
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 |
15 | pattern 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 | // | |
28 | pattern 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 | //} | |
32 | pattern 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 | // |
37 | pattern 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 | //} | |
42 | pattern hasRoot(F : Function) { | 42 | // |
43 | find rootElements(_Model, F); | 43 | //pattern hasRoot(F : Function) { |
44 | } | 44 | // find rootElements(_Model, F); |
45 | pattern 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); |
49 | pattern 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}) |
55 | pattern noRoot(fam: FunctionalArchitectureModel) { | 56 | pattern noRoot(fam: FunctionalArchitectureModel) { |