diff options
| author | RncLsn <rnc.lsn@gmail.com> | 2015-08-04 18:30:46 +0100 |
|---|---|---|
| committer | RncLsn <rnc.lsn@gmail.com> | 2015-08-04 18:30:46 +0100 |
| commit | c3480bb733b8bca976718a3dc2f09a21cb4b1b45 (patch) | |
| tree | 648b2dacb4b162205d26856c4be4bb7389f99141 /src/uk/ac/ox/cs/pagoda/rules/Program.java | |
| parent | 0c39145b3b76b3db73db0a38d5324caa7ff3c434 (diff) | |
| download | ACQuA-c3480bb733b8bca976718a3dc2f09a21cb4b1b45.tar.gz ACQuA-c3480bb733b8bca976718a3dc2f09a21cb4b1b45.zip | |
Rules parsing.
Diffstat (limited to 'src/uk/ac/ox/cs/pagoda/rules/Program.java')
| -rw-r--r-- | src/uk/ac/ox/cs/pagoda/rules/Program.java | 37 |
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; | |||
| 4 | import org.semanticweb.HermiT.Configuration; | 4 | import org.semanticweb.HermiT.Configuration; |
| 5 | import org.semanticweb.HermiT.model.*; | 5 | import org.semanticweb.HermiT.model.*; |
| 6 | import org.semanticweb.HermiT.structural.OWLClausification; | 6 | import org.semanticweb.HermiT.structural.OWLClausification; |
| 7 | import org.semanticweb.owlapi.apibinding.OWLManager; | ||
| 7 | import org.semanticweb.owlapi.model.*; | 8 | import org.semanticweb.owlapi.model.*; |
| 8 | import org.semanticweb.simpleETL.SimpleETL; | 9 | import org.semanticweb.simpleETL.SimpleETL; |
| 9 | import uk.ac.ox.cs.pagoda.MyPrefixes; | 10 | import uk.ac.ox.cs.pagoda.MyPrefixes; |
| @@ -13,6 +14,7 @@ import uk.ac.ox.cs.pagoda.constraints.BottomStrategy; | |||
| 13 | import uk.ac.ox.cs.pagoda.constraints.NullaryBottom; | 14 | import uk.ac.ox.cs.pagoda.constraints.NullaryBottom; |
| 14 | import uk.ac.ox.cs.pagoda.constraints.PredicateDependency; | 15 | import uk.ac.ox.cs.pagoda.constraints.PredicateDependency; |
| 15 | import uk.ac.ox.cs.pagoda.hermit.DLClauseHelper; | 16 | import uk.ac.ox.cs.pagoda.hermit.DLClauseHelper; |
| 17 | import uk.ac.ox.cs.pagoda.hermit.RuleHelper; | ||
| 16 | import uk.ac.ox.cs.pagoda.owl.OWLHelper; | 18 | import uk.ac.ox.cs.pagoda.owl.OWLHelper; |
| 17 | import uk.ac.ox.cs.pagoda.util.Utility; | 19 | import 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) { |
