aboutsummaryrefslogtreecommitdiff
path: root/src/uk/ac/ox/cs/pagoda/rules/Program.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/uk/ac/ox/cs/pagoda/rules/Program.java')
-rw-r--r--src/uk/ac/ox/cs/pagoda/rules/Program.java37
1 files changed, 31 insertions, 6 deletions
diff --git a/src/uk/ac/ox/cs/pagoda/rules/Program.java b/src/uk/ac/ox/cs/pagoda/rules/Program.java
index a0edf85..de06f52 100644
--- a/src/uk/ac/ox/cs/pagoda/rules/Program.java
+++ b/src/uk/ac/ox/cs/pagoda/rules/Program.java
@@ -4,6 +4,7 @@ import org.apache.commons.io.FilenameUtils;
4import org.semanticweb.HermiT.Configuration; 4import org.semanticweb.HermiT.Configuration;
5import org.semanticweb.HermiT.model.*; 5import org.semanticweb.HermiT.model.*;
6import org.semanticweb.HermiT.structural.OWLClausification; 6import org.semanticweb.HermiT.structural.OWLClausification;
7import org.semanticweb.owlapi.apibinding.OWLManager;
7import org.semanticweb.owlapi.model.*; 8import org.semanticweb.owlapi.model.*;
8import org.semanticweb.simpleETL.SimpleETL; 9import org.semanticweb.simpleETL.SimpleETL;
9import uk.ac.ox.cs.pagoda.MyPrefixes; 10import uk.ac.ox.cs.pagoda.MyPrefixes;
@@ -13,6 +14,7 @@ import uk.ac.ox.cs.pagoda.constraints.BottomStrategy;
13import uk.ac.ox.cs.pagoda.constraints.NullaryBottom; 14import uk.ac.ox.cs.pagoda.constraints.NullaryBottom;
14import uk.ac.ox.cs.pagoda.constraints.PredicateDependency; 15import uk.ac.ox.cs.pagoda.constraints.PredicateDependency;
15import uk.ac.ox.cs.pagoda.hermit.DLClauseHelper; 16import uk.ac.ox.cs.pagoda.hermit.DLClauseHelper;
17import uk.ac.ox.cs.pagoda.hermit.RuleHelper;
16import uk.ac.ox.cs.pagoda.owl.OWLHelper; 18import uk.ac.ox.cs.pagoda.owl.OWLHelper;
17import uk.ac.ox.cs.pagoda.util.Utility; 19import uk.ac.ox.cs.pagoda.util.Utility;
18 20
@@ -23,7 +25,9 @@ public abstract class Program implements KnowledgeBase {
23 25
24 protected String ontologyDirectory = null; 26 protected String ontologyDirectory = null;
25 protected OWLOntology ontology; 27 protected OWLOntology ontology;
26 protected DLOntology dlOntology; 28// protected DLOntology dlOntology;
29 protected Set<DLClause> dlClauses = new HashSet<>();
30 protected Set<Atom> positiveFacts = new HashSet<>();
27 protected BottomStrategy botStrategy; 31 protected BottomStrategy botStrategy;
28 protected Collection<DLClause> clauses = new HashSet<DLClause>(); 32 protected Collection<DLClause> clauses = new HashSet<DLClause>();
29// protected Set<DLClause> used = new HashSet<DLClause>(); 33// protected Set<DLClause> used = new HashSet<DLClause>();
@@ -40,6 +44,24 @@ protected PredicateDependency dependencyGraph;
40 return sb.toString(); 44 return sb.toString();
41 } 45 }
42 46
47 public void load(InputStream rules, BottomStrategy botStrategy) {
48// this.botStrategy = botStrategy;
49// // fake instantiation
50 try {
51 load(OWLManager.createOWLOntologyManager().createOntology(), botStrategy);
52 } catch (OWLOntologyCreationException e) {
53 e.printStackTrace();
54 }
55
56 try(BufferedReader br = new BufferedReader(new InputStreamReader(rules))) {
57 String line;
58 while((line = br.readLine()) != null)
59 dlClauses.add(RuleHelper.parseClause(line));
60 } catch (IOException e) {
61 e.printStackTrace();
62 }
63 }
64
43 public void load(OWLOntology o, BottomStrategy botStrategy) { 65 public void load(OWLOntology o, BottomStrategy botStrategy) {
44 this.botStrategy = botStrategy; 66 this.botStrategy = botStrategy;
45 RLPlusOntology owlOntology = new RLPlusOntology(); 67 RLPlusOntology owlOntology = new RLPlusOntology();
@@ -57,7 +79,7 @@ protected PredicateDependency dependencyGraph;
57 OWLOntology abox = OWLHelper.loadOntology(aboxOWLFile); 79 OWLOntology abox = OWLHelper.loadOntology(aboxOWLFile);
58 OWLOntologyManager manager = abox.getOWLOntologyManager(); 80 OWLOntologyManager manager = abox.getOWLOntologyManager();
59 OWLAxiom axiom; 81 OWLAxiom axiom;
60 for (Atom atom: dlOntology.getPositiveFacts()) { 82 for (Atom atom: positiveFacts) {
61 if ((axiom = OWLHelper.getABoxAssertion(manager.getOWLDataFactory(), atom)) != null) 83 if ((axiom = OWLHelper.getABoxAssertion(manager.getOWLDataFactory(), atom)) != null)
62 manager.addAxiom(abox, axiom); 84 manager.addAxiom(abox, axiom);
63 } 85 }
@@ -90,7 +112,7 @@ protected PredicateDependency dependencyGraph;
90 112
91 @Override 113 @Override
92 public void transform() { 114 public void transform() {
93 for(DLClause dlClause : dlOntology.getDLClauses()) { 115 for(DLClause dlClause : dlClauses) {
94 DLClause simplifiedDLClause = DLClauseHelper.removeNominalConcept(dlClause); 116 DLClause simplifiedDLClause = DLClauseHelper.removeNominalConcept(dlClause);
95 simplifiedDLClause = removeAuxiliaryBodyAtoms(simplifiedDLClause); 117 simplifiedDLClause = removeAuxiliaryBodyAtoms(simplifiedDLClause);
96 simplifiedDLClause = DLClauseHelper.replaceWithDataValue(simplifiedDLClause); 118 simplifiedDLClause = DLClauseHelper.replaceWithDataValue(simplifiedDLClause);
@@ -190,7 +212,9 @@ protected PredicateDependency dependencyGraph;
190 void clone(Program program) { 212 void clone(Program program) {
191 this.ontologyDirectory = program.ontologyDirectory; 213 this.ontologyDirectory = program.ontologyDirectory;
192 this.ontology = program.ontology; 214 this.ontology = program.ontology;
193 this.dlOntology = program.dlOntology; 215// this.dlOntology = program.dlOntology;
216 this.dlClauses = program.dlClauses;
217 this.positiveFacts = program.positiveFacts;
194 this.botStrategy = program.botStrategy; 218 this.botStrategy = program.botStrategy;
195 this.additionalDataFile = program.additionalDataFile; 219 this.additionalDataFile = program.additionalDataFile;
196 this.transitiveAxioms = program.transitiveAxioms; 220 this.transitiveAxioms = program.transitiveAxioms;
@@ -248,8 +272,9 @@ protected PredicateDependency dependencyGraph;
248 } 272 }
249 Utility.logInfo("The number of data property range axioms that are ignored: " + noOfDataPropertyRangeAxioms + "(" + noOfAxioms + ")"); 273 Utility.logInfo("The number of data property range axioms that are ignored: " + noOfDataPropertyRangeAxioms + "(" + noOfAxioms + ")");
250 274
251 dlOntology = (DLOntology) clausifier.preprocessAndClausify(filteredOntology, null)[1]; 275 DLOntology dlOntology = (DLOntology) clausifier.preprocessAndClausify(filteredOntology, null)[1];
252 clausifier = null; 276 dlClauses = dlOntology.getDLClauses();
277 positiveFacts = dlOntology.getPositiveFacts();
253 } 278 }
254 279
255 private DLClause removeAuxiliaryBodyAtoms(DLClause dlClause) { 280 private DLClause removeAuxiliaryBodyAtoms(DLClause dlClause) {