aboutsummaryrefslogtreecommitdiffstats
path: root/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/PartialInterpretationGraph.xtend
diff options
context:
space:
mode:
Diffstat (limited to 'Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/PartialInterpretationGraph.xtend')
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/PartialInterpretationGraph.xtend27
1 files changed, 18 insertions, 9 deletions
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/PartialInterpretationGraph.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/PartialInterpretationGraph.xtend
index 14337ab0..91d7c5f9 100644
--- a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/PartialInterpretationGraph.xtend
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/PartialInterpretationGraph.xtend
@@ -4,11 +4,13 @@ import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration 4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration
5import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink 5import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink
6import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation 6import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
7import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.BooleanElementImpl 7import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialComplexTypeInterpretationImpl
8import java.util.ArrayList 8import java.util.ArrayList
9import java.util.List 9import java.util.List
10 10
11class PartialInterpretationGraph extends Graph{ 11class PartialInterpretationGraph extends Graph{
12 val typeToExclude = "undefinedpart";
13 val classSuffix = " class";
12 14
13 /** 15 /**
14 * Define a new PartialInterpretationGraph by parse every element from a PartialInterpretation 16 * Define a new PartialInterpretationGraph by parse every element from a PartialInterpretation
@@ -16,17 +18,21 @@ class PartialInterpretationGraph extends Graph{
16 new(PartialInterpretation partial, List<Metric> metrics, String name){ 18 new(PartialInterpretation partial, List<Metric> metrics, String name){
17 //the edge types are defined in terms of RelationDeclaration 19 //the edge types are defined in terms of RelationDeclaration
18 partial.problem.relations.filter(RelationDeclaration).forEach[ 20 partial.problem.relations.filter(RelationDeclaration).forEach[
19 this.statistic.addType(it.name); 21 //only need the name of the reference type (remove everything with and after "reference")
22 this.statistic.addEdgeType(it.name.split(" ").get(0));
20 ] 23 ]
21 // add all elements 24 // add all elements
22 val elements = getElements(partial); 25 val typeInterpretations = getTypes(partial);
23 for(element : elements){ 26 for(type : typeInterpretations){
24 statistic.addNode(element) 27 var typeName = type.interpretationOf.name.replace(classSuffix, '');
28 for(node : type.elements){
29 this.statistic.addNodeWithType(node, typeName);
30 }
25 } 31 }
26 32
27 for(relationInterpretation : partial.partialrelationinterpretation) { 33 for(relationInterpretation : partial.partialrelationinterpretation) {
28 val type = relationInterpretation.interpretationOf.name 34 //only need the name of the reference type (remove everything with and after "reference")
29 35 val type = relationInterpretation.interpretationOf.name.split(" ").get(0);
30 for(edge : relationInterpretation.relationlinks.filter(BinaryElementRelationLink)){ 36 for(edge : relationInterpretation.relationlinks.filter(BinaryElementRelationLink)){
31 statistic.addEdge(edge.param1, edge.param2, type); 37 statistic.addEdge(edge.param1, edge.param2, type);
32 } 38 }
@@ -62,8 +68,11 @@ class PartialInterpretationGraph extends Graph{
62 output.add(stateInfo); 68 output.add(stateInfo);
63 } 69 }
64 70
65 private def getElements(PartialInterpretation partial){ 71 private def getTypes(PartialInterpretation partial){
66 return partial.newElements.filter[!(it instanceof BooleanElementImpl)] + partial.problem.elements; 72 //only the complex type interpretations are the ones defined in meta model
73 //do not care about undefined types as it will be included in the class type
74 return partial.partialtypeinterpratation.filter(PartialComplexTypeInterpretationImpl)
75 .filter[!it.interpretationOf.name.toLowerCase.contains(typeToExclude)];
67 } 76 }
68 77
69 override getStatistic() { 78 override getStatistic() {