From 4b7253559c290b6fdd1c4122830f153fda85dd62 Mon Sep 17 00:00:00 2001 From: RncLsn Date: Fri, 29 May 2015 18:35:51 +0100 Subject: Disposable. --- .../cs/pagoda/reasoner/light/KarmaQueryEngine.java | 155 +++++++++++---------- 1 file changed, 82 insertions(+), 73 deletions(-) (limited to 'src/uk/ac/ox/cs/pagoda/reasoner/light/KarmaQueryEngine.java') diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/light/KarmaQueryEngine.java b/src/uk/ac/ox/cs/pagoda/reasoner/light/KarmaQueryEngine.java index f068164..98f0c35 100644 --- a/src/uk/ac/ox/cs/pagoda/reasoner/light/KarmaQueryEngine.java +++ b/src/uk/ac/ox/cs/pagoda/reasoner/light/KarmaQueryEngine.java @@ -12,6 +12,7 @@ import uk.ac.ox.cs.pagoda.query.AnswerTuples; import uk.ac.ox.cs.pagoda.query.AnswerTuplesImp; import uk.ac.ox.cs.pagoda.util.ConjunctiveQueryHelper; import uk.ac.ox.cs.pagoda.util.Utility; +import uk.ac.ox.cs.pagoda.util.disposable.DisposedException; import java.io.File; import java.io.FileNotFoundException; @@ -19,82 +20,90 @@ import java.nio.file.Paths; import java.util.Set; public class KarmaQueryEngine extends RDFoxQueryEngine { - - private MyKarma reasoner = null; - - String karmaDataFile = null, karmaRuleFile = null; - - public KarmaQueryEngine(String name) { - super(name); - + + String karmaDataFile = null, karmaRuleFile = null; + private MyKarma reasoner = null; + + public KarmaQueryEngine(String name) { + super(name); + // int Base = 1 << 6; // int index = (new Random().nextInt() % Base + Base) % Base; // karmaDataFile = "karma_data" + index + ".ttl"; // karmaRuleFile = "karma_rule" + index + ".dlog"; - karmaDataFile = Paths.get(Utility.getGlobalTempDirAbsolutePath(), "karma_data.ttl").toString(); - karmaRuleFile = Paths.get(Utility.getGlobalTempDirAbsolutePath(), "karma_rule.dlog").toString(); - - reasoner = new MyKarma(); - } - - public MyKarma getReasoner() { - return reasoner; - } - - public void processOntology(OWLOntology elhoOntology) { - try { - OntologyProcesser.transformOntology(elhoOntology, new File(karmaDataFile), new File(karmaRuleFile)); - } catch (IllegalInputOntologyException e) { - e.printStackTrace(); - } - } - - @Override - public void dispose() { - reasoner.dispose(); - } - - @Override - public AnswerTuples evaluate(String queryText) { - return evaluate(queryText, ConjunctiveQueryHelper.getAnswerVariables(queryText)[0], null); - } - - @Override - public AnswerTuples evaluate(String queryText, String[] answerVars) { - return evaluate(queryText, answerVars, null); - } - - public AnswerTuples evaluate(String queryText, AnswerTuples soundAnswerTuples) { - return evaluate(queryText, ConjunctiveQueryHelper.getAnswerVariables(queryText)[0], soundAnswerTuples); - } - - public AnswerTuples evaluate(String queryText, String[] answerVars, AnswerTuples soundAnswerTuples) { - KarmaQuery karmaQuery = new KarmaQuery(queryText.replace("_:", "?")); - reasoner.setConcurrence(false); - ConjunctiveQuery cq = karmaQuery.getConjunctiveQuery(); - if (cq == null) return null; - Set answers = reasoner.answerCQ(cq, soundAnswerTuples, !queryText.contains("_:")); - return new AnswerTuplesImp(answerVars, answers); - } - - @Override - public DataStore getDataStore() { - return reasoner.getStore(); - } - - public void initialiseKarma() { - try { - reasoner.initializeData(new File(karmaDataFile)); - reasoner.materialise(new File(karmaRuleFile)); - - File tmp; - if (karmaDataFile != null && ((tmp = new File(karmaDataFile)).exists())) tmp.delete(); - if (karmaRuleFile != null && ((tmp = new File(karmaRuleFile)).exists())) tmp.delete(); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (JRDFStoreException e) { - e.printStackTrace(); - } - } + karmaDataFile = Paths.get(Utility.getGlobalTempDirAbsolutePath(), "karma_data.ttl").toString(); + karmaRuleFile = Paths.get(Utility.getGlobalTempDirAbsolutePath(), "karma_rule.dlog").toString(); + + reasoner = new MyKarma(); + } + + public MyKarma getReasoner() { + if(isDisposed()) throw new DisposedException(); + return reasoner; + } + + public void processOntology(OWLOntology elhoOntology) { + if(isDisposed()) throw new DisposedException(); + try { + OntologyProcesser.transformOntology(elhoOntology, new File(karmaDataFile), new File(karmaRuleFile)); + } catch(IllegalInputOntologyException e) { + e.printStackTrace(); + } + } + + @Override + public void dispose() { + super.dispose(); + reasoner.dispose(); + } + + @Override + public AnswerTuples evaluate(String queryText) { + if(isDisposed()) throw new DisposedException(); + return evaluate(queryText, ConjunctiveQueryHelper.getAnswerVariables(queryText)[0], null); + } + + @Override + public AnswerTuples evaluate(String queryText, String[] answerVars) { + if(isDisposed()) throw new DisposedException(); + return evaluate(queryText, answerVars, null); + } + + public AnswerTuples evaluate(String queryText, AnswerTuples soundAnswerTuples) { + if(isDisposed()) throw new DisposedException(); + return evaluate(queryText, ConjunctiveQueryHelper.getAnswerVariables(queryText)[0], soundAnswerTuples); + } + + public AnswerTuples evaluate(String queryText, String[] answerVars, AnswerTuples soundAnswerTuples) { + if(isDisposed()) throw new DisposedException(); + KarmaQuery karmaQuery = new KarmaQuery(queryText.replace("_:", "?")); + reasoner.setConcurrence(false); + ConjunctiveQuery cq = karmaQuery.getConjunctiveQuery(); + if(cq == null) return null; + Set answers = reasoner.answerCQ(cq, soundAnswerTuples, !queryText.contains("_:")); + return new AnswerTuplesImp(answerVars, answers); + } + + @Override + public DataStore getDataStore() { + if(isDisposed()) throw new DisposedException(); + return reasoner.getStore(); + } + + public void initialiseKarma() { + if(isDisposed()) throw new DisposedException(); + try { + reasoner.initializeData(new File(karmaDataFile)); + reasoner.materialise(new File(karmaRuleFile)); + + File tmp; + if(karmaDataFile != null && ((tmp = new File(karmaDataFile)).exists())) tmp.delete(); + if(karmaRuleFile != null && ((tmp = new File(karmaRuleFile)).exists())) tmp.delete(); + } catch(FileNotFoundException e) { + e.printStackTrace(); + } catch(JRDFStoreException e) { + e.printStackTrace(); + } + } } -- cgit v1.2.3