From d7e2de55047e357ca6a4db4709885ca59946a484 Mon Sep 17 00:00:00 2001 From: OszkarSemerath Date: Sat, 24 Feb 2018 19:03:35 -0500 Subject: Translated PQueryies are added to annotation. --- .../logic2viatra/ModelGenerationMethodProvider.xtend | 19 ++++++++++++++++--- .../logic2viatra/patterns/PatternProvider.xtend | 18 ++++++++---------- .../patterns/RelationDefinitionIndexer.xtend | 15 +++++++++------ 3 files changed, 33 insertions(+), 19 deletions(-) (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner') diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend index 656f806b..ff8ab437 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend @@ -1,5 +1,6 @@ package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra +import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternProvider import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.rules.GoalConstraintProvider @@ -14,6 +15,8 @@ import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery import org.eclipse.viatra.transformation.runtime.emf.rules.batch.BatchTransformationRule import org.eclipse.xtend.lib.annotations.Data +import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery +import java.util.Set class ModelGenerationStatistics { public var long transformationExecutionTime = 0 @@ -47,13 +50,23 @@ class ModelGenerationMethodProvider { public def ModelGenerationMethod createModelGenerationMethod( LogicProblem logicProblem, PartialInterpretation emptySolution, - Iterable existingQueries, ReasonerWorkspace workspace, boolean nameNewElements, - TypeInferenceMethod typeInferenceMethod + TypeInferenceMethod typeInferenceMethod, + DocumentationLevel debugLevel ) { val statistics = new ModelGenerationStatistics - val queries = patternProvider.generateQueries(logicProblem,emptySolution,statistics,existingQueries,workspace,typeInferenceMethod) + val writeFiles = (debugLevel === DocumentationLevel.NORMAL || debugLevel === DocumentationLevel.FULL) + + val Set existingQueries = logicProblem + .relations + .map[annotations] + .flatten + .filter(TransfomedViatraQuery) + .map[it.patternPQuery as PQuery] + .toSet + + val queries = patternProvider.generateQueries(logicProblem,emptySolution,statistics,existingQueries,workspace,typeInferenceMethod,writeFiles) val //LinkedHashMap, BatchTransformationRule>> objectRefinementRules = refinementRuleProvider.createObjectRefinementRules(queries,nameNewElements,statistics) 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 import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* import java.util.Collection +import java.util.Set @Data class GeneratedPatterns { public Map>> invalidWFQueries @@ -39,10 +40,11 @@ class PatternProvider { LogicProblem problem, PartialInterpretation emptySolution, ModelGenerationStatistics statistics, - Iterable existingQueries, + Set existingQueries, ReasonerWorkspace workspace, - TypeInferenceMethod typeInferenceMethod - ) { + TypeInferenceMethod typeInferenceMethod, + boolean writeToFile) + { val fqn2Query = existingQueries.toMap[it.fullyQualifiedName] val PatternGenerator patternGenerator = new PatternGenerator(typeInferenceMethod) val typeAnalysisResult = if(patternGenerator.requiresTypeAnalysis) { @@ -55,19 +57,15 @@ class PatternProvider { null } val baseIndexerFile = patternGenerator.transformBaseProperties(problem,emptySolution,fqn2Query,typeAnalysisResult) - writeQueries(baseIndexerFile,"GeneratedQueries",workspace) + if(writeToFile) { + workspace.writeText('''generated3valued.vql_deactivated''',baseIndexerFile) + } val ParseUtil parseUtil = new ParseUtil val generatedQueries = parseUtil.parse(baseIndexerFile) val runtimeQueries = calclulateRuntimeQueries(patternGenerator,problem,emptySolution,typeAnalysisResult,generatedQueries); return runtimeQueries } - private def writeQueries(CharSequence content, String name,ReasonerWorkspace workspace) { - if(workspace!=null) { - workspace.writeText('''«name».vql_deactivated''',content) - } - } - private def GeneratedPatterns calclulateRuntimeQueries( PatternGenerator patternGenerator, 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 import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDefinition import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery +import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.Modality import java.util.Map import org.eclipse.emf.ecore.EAttribute +import org.eclipse.emf.ecore.EEnumLiteral import org.eclipse.emf.ecore.EReference import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey +import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey import org.eclipse.viatra.query.runtime.matchers.psystem.PConstraint import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable @@ -21,8 +24,6 @@ import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeCo import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* -import org.eclipse.viatra.query.runtime.emf.types.EDataTypeInSlotsKey -import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.Modality class RelationDefinitionIndexer { val PatternGenerator base; @@ -193,13 +194,15 @@ class RelationDefinitionIndexer { var String targetString; var String additionalDefinition; - if(target instanceof Enum) { - targetString = '''const_«target.name»_«target.declaringClass.simpleName»''' - additionalDefinition = '''DefinedElement.name(«targetString»,"«target.name» «target.declaringClass.simpleName»"); LogicProblem.elements(problem,«targetString»);''' + if(target instanceof EEnumLiteral) { + targetString = '''const_«target.name»_«target.EEnum.name»''' + additionalDefinition = '''DefinedElement.name(«targetString»,"«target.name» «target.EEnum.name»"); LogicProblem.elements(problem,«targetString»);''' } else if(target instanceof Integer) { targetString = target.toString additionalDefinition = '''''' - } else throw new UnsupportedOperationException('''Unknown constant type: «target.class»''') + } else { + throw new UnsupportedOperationException('''Unknown constant type: «target.class»''') + } val source = c.variablesTuple var String sourceName -- cgit v1.2.3-54-g00ecf