aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/store-partial/src/main/java/tools/refinery/store/partial/translator/TranslationUnit.java
blob: 26bd909b7250c71c8ae99ab90a5212ca63175f85 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package tools.refinery.store.partial.translator;

import tools.refinery.store.partial.PartialInterpretationBuilder;
import tools.refinery.store.model.Model;
import tools.refinery.store.model.ModelStoreBuilder;
import tools.refinery.store.partial.AnyPartialSymbolInterpretation;
import tools.refinery.store.partial.literal.Modality;
import tools.refinery.store.partial.representation.AnyPartialSymbol;
import tools.refinery.store.partial.representation.PartialRelation;
import tools.refinery.store.query.Variable;
import tools.refinery.store.query.literal.CallPolarity;
import tools.refinery.store.query.literal.Literal;

import java.util.Collection;
import java.util.List;
import java.util.Map;

public abstract class TranslationUnit {
	private PartialInterpretationBuilder partialInterpretationBuilder;

	protected PartialInterpretationBuilder getPartialInterpretationBuilder() {
		return partialInterpretationBuilder;
	}

	public void setPartialInterpretationBuilder(PartialInterpretationBuilder partialInterpretationBuilder) {
		this.partialInterpretationBuilder = partialInterpretationBuilder;
	}

	protected ModelStoreBuilder getModelStoreBuilder() {
		return partialInterpretationBuilder.getStoreBuilder();
	}

	public abstract Collection<AnyPartialSymbol> getTranslatedPartialSymbols();

	public Collection<Advice> computeAdvices() {
		// No advices to give by default.
		return List.of();
	}

	public abstract void configure(Collection<Advice> advices);

	public abstract List<Literal> call(CallPolarity polarity, Modality modality, PartialRelation target,
									   List<Variable> arguments);

	public abstract Map<AnyPartialSymbol, AnyPartialSymbolInterpretation> createPartialInterpretations(Model model);

	public abstract void initializeModel(Model model, int nodeCount);
}