From: <sk...@us...> - 2008-10-28 08:55:23
|
Revision: 1464 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1464&view=rev Author: sknappe Date: 2008-10-28 08:54:18 +0000 (Tue, 28 Oct 2008) Log Message: ----------- changes to use new ontology Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/scripts/improveWikipedia/WikipediaCategoryTasks.java trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java trunk/src/dl-learner/org/dllearner/test/TestGetExampleBug.java trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java Modified: trunk/src/dl-learner/org/dllearner/scripts/improveWikipedia/WikipediaCategoryTasks.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/improveWikipedia/WikipediaCategoryTasks.java 2008-10-28 08:53:58 UTC (rev 1463) +++ trunk/src/dl-learner/org/dllearner/scripts/improveWikipedia/WikipediaCategoryTasks.java 2008-10-28 08:54:18 UTC (rev 1464) @@ -149,7 +149,7 @@ // NEGATIVES AutomaticNegativeExampleFinderSPARQL aneg = new AutomaticNegativeExampleFinderSPARQL( - fullPositiveSet, sparqlTasks); + fullPositiveSet, sparqlTasks, new TreeSet<String>()); aneg.makeNegativeExamplesFromParallelClasses(posExamples, sparqlResultLimitNegativeExamples); Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-10-28 08:53:58 UTC (rev 1463) +++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-10-28 08:54:18 UTC (rev 1464) @@ -729,29 +729,34 @@ } @WebMethod - public String[] getNegativeExamples(int sessionID, int componentID,String[] positives, int results, String namespace) throws ClientNotKnownException + public String[] getNegativeExamples(int sessionID, int componentID,String[] positives, int results, String namespace, String[] filterClasses) throws ClientNotKnownException { int sparqlResultSetLimit = 500; SortedSet<String> positiveSet = new TreeSet<String>(Arrays.asList(positives)); + SortedSet<String> filterSet = new TreeSet<String>(Arrays.asList(filterClasses)); ClientState state = getState(sessionID); Component component = state.getComponent(componentID); SparqlKnowledgeSource ks=(SparqlKnowledgeSource)component; SPARQLTasks task=ks.getSPARQLTasks(); - AutomaticNegativeExampleFinderSPARQL finder=new AutomaticNegativeExampleFinderSPARQL(positiveSet,task); + AutomaticNegativeExampleFinderSPARQL finder=new AutomaticNegativeExampleFinderSPARQL(positiveSet,task,filterSet); - finder.makeNegativeExamplesFromParallelClasses(positiveSet, sparqlResultSetLimit); + finder.makeNegativeExamplesFromNearbyClasses(positiveSet, sparqlResultSetLimit); SortedSet<String> negExamples=finder.getNegativeExamples(results); - if(negExamples.isEmpty()){ - finder.makeNegativeExamplesFromRelatedInstances(positiveSet, namespace); - negExamples = finder.getNegativeExamples(results); - if(negExamples.isEmpty()){ - finder.makeNegativeExamplesFromSuperClassesOfInstances(positiveSet, sparqlResultSetLimit); + if (negExamples.isEmpty()){ + finder.makeNegativeExamplesFromParallelClasses(positiveSet, sparqlResultSetLimit); + negExamples=finder.getNegativeExamples(results); + if(negExamples.isEmpty()){ + finder.makeNegativeExamplesFromRelatedInstances(positiveSet, namespace); negExamples = finder.getNegativeExamples(results); - if(negExamples.isEmpty()) { - finder.makeNegativeExamplesFromRandomInstances(); + if(negExamples.isEmpty()){ + finder.makeNegativeExamplesFromSuperClassesOfInstances(positiveSet, sparqlResultSetLimit); negExamples = finder.getNegativeExamples(results); + if(negExamples.isEmpty()) { + finder.makeNegativeExamplesFromRandomInstances(); + negExamples = finder.getNegativeExamples(results); + } } - } + } } return negExamples.toArray(new String[negExamples.size()]); Modified: trunk/src/dl-learner/org/dllearner/test/TestGetExampleBug.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/TestGetExampleBug.java 2008-10-28 08:53:58 UTC (rev 1463) +++ trunk/src/dl-learner/org/dllearner/test/TestGetExampleBug.java 2008-10-28 08:54:18 UTC (rev 1464) @@ -40,7 +40,7 @@ SPARQLTasks st = new SPARQLTasks(new SparqlEndpoint(new URL(OntowikiUrl))); AutomaticNegativeExampleFinderSPARQL ane = - new AutomaticNegativeExampleFinderSPARQL(positiveSet,st); + new AutomaticNegativeExampleFinderSPARQL(positiveSet,st, new TreeSet<String>()); SortedSet<String> negExamples = new TreeSet<String>(); int results=100; if(negExamples.isEmpty()){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java 2008-10-28 08:53:58 UTC (rev 1463) +++ trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java 2008-10-28 08:54:18 UTC (rev 1464) @@ -20,6 +20,7 @@ package org.dllearner.tools.ore; import java.util.SortedSet; +import java.util.TreeSet; import org.dllearner.core.ComponentInitException; import org.dllearner.core.LearningAlgorithm; @@ -49,7 +50,7 @@ pos.makePositiveExamplesFromConcept("angela_merkel"); SortedSet<String> posExamples = pos.getPosExamples(); - AutomaticNegativeExampleFinderSPARQL neg = new AutomaticNegativeExampleFinderSPARQL(posExamples, task); + AutomaticNegativeExampleFinderSPARQL neg = new AutomaticNegativeExampleFinderSPARQL(posExamples, task, new TreeSet<String>()); SortedSet<String> negExamples = neg.getNegativeExamples(20); LearnSPARQLConfiguration conf = new LearnSPARQLConfiguration(); Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java 2008-10-28 08:53:58 UTC (rev 1463) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java 2008-10-28 08:54:18 UTC (rev 1464) @@ -36,10 +36,12 @@ private SPARQLTasks sparqltasks; + private SortedSet<String> filterClasses; private SortedSet<String> fullPositiveSet; private SortedSet<String> fromRelated = new TreeSet<String>(); + private SortedSet<String> fromNearbyClasses = new TreeSet<String>(); private SortedSet<String> fromSuperclasses = new TreeSet<String>();; private SortedSet<String> fromParallelClasses = new TreeSet<String>();; private SortedSet<String> fromRandom = new TreeSet<String>();; @@ -58,12 +60,12 @@ */ public AutomaticNegativeExampleFinderSPARQL( SortedSet<String> fullPositiveSet, - SPARQLTasks st) { + SPARQLTasks st, SortedSet<String> filterClasses) { super(); this.fullPositiveSet = new TreeSet<String>(); this.fullPositiveSet.addAll(fullPositiveSet); this.sparqltasks = st; - + this.filterClasses=filterClasses; } @@ -86,6 +88,7 @@ */ public SortedSet<String> getNegativeExamples(int neglimit, boolean stable ) { SortedSet<String> negatives = new TreeSet<String>(); + negatives.addAll(fromNearbyClasses); negatives.addAll(fromParallelClasses); negatives.addAll(fromRelated); negatives.addAll(fromSuperclasses); @@ -158,7 +161,44 @@ this.fromRelated.addAll(sparqltasks.queryAsSet(SPARQLquery, "o")); }*/ - + + public void makeNegativeExamplesFromNearbyClasses(SortedSet<String> positiveSet, int sparqlResultLimit){ + SortedSet<String> classes = new TreeSet<String>(); + Iterator<String> instanceIter = positiveSet.iterator(); + while(classes.isEmpty() && instanceIter.hasNext()) { + classes.addAll(sparqltasks.getClassesForInstance(instanceIter.next(), 100)); + } + String concept=classes.first(); + if (filterClasses!=null&&filterClasses.size()>0){ + boolean br=false; + for (String oneClass : classes){ + Iterator<String> iter=filterClasses.iterator(); + while (iter.hasNext()){ + if (!oneClass.startsWith(iter.next())){ + concept=oneClass; + br=true; + break; + } + } + if (br) break; + } + } + concept = concept.replaceAll("\"", ""); + SortedSet<String> superClasses = sparqltasks.getSuperClasses(concept, 1); + + classes = new TreeSet<String>(); + for (String oneSuperClass : superClasses) { + classes.addAll(sparqltasks.getSubClasses(oneSuperClass, 1)); + } + classes.remove(concept); + for (String oneClass : classes) { + fromNearbyClasses.addAll(sparqltasks.retrieveInstancesForClassDescription("\"" + + oneClass + "\"", sparqlResultLimit)); + } + + this.fromNearbyClasses.removeAll(fullPositiveSet); + } + /** * makes negEx from classes, the posEx belong to. * Gets all Classes from PosEx, gets Instances from these Classes, returns all This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |