From: <jen...@us...> - 2011-08-15 13:09:13
|
Revision: 3043 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3043&view=rev Author: jenslehmann Date: 2011-08-15 13:09:06 +0000 (Mon, 15 Aug 2011) Log Message: ----------- made CELOE invocation compatible with other algorithms Modified Paths: -------------- trunk/components-core/src/main/java/org/dllearner/kb/sparql/SPARQLTasks.java trunk/components-core/src/main/java/org/dllearner/reasoning/SPARQLReasoner.java trunk/interfaces/src/main/java/org/dllearner/cli/Enrichment.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 2011-08-15 12:56:13 UTC (rev 3042) +++ trunk/components-core/src/main/java/org/dllearner/kb/sparql/SPARQLTasks.java 2011-08-15 13:09:06 UTC (rev 3043) @@ -605,6 +605,7 @@ // tries to detect the type of the resource public Entity guessResourceType(String resource) { SortedSet<String> types = retrieveObjectsForSubjectAndRole(resource, "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", 10000); +// System.out.println(types); if(types.contains("http://www.w3.org/2002/07/owl#ObjectProperty")) { return new ObjectProperty(resource); } else if(types.contains("http://www.w3.org/2002/07/owl#DatatypeProperty")) { Modified: trunk/components-core/src/main/java/org/dllearner/reasoning/SPARQLReasoner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/reasoning/SPARQLReasoner.java 2011-08-15 12:56:13 UTC (rev 3042) +++ trunk/components-core/src/main/java/org/dllearner/reasoning/SPARQLReasoner.java 2011-08-15 13:09:06 UTC (rev 3043) @@ -79,11 +79,18 @@ @Override public SortedSet<Individual> getIndividuals(Description description) { + return getIndividuals(description, 0); + } + + public SortedSet<Individual> getIndividuals(Description description, int limit) { if(!(description instanceof NamedClass)){ throw new UnsupportedOperationException("Only named classes are supported."); } SortedSet<Individual> individuals = new TreeSet<Individual>(); String query = String.format("SELECT ?ind WHERE {?ind a %s}", inAngleBrackets(((NamedClass)description).getName())); + if(limit != 0) { + query += " LIMIT " + limit; + } ResultSet rs = executeQuery(query); QuerySolution qs; @@ -92,8 +99,8 @@ individuals.add(new Individual(qs.getResource("ind").getURI())); } return individuals; - } - + } + @Override public SortedSetTuple<Individual> doubleRetrieval(Description description) { throw new UnsupportedOperationException(); Modified: trunk/interfaces/src/main/java/org/dllearner/cli/Enrichment.java =================================================================== --- trunk/interfaces/src/main/java/org/dllearner/cli/Enrichment.java 2011-08-15 12:56:13 UTC (rev 3042) +++ trunk/interfaces/src/main/java/org/dllearner/cli/Enrichment.java 2011-08-15 13:09:06 UTC (rev 3043) @@ -21,7 +21,6 @@ import static java.util.Arrays.asList; -import java.io.File; import java.io.IOException; import java.io.StringWriter; import java.lang.reflect.InvocationTargetException; @@ -29,13 +28,11 @@ import java.net.URI; import java.net.URISyntaxException; import java.net.URL; -import java.util.ArrayList; import java.text.DecimalFormat; -import java.util.Arrays; +import java.util.ArrayList; import java.util.HashSet; import java.util.LinkedList; import java.util.List; -import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; @@ -74,6 +71,7 @@ import org.dllearner.core.EvaluatedDescription; import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.LearningProblemUnsupportedException; +import org.dllearner.core.Score; import org.dllearner.core.config.ConfigHelper; import org.dllearner.core.configurators.CELOEConfigurator; import org.dllearner.core.owl.Axiom; @@ -83,31 +81,27 @@ import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.NamedClass; import org.dllearner.core.owl.ObjectProperty; -import org.dllearner.gui.Config; -import org.dllearner.gui.ConfigSave; import org.dllearner.kb.SparqlEndpointKS; import org.dllearner.kb.sparql.SPARQLTasks; import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.kb.sparql.SparqlQuery; import org.dllearner.learningproblems.ClassLearningProblem; -import org.dllearner.learningproblems.PosNegLPStandard; import org.dllearner.reasoning.FastInstanceChecker; import org.dllearner.reasoning.SPARQLReasoner; import org.dllearner.utilities.CommonPrefixMap; import org.dllearner.utilities.EnrichmentVocabulary; +import org.dllearner.utilities.Helper; +import org.dllearner.utilities.datastructures.Datastructures; +import org.dllearner.utilities.datastructures.SortedSetTuple; +import org.dllearner.utilities.examples.AutomaticNegativeExampleFinderSPARQL; import org.semanticweb.owlapi.apibinding.OWLManager; import org.semanticweb.owlapi.model.IRI; import org.semanticweb.owlapi.model.OWLAxiom; import org.semanticweb.owlapi.model.OWLDataFactory; import org.semanticweb.owlapi.model.OWLIndividual; -import org.semanticweb.owlapi.model.OWLOntology; import org.semanticweb.owlapi.model.OWLOntologyCreationException; import org.semanticweb.owlapi.util.DefaultPrefixManager; -import org.dllearner.utilities.Helper; -import org.dllearner.utilities.datastructures.Datastructures; -import org.dllearner.utilities.datastructures.SortedSetTuple; -import org.dllearner.utilities.examples.AutomaticNegativeExampleFinderSPARQL; import uk.ac.manchester.cs.owl.owlapi.OWLDataFactoryImpl; import uk.ac.manchester.cs.owl.owlapi.mansyntaxrenderer.ManchesterOWLSyntaxObjectRenderer; @@ -216,7 +210,7 @@ applyCELOE(ks, false); applyCELOE(ks, true); } else { - applyLearningAlgorithm((Class<AxiomLearningAlgorithm>)algorithmClass, ks); +// applyLearningAlgorithm((Class<AxiomLearningAlgorithm>)algorithmClass, ks); } } } else { @@ -230,8 +224,9 @@ // get instances of class as positive examples SPARQLReasoner sr = new SPARQLReasoner(ks); - SortedSet<Individual> posExamples = sr.getIndividuals((NamedClass)resource); + SortedSet<Individual> posExamples = sr.getIndividuals((NamedClass)resource, 1000); SortedSet<String> posExStr = Helper.getStringSet(posExamples); + System.out.println(posExStr.size()); // get negative examples via various strategies AutomaticNegativeExampleFinderSPARQL finder = new AutomaticNegativeExampleFinderSPARQL(posExStr, st, null); @@ -253,7 +248,7 @@ ks.init(); - AbstractReasonerComponent rc = cm.reasoner(FastInstanceChecker.class, ks); + AbstractReasonerComponent rc = cm.reasoner(FastInstanceChecker.class, ks2); rc.init(); // TODO: super class learning @@ -275,14 +270,16 @@ // convert the result to axioms (to make it compatible with the other algorithms) TreeSet<? extends EvaluatedDescription> learnedDescriptions = la.getCurrentlyBestEvaluatedDescriptions(); + List<EvaluatedAxiom> evaluatedAxioms = new LinkedList<EvaluatedAxiom>(); for(EvaluatedDescription learnedDescription : learnedDescriptions) { Axiom axiom = new EquivalentClassesAxiom((NamedClass) resource, learnedDescription.getDescription()); + Score score = lp.computeScore(learnedDescription.getDescription()); + evaluatedAxioms.add(new EvaluatedAxiom(axiom, score)); } - // TODO: further axiom conversion - + toRDF(evaluatedAxioms, la, ks); cm.freeAllComponents(); - return null; + return evaluatedAxioms; } private List<EvaluatedAxiom> applyLearningAlgorithm(Class<? extends AxiomLearningAlgorithm> algorithmClass, SparqlEndpointKS ks) throws ComponentInitException, IllegalArgumentException, SecurityException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |