aboutsummaryrefslogtreecommitdiff
path: root/src/uk/ac/ox/cs/pagoda/reasoner/ELHOUQueryReasoner.java
diff options
context:
space:
mode:
authorRncLsn <rnc.lsn@gmail.com>2015-05-19 18:22:26 +0100
committerRncLsn <rnc.lsn@gmail.com>2015-05-19 18:22:26 +0100
commit612729386b645b120f8397a007cd8421986af0ad (patch)
treef5d15c839092c1dd65e951aa98f4256bfa391a0b /src/uk/ac/ox/cs/pagoda/reasoner/ELHOUQueryReasoner.java
parent5d54af2638a53721b414a41356a93686a9616272 (diff)
downloadACQuA-612729386b645b120f8397a007cd8421986af0ad.tar.gz
ACQuA-612729386b645b120f8397a007cd8421986af0ad.zip
Changes in the upper store querying (mainly in MyQueryReasoner).
Diffstat (limited to 'src/uk/ac/ox/cs/pagoda/reasoner/ELHOUQueryReasoner.java')
-rw-r--r--src/uk/ac/ox/cs/pagoda/reasoner/ELHOUQueryReasoner.java66
1 files changed, 32 insertions, 34 deletions
diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/ELHOUQueryReasoner.java b/src/uk/ac/ox/cs/pagoda/reasoner/ELHOUQueryReasoner.java
index 0d24a02..6da86ac 100644
--- a/src/uk/ac/ox/cs/pagoda/reasoner/ELHOUQueryReasoner.java
+++ b/src/uk/ac/ox/cs/pagoda/reasoner/ELHOUQueryReasoner.java
@@ -2,7 +2,6 @@ package uk.ac.ox.cs.pagoda.reasoner;
2 2
3import org.semanticweb.karma2.profile.ELHOProfile; 3import org.semanticweb.karma2.profile.ELHOProfile;
4import org.semanticweb.owlapi.model.OWLOntology; 4import org.semanticweb.owlapi.model.OWLOntology;
5
6import uk.ac.ox.cs.pagoda.multistage.MultiStageQueryEngine; 5import uk.ac.ox.cs.pagoda.multistage.MultiStageQueryEngine;
7import uk.ac.ox.cs.pagoda.owl.EqualitiesEliminator; 6import uk.ac.ox.cs.pagoda.owl.EqualitiesEliminator;
8import uk.ac.ox.cs.pagoda.owl.OWLHelper; 7import uk.ac.ox.cs.pagoda.owl.OWLHelper;
@@ -26,59 +25,60 @@ public class ELHOUQueryReasoner extends QueryReasoner {
26 KarmaQueryEngine elLowerStore = null; 25 KarmaQueryEngine elLowerStore = null;
27 26
28 boolean multiStageTag, equalityTag; 27 boolean multiStageTag, equalityTag;
29 28 String originalMarkProgram;
29 private Timer t = new Timer();
30
30 public ELHOUQueryReasoner(boolean multiStageTag, boolean considerEqualities) { 31 public ELHOUQueryReasoner(boolean multiStageTag, boolean considerEqualities) {
31 this.multiStageTag = multiStageTag; 32 this.multiStageTag = multiStageTag;
32 this.equalityTag = considerEqualities; 33 this.equalityTag = considerEqualities;
33 rlLowerStore = new BasicQueryEngine("rl-lower-bound"); 34 rlLowerStore = new BasicQueryEngine("rl-lower-bound");
34 elLowerStore = new KarmaQueryEngine("el-lower-bound"); 35 elLowerStore = new KarmaQueryEngine("el-lower-bound");
35 36
36 if (!multiStageTag) 37 if(!multiStageTag)
37 rlUpperStore = new BasicQueryEngine("rl-upper-bound"); 38 rlUpperStore = new BasicQueryEngine("rl-upper-bound");
38 else 39 else
39 rlUpperStore = new MultiStageQueryEngine("rl-upper-bound", false); 40 rlUpperStore = new MultiStageQueryEngine("rl-upper-bound", false);
40 } 41 }
41
42 private Timer t = new Timer();
43 42
44 @Override 43 @Override
45 public void evaluate(QueryRecord queryRecord) { 44 public void evaluate(QueryRecord queryRecord) {
46 AnswerTuples rlAnswer = null; 45 AnswerTuples rlAnswer = null;
47 t.reset(); 46 t.reset();
48 try { 47 try {
49 rlAnswer = rlLowerStore.evaluate(queryRecord.getQueryText(), queryRecord.getAnswerVariables()); 48 rlAnswer = rlLowerStore.evaluate(queryRecord.getQueryText(), queryRecord.getAnswerVariables());
50 queryRecord.updateLowerBoundAnswers(rlAnswer); 49 queryRecord.updateLowerBoundAnswers(rlAnswer);
51 } finally { 50 } finally {
52 if (rlAnswer != null) rlAnswer.dispose(); 51 if(rlAnswer != null) rlAnswer.dispose();
53 } 52 }
54 queryRecord.addProcessingTime(Step.LowerBound, t.duration()); 53 queryRecord.addProcessingTime(Step.LowerBound, t.duration());
55 54
56 String extendedQueryText = queryRecord.getExtendedQueryText()[0]; 55 String extendedQueryText = queryRecord.getExtendedQueryText().get(0);
57 String[] toQuery = queryRecord.getQueryText().equals(extendedQueryText) ? 56 String[] toQuery = queryRecord.getQueryText().equals(extendedQueryText) ?
58 new String[] {queryRecord.getQueryText()} : 57 new String[]{queryRecord.getQueryText()} :
59 new String[] {queryRecord.getQueryText(), extendedQueryText}; 58 new String[] {queryRecord.getQueryText(), extendedQueryText};
60 59
61 for (String queryText: toQuery) { 60 for (String queryText: toQuery) {
62 rlAnswer = null; 61 rlAnswer = null;
63 t.reset(); 62 t.reset();
64 try { 63 try {
65 rlAnswer = rlUpperStore.evaluate(queryText, queryRecord.getAnswerVariables()); 64 rlAnswer = rlUpperStore.evaluate(queryText, queryRecord.getAnswerVariables());
66 queryRecord.updateUpperBoundAnswers(rlAnswer); 65 queryRecord.updateUpperBoundAnswers(rlAnswer);
67 } finally { 66 } finally {
68 if (rlAnswer != null) rlAnswer.dispose(); 67 if(rlAnswer != null) rlAnswer.dispose();
69 } 68 }
70 queryRecord.addProcessingTime(Step.UpperBound, t.duration()); 69 queryRecord.addProcessingTime(Step.UpperBound, t.duration());
71 70
72 if (queryRecord.processed()) { 71 if (queryRecord.processed()) {
73 queryRecord.setDifficulty(Step.UpperBound); 72 queryRecord.setDifficulty(Step.UpperBound);
74 return ; 73 return;
75 } 74 }
76 } 75 }
77 76
78 AnswerTuples elAnswer = null; 77 AnswerTuples elAnswer = null;
79 t.reset(); 78 t.reset();
80 try { 79 try {
81 elAnswer = elLowerStore.evaluate(extendedQueryText, queryRecord.getAnswerVariables(), queryRecord.getLowerBoundAnswers()); 80 elAnswer =
81 elLowerStore.evaluate(extendedQueryText, queryRecord.getAnswerVariables(), queryRecord.getLowerBoundAnswers());
82 queryRecord.updateLowerBoundAnswers(elAnswer); 82 queryRecord.updateLowerBoundAnswers(elAnswer);
83 } finally { 83 } finally {
84 if (elAnswer != null) elAnswer.dispose(); 84 if (elAnswer != null) elAnswer.dispose();
@@ -88,19 +88,19 @@ public class ELHOUQueryReasoner extends QueryReasoner {
88 88
89 @Override 89 @Override
90 public void evaluateUpper(QueryRecord queryRecord) { 90 public void evaluateUpper(QueryRecord queryRecord) {
91 AnswerTuples rlAnswer = null; 91 AnswerTuples rlAnswer = null;
92 try { 92 try {
93 rlAnswer = rlUpperStore.evaluate(queryRecord.getQueryText(), queryRecord.getAnswerVariables()); 93 rlAnswer = rlUpperStore.evaluate(queryRecord.getQueryText(), queryRecord.getAnswerVariables());
94 queryRecord.updateUpperBoundAnswers(rlAnswer, true); 94 queryRecord.updateUpperBoundAnswers(rlAnswer, true);
95 } finally { 95 } finally {
96 if (rlAnswer != null) rlAnswer.dispose(); 96 if(rlAnswer != null) rlAnswer.dispose();
97 } 97 }
98 } 98 }
99 99
100 @Override 100 @Override
101 public void dispose() { 101 public void dispose() {
102 if (elLowerStore != null) elLowerStore.dispose(); 102 if (elLowerStore != null) elLowerStore.dispose();
103 if (rlUpperStore != null) rlUpperStore.dispose(); 103 if(rlUpperStore != null) rlUpperStore.dispose();
104 super.dispose(); 104 super.dispose();
105 } 105 }
106 106
@@ -110,19 +110,17 @@ public class ELHOUQueryReasoner extends QueryReasoner {
110 EqualitiesEliminator eliminator = new EqualitiesEliminator(o); 110 EqualitiesEliminator eliminator = new EqualitiesEliminator(o);
111 o = eliminator.getOutputOntology(); 111 o = eliminator.getOutputOntology();
112 eliminator.save(); 112 eliminator.save();
113 } 113 }
114
115 OWLOntology ontology = o;
116 program = new DatalogProgram(ontology, properties.getToClassify());
114 117
115 OWLOntology ontology = o;
116 program = new DatalogProgram(ontology, properties.getToClassify());
117
118 importData(program.getAdditionalDataFile()); 118 importData(program.getAdditionalDataFile());
119 119
120 elho_ontology = new ELHOProfile().getFragment(ontology); 120 elho_ontology = new ELHOProfile().getFragment(ontology);
121 elLowerStore.processOntology(elho_ontology); 121 elLowerStore.processOntology(elho_ontology);
122 originalMarkProgram = OWLHelper.getOriginalMarkProgram(ontology); 122 originalMarkProgram = OWLHelper.getOriginalMarkProgram(ontology);
123 } 123 }
124
125 String originalMarkProgram;
126 124
127 @Override 125 @Override
128 public boolean preprocess() { 126 public boolean preprocess() {