From: <lor...@us...> - 2013-02-07 14:04:07
|
Revision: 3897 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3897&view=rev Author: lorenz_b Date: 2013-02-07 14:03:54 +0000 (Thu, 07 Feb 2013) Log Message: ----------- Cont. matching. Modified Paths: -------------- trunk/scripts/pom.xml trunk/scripts/src/main/java/org/dllearner/scripts/OntologyMatching.java trunk/scripts/src/test/java/org/dllearner/junit/OntologyMatchingTest.java Modified: trunk/scripts/pom.xml =================================================================== --- trunk/scripts/pom.xml 2013-02-06 18:17:28 UTC (rev 3896) +++ trunk/scripts/pom.xml 2013-02-07 14:03:54 UTC (rev 3897) @@ -116,6 +116,7 @@ <dependency> <groupId>net.sourceforge.owlapi</groupId> <artifactId>owlapi-distribution</artifactId> + <version>3.4.4-SNAPSHOT</version> </dependency> <dependency> <groupId>net.sourceforge.owlapi</groupId> Modified: trunk/scripts/src/main/java/org/dllearner/scripts/OntologyMatching.java =================================================================== --- trunk/scripts/src/main/java/org/dllearner/scripts/OntologyMatching.java 2013-02-06 18:17:28 UTC (rev 3896) +++ trunk/scripts/src/main/java/org/dllearner/scripts/OntologyMatching.java 2013-02-07 14:03:54 UTC (rev 3897) @@ -19,15 +19,18 @@ import org.apache.log4j.Logger; import org.dllearner.algorithms.celoe.CELOE; +import org.dllearner.algorithms.qtl.QTL; import org.dllearner.core.AbstractLearningProblem; import org.dllearner.core.AbstractReasonerComponent; import org.dllearner.core.ComponentInitException; import org.dllearner.core.EvaluatedDescription; import org.dllearner.core.KnowledgeSource; +import org.dllearner.core.LearningProblemUnsupportedException; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.NamedClass; import org.dllearner.core.owl.ObjectProperty; +import org.dllearner.kb.LocalModelBasedSparqlEndpointKS; import org.dllearner.kb.OWLAPIOntology; import org.dllearner.kb.SparqlEndpointKS; import org.dllearner.kb.sparql.ConciseBoundedDescriptionGenerator; @@ -48,15 +51,16 @@ import org.dllearner.utilities.examples.AutomaticNegativeExampleFinderSPARQL2; import org.dllearner.utilities.owl.OWLAPIDescriptionConvertVisitor; import org.semanticweb.owlapi.apibinding.OWLManager; -import org.semanticweb.owlapi.io.UnparsableOntologyException; import org.semanticweb.owlapi.model.OWLOntology; import org.semanticweb.owlapi.model.OWLOntologyCreationException; import org.semanticweb.owlapi.model.OWLOntologyManager; import uk.ac.manchester.cs.owl.owlapi.mansyntaxrenderer.ManchesterOWLSyntaxOWLObjectRendererImpl; +import com.clarkparsia.owlapiv3.XSD; import com.google.common.collect.Sets; import com.hp.hpl.jena.ontology.OntModel; +import com.hp.hpl.jena.ontology.OntModelSpec; import com.hp.hpl.jena.query.ParameterizedSparqlString; import com.hp.hpl.jena.query.Query; import com.hp.hpl.jena.query.QueryExecutionFactory; @@ -64,6 +68,7 @@ import com.hp.hpl.jena.query.QuerySolution; import com.hp.hpl.jena.query.ResultSet; import com.hp.hpl.jena.query.Syntax; +import com.hp.hpl.jena.rdf.model.Literal; import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.rdf.model.ModelFactory; import com.hp.hpl.jena.rdf.model.RDFNode; @@ -190,7 +195,7 @@ List<? extends EvaluatedDescription> learnedClassExpressions = computeMapping(nc, source, target); if(learnedClassExpressions != null){ mapping.put(nc, learnedClassExpressions); - //break; +// break; } } catch (Exception e) { logger.error("Failed for " + nc.getName(), e); @@ -217,7 +222,7 @@ } private List<? extends EvaluatedDescription> learnClassExpressions(KnowledgeBase kb, SortedSet<Individual> positiveExamples, boolean posNeg){ - Model fullFragment = null; + OntModel fullFragment = null; try { //get a sample of the positive examples @@ -258,8 +263,6 @@ } } - AutomaticNegativeExampleFinderSPARQL2 finder = new AutomaticNegativeExampleFinderSPARQL2(kb.getEndpoint()); - //TODO find negative examples mon.stop(); logger.info("Found " + negativeExamples.size() + " negative examples in " + mon.getLastValue() + "ms."); } @@ -276,7 +279,7 @@ logger.info("...done."); //create fragment consisting of both - fullFragment = ModelFactory.createDefaultModel(); + fullFragment = ModelFactory.createOntologyModel(OntModelSpec.RDFS_MEM); fullFragment.add(positiveFragment); fullFragment.add(negativeFragment); @@ -303,6 +306,15 @@ la.setNoisePercentage(25); la.init(); la.start(); + + try { + QTL qtl = new QTL(lp, new LocalModelBasedSparqlEndpointKS(fullFragment)); + qtl.init(); + qtl.start(); + System.out.println(qtl.getSPARQLQuery()); + } catch (LearningProblemUnsupportedException e) { + e.printStackTrace(); + } logger.info(la.getCurrentlyBestEvaluatedDescription()); @@ -311,7 +323,7 @@ e.printStackTrace(); try { new File("errors").mkdir(); - fullFragment.write(new FileOutputStream("errors/" + prettyPrint(currentClass) + ".ttl"), "TURTLE", null); + fullFragment.write(new FileOutputStream("errors/" + prettyPrint(currentClass) + "_inconsistent.ttl"), "TURTLE", null); } catch (FileNotFoundException e1) { e1.printStackTrace(); } @@ -329,7 +341,7 @@ } catch (OWLOntologyCreationException e) { e.printStackTrace(); try { - model.write(new FileOutputStream(prettyPrint(currentClass) + "_conversion_error.ttl"), "TURTLE", null); + model.write(new FileOutputStream("errors/" + prettyPrint(currentClass) + "_conversion_error.ttl"), "TURTLE", null); } catch (FileNotFoundException e1) { e.printStackTrace(); } @@ -376,11 +388,11 @@ Statement st = iter.next(); RDFNode object = st.getObject(); if(object.isLiteral()){ - statementsToRemove.add(st); -// Literal lit = object.asLiteral(); -// if(lit.getDatatype() == null || lit.getDatatype().equals(XSD.STRING)){ -// iter.remove(); -// } +// statementsToRemove.add(st); + Literal lit = object.asLiteral(); + if(lit.getDatatype() == null || lit.getDatatype().equals(XSD.STRING)){ + st.changeObject("shortened", "en"); + } } } fullFragment.remove(statementsToRemove); Modified: trunk/scripts/src/test/java/org/dllearner/junit/OntologyMatchingTest.java =================================================================== --- trunk/scripts/src/test/java/org/dllearner/junit/OntologyMatchingTest.java 2013-02-06 18:17:28 UTC (rev 3896) +++ trunk/scripts/src/test/java/org/dllearner/junit/OntologyMatchingTest.java 2013-02-07 14:03:54 UTC (rev 3897) @@ -100,7 +100,7 @@ } @Test - public void testSingleClass() { + public void testSingleClassOpenCycToDBpedia() { OntologyMatching matcher = new OntologyMatching(openCyc, dbpedia); NamedClass nc = new NamedClass("http://sw.opencyc.org/concept/Mx4r4fYeXvbPQdiKtoNafhmOew"); List<? extends EvaluatedDescription> mapping = matcher.computeMapping(nc, openCyc, dbpedia); @@ -109,6 +109,26 @@ System.out.println(OntologyMatching.toHTMLWithLabels(alignment, openCyc, dbpedia)); } + @Test + public void testSingleClassLinkedGeoDataToDBpedia() { + OntologyMatching matcher = new OntologyMatching(linkedGeoData, dbpedia); + NamedClass nc = new NamedClass("http://linkedgeodata.org/ontology/Aerodrome"); + List<? extends EvaluatedDescription> mapping = matcher.computeMapping(nc, linkedGeoData, dbpedia); + Map<Description, List<? extends EvaluatedDescription>> alignment = new HashMap<Description, List<? extends EvaluatedDescription>>(); + alignment.put(nc, mapping); + System.out.println(OntologyMatching.toHTMLWithLabels(alignment, linkedGeoData, dbpedia)); + } + + @Test + public void testSingleClassDBpediaToLinkedGeoData() { + OntologyMatching matcher = new OntologyMatching(dbpedia, linkedGeoData); + NamedClass nc = new NamedClass("http://dbpedia.org/ontology/AdministrativeRegion"); + List<? extends EvaluatedDescription> mapping = matcher.computeMapping(nc, dbpedia, linkedGeoData); + Map<Description, List<? extends EvaluatedDescription>> alignment = new HashMap<Description, List<? extends EvaluatedDescription>>(); + alignment.put(nc, mapping); + System.out.println(OntologyMatching.toHTMLWithLabels(alignment, dbpedia, linkedGeoData)); + } + private void save(String filename, Map<Description, List<? extends EvaluatedDescription>> mapping, KnowledgeBase source, KnowledgeBase target){ BufferedWriter out = null; try { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |