aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns
diff options
context:
space:
mode:
authorLibravatar OszkarSemerath <oszkar.semerath@gmail.com>2018-02-24 19:03:35 -0500
committerLibravatar OszkarSemerath <oszkar.semerath@gmail.com>2018-02-24 19:03:35 -0500
commitd7e2de55047e357ca6a4db4709885ca59946a484 (patch)
tree227768e3e5c2b5805a108ec77ee408fe1e582e50 /Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns
parentProject workspace folder structure generation patch (diff)
downloadVIATRA-Generator-d7e2de55047e357ca6a4db4709885ca59946a484.tar.gz
VIATRA-Generator-d7e2de55047e357ca6a4db4709885ca59946a484.tar.zst
VIATRA-Generator-d7e2de55047e357ca6a4db4709885ca59946a484.zip
Translated PQueryies are added to annotation.
Diffstat (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns')
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/PatternProvider.xtend18
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RelationDefinitionIndexer.xtend15
2 files changed, 17 insertions, 16 deletions
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/PatternProvider.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/PatternProvider.xtend
index cc8860b4..0e13a5e1 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/PatternProvider.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/PatternProvider.xtend
@@ -20,6 +20,7 @@ import org.eclipse.xtend.lib.annotations.Data
20 20
21import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* 21import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
22import java.util.Collection 22import java.util.Collection
23import java.util.Set
23 24
24@Data class GeneratedPatterns { 25@Data class GeneratedPatterns {
25 public Map<Relation, IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> invalidWFQueries 26 public Map<Relation, IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> invalidWFQueries
@@ -39,10 +40,11 @@ class PatternProvider {
39 LogicProblem problem, 40 LogicProblem problem,
40 PartialInterpretation emptySolution, 41 PartialInterpretation emptySolution,
41 ModelGenerationStatistics statistics, 42 ModelGenerationStatistics statistics,
42 Iterable<PQuery> existingQueries, 43 Set<PQuery> existingQueries,
43 ReasonerWorkspace workspace, 44 ReasonerWorkspace workspace,
44 TypeInferenceMethod typeInferenceMethod 45 TypeInferenceMethod typeInferenceMethod,
45 ) { 46 boolean writeToFile)
47 {
46 val fqn2Query = existingQueries.toMap[it.fullyQualifiedName] 48 val fqn2Query = existingQueries.toMap[it.fullyQualifiedName]
47 val PatternGenerator patternGenerator = new PatternGenerator(typeInferenceMethod) 49 val PatternGenerator patternGenerator = new PatternGenerator(typeInferenceMethod)
48 val typeAnalysisResult = if(patternGenerator.requiresTypeAnalysis) { 50 val typeAnalysisResult = if(patternGenerator.requiresTypeAnalysis) {
@@ -55,19 +57,15 @@ class PatternProvider {
55 null 57 null
56 } 58 }
57 val baseIndexerFile = patternGenerator.transformBaseProperties(problem,emptySolution,fqn2Query,typeAnalysisResult) 59 val baseIndexerFile = patternGenerator.transformBaseProperties(problem,emptySolution,fqn2Query,typeAnalysisResult)
58 writeQueries(baseIndexerFile,"GeneratedQueries",workspace) 60 if(writeToFile) {
61 workspace.writeText('''generated3valued.vql_deactivated''',baseIndexerFile)
62 }
59 val ParseUtil parseUtil = new ParseUtil 63 val ParseUtil parseUtil = new ParseUtil
60 val generatedQueries = parseUtil.parse(baseIndexerFile) 64 val generatedQueries = parseUtil.parse(baseIndexerFile)
61 val runtimeQueries = calclulateRuntimeQueries(patternGenerator,problem,emptySolution,typeAnalysisResult,generatedQueries); 65 val runtimeQueries = calclulateRuntimeQueries(patternGenerator,problem,emptySolution,typeAnalysisResult,generatedQueries);
62 return runtimeQueries 66 return runtimeQueries
63 } 67 }
64 68
65 private def writeQueries(CharSequence content, String name,ReasonerWorkspace workspace) {
66 if(workspace!=null) {
67 workspace.writeText('''«name».vql_deactivated''',content)
68 }
69 }
70
71 private def GeneratedPatterns calclulateRuntimeQueries( 69 private def GeneratedPatterns calclulateRuntimeQueries(
72 PatternGenerator patternGenerator, 70 PatternGenerator patternGenerator,
73 LogicProblem problem, 71 LogicProblem problem,
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RelationDefinitionIndexer.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RelationDefinitionIndexer.xtend
index 1e86f826..794e706b 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RelationDefinitionIndexer.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RelationDefinitionIndexer.xtend
@@ -3,10 +3,13 @@ package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns
3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDefinition 3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDefinition
4import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem 4import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem
5import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery 5import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery
6import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.Modality
6import java.util.Map 7import java.util.Map
7import org.eclipse.emf.ecore.EAttribute 8import org.eclipse.emf.ecore.EAttribute
9import org.eclipse.emf.ecore.EEnumLiteral
8import org.eclipse.emf.ecore.EReference 10import org.eclipse.emf.ecore.EReference
9import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey 11import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey
12import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey
10import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey 13import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey
11import org.eclipse.viatra.query.runtime.matchers.psystem.PConstraint 14import org.eclipse.viatra.query.runtime.matchers.psystem.PConstraint
12import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable 15import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable
@@ -21,8 +24,6 @@ import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeCo
21import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery 24import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery
22 25
23import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* 26import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
24import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey
25import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.Modality
26 27
27class RelationDefinitionIndexer { 28class RelationDefinitionIndexer {
28 val PatternGenerator base; 29 val PatternGenerator base;
@@ -193,13 +194,15 @@ class RelationDefinitionIndexer {
193 194
194 var String targetString; 195 var String targetString;
195 var String additionalDefinition; 196 var String additionalDefinition;
196 if(target instanceof Enum<?>) { 197 if(target instanceof EEnumLiteral) {
197 targetString = '''const_«target.name»_«target.declaringClass.simpleName»''' 198 targetString = '''const_«target.name»_«target.EEnum.name»'''
198 additionalDefinition = '''DefinedElement.name(«targetString»,"«target.name» «target.declaringClass.simpleName»"); LogicProblem.elements(problem,«targetString»);''' 199 additionalDefinition = '''DefinedElement.name(«targetString»,"«target.name» «target.EEnum.name»"); LogicProblem.elements(problem,«targetString»);'''
199 } else if(target instanceof Integer) { 200 } else if(target instanceof Integer) {
200 targetString = target.toString 201 targetString = target.toString
201 additionalDefinition = '''''' 202 additionalDefinition = ''''''
202 } else throw new UnsupportedOperationException('''Unknown constant type: «target.class»''') 203 } else {
204 throw new UnsupportedOperationException('''Unknown constant type: «target.class»''')
205 }
203 206
204 val source = c.variablesTuple 207 val source = c.variablesTuple
205 var String sourceName 208 var String sourceName