From 1b6a128137e5d7a6ff75566869232fc054afabef Mon Sep 17 00:00:00 2001 From: RncLsn Date: Fri, 15 May 2015 17:32:22 +0100 Subject: Testing and fixing. Executed successfully on UOBM{1,2,3,4,5,6,7,8}. --- .../cs/pagoda/reasoner/light/KarmaQueryEngine.java | 26 ++++++----- .../cs/pagoda/reasoner/light/RDFoxQueryEngine.java | 22 +++++---- .../pagoda/reasoner/light/RDFoxTripleManager.java | 54 +++++++++++++++------- 3 files changed, 64 insertions(+), 38 deletions(-) (limited to 'src/uk/ac/ox/cs/pagoda/reasoner/light') 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 f70dde9..f068164 100644 --- a/src/uk/ac/ox/cs/pagoda/reasoner/light/KarmaQueryEngine.java +++ b/src/uk/ac/ox/cs/pagoda/reasoner/light/KarmaQueryEngine.java @@ -1,20 +1,22 @@ -package uk.ac.ox.cs.pagoda.reasoner.light; +package uk.ac.ox.cs.pagoda.reasoner.light; -import java.io.File; -import java.io.FileNotFoundException; -import java.util.*; - -import org.semanticweb.karma2.*; +import org.semanticweb.karma2.MyKarma; import org.semanticweb.karma2.clausifier.OntologyProcesser; import org.semanticweb.karma2.exception.IllegalInputOntologyException; import org.semanticweb.karma2.model.ConjunctiveQuery; import org.semanticweb.owlapi.model.OWLOntology; - -import uk.ac.ox.cs.pagoda.query.*; -import uk.ac.ox.cs.pagoda.util.ConjunctiveQueryHelper; -import uk.ac.ox.cs.pagoda.util.Utility; import uk.ac.ox.cs.JRDFox.JRDFStoreException; import uk.ac.ox.cs.JRDFox.store.DataStore; +import uk.ac.ox.cs.pagoda.query.AnswerTuple; +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 java.io.File; +import java.io.FileNotFoundException; +import java.nio.file.Paths; +import java.util.Set; public class KarmaQueryEngine extends RDFoxQueryEngine { @@ -29,8 +31,8 @@ public class KarmaQueryEngine extends RDFoxQueryEngine { // int index = (new Random().nextInt() % Base + Base) % Base; // karmaDataFile = "karma_data" + index + ".ttl"; // karmaRuleFile = "karma_rule" + index + ".dlog"; - karmaDataFile = Utility.TempDirectory + "karma_data.ttl"; - karmaRuleFile = Utility.TempDirectory + "karma_rule.dlog"; + karmaDataFile = Paths.get(Utility.getGlobalTempDirAbsolutePath(), "karma_data.ttl").toString(); + karmaRuleFile = Paths.get(Utility.getGlobalTempDirAbsolutePath(), "karma_rule.dlog").toString(); reasoner = new MyKarma(); } diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/light/RDFoxQueryEngine.java b/src/uk/ac/ox/cs/pagoda/reasoner/light/RDFoxQueryEngine.java index 70d0cc9..63773d9 100644 --- a/src/uk/ac/ox/cs/pagoda/reasoner/light/RDFoxQueryEngine.java +++ b/src/uk/ac/ox/cs/pagoda/reasoner/light/RDFoxQueryEngine.java @@ -1,8 +1,9 @@ package uk.ac.ox.cs.pagoda.reasoner.light; -import java.io.File; -import java.util.Collection; - +import uk.ac.ox.cs.JRDFox.JRDFStoreException; +import uk.ac.ox.cs.JRDFox.Prefixes; +import uk.ac.ox.cs.JRDFox.store.DataStore; +import uk.ac.ox.cs.JRDFox.store.DataStore.StoreType; import uk.ac.ox.cs.pagoda.MyPrefixes; import uk.ac.ox.cs.pagoda.query.AnswerTuples; import uk.ac.ox.cs.pagoda.reasoner.QueryEngine; @@ -10,16 +11,19 @@ import uk.ac.ox.cs.pagoda.reasoner.QueryReasoner; import uk.ac.ox.cs.pagoda.tracking.AnswerTuplesWriter; import uk.ac.ox.cs.pagoda.util.Timer; import uk.ac.ox.cs.pagoda.util.Utility; -import uk.ac.ox.cs.JRDFox.JRDFStoreException; -import uk.ac.ox.cs.JRDFox.Prefixes; -import uk.ac.ox.cs.JRDFox.store.DataStore; -import uk.ac.ox.cs.JRDFox.store.DataStore.StoreType; + +import java.io.File; +import java.util.Collection; public abstract class RDFoxQueryEngine implements QueryEngine { public static final int matNoOfThreads = Runtime.getRuntime().availableProcessors() * 2; - - protected String name; + + public String getName() { + return name; + } + + protected String name; protected Prefixes prefixes = MyPrefixes.PAGOdAPrefixes.getRDFoxPrefixes(); public RDFoxQueryEngine(String name) { diff --git a/src/uk/ac/ox/cs/pagoda/reasoner/light/RDFoxTripleManager.java b/src/uk/ac/ox/cs/pagoda/reasoner/light/RDFoxTripleManager.java index 232bc31..85f8ef9 100644 --- a/src/uk/ac/ox/cs/pagoda/reasoner/light/RDFoxTripleManager.java +++ b/src/uk/ac/ox/cs/pagoda/reasoner/light/RDFoxTripleManager.java @@ -1,5 +1,8 @@ package uk.ac.ox.cs.pagoda.reasoner.light; +import net.sf.ehcache.Cache; +import net.sf.ehcache.CacheManager; +import net.sf.ehcache.Element; import org.semanticweb.HermiT.model.*; import uk.ac.ox.cs.JRDFox.JRDFStoreException; import uk.ac.ox.cs.JRDFox.model.Datatype; @@ -11,11 +14,20 @@ import uk.ac.ox.cs.JRDFox.store.Resource; import uk.ac.ox.cs.pagoda.owl.OWLHelper; import uk.ac.ox.cs.pagoda.util.Namespace; -import java.util.*; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; public class RDFoxTripleManager { - - UpdateType m_incrementally; + + private final Cache termsCache; + private static final int TERMS_CACHE_SIZE = 10000; + private static final int CACHE_TTL_DEFAULT = 0; + private static final int CACHE_TTI_DEFAULT = 0; + private static final boolean CACHE_ETERNAL = true; + private static final boolean CACHE_USE_DISK = false; + + UpdateType m_incrementally; // boolean m_incrementally; DataStore m_store; @@ -24,7 +36,19 @@ public class RDFoxTripleManager { public RDFoxTripleManager(DataStore store, boolean incrementally) { m_store = store; -// m_incrementally = incrementally; +// m_incrementally = incrementally; + + CacheManager cacheManager = CacheManager.getInstance(); + String cacheName = "RDFoxTripleManager_" + store.hashCode(); + if(! cacheManager.cacheExists(cacheName)) { + termsCache = new Cache(cacheName, + TERMS_CACHE_SIZE, CACHE_USE_DISK, CACHE_ETERNAL, + CACHE_TTL_DEFAULT, CACHE_TTI_DEFAULT); + cacheManager.addCache(termsCache); + } + else + termsCache = cacheManager.getCache(cacheName); + if (incrementally) m_incrementally = UpdateType.ScheduleForAddition; else @@ -164,29 +188,25 @@ public class RDFoxTripleManager { return m_dict.resolveResources(lexicalForms, types)[0]; } - Map termCache = new HashMap(); - Queue termList = new LinkedList(); - int sizeLimit = 10000; +// Map termCache = new HashMap(); +// Queue termQueue = new LinkedList(); private int getResourceID(Term arg, Map assignment) { - // FIXME infinite loop -// while (termCache.size() > sizeLimit) -// termCache.remove(termList.poll()); - if (arg instanceof Variable) return assignment.get(arg); - Integer id = null; - if ((id = termCache.get(arg)) != null) - return id; - + int id = -1; + if(termsCache.isKeyInCache(arg)) + return ((int) termsCache.get(arg).getObjectValue()); + // if (arg instanceof Individual) { try { if (arg instanceof Individual) - termCache.put(arg, id = resolveResource(((Individual) arg).getIRI(), Datatype.IRI_REFERENCE.value())); + termsCache.put(new Element(arg, id = resolveResource(((Individual) arg).getIRI(), Datatype.IRI_REFERENCE.value()))); else if (arg instanceof Constant) - termCache.put(arg, id = resolveResource(((Constant) arg).getLexicalForm(), getDatatypeID(((Constant) arg).getDatatypeURI()))); + termsCache.put(new Element(arg, id = resolveResource(((Constant) arg).getLexicalForm(), getDatatypeID(((Constant) arg).getDatatypeURI())))); } catch (JRDFStoreException e) { e.printStackTrace(); + System.exit(1); } // } -- cgit v1.2.3