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 | 77 |
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 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph | ||
2 | |||
3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric | ||
4 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration | ||
5 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink | ||
6 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation | ||
7 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.BooleanElementImpl | ||
8 | import java.util.ArrayList | ||
9 | import java.util.List | ||
10 | |||
11 | class 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 | ||