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. --- .../TransfomedViatraQuery.java | 27 + .../Viatra2LogicAnnotationsPackage.java | 30 +- .../impl/TransfomedViatraQueryImpl.java | 52 ++ .../impl/Viatra2LogicAnnotationsPackageImpl.java | 11 + .../model/ViatraModelAnnotations.aird | 804 +++++++++++---------- .../model/ViatraModelAnnotations.ecore | 3 + .../dslreasoner/viatra2logic/Viatra2Logic.xtend | 1 + .../ModelGenerationMethodProvider.xtend | 19 +- .../logic2viatra/patterns/PatternProvider.xtend | 18 +- .../patterns/RelationDefinitionIndexer.xtend | 15 +- .../viatrasolver/reasoner/ViatraReasoner.xtend | 4 +- .../reasoner/ViatraReasonerConfiguration.xtend | 7 +- 12 files changed, 587 insertions(+), 404 deletions(-) diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/TransfomedViatraQuery.java b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/TransfomedViatraQuery.java index 9eb911d5..717b0436 100644 --- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/TransfomedViatraQuery.java +++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/TransfomedViatraQuery.java @@ -14,6 +14,7 @@ import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.RelationAnnotation; *

* * * @see hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.Viatra2LogicAnnotationsPackage#getTransfomedViatraQuery() @@ -47,4 +48,30 @@ public interface TransfomedViatraQuery extends RelationAnnotation { * @generated */ void setPatternFullyQualifiedName(String value); + + /** + * Returns the value of the 'Pattern PQuery' attribute. + * + *

+ * If the meaning of the 'Pattern PQuery' attribute isn't clear, + * there really should be more of a description here... + *

+ * + * @return the value of the 'Pattern PQuery' attribute. + * @see #setPatternPQuery(Object) + * @see hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.Viatra2LogicAnnotationsPackage#getTransfomedViatraQuery_PatternPQuery() + * @model required="true" transient="true" + * @generated + */ + Object getPatternPQuery(); + + /** + * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery#getPatternPQuery Pattern PQuery}' attribute. + * + * + * @param value the new value of the 'Pattern PQuery' attribute. + * @see #getPatternPQuery() + * @generated + */ + void setPatternPQuery(Object value); } // TransfomedViatraQuery diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/Viatra2LogicAnnotationsPackage.java b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/Viatra2LogicAnnotationsPackage.java index 0c3de242..97df7608 100644 --- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/Viatra2LogicAnnotationsPackage.java +++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/Viatra2LogicAnnotationsPackage.java @@ -86,6 +86,15 @@ public interface Viatra2LogicAnnotationsPackage extends EPackage { */ int TRANSFOMED_VIATRA_QUERY__PATTERN_FULLY_QUALIFIED_NAME = LogicproblemPackage.RELATION_ANNOTATION_FEATURE_COUNT + 0; + /** + * The feature id for the 'Pattern PQuery' attribute. + * + * + * @generated + * @ordered + */ + int TRANSFOMED_VIATRA_QUERY__PATTERN_PQUERY = LogicproblemPackage.RELATION_ANNOTATION_FEATURE_COUNT + 1; + /** * The number of structural features of the 'Transfomed Viatra Query' class. * @@ -93,7 +102,7 @@ public interface Viatra2LogicAnnotationsPackage extends EPackage { * @generated * @ordered */ - int TRANSFOMED_VIATRA_QUERY_FEATURE_COUNT = LogicproblemPackage.RELATION_ANNOTATION_FEATURE_COUNT + 1; + int TRANSFOMED_VIATRA_QUERY_FEATURE_COUNT = LogicproblemPackage.RELATION_ANNOTATION_FEATURE_COUNT + 2; /** * The number of operations of the 'Transfomed Viatra Query' class. @@ -219,6 +228,17 @@ public interface Viatra2LogicAnnotationsPackage extends EPackage { */ EAttribute getTransfomedViatraQuery_PatternFullyQualifiedName(); + /** + * Returns the meta object for the attribute '{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery#getPatternPQuery Pattern PQuery}'. + * + * + * @return the meta object for the attribute 'Pattern PQuery'. + * @see hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery#getPatternPQuery() + * @see #getTransfomedViatraQuery() + * @generated + */ + EAttribute getTransfomedViatraQuery_PatternPQuery(); + /** * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransformedViatraWellformednessConstraint Transformed Viatra Wellformedness Constraint}'. * @@ -302,6 +322,14 @@ public interface Viatra2LogicAnnotationsPackage extends EPackage { */ EAttribute TRANSFOMED_VIATRA_QUERY__PATTERN_FULLY_QUALIFIED_NAME = eINSTANCE.getTransfomedViatraQuery_PatternFullyQualifiedName(); + /** + * The meta object literal for the 'Pattern PQuery' attribute feature. + * + * + * @generated + */ + EAttribute TRANSFOMED_VIATRA_QUERY__PATTERN_PQUERY = eINSTANCE.getTransfomedViatraQuery_PatternPQuery(); + /** * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.impl.TransformedViatraWellformednessConstraintImpl Transformed Viatra Wellformedness Constraint}' class. * diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/TransfomedViatraQueryImpl.java b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/TransfomedViatraQueryImpl.java index f0d18ee9..d7f9ff68 100644 --- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/TransfomedViatraQueryImpl.java +++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/TransfomedViatraQueryImpl.java @@ -20,6 +20,7 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl; *

* * * @generated @@ -44,6 +45,24 @@ public class TransfomedViatraQueryImpl extends RelationAnnotationImpl implements */ protected String patternFullyQualifiedName = PATTERN_FULLY_QUALIFIED_NAME_EDEFAULT; + /** + * The default value of the '{@link #getPatternPQuery() Pattern PQuery}' attribute. + * + * + * @see #getPatternPQuery() + * @generated + * @ordered + */ + protected static final Object PATTERN_PQUERY_EDEFAULT = null; + /** + * The cached value of the '{@link #getPatternPQuery() Pattern PQuery}' attribute. + * + * + * @see #getPatternPQuery() + * @generated + * @ordered + */ + protected Object patternPQuery = PATTERN_PQUERY_EDEFAULT; /** * * @@ -84,6 +103,27 @@ public class TransfomedViatraQueryImpl extends RelationAnnotationImpl implements eNotify(new ENotificationImpl(this, Notification.SET, Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__PATTERN_FULLY_QUALIFIED_NAME, oldPatternFullyQualifiedName, patternFullyQualifiedName)); } + /** + * + * + * @generated + */ + public Object getPatternPQuery() { + return patternPQuery; + } + + /** + * + * + * @generated + */ + public void setPatternPQuery(Object newPatternPQuery) { + Object oldPatternPQuery = patternPQuery; + patternPQuery = newPatternPQuery; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__PATTERN_PQUERY, oldPatternPQuery, patternPQuery)); + } + /** * * @@ -94,6 +134,8 @@ public class TransfomedViatraQueryImpl extends RelationAnnotationImpl implements switch (featureID) { case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__PATTERN_FULLY_QUALIFIED_NAME: return getPatternFullyQualifiedName(); + case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__PATTERN_PQUERY: + return getPatternPQuery(); } return super.eGet(featureID, resolve, coreType); } @@ -109,6 +151,9 @@ public class TransfomedViatraQueryImpl extends RelationAnnotationImpl implements case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__PATTERN_FULLY_QUALIFIED_NAME: setPatternFullyQualifiedName((String)newValue); return; + case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__PATTERN_PQUERY: + setPatternPQuery(newValue); + return; } super.eSet(featureID, newValue); } @@ -124,6 +169,9 @@ public class TransfomedViatraQueryImpl extends RelationAnnotationImpl implements case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__PATTERN_FULLY_QUALIFIED_NAME: setPatternFullyQualifiedName(PATTERN_FULLY_QUALIFIED_NAME_EDEFAULT); return; + case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__PATTERN_PQUERY: + setPatternPQuery(PATTERN_PQUERY_EDEFAULT); + return; } super.eUnset(featureID); } @@ -138,6 +186,8 @@ public class TransfomedViatraQueryImpl extends RelationAnnotationImpl implements switch (featureID) { case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__PATTERN_FULLY_QUALIFIED_NAME: return PATTERN_FULLY_QUALIFIED_NAME_EDEFAULT == null ? patternFullyQualifiedName != null : !PATTERN_FULLY_QUALIFIED_NAME_EDEFAULT.equals(patternFullyQualifiedName); + case Viatra2LogicAnnotationsPackage.TRANSFOMED_VIATRA_QUERY__PATTERN_PQUERY: + return PATTERN_PQUERY_EDEFAULT == null ? patternPQuery != null : !PATTERN_PQUERY_EDEFAULT.equals(patternPQuery); } return super.eIsSet(featureID); } @@ -154,6 +204,8 @@ public class TransfomedViatraQueryImpl extends RelationAnnotationImpl implements StringBuffer result = new StringBuffer(super.toString()); result.append(" (patternFullyQualifiedName: "); result.append(patternFullyQualifiedName); + result.append(", patternPQuery: "); + result.append(patternPQuery); result.append(')'); return result.toString(); } diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/Viatra2LogicAnnotationsPackageImpl.java b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/Viatra2LogicAnnotationsPackageImpl.java index b6992bf9..06965e87 100644 --- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/Viatra2LogicAnnotationsPackageImpl.java +++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/ecore-gen/hu/bme/mit/inf/dslreasoner/viatra2logic/viatra2logicannotations/impl/Viatra2LogicAnnotationsPackageImpl.java @@ -130,6 +130,15 @@ public class Viatra2LogicAnnotationsPackageImpl extends EPackageImpl implements return (EAttribute)transfomedViatraQueryEClass.getEStructuralFeatures().get(0); } + /** + * + * + * @generated + */ + public EAttribute getTransfomedViatraQuery_PatternPQuery() { + return (EAttribute)transfomedViatraQueryEClass.getEStructuralFeatures().get(1); + } + /** * * @@ -196,6 +205,7 @@ public class Viatra2LogicAnnotationsPackageImpl extends EPackageImpl implements // Create classes and their features transfomedViatraQueryEClass = createEClass(TRANSFOMED_VIATRA_QUERY); createEAttribute(transfomedViatraQueryEClass, TRANSFOMED_VIATRA_QUERY__PATTERN_FULLY_QUALIFIED_NAME); + createEAttribute(transfomedViatraQueryEClass, TRANSFOMED_VIATRA_QUERY__PATTERN_PQUERY); transformedViatraWellformednessConstraintEClass = createEClass(TRANSFORMED_VIATRA_WELLFORMEDNESS_CONSTRAINT); createEReference(transformedViatraWellformednessConstraintEClass, TRANSFORMED_VIATRA_WELLFORMEDNESS_CONSTRAINT__QUERY); @@ -242,6 +252,7 @@ public class Viatra2LogicAnnotationsPackageImpl extends EPackageImpl implements // Initialize classes, features, and operations; add parameters initEClass(transfomedViatraQueryEClass, TransfomedViatraQuery.class, "TransfomedViatraQuery", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); initEAttribute(getTransfomedViatraQuery_PatternFullyQualifiedName(), ecorePackage.getEString(), "patternFullyQualifiedName", null, 1, 1, TransfomedViatraQuery.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getTransfomedViatraQuery_PatternPQuery(), ecorePackage.getEJavaObject(), "patternPQuery", null, 1, 1, TransfomedViatraQuery.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEClass(transformedViatraWellformednessConstraintEClass, TransformedViatraWellformednessConstraint.class, "TransformedViatraWellformednessConstraint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); initEReference(getTransformedViatraWellformednessConstraint_Query(), this.getTransfomedViatraQuery(), null, "query", null, 1, 1, TransformedViatraWellformednessConstraint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/model/ViatraModelAnnotations.aird b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/model/ViatraModelAnnotations.aird index b4c8ec92..1af6ebf0 100644 --- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/model/ViatraModelAnnotations.aird +++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/model/ViatraModelAnnotations.aird @@ -1,394 +1,442 @@ - - ViatraModelAnnotations.ecore - platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore - platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore - http://www.eclipse.org/emf/2002/Ecore - - - - - - - - bold - - - - - - - - + + + ViatraModelAnnotations.ecore + platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logicproblem.ecore + platform:/resource/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore + http://www.eclipse.org/emf/2002/Ecore + + + + + + + + + + + + + + + + + + + + + + + bold - - - - - - - - - - - - - - - + + + + + + + + bold + + + + + + bold + + + + + + + + + + + + + - - - - - - - - + + + - - + + - - - - - - - - + + + + + + + + - - - - - + + + + + + + + + - - + + - - - - - - - - + + + + + + + + - - - - - + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - bold - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - bold - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - italic - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - italic - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - italic - - - - - - - - - - - - italic - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + bold - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - + + + + + + + bold - - - - - - - - - italic - - + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + bold + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + bold - - - - - - - - bold - - + + + + + + + + + + italic + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + italic + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + bold - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + italic + + + + + + + + + + + + italic + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + italic + + + + + + + + + + + bold + + + + + + + + + + + + + + diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/model/ViatraModelAnnotations.ecore b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/model/ViatraModelAnnotations.ecore index e4632b1c..b7d2dcc3 100644 --- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/model/ViatraModelAnnotations.ecore +++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/model/ViatraModelAnnotations.ecore @@ -5,6 +5,9 @@ + diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Viatra2Logic.xtend b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Viatra2Logic.xtend index ae22af1c..d0c57db1 100644 --- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Viatra2Logic.xtend +++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/Viatra2Logic.xtend @@ -125,6 +125,7 @@ class Viatra2Logic { val annotation = createTransfomedViatraQuery => [ it.target = lRelation it.patternFullyQualifiedName = pquery.fullyQualifiedName + it.patternPQuery = pquery ] viatra2LogicTrace.query2Annotation.put(pquery,annotation) ecore2LogicTrace.output.annotations += annotation 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 diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend index 438767cd..613c68b3 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend @@ -60,10 +60,10 @@ class ViatraReasoner extends LogicReasoner{ val method = modelGenerationMethodProvider.createModelGenerationMethod( problem, emptySolution, - viatraConfig.existingQueries, workspace, viatraConfig.nameNewElements, - viatraConfig.typeInferenceMethod + viatraConfig.typeInferenceMethod, + viatraConfig.documentationLevel ) dse.addObjective(new ModelGenerationCompositeObjective( diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasonerConfiguration.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasonerConfiguration.xtend index f32078a2..c4d7e231 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasonerConfiguration.xtend +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasonerConfiguration.xtend @@ -4,21 +4,20 @@ import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicSolverConfiguration import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDeclaration +import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationMethod import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.TypeInferenceMethod import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretationVisualiser -import java.util.Set -import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery import java.util.LinkedList import java.util.List +import java.util.Set import org.eclipse.xtext.xbase.lib.Functions.Function1 -import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationMethod public enum StateCoderStrategy { Neighbourhood, NeighbourhoodWithEquivalence, IDBased, DefinedByDiversity } class ViatraReasonerConfiguration extends LogicSolverConfiguration{ - public var Iterable existingQueries + //public var Iterable existingQueries public var nameNewElements = false public var StateCoderStrategy stateCoderStrategy = StateCoderStrategy.Neighbourhood -- cgit v1.2.3-54-g00ecf