aboutsummaryrefslogtreecommitdiff
path: root/src/uk/ac/ox/cs/pagoda/rules/DatalogProgram.java
blob: 1f7148cf25c216660102618073db065cf504a275 (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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package uk.ac.ox.cs.pagoda.rules;

import org.semanticweb.owlapi.model.OWLOntology;

import uk.ac.ox.cs.pagoda.constraints.*;

public class DatalogProgram {

	UpperDatalogProgram upperProgram = new UpperDatalogProgram(); 
	LowerDatalogProgram lowerProgram; 
	GeneralProgram program = new GeneralProgram();
	
	BottomStrategy upperBottom; 
	
	public DatalogProgram(OWLOntology o) {
		lowerProgram = new LowerDatalogProgram();
		init(o, false); 
	}
	
	public DatalogProgram(OWLOntology o, boolean toClassify) {
		lowerProgram = new LowerDatalogProgram(toClassify);
		init(o, toClassify); 
	}

	private void init(OWLOntology o, boolean forSemFacet) {
		upperProgram.load(o, upperBottom = new UpperUnaryBottom());
//		upperProgram.load(o, upperBottom = new UnaryBottom());
		lowerProgram.clone(upperProgram);
		program.clone(upperProgram);
//		program.botStrategy = new UnaryBottom(); 
		
		upperProgram.transform();
		lowerProgram.transform();
		program.transform();
		
		program.buildDependencyGraph();
		PredicateDependency graph = upperProgram.buildDependencyGraph(); 
		lowerProgram.dependencyGraph = graph; 
	}

	public LowerDatalogProgram getLower() {
		return lowerProgram; 
	}
	
	public UpperDatalogProgram getUpper() {
		return upperProgram; 
	}
	
	public GeneralProgram getGeneral() {
		return program; 
	}
	
	public String getAdditionalDataFile() {
		return upperProgram.getAdditionalDataFile();
	}

	public BottomStrategy getUpperBottomStrategy() {
		return upperBottom;
	}

	public void deleteABoxTurtleFile() {
		if (upperProgram  != null) upperProgram.deleteABoxTurtleFile();  
	}
}