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.xtend77
1 files changed, 77 insertions, 0 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
new file mode 100644
index 00000000..14337ab0
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/PartialInterpretationGraph.xtend
@@ -0,0 +1,77 @@
1package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph
2
3import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration
5import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink
6import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
7import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.BooleanElementImpl
8import java.util.ArrayList
9import java.util.List
10
11class PartialInterpretationGraph extends Graph{
12
13 /**
14 * Define a new PartialInterpretationGraph by parse every element from a PartialInterpretation
15 */
16 new(PartialInterpretation partial, List<Metric> metrics, String name){
17 //the edge types are defined in terms of RelationDeclaration
18 partial.problem.relations.filter(RelationDeclaration).forEach[
19 this.statistic.addType(it.name);
20 ]
21 // add all elements
22 val elements = getElements(partial);
23 for(element : elements){
24 statistic.addNode(element)
25 }
26
27 for(relationInterpretation : partial.partialrelationinterpretation) {
28 val type = relationInterpretation.interpretationOf.name
29
30 for(edge : relationInterpretation.relationlinks.filter(BinaryElementRelationLink)){
31 statistic.addEdge(edge.param1, edge.param2, type);
32 }
33 }
34
35 this.name = name;
36 this.metrics = metrics;
37 }
38
39 /**
40 * Set basic information for the output
41 */
42 override setBasicInformation(ArrayList<ArrayList<String>> output){
43 val metaInfo = new ArrayList<String>();
44 metaInfo.add(META_MODEL_HEADER);
45 metaInfo.add(this.metaModel);
46
47 val edgeInfo = new ArrayList<String>();
48 edgeInfo.add(NUM_EDGE_TYPE_HEADER);
49 edgeInfo.add(this.statistic.allTypes.size()+"");
50
51 val nodeInfo = new ArrayList<String>();
52 nodeInfo.add(NUM_NODE_HEADER);
53 nodeInfo.add(this.statistic.allNodes.size()+"");
54
55 val stateInfo = new ArrayList<String>();
56 stateInfo.add(STATE_ID_HEADER);
57 stateInfo.add(this.name);
58
59 output.add(metaInfo);
60 output.add(edgeInfo);
61 output.add(nodeInfo);
62 output.add(stateInfo);
63 }
64
65 private def getElements(PartialInterpretation partial){
66 return partial.newElements.filter[!(it instanceof BooleanElementImpl)] + partial.problem.elements;
67 }
68
69 override getStatistic() {
70 throw new UnsupportedOperationException("TODO: auto-generated method stub")
71 }
72
73 override getName() {
74 return name;
75 }
76
77} \ No newline at end of file