diff options
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.java | 15 |
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 | |||
26 | import static tools.refinery.store.reasoning.literal.PartialLiterals.may; | 26 | import static tools.refinery.store.reasoning.literal.PartialLiterals.may; |
27 | 27 | ||
28 | public class TypeHierarchyTranslator implements ModelStoreConfiguration { | 28 | public 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 |