aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyTranslator.java
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyTranslator.java')
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyTranslator.java15
1 files changed, 8 insertions, 7 deletions
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyTranslator.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyTranslator.java
index dc8a1d36..37ea1448 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyTranslator.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyTranslator.java
@@ -26,7 +26,8 @@ import static tools.refinery.store.reasoning.literal.PartialLiterals.candidateMu
26import static tools.refinery.store.reasoning.literal.PartialLiterals.may; 26import static tools.refinery.store.reasoning.literal.PartialLiterals.may;
27 27
28public class TypeHierarchyTranslator implements ModelStoreConfiguration { 28public class TypeHierarchyTranslator implements ModelStoreConfiguration {
29 private final Symbol<InferredType> typeSymbol = Symbol.of("TYPE", 1, InferredType.class, InferredType.UNTYPED); 29 public static final Symbol<InferredType> TYPE_SYMBOL = Symbol.of("TYPE", 1, InferredType.class,
30 InferredType.UNTYPED);
30 private final TypeHierarchy typeHierarchy; 31 private final TypeHierarchy typeHierarchy;
31 32
32 public TypeHierarchyTranslator(TypeHierarchy typeHierarchy) { 33 public TypeHierarchyTranslator(TypeHierarchy typeHierarchy) {
@@ -39,7 +40,7 @@ public class TypeHierarchyTranslator implements ModelStoreConfiguration {
39 return; 40 return;
40 } 41 }
41 42
42 storeBuilder.symbol(typeSymbol); 43 storeBuilder.symbol(TYPE_SYMBOL);
43 44
44 for (var entry : typeHierarchy.getPreservedTypes().entrySet()) { 45 for (var entry : typeHierarchy.getPreservedTypes().entrySet()) {
45 storeBuilder.with(createPreservedTypeTranslator(entry.getKey(), entry.getValue())); 46 storeBuilder.with(createPreservedTypeTranslator(entry.getKey(), entry.getValue()));
@@ -50,13 +51,13 @@ public class TypeHierarchyTranslator implements ModelStoreConfiguration {
50 } 51 }
51 52
52 var reasoningBuilder = storeBuilder.getAdapter(ReasoningBuilder.class); 53 var reasoningBuilder = storeBuilder.getAdapter(ReasoningBuilder.class);
53 reasoningBuilder.initializer(new TypeHierarchyInitializer(typeHierarchy, typeSymbol)); 54 reasoningBuilder.initializer(new TypeHierarchyInitializer(typeHierarchy, TYPE_SYMBOL));
54 } 55 }
55 56
56 private ModelStoreConfiguration createPreservedTypeTranslator(PartialRelation type, TypeAnalysisResult result) { 57 private ModelStoreConfiguration createPreservedTypeTranslator(PartialRelation type, TypeAnalysisResult result) {
57 var may = Query.of(type.name() + "#partial#may", (builder, p1) -> { 58 var may = Query.of(type.name() + "#partial#may", (builder, p1) -> {
58 if (!result.isAbstractType()) { 59 if (!result.isAbstractType()) {
59 builder.clause(new MayTypeView(typeSymbol, type).call(p1)); 60 builder.clause(new MayTypeView(TYPE_SYMBOL, type).call(p1));
60 } 61 }
61 for (var subtype : result.getDirectSubtypes()) { 62 for (var subtype : result.getDirectSubtypes()) {
62 builder.clause(may(subtype.call(p1))); 63 builder.clause(may(subtype.call(p1)));
@@ -64,12 +65,12 @@ public class TypeHierarchyTranslator implements ModelStoreConfiguration {
64 }); 65 });
65 66
66 var must = Query.of(type.name() + "#partial#must", (builder, p1) -> builder.clause( 67 var must = Query.of(type.name() + "#partial#must", (builder, p1) -> builder.clause(
67 new MustTypeView(typeSymbol, type).call(p1) 68 new MustTypeView(TYPE_SYMBOL, type).call(p1)
68 )); 69 ));
69 70
70 var candidate = Query.of(type.name() + "#candidate", (builder, p1) -> { 71 var candidate = Query.of(type.name() + "#candidate", (builder, p1) -> {
71 if (!result.isAbstractType()) { 72 if (!result.isAbstractType()) {
72 builder.clause(new CandidateTypeView(typeSymbol, type).call(p1)); 73 builder.clause(new CandidateTypeView(TYPE_SYMBOL, type).call(p1));
73 } 74 }
74 for (var subtype : result.getDirectSubtypes()) { 75 for (var subtype : result.getDirectSubtypes()) {
75 builder.clause(PartialLiterals.candidateMust(subtype.call(p1))); 76 builder.clause(PartialLiterals.candidateMust(subtype.call(p1)));
@@ -80,7 +81,7 @@ public class TypeHierarchyTranslator implements ModelStoreConfiguration {
80 .may(may) 81 .may(may)
81 .must(must) 82 .must(must)
82 .candidate(candidate) 83 .candidate(candidate)
83 .refiner(InferredTypeRefiner.of(typeSymbol, result)); 84 .refiner(InferredTypeRefiner.of(TYPE_SYMBOL, result));
84 85
85 if (!result.isAbstractType()) { 86 if (!result.isAbstractType()) {
86 var decision = Rule.of(type.name(), (builder, instance) -> builder 87 var decision = Rule.of(type.name(), (builder, instance) -> builder