From: <lor...@us...> - 2012-01-03 08:51:00
|
Revision: 3522 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3522&view=rev Author: lorenz_b Date: 2012-01-03 08:50:54 +0000 (Tue, 03 Jan 2012) Log Message: ----------- Enabled separate cache for each endpoint to avoid concurrency problems when running several threads in parallel. Modified Paths: -------------- trunk/components-core/src/main/java/org/dllearner/kb/sparql/SPARQLTasks.java trunk/interfaces/src/main/java/org/dllearner/cli/Enrichment.java trunk/interfaces/src/main/java/org/dllearner/cli/GlobalEnrichment.java Modified: trunk/components-core/src/main/java/org/dllearner/kb/sparql/SPARQLTasks.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/kb/sparql/SPARQLTasks.java 2012-01-03 04:33:55 UTC (rev 3521) +++ trunk/components-core/src/main/java/org/dllearner/kb/sparql/SPARQLTasks.java 2012-01-03 08:50:54 UTC (rev 3522) @@ -33,6 +33,7 @@ import org.dllearner.utilities.datastructures.StringTuple; import org.dllearner.utilities.owl.OWLVocabulary; +import com.clarkparsia.owlapiv3.OWL; import com.hp.hpl.jena.query.QuerySolution; import com.hp.hpl.jena.query.ResultSet; import com.hp.hpl.jena.query.ResultSetFactory; @@ -710,6 +711,9 @@ } } + //remove trivial classes + classes.remove(OWL.Nothing.toStringID()); + classes.remove(OWL.Thing.toStringID()); return classes; } Modified: trunk/interfaces/src/main/java/org/dllearner/cli/Enrichment.java =================================================================== --- trunk/interfaces/src/main/java/org/dllearner/cli/Enrichment.java 2012-01-03 04:33:55 UTC (rev 3521) +++ trunk/interfaces/src/main/java/org/dllearner/cli/Enrichment.java 2012-01-03 08:50:54 UTC (rev 3522) @@ -29,6 +29,7 @@ import java.io.IOException; import java.io.OutputStream; import java.io.PrintStream; +import java.io.UnsupportedEncodingException; import java.lang.reflect.InvocationTargetException; import java.math.BigInteger; import java.net.MalformedURLException; @@ -36,6 +37,7 @@ import java.net.URI; import java.net.URISyntaxException; import java.net.URL; +import java.net.URLEncoder; import java.security.SecureRandom; import java.text.DecimalFormat; import java.util.ArrayList; @@ -104,6 +106,7 @@ import org.dllearner.core.owl.ObjectProperty; import org.dllearner.core.owl.SubClassAxiom; import org.dllearner.kb.SparqlEndpointKS; +import org.dllearner.kb.sparql.ExtractionDBCache; import org.dllearner.kb.sparql.SPARQLTasks; import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlKnowledgeSource; @@ -208,6 +211,8 @@ private boolean useInference; private SPARQLReasoner reasoner; + private ExtractionDBCache cache; + private String cacheDir = "cache"; // lists of algorithms to apply private List<Class<? extends AxiomLearningAlgorithm>> objectPropertyAlgorithms; @@ -234,6 +239,14 @@ this.nrOfAxiomsToLearn = nrOfAxiomsToLearn; this.useInference = useInference; + try { + cacheDir = "cache" + File.separator + URLEncoder.encode(se.getURL().toString(), "UTF-8"); + } catch (UnsupportedEncodingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + cache = new ExtractionDBCache(cacheDir); + objectPropertyAlgorithms = new LinkedList<Class<? extends AxiomLearningAlgorithm>>(); objectPropertyAlgorithms.add(DisjointObjectPropertyAxiomLearner.class); objectPropertyAlgorithms.add(EquivalentObjectPropertyAxiomLearner.class); @@ -282,7 +295,7 @@ // ks.setSupportsSPARQL_1_1(supportsSPARQL_1_1); if(useInference){ - reasoner = new SPARQLReasoner(ks); + reasoner = new SPARQLReasoner(ks, cache); System.out.print("Precomputing subsumption hierarchy ... "); long startTime = System.currentTimeMillis(); reasoner.prepareSubsumptionHierarchy(); @@ -332,7 +345,13 @@ runDataPropertyAlgorithms(ks, (DatatypeProperty) resource); } else if(resource instanceof NamedClass) { System.out.println(resource + " appears to be a class. Running appropriate algorithms.\n"); - runClassLearningAlgorithms(ks, (NamedClass) resource); + try { + runClassLearningAlgorithms(ks, (NamedClass) resource); + } catch (Exception e) { + System.out.println(e.getCause()); + } catch (Error e) { + System.out.println(e.getCause()); + } } else { throw new Error("The type " + resource.getClass() + " of resource " + resource + " cannot be handled by this enrichment tool."); } @@ -401,6 +420,7 @@ ks2.setDefaultGraphURIs(new TreeSet<String>(ks.getEndpoint().getDefaultGraphURIs())); ks2.setUseLits(false); ks2.setUseCacheDatabase(true); + ks2.setCacheDir(cacheDir); ks2.setRecursionDepth(2); ks2.setCloseAfterRecursion(true); ks2.setSaveExtractedFragment(true); Modified: trunk/interfaces/src/main/java/org/dllearner/cli/GlobalEnrichment.java =================================================================== --- trunk/interfaces/src/main/java/org/dllearner/cli/GlobalEnrichment.java 2012-01-03 04:33:55 UTC (rev 3521) +++ trunk/interfaces/src/main/java/org/dllearner/cli/GlobalEnrichment.java 2012-01-03 08:50:54 UTC (rev 3522) @@ -31,6 +31,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.TreeMap; import java.util.TreeSet; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; @@ -74,7 +75,7 @@ //parameters for thread pool //Parallel running Threads(Executor) on System - private static int corePoolSize = 10; + private static int corePoolSize = 1; //Maximum Threads allowed in Pool private static int maximumPoolSize = 20; //Keep alive time for waiting threads for jobs(Runnable) @@ -103,7 +104,7 @@ Logger.getRootLogger().addAppender(consoleAppender); // get all SPARQL endpoints and their graphs - the key is a name-identifier - Map<String,SparqlEndpoint> endpoints = new HashMap<String,SparqlEndpoint>(); + Map<String,SparqlEndpoint> endpoints = new TreeMap<String,SparqlEndpoint>(); String query = ""; query += "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> \n"; @@ -130,7 +131,7 @@ ResultSet rs = sq.send(); while(rs.hasNext()) { QuerySolution qs = rs.next(); - String endpoint = qs.get("endpoint").toString(); + String endpoint = qs.get("endpoint").toString();System.out.println(endpoint); String shortName = qs.get("shortName").toString(); endpoints.put(shortName, new SparqlEndpoint(new URL(endpoint))); } @@ -170,18 +171,20 @@ // run enrichment script - we make a case distinguish to see which kind of problems we get // (could be interesting for statistics later on) try { - e.start(); - success = true; - } catch(StackOverflowError error) { try { + e.start(); + success = true; + } catch (Exception ex){ + ex.printStackTrace(new PrintStream(log)); + } catch(StackOverflowError error) { error.printStackTrace(new PrintStream(log)); - } catch (FileNotFoundException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); + Files.appendToFile(log, "stack overflows could be caused by cycles in class hierarchies"); + error.printStackTrace(); } - Files.appendToFile(log, "stack overflows could be caused by cycles in class hierarchies"); - error.printStackTrace(); - } catch(ResultSetException ex) { + } catch (FileNotFoundException e2) { + e2.printStackTrace(); + } + /*catch(ResultSetException ex) { try { ex.printStackTrace(new PrintStream(log)); } catch (FileNotFoundException e1) { @@ -202,7 +205,7 @@ } catch(Exception ex) { System.out.println("class of exception: " + ex.getClass()); - } + }*/ // save results to a file (TODO: check if enrichment format if(success) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |