aboutsummaryrefslogtreecommitdiff
path: root/src/uk/ac/ox/cs/pagoda/reasoner
diff options
context:
space:
mode:
authorRncLsn <rnc.lsn@gmail.com>2015-05-09 14:26:28 +0100
committerRncLsn <rnc.lsn@gmail.com>2015-05-09 14:26:28 +0100
commit870eb35e38f746ed73f233070dcf3bdaf4687e02 (patch)
tree41ef0c1e18057aedc9f0f94d242cf6450d22025f /src/uk/ac/ox/cs/pagoda/reasoner
parent5be5fd3daa0d50980fb3791e904e035cdbca254f (diff)
downloadACQuA-870eb35e38f746ed73f233070dcf3bdaf4687e02.tar.gz
ACQuA-870eb35e38f746ed73f233070dcf3bdaf4687e02.zip
Adding (not completed) log of partial answers in Json.
Diffstat (limited to 'src/uk/ac/ox/cs/pagoda/reasoner')
-rw-r--r--src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java36
-rw-r--r--src/uk/ac/ox/cs/pagoda/reasoner/QueryReasoner.java12
2 files changed, 30 insertions, 18 deletions
diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java b/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java
index 17838ae..4465764 100644
--- a/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java
+++ b/src/uk/ac/ox/cs/pagoda/reasoner/MyQueryReasoner.java
@@ -1,24 +1,29 @@
1package uk.ac.ox.cs.pagoda.reasoner; 1package uk.ac.ox.cs.pagoda.reasoner;
2 2
3import java.util.Collection;
4
5import org.semanticweb.karma2.profile.ELHOProfile; 3import org.semanticweb.karma2.profile.ELHOProfile;
6import org.semanticweb.owlapi.model.OWLOntology; 4import org.semanticweb.owlapi.model.OWLOntology;
7 5import uk.ac.ox.cs.pagoda.multistage.MultiStageQueryEngine;
8import uk.ac.ox.cs.pagoda.multistage.*;
9import uk.ac.ox.cs.pagoda.owl.EqualitiesEliminator; 6import uk.ac.ox.cs.pagoda.owl.EqualitiesEliminator;
10import uk.ac.ox.cs.pagoda.owl.OWLHelper; 7import uk.ac.ox.cs.pagoda.owl.OWLHelper;
11import uk.ac.ox.cs.pagoda.query.*; 8import uk.ac.ox.cs.pagoda.query.AnswerTuples;
9import uk.ac.ox.cs.pagoda.query.GapByStore4ID;
10import uk.ac.ox.cs.pagoda.query.QueryRecord;
12import uk.ac.ox.cs.pagoda.query.QueryRecord.Step; 11import uk.ac.ox.cs.pagoda.query.QueryRecord.Step;
13import uk.ac.ox.cs.pagoda.reasoner.full.Checker; 12import uk.ac.ox.cs.pagoda.reasoner.full.Checker;
14import uk.ac.ox.cs.pagoda.reasoner.light.BasicQueryEngine; 13import uk.ac.ox.cs.pagoda.reasoner.light.BasicQueryEngine;
15import uk.ac.ox.cs.pagoda.reasoner.light.KarmaQueryEngine; 14import uk.ac.ox.cs.pagoda.reasoner.light.KarmaQueryEngine;
16import uk.ac.ox.cs.pagoda.rules.DatalogProgram; 15import uk.ac.ox.cs.pagoda.rules.DatalogProgram;
17import uk.ac.ox.cs.pagoda.summary.HermitSummaryFilter; 16import uk.ac.ox.cs.pagoda.summary.HermitSummaryFilter;
18import uk.ac.ox.cs.pagoda.tracking.*; 17import uk.ac.ox.cs.pagoda.tracking.QueryTracker;
18import uk.ac.ox.cs.pagoda.tracking.TrackingRuleEncoder;
19import uk.ac.ox.cs.pagoda.tracking.TrackingRuleEncoderDisjVar1;
20import uk.ac.ox.cs.pagoda.tracking.TrackingRuleEncoderWithGap;
19import uk.ac.ox.cs.pagoda.util.Timer; 21import uk.ac.ox.cs.pagoda.util.Timer;
20import uk.ac.ox.cs.pagoda.util.Utility; 22import uk.ac.ox.cs.pagoda.util.Utility;
21 23
24import java.util.Collection;
25import java.util.HashMap;
26
22public class MyQueryReasoner extends QueryReasoner { 27public class MyQueryReasoner extends QueryReasoner {
23 28
24 OWLOntology ontology; 29 OWLOntology ontology;
@@ -203,10 +208,17 @@ public class MyQueryReasoner extends QueryReasoner {
203 String[] extendedQuery = queryRecord.getExtendedQueryText(); 208 String[] extendedQuery = queryRecord.getExtendedQueryText();
204 209
205 queryUpperBound(upperStore, queryRecord, queryRecord.getQueryText(), queryRecord.getAnswerVariables()); 210 queryUpperBound(upperStore, queryRecord, queryRecord.getQueryText(), queryRecord.getAnswerVariables());
206 if (!queryRecord.processed() && !queryRecord.getQueryText().equals(extendedQuery[0])) 211
212 // TODO log correct partial answers
213 Utility.logDebug(toJson("upperBound1", queryRecord));
214 if (!queryRecord.processed() && !queryRecord.getQueryText().equals(extendedQuery[0])) {
207 queryUpperBound(upperStore, queryRecord, extendedQuery[0], queryRecord.getAnswerVariables()); 215 queryUpperBound(upperStore, queryRecord, extendedQuery[0], queryRecord.getAnswerVariables());
208 if (!queryRecord.processed() && queryRecord.hasNonAnsDistinguishedVariables()) 216 Utility.logDebug(toJson("upperBound2", queryRecord));
217 }
218 if (!queryRecord.processed() && queryRecord.hasNonAnsDistinguishedVariables()) {
209 queryUpperBound(upperStore, queryRecord, extendedQuery[1], queryRecord.getDistinguishedVariables()); 219 queryUpperBound(upperStore, queryRecord, extendedQuery[1], queryRecord.getDistinguishedVariables());
220 Utility.logDebug(toJson("upperBound3", queryRecord));
221 }
210 222
211 queryRecord.addProcessingTime(Step.UpperBound, t.duration()); 223 queryRecord.addProcessingTime(Step.UpperBound, t.duration());
212 if (queryRecord.processed()) { 224 if (queryRecord.processed()) {
@@ -268,13 +280,19 @@ public class MyQueryReasoner extends QueryReasoner {
268 280
269// int counter = 0; 281// int counter = 0;
270 282
283 private String toJson(String key, Object value) {
284 HashMap<String, Object> map = new HashMap<>();
285 map.put(key, value);
286 return QueryRecord.GsonCreator.getInstance().toJson(map);
287 }
288
271 private void queryUpperBound(BasicQueryEngine upperStore, QueryRecord queryRecord, String queryText, String[] answerVariables) { 289 private void queryUpperBound(BasicQueryEngine upperStore, QueryRecord queryRecord, String queryText, String[] answerVariables) {
272 AnswerTuples rlAnswer = null; 290 AnswerTuples rlAnswer = null;
273 try { 291 try {
274 Utility.logDebug(queryText); 292 Utility.logDebug(queryText);
275 rlAnswer = upperStore.evaluate(queryText, answerVariables); 293 rlAnswer = upperStore.evaluate(queryText, answerVariables);
276 Utility.logDebug(t.duration()); 294 Utility.logDebug(t.duration());
277 queryRecord.updateUpperBoundAnswers(rlAnswer); 295 queryRecord.updateUpperBoundAnswers(rlAnswer);
278 } finally { 296 } finally {
279 if (rlAnswer != null) rlAnswer.dispose(); 297 if (rlAnswer != null) rlAnswer.dispose();
280 rlAnswer = null; 298 rlAnswer = null;
diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/QueryReasoner.java b/src/uk/ac/ox/cs/pagoda/reasoner/QueryReasoner.java
index 1f08fdf..326bf7e 100644
--- a/src/uk/ac/ox/cs/pagoda/reasoner/QueryReasoner.java
+++ b/src/uk/ac/ox/cs/pagoda/reasoner/QueryReasoner.java
@@ -1,10 +1,8 @@
1package uk.ac.ox.cs.pagoda.reasoner; 1package uk.ac.ox.cs.pagoda.reasoner;
2 2
3import com.google.gson.Gson; 3import com.google.gson.Gson;
4import com.google.gson.GsonBuilder;
5import org.semanticweb.owlapi.model.OWLOntology; 4import org.semanticweb.owlapi.model.OWLOntology;
6import uk.ac.ox.cs.pagoda.owl.OWLHelper; 5import uk.ac.ox.cs.pagoda.owl.OWLHelper;
7import uk.ac.ox.cs.pagoda.query.AnswerTuple;
8import uk.ac.ox.cs.pagoda.query.AnswerTuples; 6import uk.ac.ox.cs.pagoda.query.AnswerTuples;
9import uk.ac.ox.cs.pagoda.query.QueryManager; 7import uk.ac.ox.cs.pagoda.query.QueryManager;
10import uk.ac.ox.cs.pagoda.query.QueryRecord; 8import uk.ac.ox.cs.pagoda.query.QueryRecord;
@@ -202,11 +200,7 @@ public abstract class QueryReasoner {
202 } 200 }
203 201
204 Timer t = new Timer(); 202 Timer t = new Timer();
205 Gson gson = new GsonBuilder() 203 Gson gson = QueryRecord.GsonCreator.getInstance();
206 .registerTypeAdapter(AnswerTuple.class, new AnswerTuple.AnswerTupleSerializer())
207 .registerTypeAdapter(QueryRecord.class, new QueryRecord.QueryRecordSerializer())
208 .setPrettyPrinting()
209 .create();
210 for (QueryRecord record: queryRecords) { 204 for (QueryRecord record: queryRecords) {
211// if (Integer.parseInt(record.getQueryID()) != 218) continue; 205// if (Integer.parseInt(record.getQueryID()) != 218) continue;
212 Utility.logInfo("---------- start evaluating Query " + record.getQueryID() + " ----------", 206 Utility.logInfo("---------- start evaluating Query " + record.getQueryID() + " ----------",
@@ -226,7 +220,7 @@ public abstract class QueryReasoner {
226 } 220 }
227 // TODO it can handle one call only 221 // TODO it can handle one call only
228 // if you call twice, you will end up with a json file with multiple roots 222 // if you call twice, you will end up with a json file with multiple roots
229 gson.toJson(queryRecords, answerWriter); 223 if(answerWriter != null) gson.toJson(queryRecords, answerWriter);
230 queryRecords.stream().forEach(record -> record.dispose()); 224 queryRecords.stream().forEach(record -> record.dispose());
231 } 225 }
232 226
@@ -251,5 +245,5 @@ public abstract class QueryReasoner {
251 public static QueryReasoner getHermiTReasoner(boolean toCheckSatisfiability) { 245 public static QueryReasoner getHermiTReasoner(boolean toCheckSatisfiability) {
252 return new HermiTReasoner(toCheckSatisfiability); 246 return new HermiTReasoner(toCheckSatisfiability);
253 } 247 }
254 248
255} 249}