diff options
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.xtend | 27 |
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 | |||
4 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration | 4 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration |
5 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink | 5 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink |
6 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation | 6 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation |
7 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.BooleanElementImpl | 7 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialComplexTypeInterpretationImpl |
8 | import java.util.ArrayList | 8 | import java.util.ArrayList |
9 | import java.util.List | 9 | import java.util.List |
10 | 10 | ||
11 | class PartialInterpretationGraph extends Graph{ | 11 | class 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() { |