From: <jen...@us...> - 2008-05-19 13:11:36
|
Revision: 901 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=901&view=rev Author: jenslehmann Date: 2008-05-19 06:11:24 -0700 (Mon, 19 May 2008) Log Message: ----------- small fixes Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/owl/package.html Added Paths: ----------- trunk/src/dl-learner/org/dllearner/scripts/PaperStatistics.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/utilities/statistics/PaperStatistics.java Modified: trunk/src/dl-learner/org/dllearner/core/owl/package.html =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/package.html 2008-05-19 12:57:31 UTC (rev 900) +++ trunk/src/dl-learner/org/dllearner/core/owl/package.html 2008-05-19 13:11:24 UTC (rev 901) @@ -3,7 +3,7 @@ <head></head> <body bgcolor="white"> <p>Classes/Interfaces for representing OWL constructs - see -the <a href="http://www.w3.org/TR/owl11-syntax">OWL 1.1 Structural +the <a href="http://www.w3.org/TR/owl2-syntax/">OWL 2 Structural Specification</a> for details.</p> </body> </html> \ No newline at end of file Copied: trunk/src/dl-learner/org/dllearner/scripts/PaperStatistics.java (from rev 899, trunk/src/dl-learner/org/dllearner/utilities/statistics/PaperStatistics.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/PaperStatistics.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/PaperStatistics.java 2008-05-19 13:11:24 UTC (rev 901) @@ -0,0 +1,525 @@ +/** + * Copyright (C) 2007, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.scripts; + +import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.SortedSet; + +import org.dllearner.algorithms.gp.GP; +import org.dllearner.core.ComponentManager; +import org.dllearner.core.KnowledgeSource; +import org.dllearner.core.LearningAlgorithm; +import org.dllearner.core.LearningProblem; +import org.dllearner.core.LearningProblemUnsupportedException; +import org.dllearner.core.OntologyFormat; +import org.dllearner.core.ReasonerComponent; +import org.dllearner.core.ReasoningService; +import org.dllearner.core.Score; +import org.dllearner.kb.OWLFile; +import org.dllearner.learningproblems.PosNegDefinitionLP; +import org.dllearner.parser.ConfParser; +import org.dllearner.reasoning.DIGReasoner; +import org.dllearner.utilities.Files; +import org.dllearner.utilities.Helper; +import org.dllearner.utilities.statistics.Stat; + +/** + * Utility script for creating statistics for publications. + * (Warning: Scripts may run for several hours. Results may change + * when core algorithms are modified.) + * + * @author Jens Lehmann + * + */ +public class PaperStatistics { + + /** + * Points to the current statistic generation function. + * + * @param args None. + */ + public static void main(String[] args) { + createStatistics(); + } + + @SuppressWarnings("unused") + private static void createStatistics() { + + // experimental setup: + + // algorithms: refinement, GP, hybrid GP (YinYang) + // settings GP: + // - average over 10 runs + // ... + // settings Hybrid GP: + // - average over 10 runs + // ... + // settings refinement: + // - single run + // ... + + // observations: + // - correctness + // - concept length + // - runtime + + // learning examples: + // - trains + // - arches + // - moral (simple) + // - moral (complex) + // - poker (pair) + // - poker (straight) + // - uncle (FORTE) + // - more? + + String exampleBaseDir = "examples/"; + String gnuplotBaseDir = "log/gnuplot/"; + String statBaseDir = "log/stat/"; + + File[] confFiles = new File[7]; + confFiles[0] = new File(exampleBaseDir + "trains", "trains_owl.conf"); + confFiles[1] = new File(exampleBaseDir + "arch", "arch_owl.conf"); + confFiles[2] = new File(exampleBaseDir + "moral_reasoner", "moral_43examples_owl.conf"); + confFiles[3] = new File(exampleBaseDir + "moral_reasoner", "moral_43examples_complex_owl.conf"); + confFiles[4] = new File(exampleBaseDir + "poker", "pair_owl.conf"); + confFiles[5] = new File(exampleBaseDir + "poker", "straight_owl.conf"); + confFiles[6] = new File(exampleBaseDir + "forte", "forte_uncle_owl.conf"); + + String[] examples = new String[7]; + examples[0] = "trains"; + examples[1] = "arches"; + examples[2] = "moral reasoner (43 examples, simple)"; + examples[3] = "moral reasoner (43 examples, complex)"; + examples[4] = "poker (49 examples, pair)"; + examples[5] = "poker (55 examples, straight)"; + examples[6] = "uncle (FORTE data set)"; + int startExampleNr = 0; + + String[] algorithms = new String[3]; + algorithms[0] = "refinement"; + algorithms[1] = "gp"; + algorithms[2] = "hybrid"; + + int[] algorithmRuns = {1,10,10}; + int startAlgorithmNr = 0; + + // Config.GP.maxConceptLength = 30; + // Config.writeDIGProtocol = true; + // Config.digProtocolFile = new File(statBaseDir, "dig.log"); + + // do not plot anything + // File[][][] gnuplotFiles = new File[examples.length][algorithms.length][3]; + // for(int i=0; i<examples.length; i++) { + // for(int j=0; j<algorithms.length; j++) { + // gnuplotFiles[i][j][0] = new File(gnuplotBaseDir, examples[i] + "_classification_" + algorithms[j] + ".data"); + // gnuplotFiles[i][j][1] = new File(gnuplotBaseDir, examples[i] + "_length_" + algorithms[j] + ".data"); + // gnuplotFiles[i][j][2] = new File(gnuplotBaseDir, examples[i] + "_runtime_" + algorithms[j] + ".data"); + // } + //} + + File statFile = new File(statBaseDir, "statistics.txt"); + File statDetailsFile = new File(statBaseDir, "statistics_details.txt"); + String statString = "**automatically generated statistics**\n\n"; + String statDetailsString = statString; + + ComponentManager cm = ComponentManager.getInstance(); + + // just set default options +// ConfigurationManager confMgr = new ConfigurationManager(); +// confMgr.applyOptions(); + + for(int exampleNr=startExampleNr; exampleNr < examples.length; exampleNr++) { + + // parse current conf file + ConfParser learner = ConfParser.parseFile(confFiles[exampleNr]); + + String baseDir = confFiles[exampleNr].getParent(); + + // read which files were imported (internal KB is ignored) and initialise reasoner + Map<URL, OntologyFormat> imports = getImports(learner.getFunctionCalls(), confFiles[exampleNr]); + //Map<URL, Class<? extends KnowledgeSource>> imports = Start.getImportedFiles(learner, baseDir); + + // detect specified positive and negative examples + SortedSet<String> positiveExamples = learner.getPositiveExamples(); + SortedSet<String> negativeExamples = learner.getNegativeExamples(); + int nrOfExamples = positiveExamples.size() + negativeExamples.size(); + + statString += "example: " + examples[exampleNr] + "\n\n"; + + for(int algorithmNr=startAlgorithmNr; algorithmNr < algorithms.length; algorithmNr++) { + // reset algorithm number (next example starts with first algorithm) + startAlgorithmNr = 0; + + Stat classification = new Stat(); + Stat length = new Stat(); + Stat runtime = new Stat(); + + for(int runNr=0; runNr < algorithmRuns[algorithmNr]; runNr++) { + + // create reasoner (this has to be done in this inner loop to + // ensure that none of the algorithm benefits from e.g. caching + // of previous reasoning requests + // Reasoner reasoner = Main.createReasoner(new KB(), imports); + // TODO: needs fixing + KnowledgeSource ks = cm.knowledgeSource(OWLFile.class); + ReasonerComponent reasoner = cm.reasoner(DIGReasoner.class, ks); + ReasoningService rs = new ReasoningService(reasoner); + + // System.out.println(positiveExamples); + // System.out.println(negativeExamples); + // System.exit(0); + + // create learning problem + // LearningProblem learningProblem = new LearningProblem(rs, positiveExamples, negativeExamples); + LearningProblem learningProblem = cm.learningProblem(PosNegDefinitionLP.class, rs); + + // prepare reasoner for using subsumption and role hierarchy + // TODO: currently, it is a small unfairness that each algorithm + // uses the same reasoning object (e.g. the second algorithm may + // have a small advantage if the reasoner cached reasoning requests + // of the first algorithm) +// Helper.autoDetectConceptsAndRoles(rs); +// try { +// reasoner.prepareSubsumptionHierarchy(); +// reasoner.prepareRoleHierarchy(); +// // improving the subsumption hierarchy makes only sense +// // for the refinement based algorithm +// if(algorithmNr==0) +// reasoner.getSubsumptionHierarchy().improveSubsumptionHierarchy(); +// } catch (ReasoningMethodUnsupportedException e) { +// e.printStackTrace(); +// } + + LearningAlgorithm learningAlgorithm = null; + if(algorithmNr==0) { + // Config.algorithm = Algorithm.REFINEMENT; + // Config.Refinement.heuristic = Config.Refinement.Heuristic.FLEXIBLE; +// Config.Refinement.horizontalExpansionFactor = 0.6; +// Config.Refinement.quiet = true; + // Config.percentPerLengthUnit = 0.05; + // learningAlgorithm = new ROLearner(learningProblem); + // learningAlgorithm = cm.learningAlgorithm(ROLearner.class, learningProblem); + } else if(algorithmNr==1) { + // Config.algorithm = Algorithm.GP; +// Config.GP.algorithmType = GP.AlgorithmType.GENERATIONAL; +//// Config.GP.selectionType = GP.SelectionType.RANK_SELECTION; +// Config.GP.generations = 50; +// Config.GP.useFixedNumberOfGenerations = true; +// Config.GP.numberOfIndividuals = 201; + // if(exampleNr == 3 || exampleNr == 4) + // Config.GP.numberOfIndividuals = 51; +// Config.GP.refinementProbability = 0; +// Config.GP.mutationProbability = 0.02; +// Config.GP.crossoverProbability = 0.8; +// Config.GP.hillClimbingProbability = 0; + // Config.percentPerLengthUnit = 0.005; + // give GP a chance to find the long solution of the + // uncle problem + // if(exampleNr==3 || exampleNr==5 || exampleNr == 6) + // Config.percentPerLengthUnit = 0.002; + // learningAlgorithm = new GP(learningProblem); + try { + learningAlgorithm = cm.learningAlgorithm(GP.class, learningProblem, rs); + } catch (LearningProblemUnsupportedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } else if(algorithmNr==2) { + // Config.algorithm = Algorithm.HYBRID_GP; +// Config.GP.algorithmType = GP.AlgorithmType.GENERATIONAL; +// Config.GP.selectionType = GP.SelectionType.RANK_SELECTION; +// Config.GP.generations = 50; +// Config.GP.useFixedNumberOfGenerations = true; +// Config.GP.numberOfIndividuals = 201; + //if(exampleNr == 3 || exampleNr == 4) + // Config.GP.numberOfIndividuals = 51; +// Config.GP.refinementProbability = 0.65; +// Config.GP.mutationProbability = 0.02; +// Config.GP.crossoverProbability = 0.2; +// Config.GP.hillClimbingProbability = 0; + // Config.percentPerLengthUnit = 0.005; + // if(exampleNr == 3 || exampleNr==5 || exampleNr==6) +// Config.percentPerLengthUnit = 0.002; + // learningAlgorithm = new GP(learningProblem); + try { + learningAlgorithm = cm.learningAlgorithm(GP.class, learningProblem, rs); + } catch (LearningProblemUnsupportedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + // rs.resetStatistics(); + + long algorithmStartTime = System.nanoTime(); + learningAlgorithm.start(); + long algorithmTime = System.nanoTime() - algorithmStartTime; + // long algorithmTimeSeconds = algorithmTime / 1000000000; + + int conceptLength = learningAlgorithm.getBestSolution().getLength(); + Score bestScore = learningAlgorithm.getSolutionScore(); + int misClassifications = bestScore.getCoveredNegatives().size() + + bestScore.getNotCoveredPositives().size(); + double classificationRatePercent = 100 * ((nrOfExamples - misClassifications) / (double) nrOfExamples); + + classification.addNumber(classificationRatePercent); + length.addNumber(conceptLength); + runtime.addNumber(algorithmTime); + + // free knowledge base to avoid memory leaks + ((DIGReasoner) reasoner).releaseKB(); + + statDetailsString += "example: " + examples[exampleNr] + "\n"; + statDetailsString += "algorithm: " + algorithms[algorithmNr] + "\n"; + statDetailsString += "learned concept: " + learningAlgorithm.getBestSolution() + "\n"; + statDetailsString += "classification: " + classificationRatePercent + "%\n"; + statDetailsString += "concept length: " + conceptLength + "\n"; + statDetailsString += "runtime: " + Helper.prettyPrintNanoSeconds(algorithmTime) + "\n\n"; + + Files.createFile(statDetailsFile, statDetailsString); + + } // end run loop + + statString += "algorithm: " + algorithms[algorithmNr] + " (runs: " + algorithmRuns[algorithmNr] + ")\n"; + statString += "classification: " + classification.getMean() + "% (standard deviation: " + classification.getStandardDeviation() + "%)\n"; + statString += "concept length: " + length.getMean() + " (standard deviation: " + length.getStandardDeviation() + ")\n"; + statString += "runtime: " + Helper.prettyPrintNanoSeconds(Math.round(runtime.getMean())) + " (standard deviation: " + Helper.prettyPrintNanoSeconds(Math.round(runtime.getStandardDeviation())) + ")\n\n"; + + Files.createFile(statFile, statString); + + } // end algorithm loop + + } // end example loop + + } + + private static Map<URL, OntologyFormat> getImports(Map<String,List<List<String>>> functionCalls, File confFile) { + Map<URL, OntologyFormat> importedFiles = new HashMap<URL, OntologyFormat>(); + + OntologyFormat format = null; + URL url = null; + + List<List<String>> imports = functionCalls.get("import"); + + for (List<String> call : imports) { + + //if(call.get(0).equals("import")) { + + try { + String fileString = call.get(1); + if(fileString.startsWith("http:")) { + url = new URL(fileString); + } else { + File f = new File(confFile.getParent(), call.get(1)); + url = f.toURI().toURL(); + } + } catch (MalformedURLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + if (call.size() == 2) + // falls nichts angegeben, dann wird RDF/XML gewählt + importedFiles.put(url, OntologyFormat.RDF_XML); + else { + String formatString = call.get(2); + if (formatString.equals("RDF/XML")) + format = OntologyFormat.RDF_XML; + else + format = OntologyFormat.N_TRIPLES; + importedFiles.put(url, format); + } + // } + } + + return importedFiles; + } + + // erzeugt Statistiken für MLDM-Paper zur Verarbeitung mit GnuPlot + // Vorsicht: Laufzeit von mehreren Stunden + + /** + * Has been used to create the statistics for the MLDM 2007 paper. + * Warning: this method runs for several hours + * + * @todo: This method has not been fully adapted to the base structure + * changes. To reproduce the results, the method has to be implemented + * properly. + */ + @SuppressWarnings("unused") + public static void createStatisticsMLDMPaper(PosNegDefinitionLP learningProblem, String baseDir) { + // Algorithmus 1: hybrid GP (100% refinement) + // Algorithmus 2: 50% refinement, 40% crossover, 1% mutation + // Algorithmus 3: 80% crossover, 2% mutation + + // Diagramm 1: Prozentzahl richtig klassifiziert + // Diagramm 2: Konzeptlänge + // Diagramm 3: Laufzeit + + int runs = 9; + GP gp; + long algorithmStartTime; + int nrOfExamples = learningProblem.getPositiveExamples().size() + + learningProblem.getNegativeExamples().size(); + + Stat[][] statAr = new Stat[4][3]; + File[][] fileAr = new File[4][3]; + StringBuilder[][] exportString = new StringBuilder[4][3]; + // initialise export strings + for (int j = 0; j < 4; j++) { + for (int k = 0; k < 3; k++) { + exportString[j][k] = new StringBuilder(); + } + } + + fileAr[0][0] = new File(baseDir, "gnuplot/hybrid100classification.data"); + fileAr[0][1] = new File(baseDir, "gnuplot/hybrid100length.data"); + fileAr[0][2] = new File(baseDir, "gnuplot/hybrid100runtime.data"); + fileAr[1][0] = new File(baseDir, "gnuplot/hybrid50classification.data"); + fileAr[1][1] = new File(baseDir, "gnuplot/hybrid50length.data"); + fileAr[1][2] = new File(baseDir, "gnuplot/hybrid50runtime.data"); + fileAr[2][0] = new File(baseDir, "gnuplot/gpclassification.data"); + fileAr[2][1] = new File(baseDir, "gnuplot/gplength.data"); + fileAr[2][2] = new File(baseDir, "gnuplot/gpruntime.data"); + + // Extra-Test + fileAr[3][0] = new File(baseDir, "gnuplot/extraclassification.data"); + fileAr[3][1] = new File(baseDir, "gnuplot/extralength.data"); + fileAr[3][2] = new File(baseDir, "gnuplot/extraruntime.data"); + + ComponentManager cm = ComponentManager.getInstance(); + + long overallTimeStart = System.nanoTime(); + + // allgemeine Einstellungen + // Config.GP.elitism = true; + + for (int i = 700; i <= 700; i += 100) { + // initialise statistics array + for (int j = 0; j < 4; j++) { + for (int k = 0; k < 3; k++) { + statAr[j][k] = new Stat(); + } + } + + for (int run = 0; run < runs; run++) { + System.out.println("============="); + System.out.println("i " + i + " run " + run); + System.out.println("============="); + + // nur ein Test durchlaufen + for (int j = 0; j < 3; j++) { + + // Reasoner neu erstellen um Speicherprobleme zu vermeiden + // reasoner = new DIGReasoner(kb, Config.digReasonerURL, importedFiles); + // TODO: set up knowledge source + KnowledgeSource ks = cm.knowledgeSource(OWLFile.class); + ReasonerComponent reasoner = cm.reasoner(DIGReasoner.class, ks); + // reasoner.prepareSubsumptionHierarchy(); + // rs = new ReasoningService(reasoner); + ReasoningService rs = cm.reasoningService(reasoner); + // learningProblem = new LearningProblem(rs, posExamples, negExamples); + learningProblem = cm.learningProblem(PosNegDefinitionLP.class, rs); + + // TODO: set up pos/neg examples + cm.applyConfigEntry(learningProblem, "positiveExamples", null); + cm.applyConfigEntry(learningProblem, "negativeExamples", null); + + if (j == 0) { + // Config.algorithm = Algorithm.HYBRID_GP; +// Config.GP.numberOfIndividuals = i + 1; +// Config.GP.refinementProbability = 0.85; +// Config.GP.mutationProbability = 0.02; +// Config.GP.crossoverProbability = 0.05; +// Config.GP.hillClimbingProbability = 0; + } else if (j == 1) { + // Config.algorithm = Algorithm.HYBRID_GP; +// Config.GP.numberOfIndividuals = i + 1; +// Config.GP.refinementProbability = 0.4; +// Config.GP.mutationProbability = 0.02; +// Config.GP.crossoverProbability = 0.4; +// Config.GP.hillClimbingProbability = 0; + } else if (j == 2) { + // Config.algorithm = Algorithm.GP; +// Config.GP.numberOfIndividuals = i + 1; +// Config.GP.refinementProbability = 0; +// Config.GP.mutationProbability = 0.02; +// Config.GP.crossoverProbability = 0.8; +// Config.GP.hillClimbingProbability = 0; + } else if (j == 3) { + // Config.algorithm = Algorithm.HYBRID_GP; +// Config.GP.numberOfIndividuals = i + 1; +// Config.GP.refinementProbability = 0.7; +// Config.GP.mutationProbability = 0.02; +// Config.GP.crossoverProbability = 0.1; +// Config.GP.hillClimbingProbability = 0; + } + + algorithmStartTime = System.nanoTime(); +// gp = new GP(learningProblem); + long algorithmTime = System.nanoTime() - algorithmStartTime; + long algorithmTimeSeconds = algorithmTime / 1000000000; + + // Release, damit Pellet (hoffentlich) Speicher wieder + // freigibt + ((DIGReasoner) reasoner).releaseKB(); + +// int conceptLength = gp.getBestSolution().getLength(); +// Score bestScore = gp.getSolutionScore(); +// int misClassifications = bestScore.getCoveredNegatives().size() +// + bestScore.getNotCoveredPositives().size(); +// double classificationRatePercent = 100 * ((nrOfExamples - misClassifications) / (double) nrOfExamples); +// +// statAr[j][0].addNumber(classificationRatePercent); +// statAr[j][1].addNumber(conceptLength); +// statAr[j][2].addNumber(algorithmTimeSeconds); + + } + } + + for (int j = 0; j < 3; j++) { + for (int k = 0; k < 3; k++) { + exportString[j][k].append(i + " " + statAr[j][k].getMean() + " " + + statAr[j][k].getStandardDeviation() + "\n"); + } + } + + // Daten werden nach jeder Populationserhöhung geschrieben, nicht + // nur + // am Ende => man kann den Test also auch zwischendurch abbrechen + for (int j = 0; j < 3; j++) { + for (int k = 0; k < 3; k++) { + Files.createFile(fileAr[j][k], exportString[j][k].toString()); + } + } + } + + long overallTime = System.nanoTime() - overallTimeStart; + System.out.println("\noverall time: " + + Helper.prettyPrintNanoSeconds(overallTime)); + } + +} Deleted: trunk/src/dl-learner/org/dllearner/utilities/statistics/PaperStatistics.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/statistics/PaperStatistics.java 2008-05-19 12:57:31 UTC (rev 900) +++ trunk/src/dl-learner/org/dllearner/utilities/statistics/PaperStatistics.java 2008-05-19 13:11:24 UTC (rev 901) @@ -1,524 +0,0 @@ -/** - * Copyright (C) 2007, Jens Lehmann - * - * This file is part of DL-Learner. - * - * DL-Learner is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * DL-Learner is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package org.dllearner.utilities.statistics; - -import java.io.File; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.SortedSet; - -import org.dllearner.algorithms.gp.GP; -import org.dllearner.core.ComponentManager; -import org.dllearner.core.KnowledgeSource; -import org.dllearner.core.LearningAlgorithm; -import org.dllearner.core.LearningProblem; -import org.dllearner.core.LearningProblemUnsupportedException; -import org.dllearner.core.OntologyFormat; -import org.dllearner.core.ReasonerComponent; -import org.dllearner.core.ReasoningService; -import org.dllearner.core.Score; -import org.dllearner.kb.OWLFile; -import org.dllearner.learningproblems.PosNegDefinitionLP; -import org.dllearner.parser.ConfParser; -import org.dllearner.reasoning.DIGReasoner; -import org.dllearner.utilities.Files; -import org.dllearner.utilities.Helper; - -/** - * Utility script for creating statistics for publications. - * (Warning: Scripts may run for several hours. Results may change - * when core algorithms are modified.) - * - * @author Jens Lehmann - * - */ -public class PaperStatistics { - - /** - * Points to the current statistic generation function. - * - * @param args None. - */ - public static void main(String[] args) { - createStatistics(); - } - - @SuppressWarnings("unused") - private static void createStatistics() { - - // experimental setup: - - // algorithms: refinement, GP, hybrid GP (YinYang) - // settings GP: - // - average over 10 runs - // ... - // settings Hybrid GP: - // - average over 10 runs - // ... - // settings refinement: - // - single run - // ... - - // observations: - // - correctness - // - concept length - // - runtime - - // learning examples: - // - trains - // - arches - // - moral (simple) - // - moral (complex) - // - poker (pair) - // - poker (straight) - // - uncle (FORTE) - // - more? - - String exampleBaseDir = "examples/"; - String gnuplotBaseDir = "log/gnuplot/"; - String statBaseDir = "log/stat/"; - - File[] confFiles = new File[7]; - confFiles[0] = new File(exampleBaseDir + "trains", "trains_owl.conf"); - confFiles[1] = new File(exampleBaseDir + "arch", "arch_owl.conf"); - confFiles[2] = new File(exampleBaseDir + "moral_reasoner", "moral_43examples_owl.conf"); - confFiles[3] = new File(exampleBaseDir + "moral_reasoner", "moral_43examples_complex_owl.conf"); - confFiles[4] = new File(exampleBaseDir + "poker", "pair_owl.conf"); - confFiles[5] = new File(exampleBaseDir + "poker", "straight_owl.conf"); - confFiles[6] = new File(exampleBaseDir + "forte", "forte_uncle_owl.conf"); - - String[] examples = new String[7]; - examples[0] = "trains"; - examples[1] = "arches"; - examples[2] = "moral reasoner (43 examples, simple)"; - examples[3] = "moral reasoner (43 examples, complex)"; - examples[4] = "poker (49 examples, pair)"; - examples[5] = "poker (55 examples, straight)"; - examples[6] = "uncle (FORTE data set)"; - int startExampleNr = 0; - - String[] algorithms = new String[3]; - algorithms[0] = "refinement"; - algorithms[1] = "gp"; - algorithms[2] = "hybrid"; - - int[] algorithmRuns = {1,10,10}; - int startAlgorithmNr = 0; - - // Config.GP.maxConceptLength = 30; - // Config.writeDIGProtocol = true; - // Config.digProtocolFile = new File(statBaseDir, "dig.log"); - - // do not plot anything - // File[][][] gnuplotFiles = new File[examples.length][algorithms.length][3]; - // for(int i=0; i<examples.length; i++) { - // for(int j=0; j<algorithms.length; j++) { - // gnuplotFiles[i][j][0] = new File(gnuplotBaseDir, examples[i] + "_classification_" + algorithms[j] + ".data"); - // gnuplotFiles[i][j][1] = new File(gnuplotBaseDir, examples[i] + "_length_" + algorithms[j] + ".data"); - // gnuplotFiles[i][j][2] = new File(gnuplotBaseDir, examples[i] + "_runtime_" + algorithms[j] + ".data"); - // } - //} - - File statFile = new File(statBaseDir, "statistics.txt"); - File statDetailsFile = new File(statBaseDir, "statistics_details.txt"); - String statString = "**automatically generated statistics**\n\n"; - String statDetailsString = statString; - - ComponentManager cm = ComponentManager.getInstance(); - - // just set default options -// ConfigurationManager confMgr = new ConfigurationManager(); -// confMgr.applyOptions(); - - for(int exampleNr=startExampleNr; exampleNr < examples.length; exampleNr++) { - - // parse current conf file - ConfParser learner = ConfParser.parseFile(confFiles[exampleNr]); - - String baseDir = confFiles[exampleNr].getParent(); - - // read which files were imported (internal KB is ignored) and initialise reasoner - Map<URL, OntologyFormat> imports = getImports(learner.getFunctionCalls(), confFiles[exampleNr]); - //Map<URL, Class<? extends KnowledgeSource>> imports = Start.getImportedFiles(learner, baseDir); - - // detect specified positive and negative examples - SortedSet<String> positiveExamples = learner.getPositiveExamples(); - SortedSet<String> negativeExamples = learner.getNegativeExamples(); - int nrOfExamples = positiveExamples.size() + negativeExamples.size(); - - statString += "example: " + examples[exampleNr] + "\n\n"; - - for(int algorithmNr=startAlgorithmNr; algorithmNr < algorithms.length; algorithmNr++) { - // reset algorithm number (next example starts with first algorithm) - startAlgorithmNr = 0; - - Stat classification = new Stat(); - Stat length = new Stat(); - Stat runtime = new Stat(); - - for(int runNr=0; runNr < algorithmRuns[algorithmNr]; runNr++) { - - // create reasoner (this has to be done in this inner loop to - // ensure that none of the algorithm benefits from e.g. caching - // of previous reasoning requests - // Reasoner reasoner = Main.createReasoner(new KB(), imports); - // TODO: needs fixing - KnowledgeSource ks = cm.knowledgeSource(OWLFile.class); - ReasonerComponent reasoner = cm.reasoner(DIGReasoner.class, ks); - ReasoningService rs = new ReasoningService(reasoner); - - // System.out.println(positiveExamples); - // System.out.println(negativeExamples); - // System.exit(0); - - // create learning problem - // LearningProblem learningProblem = new LearningProblem(rs, positiveExamples, negativeExamples); - LearningProblem learningProblem = cm.learningProblem(PosNegDefinitionLP.class, rs); - - // prepare reasoner for using subsumption and role hierarchy - // TODO: currently, it is a small unfairness that each algorithm - // uses the same reasoning object (e.g. the second algorithm may - // have a small advantage if the reasoner cached reasoning requests - // of the first algorithm) -// Helper.autoDetectConceptsAndRoles(rs); -// try { -// reasoner.prepareSubsumptionHierarchy(); -// reasoner.prepareRoleHierarchy(); -// // improving the subsumption hierarchy makes only sense -// // for the refinement based algorithm -// if(algorithmNr==0) -// reasoner.getSubsumptionHierarchy().improveSubsumptionHierarchy(); -// } catch (ReasoningMethodUnsupportedException e) { -// e.printStackTrace(); -// } - - LearningAlgorithm learningAlgorithm = null; - if(algorithmNr==0) { - // Config.algorithm = Algorithm.REFINEMENT; - // Config.Refinement.heuristic = Config.Refinement.Heuristic.FLEXIBLE; -// Config.Refinement.horizontalExpansionFactor = 0.6; -// Config.Refinement.quiet = true; - // Config.percentPerLengthUnit = 0.05; - // learningAlgorithm = new ROLearner(learningProblem); - // learningAlgorithm = cm.learningAlgorithm(ROLearner.class, learningProblem); - } else if(algorithmNr==1) { - // Config.algorithm = Algorithm.GP; -// Config.GP.algorithmType = GP.AlgorithmType.GENERATIONAL; -//// Config.GP.selectionType = GP.SelectionType.RANK_SELECTION; -// Config.GP.generations = 50; -// Config.GP.useFixedNumberOfGenerations = true; -// Config.GP.numberOfIndividuals = 201; - // if(exampleNr == 3 || exampleNr == 4) - // Config.GP.numberOfIndividuals = 51; -// Config.GP.refinementProbability = 0; -// Config.GP.mutationProbability = 0.02; -// Config.GP.crossoverProbability = 0.8; -// Config.GP.hillClimbingProbability = 0; - // Config.percentPerLengthUnit = 0.005; - // give GP a chance to find the long solution of the - // uncle problem - // if(exampleNr==3 || exampleNr==5 || exampleNr == 6) - // Config.percentPerLengthUnit = 0.002; - // learningAlgorithm = new GP(learningProblem); - try { - learningAlgorithm = cm.learningAlgorithm(GP.class, learningProblem, rs); - } catch (LearningProblemUnsupportedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } else if(algorithmNr==2) { - // Config.algorithm = Algorithm.HYBRID_GP; -// Config.GP.algorithmType = GP.AlgorithmType.GENERATIONAL; -// Config.GP.selectionType = GP.SelectionType.RANK_SELECTION; -// Config.GP.generations = 50; -// Config.GP.useFixedNumberOfGenerations = true; -// Config.GP.numberOfIndividuals = 201; - //if(exampleNr == 3 || exampleNr == 4) - // Config.GP.numberOfIndividuals = 51; -// Config.GP.refinementProbability = 0.65; -// Config.GP.mutationProbability = 0.02; -// Config.GP.crossoverProbability = 0.2; -// Config.GP.hillClimbingProbability = 0; - // Config.percentPerLengthUnit = 0.005; - // if(exampleNr == 3 || exampleNr==5 || exampleNr==6) -// Config.percentPerLengthUnit = 0.002; - // learningAlgorithm = new GP(learningProblem); - try { - learningAlgorithm = cm.learningAlgorithm(GP.class, learningProblem, rs); - } catch (LearningProblemUnsupportedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - // rs.resetStatistics(); - - long algorithmStartTime = System.nanoTime(); - learningAlgorithm.start(); - long algorithmTime = System.nanoTime() - algorithmStartTime; - // long algorithmTimeSeconds = algorithmTime / 1000000000; - - int conceptLength = learningAlgorithm.getBestSolution().getLength(); - Score bestScore = learningAlgorithm.getSolutionScore(); - int misClassifications = bestScore.getCoveredNegatives().size() - + bestScore.getNotCoveredPositives().size(); - double classificationRatePercent = 100 * ((nrOfExamples - misClassifications) / (double) nrOfExamples); - - classification.addNumber(classificationRatePercent); - length.addNumber(conceptLength); - runtime.addNumber(algorithmTime); - - // free knowledge base to avoid memory leaks - ((DIGReasoner) reasoner).releaseKB(); - - statDetailsString += "example: " + examples[exampleNr] + "\n"; - statDetailsString += "algorithm: " + algorithms[algorithmNr] + "\n"; - statDetailsString += "learned concept: " + learningAlgorithm.getBestSolution() + "\n"; - statDetailsString += "classification: " + classificationRatePercent + "%\n"; - statDetailsString += "concept length: " + conceptLength + "\n"; - statDetailsString += "runtime: " + Helper.prettyPrintNanoSeconds(algorithmTime) + "\n\n"; - - Files.createFile(statDetailsFile, statDetailsString); - - } // end run loop - - statString += "algorithm: " + algorithms[algorithmNr] + " (runs: " + algorithmRuns[algorithmNr] + ")\n"; - statString += "classification: " + classification.getMean() + "% (standard deviation: " + classification.getStandardDeviation() + "%)\n"; - statString += "concept length: " + length.getMean() + " (standard deviation: " + length.getStandardDeviation() + ")\n"; - statString += "runtime: " + Helper.prettyPrintNanoSeconds(Math.round(runtime.getMean())) + " (standard deviation: " + Helper.prettyPrintNanoSeconds(Math.round(runtime.getStandardDeviation())) + ")\n\n"; - - Files.createFile(statFile, statString); - - } // end algorithm loop - - } // end example loop - - } - - private static Map<URL, OntologyFormat> getImports(Map<String,List<List<String>>> functionCalls, File confFile) { - Map<URL, OntologyFormat> importedFiles = new HashMap<URL, OntologyFormat>(); - - OntologyFormat format = null; - URL url = null; - - List<List<String>> imports = functionCalls.get("import"); - - for (List<String> call : imports) { - - //if(call.get(0).equals("import")) { - - try { - String fileString = call.get(1); - if(fileString.startsWith("http:")) { - url = new URL(fileString); - } else { - File f = new File(confFile.getParent(), call.get(1)); - url = f.toURI().toURL(); - } - } catch (MalformedURLException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - if (call.size() == 2) - // falls nichts angegeben, dann wird RDF/XML gewählt - importedFiles.put(url, OntologyFormat.RDF_XML); - else { - String formatString = call.get(2); - if (formatString.equals("RDF/XML")) - format = OntologyFormat.RDF_XML; - else - format = OntologyFormat.N_TRIPLES; - importedFiles.put(url, format); - } - // } - } - - return importedFiles; - } - - // erzeugt Statistiken für MLDM-Paper zur Verarbeitung mit GnuPlot - // Vorsicht: Laufzeit von mehreren Stunden - - /** - * Has been used to create the statistics for the MLDM 2007 paper. - * Warning: this method runs for several hours - * - * @todo: This method has not been fully adapted to the base structure - * changes. To reproduce the results, the method has to be implemented - * properly. - */ - @SuppressWarnings("unused") - public static void createStatisticsMLDMPaper(PosNegDefinitionLP learningProblem, String baseDir) { - // Algorithmus 1: hybrid GP (100% refinement) - // Algorithmus 2: 50% refinement, 40% crossover, 1% mutation - // Algorithmus 3: 80% crossover, 2% mutation - - // Diagramm 1: Prozentzahl richtig klassifiziert - // Diagramm 2: Konzeptlänge - // Diagramm 3: Laufzeit - - int runs = 9; - GP gp; - long algorithmStartTime; - int nrOfExamples = learningProblem.getPositiveExamples().size() - + learningProblem.getNegativeExamples().size(); - - Stat[][] statAr = new Stat[4][3]; - File[][] fileAr = new File[4][3]; - StringBuilder[][] exportString = new StringBuilder[4][3]; - // initialise export strings - for (int j = 0; j < 4; j++) { - for (int k = 0; k < 3; k++) { - exportString[j][k] = new StringBuilder(); - } - } - - fileAr[0][0] = new File(baseDir, "gnuplot/hybrid100classification.data"); - fileAr[0][1] = new File(baseDir, "gnuplot/hybrid100length.data"); - fileAr[0][2] = new File(baseDir, "gnuplot/hybrid100runtime.data"); - fileAr[1][0] = new File(baseDir, "gnuplot/hybrid50classification.data"); - fileAr[1][1] = new File(baseDir, "gnuplot/hybrid50length.data"); - fileAr[1][2] = new File(baseDir, "gnuplot/hybrid50runtime.data"); - fileAr[2][0] = new File(baseDir, "gnuplot/gpclassification.data"); - fileAr[2][1] = new File(baseDir, "gnuplot/gplength.data"); - fileAr[2][2] = new File(baseDir, "gnuplot/gpruntime.data"); - - // Extra-Test - fileAr[3][0] = new File(baseDir, "gnuplot/extraclassification.data"); - fileAr[3][1] = new File(baseDir, "gnuplot/extralength.data"); - fileAr[3][2] = new File(baseDir, "gnuplot/extraruntime.data"); - - ComponentManager cm = ComponentManager.getInstance(); - - long overallTimeStart = System.nanoTime(); - - // allgemeine Einstellungen - // Config.GP.elitism = true; - - for (int i = 700; i <= 700; i += 100) { - // initialise statistics array - for (int j = 0; j < 4; j++) { - for (int k = 0; k < 3; k++) { - statAr[j][k] = new Stat(); - } - } - - for (int run = 0; run < runs; run++) { - System.out.println("============="); - System.out.println("i " + i + " run " + run); - System.out.println("============="); - - // nur ein Test durchlaufen - for (int j = 0; j < 3; j++) { - - // Reasoner neu erstellen um Speicherprobleme zu vermeiden - // reasoner = new DIGReasoner(kb, Config.digReasonerURL, importedFiles); - // TODO: set up knowledge source - KnowledgeSource ks = cm.knowledgeSource(OWLFile.class); - ReasonerComponent reasoner = cm.reasoner(DIGReasoner.class, ks); - // reasoner.prepareSubsumptionHierarchy(); - // rs = new ReasoningService(reasoner); - ReasoningService rs = cm.reasoningService(reasoner); - // learningProblem = new LearningProblem(rs, posExamples, negExamples); - learningProblem = cm.learningProblem(PosNegDefinitionLP.class, rs); - - // TODO: set up pos/neg examples - cm.applyConfigEntry(learningProblem, "positiveExamples", null); - cm.applyConfigEntry(learningProblem, "negativeExamples", null); - - if (j == 0) { - // Config.algorithm = Algorithm.HYBRID_GP; -// Config.GP.numberOfIndividuals = i + 1; -// Config.GP.refinementProbability = 0.85; -// Config.GP.mutationProbability = 0.02; -// Config.GP.crossoverProbability = 0.05; -// Config.GP.hillClimbingProbability = 0; - } else if (j == 1) { - // Config.algorithm = Algorithm.HYBRID_GP; -// Config.GP.numberOfIndividuals = i + 1; -// Config.GP.refinementProbability = 0.4; -// Config.GP.mutationProbability = 0.02; -// Config.GP.crossoverProbability = 0.4; -// Config.GP.hillClimbingProbability = 0; - } else if (j == 2) { - // Config.algorithm = Algorithm.GP; -// Config.GP.numberOfIndividuals = i + 1; -// Config.GP.refinementProbability = 0; -// Config.GP.mutationProbability = 0.02; -// Config.GP.crossoverProbability = 0.8; -// Config.GP.hillClimbingProbability = 0; - } else if (j == 3) { - // Config.algorithm = Algorithm.HYBRID_GP; -// Config.GP.numberOfIndividuals = i + 1; -// Config.GP.refinementProbability = 0.7; -// Config.GP.mutationProbability = 0.02; -// Config.GP.crossoverProbability = 0.1; -// Config.GP.hillClimbingProbability = 0; - } - - algorithmStartTime = System.nanoTime(); -// gp = new GP(learningProblem); - long algorithmTime = System.nanoTime() - algorithmStartTime; - long algorithmTimeSeconds = algorithmTime / 1000000000; - - // Release, damit Pellet (hoffentlich) Speicher wieder - // freigibt - ((DIGReasoner) reasoner).releaseKB(); - -// int conceptLength = gp.getBestSolution().getLength(); -// Score bestScore = gp.getSolutionScore(); -// int misClassifications = bestScore.getCoveredNegatives().size() -// + bestScore.getNotCoveredPositives().size(); -// double classificationRatePercent = 100 * ((nrOfExamples - misClassifications) / (double) nrOfExamples); -// -// statAr[j][0].addNumber(classificationRatePercent); -// statAr[j][1].addNumber(conceptLength); -// statAr[j][2].addNumber(algorithmTimeSeconds); - - } - } - - for (int j = 0; j < 3; j++) { - for (int k = 0; k < 3; k++) { - exportString[j][k].append(i + " " + statAr[j][k].getMean() + " " - + statAr[j][k].getStandardDeviation() + "\n"); - } - } - - // Daten werden nach jeder Populationserhöhung geschrieben, nicht - // nur - // am Ende => man kann den Test also auch zwischendurch abbrechen - for (int j = 0; j < 3; j++) { - for (int k = 0; k < 3; k++) { - Files.createFile(fileAr[j][k], exportString[j][k].toString()); - } - } - } - - long overallTime = System.nanoTime() - overallTimeStart; - System.out.println("\noverall time: " - + Helper.prettyPrintNanoSeconds(overallTime)); - } - -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-05-19 14:03:16
|
Revision: 902 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=902&view=rev Author: kurzum Date: 2008-05-19 07:03:09 -0700 (Mon, 19 May 2008) Log Message: ----------- started cleanup Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java trunk/src/dl-learner/org/dllearner/utilities/learn/LearnSparql.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java 2008-05-19 13:11:24 UTC (rev 901) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java 2008-05-19 14:03:09 UTC (rev 902) @@ -384,11 +384,12 @@ return algorithm.getBestSolutions(nrOfSolutions); } - //HACK @Override - public List<String> getBestSolutionsAsKBSyntax(int nrOfSolutions){ - return this.algorithm.getBestSolutionsAsKBSyntax(nrOfSolutions); + public synchronized List<Description> getGoodSolutions() { + return algorithm.getGoodSolutions(); } + + @Override public void stop() { Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-05-19 13:11:24 UTC (rev 901) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-05-19 14:03:09 UTC (rev 902) @@ -472,6 +472,7 @@ logger.debug("size of candidate set: " + candidates.size()); boolean showOrderedSolutions = false; printBestSolutions(20,showOrderedSolutions); + printStatistics(true); if(stop) @@ -1057,6 +1058,7 @@ return candidatesStable.last().getConcept(); } + public synchronized List<Description> getBestSolutions(int nrOfSolutions) { List<Description> best = new LinkedList<Description>(); int i=0; @@ -1070,7 +1072,28 @@ return best; } - //HACK + + /** + * returns the solutions, that have at least a certain quality + * either accuracy = 100% full solutions + * or accuracy > 100% - noise; + * @return + */ + public synchronized List<Description> getGoodSolutions() { + List<Description> best = new LinkedList<Description>(); + + for(ExampleBasedNode n : candidatesStable.descendingSet()) { + if(n.getAccuracy(nrOfPositiveExamples, nrOfNegativeExamples)<(1-noise)) + return best; + best.add(n.getConcept()); + + } + return best; + } + + + + /*//HACK public List<String> getBestSolutionsAsKBSyntax(int nrOfSolutions){ if(nrOfSolutions==0)nrOfSolutions=99999; List<String> result = new LinkedList<String>(); @@ -1091,7 +1114,7 @@ } } return result; - } + }*/ public void printBestSolutions(int nrOfSolutions, boolean showOrderedSolutions){ @@ -1109,8 +1132,19 @@ i++; } + if(nrOfSolutions==0) + nrOfSolutions=solutions.size(); + int a=0; + for(;a<nrOfSolutions && a < solutions.size();a++) { + + logger.trace("nnn: "+solutions.get(a)); + if(a==nrOfSolutions) + break ; + + } + if(showOrderedSolutions) { logger.trace("ordered by generality (most special solutions first):"); SubsumptionComparator sc = new SubsumptionComparator(rs); Modified: trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java 2008-05-19 13:11:24 UTC (rev 901) +++ trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java 2008-05-19 14:03:09 UTC (rev 902) @@ -57,17 +57,33 @@ */ public abstract Description getBestSolution(); + + + /** + * returns the best nrOfSolutions solutions + * regardless of quality, just depends on input int + * @param nrOfSolutions + * @return List<Description> + */ public synchronized List<Description> getBestSolutions(int nrOfSolutions) { List<Description> single = new LinkedList<Description>(); single.add(getBestSolution()); return single; } - //HACK - public List<String> getBestSolutionsAsKBSyntax(int nrOfSolutions){ - return null; + /** + * returns the solutions, that have at least a certain quality + * either accuracy = 100%, i.e. full solutions + * or accuracy > 100% - noise; + * @return + */ + public synchronized List<Description> getGoodSolutions() { + List<Description> single = new LinkedList<Description>(); + single.add(getBestSolution()); + return single; } + /** * Returns all learning problems supported by this component. */ Modified: trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java 2008-05-19 13:11:24 UTC (rev 901) +++ trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java 2008-05-19 14:03:09 UTC (rev 902) @@ -191,16 +191,16 @@ //igno.add(oneConcept.replaceAll("\"", "")); - List<String> conceptresults= ls.learnDBpediaSKOS(posExamples, negExamples, url,new TreeSet<String>(),recursiondepth, closeAfterRecursion,randomizeCache,resultsize,noise); + List<Description> conceptresults= ls.learnDBpediaSKOS(posExamples, negExamples, url,new TreeSet<String>(),recursiondepth, closeAfterRecursion,randomizeCache,resultsize,noise); System.out.println("concepts"+conceptresults); //System.exit(0); logger.debug("found nr of concepts:"+conceptresults.size()); SortedSet<ResultCompare> res=new TreeSet<ResultCompare>(); - for (String oneConcept : conceptresults) { + for (Description oneConcept : conceptresults) { try{ System.out.println("oneconcept: "+oneConcept); - SortedSet<String> instances = ae.queryConceptAsStringSet(conceptRewrite(oneConcept), 200); + SortedSet<String> instances = ae.queryConceptAsStringSet(conceptRewrite(oneConcept.toKBSyntaxString()), 200); SortedSet<String> coveredInRest = new TreeSet<String>(); SortedSet<String> possibleNewCandidates = new TreeSet<String>(); SortedSet<String> notCoveredInTotal = new TreeSet<String>(); @@ -243,7 +243,7 @@ double accuracy= (double)i/rest.size(); double accuracy2= (double)a/totalSKOSset.size(); - logger.debug((new ResultCompare(oneConcept,instances,accuracy,accuracy2,instances.size(), + logger.debug((new ResultCompare(oneConcept.toKBSyntaxString(),instances,accuracy,accuracy2,instances.size(), coveredInRest,possibleNewCandidates,notCoveredInTotal)).toStringFull()); //if(instances.size()>=0)System.out.println("size of instances "+instances.size()); Modified: trunk/src/dl-learner/org/dllearner/utilities/learn/LearnSparql.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/learn/LearnSparql.java 2008-05-19 13:11:24 UTC (rev 901) +++ trunk/src/dl-learner/org/dllearner/utilities/learn/LearnSparql.java 2008-05-19 14:03:09 UTC (rev 902) @@ -1,6 +1,7 @@ package org.dllearner.utilities.learn; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Set; import java.util.SortedSet; @@ -13,6 +14,7 @@ import org.dllearner.core.LearningProblem; import org.dllearner.core.ReasonerComponent; import org.dllearner.core.ReasoningService; +import org.dllearner.core.owl.Description; import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.learningproblems.PosNegDefinitionLP; import org.dllearner.learningproblems.PosNegLP; @@ -114,7 +116,7 @@ //System.out.println( la.getBestSolution());; } - public List<String> learnDBpediaSKOS(SortedSet<String> posExamples,SortedSet<String> negExamples, + public List<Description> learnDBpediaSKOS(SortedSet<String> posExamples,SortedSet<String> negExamples, String uri, SortedSet<String> ignoredConcepts, int recursiondepth, boolean closeAfterRecursion, boolean randomizeCache, int resultsize, double noise){ @@ -193,7 +195,9 @@ sc.setTime(); la.start(); Statistics.addTimeLearning(sc.getTime()); - return la.getBestSolutionsAsKBSyntax(resultsize); + return la.getBestSolutions(resultsize); + + //if(sc.getTime()/1000 >= 20)System.out.println("XXXMAX time reached"); //System.out.println("best"+la(20)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-05-20 14:00:26
|
Revision: 904 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=904&view=rev Author: kurzum Date: 2008-05-20 07:00:20 -0700 (Tue, 20 May 2008) Log Message: ----------- added RDFS reasoning to sparql SparqlQueryDescriptionConvertRDFS Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSKOSSPARQL.java trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSPARQL.java Property Changed: ---------------- trunk/src/dl-learner/org/dllearner/kb/sparql/ Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-05-19 14:12:01 UTC (rev 903) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-05-20 14:00:20 UTC (rev 904) @@ -1082,32 +1082,10 @@ - /*//HACK - public List<String> getBestSolutionsAsKBSyntax(int nrOfSolutions){ - if(nrOfSolutions==0)nrOfSolutions=99999; - List<String> result = new LinkedList<String>(); - for (Description d : solutions) { - - result.add(d.toKBSyntaxString()); - if(result.size()==nrOfSolutions)break; - //if(result.size()==nrOfSolutions)break; - } - if(result.size()==0){ - - for(ExampleBasedNode n : candidatesStable.descendingSet()) { - - result.add(n.getConcept().toKBSyntaxString()); - if(result.size()>=nrOfSolutions) - return result; - - } - } - return result; - }*/ public void printBestSolutions(int nrOfSolutions, boolean showOrderedSolutions){ - //QUALITY + //QUALITY: could be optimized if(!logger.isTraceEnabled()) return; //if(!logger.getLevel().toString().equalsIgnoreCase("TRACE"))return; Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-05-19 14:12:01 UTC (rev 903) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-05-20 14:00:20 UTC (rev 904) @@ -58,7 +58,7 @@ Iterator<StringTuple> it = s.iterator(); while (it.hasNext()) { StringTuple t = (StringTuple) it.next(); - //RBC + //QUALITY: needs proper handling of ressource, could be done one step lower in the onion if(!t.b.startsWith("http:"))continue; // basically : if p is rdf:type then o is a class Property changes on: trunk/src/dl-learner/org/dllearner/kb/sparql ___________________________________________________________________ Name: svn:ignore + SparqlQueryDescriptionConvertRDFS.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-05-19 14:12:01 UTC (rev 903) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-05-20 14:00:20 UTC (rev 904) @@ -410,8 +410,7 @@ } public SparqlQueryThreaded sparqlQueryThreaded(String query){ - //RBC - return new SparqlQueryThreaded(new Cache("cachet2"),this.sparqlQuery(query)); + return new SparqlQueryThreaded(new Cache("cache"),this.sparqlQuery(query)); } /* (non-Javadoc) Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-05-19 14:12:01 UTC (rev 903) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-05-20 14:00:20 UTC (rev 904) @@ -41,6 +41,7 @@ //private SparqlEndpoint se = null; //private boolean RDFSReasoning = false; + private static int defaultLimit = 5; private static Logger logger = Logger.getLogger(ComponentManager.class); @@ -64,81 +65,94 @@ this.RDFSReasoning = RDFSReasoning; }*/ - public String getSparqlQuery() - { - query="SELECT ?subject\nWHERE {"+query; - query+="}\n"; - query+="LIMIT 5"; + /*private String getSparqlQuery() + { + return getSparqlQuery(defaultLimit); + }*/ + + private String getSparqlQuery(int limit) + { // for old function see below + // it was using the object attribute in a strange way + // QUALITY: what if this function is called several times?? should be private maybe? + String tmpQuery= + "SELECT ?subject \nWHERE {"+query+ + " }\n "; + if(limit>0) tmpQuery+="LIMIT "+limit; + + query = tmpQuery; return query; } - public String getSparqlQuery(int limit) + /* OLD FUNCTION keep for audit + * public String getSparqlQuery(int limit) { if(limit==0)limit=99999; query="SELECT ?subject\nWHERE {"+query; query+="}\n"; query+="LIMIT "+limit; return query; + }*/ + + + + + + public static String getSparqlQuery(String descriptionKBSyntax) throws ParseException + { + return getSparqlQuery(descriptionKBSyntax, defaultLimit); } - public static String getSparqlSubclassQuery(String description) - { String ret = "SELECT * \n"; - ret+= "WHERE {\n"; - ret+=" ?subject ?predicate <"+description+"> \n"; - ret+="}\n"; - - return ret; + public static String getSparqlQuery(String descriptionKBSyntax, int limit) throws ParseException + { + Description d = KBParser.parseConcept(descriptionKBSyntax); + return getSparqlQuery(d, limit); } - public static String getSparqlQuery(String description) throws ParseException + public static String getSparqlQuery(Description description) { - Description d = KBParser.parseConcept(description); - SparqlQueryDescriptionConvertVisitor visitor=new SparqlQueryDescriptionConvertVisitor(); - d.accept(visitor); - - //TODO ERROR see replace HACK - String ret = visitor.getSparqlQuery(); - while (ret.contains("..")) { - ret = ret.replace("..", "."); - } - return ret; + return getSparqlQuery(description, defaultLimit); } - public static String getSparqlQuery(String description, int limit) throws ParseException - { if(limit==0)limit=99999; - Description d = KBParser.parseConcept(description); + public static String getSparqlQuery(Description description, int limit) + { SparqlQueryDescriptionConvertVisitor visitor=new SparqlQueryDescriptionConvertVisitor(); - d.accept(visitor); - //TODO ERROR see replace HACK + description.accept(visitor); String ret = visitor.getSparqlQuery(limit); + //HACK see replace might be a good solution, needs testing while (ret.contains("..")) { ret = ret.replace("..", "."); } return ret; } + + + + + /** - * includes subclasses, costly function, because subclasses habe to be recieved first. - * @param description - * @param limit + * COMMENT: write some more + * includes subclasses, costly function, because subclasses have to be received first. + * @see conceptRewrite(String descriptionKBSyntax, SparqlEndpoint se, Cache c, + boolean simple) + * @param descriptionKBSyntax @see getSparqlQuery(Description description, int limit) + * @param limit @see getSparqlQuery(Description description, int limit) * @param se + * @param c + * @param simple * @return * @throws ParseException */ - /*public static String getSparqlQueryIncludingSubclasses(String description, int limit, SparqlEndpoint se) throws ParseException - { if(limit==0)limit=99999; - Description d = KBParser.parseConcept(description); - SparqlQueryDescriptionConvertVisitor visitor=new SparqlQueryDescriptionConvertVisitor(se, true); - d.accept(visitor); - return visitor.getSparqlQuery(limit); - }*/ - - public static String getSparqlQuery(Description description) - { - SparqlQueryDescriptionConvertVisitor visitor=new SparqlQueryDescriptionConvertVisitor(); - description.accept(visitor); - return visitor.getSparqlQuery(); + public static String getSparqlQueryIncludingSubclasses(String descriptionKBSyntax, int limit, SparqlEndpoint se,Cache c, boolean simple) throws ParseException + { + String rewritten = SparqlQueryDescriptionConvertRDFS.conceptRewrite(descriptionKBSyntax, se, c, simple); + + return getSparqlQuery(rewritten, limit); + } + + + /** * Used for testing the Sparql Query converter. * @@ -225,8 +239,7 @@ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Intersection) */ public void visit(Intersection description) { - //TODO ERROR see replace HACK - + // HACK see replace hacks in other functions logger.trace("Intersection"); description.getChild(0).accept(this); query+="."; @@ -238,6 +251,7 @@ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Union) */ public void visit(Union description) { + // HACK see replace hacks in other functions logger.trace("Union"); query+="{"; description.getChild(0).accept(this); Modified: trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java 2008-05-19 14:12:01 UTC (rev 903) +++ trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java 2008-05-20 14:00:20 UTC (rev 904) @@ -17,6 +17,7 @@ import org.dllearner.kb.sparql.Cache; import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlQuery; +import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertRDFS; import org.dllearner.utilities.datastructures.JenaResultSetConvenience; import org.dllearner.utilities.datastructures.SetManipulation; import org.dllearner.utilities.examples.AutomaticExampleFinderSKOSSPARQL; @@ -200,7 +201,8 @@ for (Description oneConcept : conceptresults) { try{ System.out.println("oneconcept: "+oneConcept); - SortedSet<String> instances = ae.queryConceptAsStringSet(conceptRewrite(oneConcept.toKBSyntaxString()), 200); + String rewritten = SparqlQueryDescriptionConvertRDFS.conceptRewrite(oneConcept.toKBSyntaxString(), se, c, true); + SortedSet<String> instances = ae.queryConceptAsStringSet(rewritten, 200); SortedSet<String> coveredInRest = new TreeSet<String>(); SortedSet<String> possibleNewCandidates = new TreeSet<String>(); SortedSet<String> notCoveredInTotal = new TreeSet<String>(); @@ -326,122 +328,5 @@ } - /** - * - * @param description - */ - public static SortedSet<String> getSubClasses(String description, int limit) { - if(limit==0)limit=10; - ResultSet rs = null; - //System.out.println(description); - SortedSet<String> alreadyQueried = new TreeSet<String>(); - try { - String query = getSparqlSubclassQuery(description.replaceAll("\"", "")); - String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); - rs =SparqlQuery.JSONtoResultSet(JSON); - LinkedList<String> remainingClasses = new LinkedList<String>(); - - //make back - //remainingClasses.addAll(getSubclassesFromResultSet(rs)); - - alreadyQueried = new TreeSet<String>(); - alreadyQueried.add(description.replaceAll("\"", "")); - alreadyQueried.addAll(getSubclassesFromResultSet(rs)); - //remainingClasses.addAll(alreadyQueried); - return alreadyQueried; - - //SortedSet<String> remainingClasses = new JenaResultSetConvenience(rs).getStringListForVariable("subject"); - -// while (remainingClasses.size()!=0){ -// SortedSet<String> tmpSet = new TreeSet<String>(); -// String tmp = remainingClasses.removeFirst(); -// //remainingClasses.remove(tmp); -// query = SparqlQueryDescriptionConvertVisitor -// .getSparqlSubclassQuery(tmp); -// alreadyQueried.add(tmp); -// if(alreadyQueried.size()==limit)break; -// JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); -// rs =SparqlQuery.JSONtoResultSet(JSON); -// tmpSet=getSubclassesFromResultSet(rs); -// for (String string : tmpSet) { -// if(!alreadyQueried.contains(string)) -// remainingClasses.add(string); -// } -// } - //System.out.println(JSON); - - - } catch (Exception e) { - - } - System.out.println("subclasses "+alreadyQueried); - System.out.println("nr of subclasses :"+alreadyQueried.size()); - return alreadyQueried; - } - public static SortedSet<String> getSubclassesFromResultSet(ResultSet rs) - { - SortedSet<String> result = new TreeSet<String>(); - List<ResultBinding> l = ResultSetFormatter.toList(rs); - String p="",s=""; - for (ResultBinding resultBinding : l) { - - s=((resultBinding.get("subject").toString())); - p=((resultBinding.get("predicate").toString())); - if(p.equalsIgnoreCase("http://www.w3.org/2000/01/rdf-schema#subClassOf")){ - result.add(s); - } - } - return result; - } - - public static String getSparqlSubclassQuery(String description) - { String ret = "SELECT * \n"; - ret+= "WHERE {\n"; - ret+=" ?subject ?predicate <"+description+"> \n"; - ret+="}\n"; - - return ret; - } - - public static String conceptRewrite(String description) - { String quote = "\""; - String ret=""; - String currentconcept=""; - int lastPos=0; - SortedSet<String> subclasses=new TreeSet<String>(); - - while ((lastPos=description.lastIndexOf(quote))!=-1){ - ret=description.substring(lastPos+1,description.length())+ret; - description=description.substring(0,lastPos); - //System.out.println(description); - lastPos=description.lastIndexOf(quote); - currentconcept=description.substring(lastPos+1,description.length()); - description=description.substring(0,lastPos); - //replace - //currentconcept="\"blabla\""; - //System.out.println(currentconcept); - - - subclasses = getSubClasses( currentconcept, 0); - - if (subclasses.size()==1)currentconcept="\""+currentconcept+"\""; - else { - LinkedList<Description> nc = new LinkedList<Description>(); - for (String one : subclasses) { - nc.add(new NamedClass(one)); - } - currentconcept=new Union(nc).toKBSyntaxString(); - } - - ret=currentconcept+ret; - //ret+=description; - } - ret=description+ret; - //System.out.println(ret); - return ret; - } - - - } Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSKOSSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSKOSSPARQL.java 2008-05-19 14:12:01 UTC (rev 903) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSKOSSPARQL.java 2008-05-20 14:00:20 UTC (rev 904) @@ -371,41 +371,9 @@ } - /** - * NOT WORKING - * @param description - */ - public void getSubClasses(String description) { - ResultSet rs = null; - try { - String query = SparqlQueryDescriptionConvertVisitor - .getSparqlSubclassQuery(description.replace("\"", "")); - - rs = new SparqlQuery(query, se).send(); - System.out.println(query); - //System.out.println(SparqlQuery.getAsXMLString(rs)); - System.out.println(rs.getResultVars()); - SortedSet<String> remainingClasses = new JenaResultSetConvenience(rs).getStringListForVariable("subject"); - SortedSet<String> alreadyQueried = new TreeSet<String>(); - alreadyQueried.add(description); - while (remainingClasses.size()!=0){ - String tmp = remainingClasses.first(); - remainingClasses.remove(tmp); - query = SparqlQueryDescriptionConvertVisitor - .getSparqlSubclassQuery(tmp); - alreadyQueried.add(tmp); - rs = new SparqlQuery(query, se).send(); - remainingClasses.addAll(new JenaResultSetConvenience(rs).getStringListForVariable("subject")); - } - //System.out.println(JSON); - System.out.println(alreadyQueried); - - } catch (Exception e) { - e.printStackTrace(); - } - - } + + } Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSPARQL.java 2008-05-19 14:12:01 UTC (rev 903) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSPARQL.java 2008-05-20 14:00:20 UTC (rev 904) @@ -343,41 +343,8 @@ } - /** - * NOT WORKING - * @param description - */ - public void getSubClasses(String description) { - ResultSet rs = null; - try { - String query = SparqlQueryDescriptionConvertVisitor - .getSparqlSubclassQuery(description.replace("\"", "")); - - rs = new SparqlQuery(query, se).send(); - System.out.println(query); - //System.out.println(SparqlQuery.getAsXMLString(rs)); - System.out.println(rs.getResultVars()); - SortedSet<String> remainingClasses = new JenaResultSetConvenience(rs).getStringListForVariable("subject"); - SortedSet<String> alreadyQueried = new TreeSet<String>(); - alreadyQueried.add(description); - while (remainingClasses.size()!=0){ - String tmp = remainingClasses.first(); - remainingClasses.remove(tmp); - query = SparqlQueryDescriptionConvertVisitor - .getSparqlSubclassQuery(tmp); - alreadyQueried.add(tmp); - rs = new SparqlQuery(query, se).send(); - remainingClasses.addAll(new JenaResultSetConvenience(rs).getStringListForVariable("subject")); - } - //System.out.println(JSON); - System.out.println(alreadyQueried); - - } catch (Exception e) { - e.printStackTrace(); - } - - } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-05-20 16:41:52
|
Revision: 907 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=907&view=rev Author: kurzum Date: 2008-05-20 09:41:30 -0700 (Tue, 20 May 2008) Log Message: ----------- Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertRDFS.java trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java trunk/src/dl-learner/org/dllearner/scripts/SPARQLExtractionEvaluation.java trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSPARQLold.java trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSPARQLtest.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSPARQL.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertRDFS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertRDFS.java 2008-05-20 14:25:48 UTC (rev 906) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertRDFS.java 2008-05-20 16:41:30 UTC (rev 907) @@ -19,8 +19,6 @@ static Logger logger = Logger.getLogger(SparqlQueryDescriptionConvertRDFS.class); - - /** * * replaces each String representing a concept in descriptionKBSyntax with a @@ -83,7 +81,8 @@ } /** - * gets a SortedSet of all subclasses + * gets a SortedSet of all subclasses QUALITY: maybe it is better to have a + * parameter int depth, to choose a depth of subclass interference * * @see conceptRewrite(String descriptionKBSyntax, SparqlEndpoint se, Cache * c, boolean simple ) Modified: trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java 2008-05-20 14:25:48 UTC (rev 906) +++ trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java 2008-05-20 16:41:30 UTC (rev 907) @@ -34,36 +34,9 @@ static SparqlEndpoint se; private static Logger logger = Logger.getRootLogger(); - static String standardSettings=""; - static String algorithm="refexamples"; - static String standardSettingsRefexamples = - "refexamples.minExecutionTimeInSeconds = 30;\n" + - "refexamples.maxExecutionTimeInSeconds = 30;\n" + - "//refexamples.guaranteeXgoodDescriptions = 10;\n" + - "refexamples.logLevel=\"TRACE\";\n" + - "refexamples.noisePercentage = 0.10;\n" + - "refexamples.writeSearchTree = false;\n" + - "refexamples.searchTreeFile = \"searchTree.txt\";\n" + - "refexamples.replaceSearchTree = true;\n\n" ; - static String standardSettingsRefinement = - "refinement.minExecutionTimeInSeconds = 30;\n" + - "refinement.maxExecutionTimeInSeconds = 30;\n" + - "//refinement.guaranteeXgoodDescriptions = 10;\n" + - "refinement.logLevel=\"TRACE\";\n" + - "refinement.writeSearchTree = false;\n" + - "refinement.searchTreeFile = \"searchTree.txt\";\n" + - "refinement.replaceSearchTree = true;\n\n" ; - - static String standardDBpedia="" + - "sparql.recursionDepth = 1;\n" + - "sparql.predefinedFilter = \"YAGO\";\n" + - "sparql.predefinedEndpoint = \"DBPEDIA\";\n"; - //"sparql.logLevel = \"INFO\";\n"; - - //vars static boolean useRelated = false; static boolean useSuperClasses = false; Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLExtractionEvaluation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLExtractionEvaluation.java 2008-05-20 14:25:48 UTC (rev 906) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLExtractionEvaluation.java 2008-05-20 16:41:30 UTC (rev 907) @@ -16,7 +16,7 @@ import org.dllearner.kb.sparql.SparqlQuery; import org.dllearner.utilities.datastructures.JenaResultSetConvenience; import org.dllearner.utilities.datastructures.SetManipulation; -import org.dllearner.utilities.examples.AutomaticExampleFinderSPARQL; +import org.dllearner.utilities.examples.AutomaticExampleFinderSPARQLold; import org.dllearner.utilities.learn.LearnSparql; import org.dllearner.utilities.statistics.SimpleClock; import org.dllearner.utilities.statistics.Statistics; @@ -105,7 +105,7 @@ boolean closeAfterRecursion=true; System.out.println(oneConcept); - AutomaticExampleFinderSPARQL ae= new AutomaticExampleFinderSPARQL( se); + AutomaticExampleFinderSPARQLold ae= new AutomaticExampleFinderSPARQLold( se); ae.initDBpedia(oneConcept, useRelated, useSuperClasses,useParallelClasses, poslimit, neglimit); Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-05-20 14:25:48 UTC (rev 906) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-05-20 16:41:30 UTC (rev 907) @@ -16,7 +16,7 @@ import org.dllearner.utilities.datastructures.JenaResultSetConvenience; import org.dllearner.utilities.datastructures.SetManipulation; import org.dllearner.utilities.examples.AutomaticExampleFinderRolesSPARQL; -import org.dllearner.utilities.examples.AutomaticExampleFinderSPARQL; +import org.dllearner.utilities.examples.AutomaticExampleFinderSPARQLold; import org.dllearner.utilities.learn.ConfWriter; import org.dllearner.utilities.learn.LearnSparql; import org.dllearner.utilities.statistics.SimpleClock; @@ -185,7 +185,7 @@ boolean closeAfterRecursion=false; int numberOfTriples = 0; for (String oneConcept : concepts) { - AutomaticExampleFinderSPARQL ae= new AutomaticExampleFinderSPARQL( se); + AutomaticExampleFinderSPARQLold ae= new AutomaticExampleFinderSPARQLold( se); useRelated = true; useSuperClasses = true; useParallelClasses = false; Deleted: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSPARQL.java 2008-05-20 14:25:48 UTC (rev 906) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSPARQL.java 2008-05-20 16:41:30 UTC (rev 907) @@ -1,350 +0,0 @@ -package org.dllearner.utilities.examples; - -import java.util.SortedSet; -import java.util.TreeSet; - -import org.apache.log4j.Logger; -import org.dllearner.core.ComponentManager; -import org.dllearner.kb.sparql.Cache; -import org.dllearner.kb.sparql.SparqlEndpoint; -import org.dllearner.kb.sparql.SparqlQuery; -import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; -import org.dllearner.utilities.datastructures.JenaResultSetConvenience; -import org.dllearner.utilities.datastructures.SetManipulation; - -import com.hp.hpl.jena.query.ResultSet; - -public class AutomaticExampleFinderSPARQL { - - private static Logger logger = Logger - .getLogger(ComponentManager.class); - - private Cache c; - private SparqlEndpoint se; - private SortedSet<String> posExamples; - private SortedSet<String> negExamples; - public SortedSet<String> totalSKOSset; - private int limit=1000; - - - public AutomaticExampleFinderSPARQL(SparqlEndpoint se){ - this.c=new Cache("cachetemp"); - this.se=se; - posExamples = new TreeSet<String>(); - negExamples = new TreeSet<String>(); - } - - public void initDBpedia(String concept, boolean useRelated, boolean useSuperclasses,boolean useParallelClasses, int poslimit, int neglimit) { - dbpediaMakePositiveExamplesFromConcept( concept); - SortedSet<String> keepForClean = new TreeSet<String>(); - keepForClean.addAll(this.posExamples); - - this.posExamples = SetManipulation.fuzzyShrink(this.posExamples, poslimit); - - - logger.trace("shrinking: pos Example size: "+posExamples.size()); - - if(useRelated) { - dbpediaMakeNegativeExamplesFromRelatedInstances(this.posExamples); - } - if(useSuperclasses) { - makeNegativeExamplesFromSuperClasses(concept); - } - if(useParallelClasses) { - makeNegativeExamplesFromClassesOfInstances(); - } - //clean - negExamples.removeAll(keepForClean); - logger.trace("neg Example size after cleaning: "+negExamples.size()); - this.negExamples = SetManipulation.fuzzyShrink(negExamples, neglimit); - logger.debug("pos Example size after shrinking: "+posExamples.size()); - logger.debug("neg Example size after shrinking: "+negExamples.size()); - logger.debug("Finished examples for concept: "+concept); - } - - public void init(String concept, String namespace, boolean useRelated, boolean useSuperclasses,boolean useParallelClasses, int poslimit, int neglimit) { - makePositiveExamplesFromConcept( concept); - SortedSet<String> keepForClean = new TreeSet<String>(); - keepForClean.addAll(this.posExamples); - this.posExamples = SetManipulation.fuzzyShrink(this.posExamples, poslimit); - logger.trace("shrinking: pos Example size: "+posExamples.size()); - - if(useRelated) { - makeNegativeExamplesFromRelatedInstances(this.posExamples,namespace); - } - if(useSuperclasses) { - makeNegativeExamplesFromSuperClasses(concept); - } - if(useParallelClasses) { - makeNegativeExamplesFromClassesOfInstances(); - } - //clean - negExamples.removeAll(keepForClean); - logger.trace("neg Example size after cleaning: "+negExamples.size()); - this.negExamples = SetManipulation.fuzzyShrink(negExamples, neglimit); - logger.debug("pos Example size after shrinking: "+posExamples.size()); - logger.debug("neg Example size after shrinking: "+negExamples.size()); - logger.debug("Finished examples for concept: "+concept); - } - - - - public SortedSet<String> dbpediaGetPosOnly(String concept, int limit){ - dbpediaMakePositiveExamplesFromConcept( concept); - return SetManipulation.fuzzyShrink(this.posExamples, limit); - } - - public SortedSet<String> getPosOnly(String concept, int limit){ - makePositiveExamplesFromConcept( concept); - return SetManipulation.fuzzyShrink(this.posExamples, limit); - } - - private void dbpediaMakePositiveExamplesFromConcept(String concept){ - logger.debug("making Positive Examples from Concept: "+concept); - if(concept.contains("http://dbpedia.org/resource/Category:")) { - this.posExamples = new JenaResultSetConvenience(dbpediaQuerySKOSConcept(concept,limit)) - .getStringListForVariable("subject"); - }else { - this.posExamples = new JenaResultSetConvenience(queryConcept(concept,limit)) - .getStringListForVariable("subject"); - } - logger.debug(" pos Example size: "+posExamples.size()); - } - - private void makePositiveExamplesFromConcept(String concept){ - logger.debug("making Positive Examples from Concept: "+concept); - this.posExamples = new JenaResultSetConvenience(queryConcept(concept,0)) - .getStringListForVariable("subject"); - logger.debug(" pos Example size: "+posExamples.size()); - } - - - - /*private void makePositiveExamplesFromConcept(String concept){ - logger.debug("making Positive Examples from Concept: "+concept); - if(concept.contains("http://dbpedia.org/resource/Category:")) { - this.posExamples = new JenaResultSetConvenience(querySKOSConcept(concept,0)) - .getStringListForVariable("subject"); - }else { - this.posExamples = new JenaResultSetConvenience(queryConcept(concept,0)) - .getStringListForVariable("subject"); - } - logger.debug(" pos Example size: "+posExamples.size()); - }*/ - - - - - - private void dbpediaMakeNegativeExamplesFromRelatedInstances(SortedSet<String> subject) { - logger.debug("making examples from related instances"); - for (String string : subject) { - dbpediaMakeNegativeExamplesFromRelatedInstances(string); - } - logger.debug(" negExample size: "+negExamples.size()); - } - - private void makeNegativeExamplesFromRelatedInstances(SortedSet<String> subject, String namespace) { - logger.debug("making examples from related instances"); - for (String string : subject) { - makeNegativeExamplesFromRelatedInstances(string,namespace); - } - logger.debug(" negExample size: "+negExamples.size()); - } - - - /** - * - * @param subject - * @return - */ - private void dbpediaMakeNegativeExamplesFromRelatedInstances(String subject) { - // SortedSet<String> result = new TreeSet<String>(); - - String query = "SELECT * WHERE { \n" + "<" + subject + "> " + "?p ?o. \n" - + "FILTER (REGEX(str(?o), 'http://dbpedia.org/resource/')).\n" - + "FILTER (!REGEX(str(?p), 'http://www.w3.org/2004/02/skos'))\n" - + "}"; - - String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); - ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); - JenaResultSetConvenience rsc = new JenaResultSetConvenience(rs); - this.negExamples.addAll(rsc.getStringListForVariable("o")); - - - } - - private void makeNegativeExamplesFromRelatedInstances(String subject, String namespace) { - // SortedSet<String> result = new TreeSet<String>(); - - String query = "SELECT * WHERE { \n" + "<" + subject + "> " + "?p ?o. \n" - + "FILTER (REGEX(str(?o), '"+namespace+"')).\n" - + "}"; - - String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); - ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); - JenaResultSetConvenience rsc = new JenaResultSetConvenience(rs); - this.negExamples.addAll(rsc.getStringListForVariable("o")); - - - } - - - private void makeNegativeExamplesFromSuperClasses(String concept) { - - SortedSet<String> superClasses = new TreeSet<String>(); - superClasses.add(concept.replace("\"", "")); - //logger.debug("before"+superClasses); - superClasses = getSuperClasses( superClasses, 4); - logger.debug("making neg Examples from "+superClasses.size()+" superclasses"); - JenaResultSetConvenience rsc; - for (String oneSuperClass : superClasses) { - logger.debug(oneSuperClass); - rsc = new JenaResultSetConvenience(queryConcept("\""+oneSuperClass+"\"", limit)); - this.negExamples.addAll(rsc.getStringListForVariable("subject")); - } - logger.debug(" neg Example size: "+negExamples.size()); - } - - - - private void makeNegativeExamplesFromClassesOfInstances() { - logger.debug("making neg Examples from parallel classes"); - SortedSet<String> classes = new TreeSet<String>(); - //superClasses.add(concept.replace("\"", "")); - //logger.debug("before"+superClasses); - //superClasses = dbpediaGetSuperClasses( superClasses, 4); - //logger.debug("getting negExamples from "+superClasses.size()+" superclasses"); - JenaResultSetConvenience rsc; - ResultSet rs=null; - for (String instance : posExamples) { - //System.out.println(instance); - rs = getClassesForInstance(instance); - //System.out.println(ResultSetFormatter.asXMLString(rs)); - rsc = new JenaResultSetConvenience(rs); - classes.addAll(rsc.getStringListForVariable("subject")); - //System.out.println(classes); - } - logger.debug("getting negExamples from "+classes.size()+" parallel classes"); - for (String oneClass : classes) { - logger.debug(oneClass); - rsc = new JenaResultSetConvenience(queryConcept("\""+oneClass+"\"",limit)); - this.negExamples.addAll(rsc.getStringListForVariable("subject")); - } - logger.debug("neg Example size: "+negExamples.size()); - - } - - private SortedSet<String> getSuperClasses(SortedSet<String> superClasses, int depth) { - SortedSet<String> ret = new TreeSet<String>(); - SortedSet<String> tmpset = new TreeSet<String>(); - ret.addAll(superClasses); - //logger.debug(superClasses); - JenaResultSetConvenience rsc; - - String query = ""; - for (; depth != 0 ; depth--) { - for (String oneSuperClass : superClasses) { - - //tmp = oneSuperClass.replace("\"", ""); - query = "SELECT * WHERE { \n" + "<" + oneSuperClass + "> " - + "<http://www.w3.org/2000/01/rdf-schema#subClassOf> ?superclass. \n" - + "}"; - - String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); - ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); - rsc = new JenaResultSetConvenience(rs); - tmpset.addAll(rsc.getStringListForVariable("superclass")); - - } - ret.addAll(tmpset); - //logger.debug(ret); - superClasses.clear(); - superClasses.addAll(tmpset); - tmpset.clear(); - } - //logger.debug(concept); - //logger.debug(query); - return ret; - } - - - - public ResultSet queryConcept(String concept,int limit) { - ResultSet rs = null; - try { - String query = SparqlQueryDescriptionConvertVisitor - .getSparqlQuery(concept,limit); - - SparqlQuery sq = new SparqlQuery(query, se); - String JSON = c.executeSparqlQuery(sq); - //System.out.println("JSON:\n"+JSON); - rs = SparqlQuery.JSONtoResultSet(JSON); - - } catch (Exception e) { - e.printStackTrace(); - } - - return rs; - } - - public ResultSet dbpediaQuerySKOSConcept(String SKOSconcept,int limit) { - if(limit==0)limit=99999; - // - ResultSet rs = null; - try { - - String query = "SELECT * WHERE { \n " + - "?subject " + - "<http://www.w3.org/2004/02/skos/core#subject> " + - "<" + SKOSconcept + "> \n" + - "} LIMIT "+limit; - SparqlQuery sq = new SparqlQuery(query, se); - String JSON = c.executeSparqlQuery(sq); - //System.out.println(JSON); - rs = SparqlQuery.JSONtoResultSet(JSON); - - } catch (Exception e) { - e.printStackTrace(); - } - - return rs; - } - - public ResultSet getClassesForInstance(String instance) { - ResultSet rs = null; - try { - - String query = "SELECT ?subject WHERE { \n " + - "<" + instance + ">"+ - " a " + - "?subject " + - "\n" + - "} LIMIT "+limit; - SparqlQuery sq = new SparqlQuery(query, se); - //System.out.println(query); - String JSON = c.executeSparqlQuery(sq); - //System.out.println(JSON); - rs = SparqlQuery.JSONtoResultSet(JSON); - - } catch (Exception e) { - e.printStackTrace(); - } - - return rs; - } - - public SortedSet<String> getPosExamples() { - return posExamples; - } - - public SortedSet<String> getNegExamples() { - return negExamples; - } - - - - - - -} Copied: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSPARQLold.java (from rev 905, trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSPARQL.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSPARQLold.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSPARQLold.java 2008-05-20 16:41:30 UTC (rev 907) @@ -0,0 +1,350 @@ +package org.dllearner.utilities.examples; + +import java.util.SortedSet; +import java.util.TreeSet; + +import org.apache.log4j.Logger; +import org.dllearner.core.ComponentManager; +import org.dllearner.kb.sparql.Cache; +import org.dllearner.kb.sparql.SparqlEndpoint; +import org.dllearner.kb.sparql.SparqlQuery; +import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; +import org.dllearner.utilities.datastructures.JenaResultSetConvenience; +import org.dllearner.utilities.datastructures.SetManipulation; + +import com.hp.hpl.jena.query.ResultSet; + +public class AutomaticExampleFinderSPARQLold { + + private static Logger logger = Logger + .getLogger(ComponentManager.class); + + private Cache c; + private SparqlEndpoint se; + private SortedSet<String> posExamples; + private SortedSet<String> negExamples; + public SortedSet<String> totalSKOSset; + private int limit=1000; + + + public AutomaticExampleFinderSPARQLold(SparqlEndpoint se){ + this.c=new Cache("cachetemp"); + this.se=se; + posExamples = new TreeSet<String>(); + negExamples = new TreeSet<String>(); + } + + public void initDBpedia(String concept, boolean useRelated, boolean useSuperclasses,boolean useParallelClasses, int poslimit, int neglimit) { + dbpediaMakePositiveExamplesFromConcept( concept); + SortedSet<String> keepForClean = new TreeSet<String>(); + keepForClean.addAll(this.posExamples); + + this.posExamples = SetManipulation.fuzzyShrink(this.posExamples, poslimit); + + + logger.trace("shrinking: pos Example size: "+posExamples.size()); + + if(useRelated) { + dbpediaMakeNegativeExamplesFromRelatedInstances(this.posExamples); + } + if(useSuperclasses) { + makeNegativeExamplesFromSuperClasses(concept); + } + if(useParallelClasses) { + makeNegativeExamplesFromClassesOfInstances(); + } + //clean + negExamples.removeAll(keepForClean); + logger.trace("neg Example size after cleaning: "+negExamples.size()); + this.negExamples = SetManipulation.fuzzyShrink(negExamples, neglimit); + logger.debug("pos Example size after shrinking: "+posExamples.size()); + logger.debug("neg Example size after shrinking: "+negExamples.size()); + logger.debug("Finished examples for concept: "+concept); + } + + public void init(String concept, String namespace, boolean useRelated, boolean useSuperclasses,boolean useParallelClasses, int poslimit, int neglimit) { + makePositiveExamplesFromConcept( concept); + SortedSet<String> keepForClean = new TreeSet<String>(); + keepForClean.addAll(this.posExamples); + this.posExamples = SetManipulation.fuzzyShrink(this.posExamples, poslimit); + logger.trace("shrinking: pos Example size: "+posExamples.size()); + + if(useRelated) { + makeNegativeExamplesFromRelatedInstances(this.posExamples,namespace); + } + if(useSuperclasses) { + makeNegativeExamplesFromSuperClasses(concept); + } + if(useParallelClasses) { + makeNegativeExamplesFromClassesOfInstances(); + } + //clean + negExamples.removeAll(keepForClean); + logger.trace("neg Example size after cleaning: "+negExamples.size()); + this.negExamples = SetManipulation.fuzzyShrink(negExamples, neglimit); + logger.debug("pos Example size after shrinking: "+posExamples.size()); + logger.debug("neg Example size after shrinking: "+negExamples.size()); + logger.debug("Finished examples for concept: "+concept); + } + + + + public SortedSet<String> dbpediaGetPosOnly(String concept, int limit){ + dbpediaMakePositiveExamplesFromConcept( concept); + return SetManipulation.fuzzyShrink(this.posExamples, limit); + } + + public SortedSet<String> getPosOnly(String concept, int limit){ + makePositiveExamplesFromConcept( concept); + return SetManipulation.fuzzyShrink(this.posExamples, limit); + } + + private void dbpediaMakePositiveExamplesFromConcept(String concept){ + logger.debug("making Positive Examples from Concept: "+concept); + if(concept.contains("http://dbpedia.org/resource/Category:")) { + this.posExamples = new JenaResultSetConvenience(dbpediaQuerySKOSConcept(concept,limit)) + .getStringListForVariable("subject"); + }else { + this.posExamples = new JenaResultSetConvenience(queryConcept(concept,limit)) + .getStringListForVariable("subject"); + } + logger.debug(" pos Example size: "+posExamples.size()); + } + + private void makePositiveExamplesFromConcept(String concept){ + logger.debug("making Positive Examples from Concept: "+concept); + this.posExamples = new JenaResultSetConvenience(queryConcept(concept,0)) + .getStringListForVariable("subject"); + logger.debug(" pos Example size: "+posExamples.size()); + } + + + + /*private void makePositiveExamplesFromConcept(String concept){ + logger.debug("making Positive Examples from Concept: "+concept); + if(concept.contains("http://dbpedia.org/resource/Category:")) { + this.posExamples = new JenaResultSetConvenience(querySKOSConcept(concept,0)) + .getStringListForVariable("subject"); + }else { + this.posExamples = new JenaResultSetConvenience(queryConcept(concept,0)) + .getStringListForVariable("subject"); + } + logger.debug(" pos Example size: "+posExamples.size()); + }*/ + + + + + + private void dbpediaMakeNegativeExamplesFromRelatedInstances(SortedSet<String> subject) { + logger.debug("making examples from related instances"); + for (String string : subject) { + dbpediaMakeNegativeExamplesFromRelatedInstances(string); + } + logger.debug(" negExample size: "+negExamples.size()); + } + + private void makeNegativeExamplesFromRelatedInstances(SortedSet<String> subject, String namespace) { + logger.debug("making examples from related instances"); + for (String string : subject) { + makeNegativeExamplesFromRelatedInstances(string,namespace); + } + logger.debug(" negExample size: "+negExamples.size()); + } + + + /** + * + * @param subject + * @return + */ + private void dbpediaMakeNegativeExamplesFromRelatedInstances(String subject) { + // SortedSet<String> result = new TreeSet<String>(); + + String query = "SELECT * WHERE { \n" + "<" + subject + "> " + "?p ?o. \n" + + "FILTER (REGEX(str(?o), 'http://dbpedia.org/resource/')).\n" + + "FILTER (!REGEX(str(?p), 'http://www.w3.org/2004/02/skos'))\n" + + "}"; + + String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); + ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); + JenaResultSetConvenience rsc = new JenaResultSetConvenience(rs); + this.negExamples.addAll(rsc.getStringListForVariable("o")); + + + } + + private void makeNegativeExamplesFromRelatedInstances(String subject, String namespace) { + // SortedSet<String> result = new TreeSet<String>(); + + String query = "SELECT * WHERE { \n" + "<" + subject + "> " + "?p ?o. \n" + + "FILTER (REGEX(str(?o), '"+namespace+"')).\n" + + "}"; + + String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); + ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); + JenaResultSetConvenience rsc = new JenaResultSetConvenience(rs); + this.negExamples.addAll(rsc.getStringListForVariable("o")); + + + } + + + private void makeNegativeExamplesFromSuperClasses(String concept) { + + SortedSet<String> superClasses = new TreeSet<String>(); + superClasses.add(concept.replace("\"", "")); + //logger.debug("before"+superClasses); + superClasses = getSuperClasses( superClasses, 4); + logger.debug("making neg Examples from "+superClasses.size()+" superclasses"); + JenaResultSetConvenience rsc; + for (String oneSuperClass : superClasses) { + logger.debug(oneSuperClass); + rsc = new JenaResultSetConvenience(queryConcept("\""+oneSuperClass+"\"", limit)); + this.negExamples.addAll(rsc.getStringListForVariable("subject")); + } + logger.debug(" neg Example size: "+negExamples.size()); + } + + + + private void makeNegativeExamplesFromClassesOfInstances() { + logger.debug("making neg Examples from parallel classes"); + SortedSet<String> classes = new TreeSet<String>(); + //superClasses.add(concept.replace("\"", "")); + //logger.debug("before"+superClasses); + //superClasses = dbpediaGetSuperClasses( superClasses, 4); + //logger.debug("getting negExamples from "+superClasses.size()+" superclasses"); + JenaResultSetConvenience rsc; + ResultSet rs=null; + for (String instance : posExamples) { + //System.out.println(instance); + rs = getClassesForInstance(instance); + //System.out.println(ResultSetFormatter.asXMLString(rs)); + rsc = new JenaResultSetConvenience(rs); + classes.addAll(rsc.getStringListForVariable("subject")); + //System.out.println(classes); + } + logger.debug("getting negExamples from "+classes.size()+" parallel classes"); + for (String oneClass : classes) { + logger.debug(oneClass); + rsc = new JenaResultSetConvenience(queryConcept("\""+oneClass+"\"",limit)); + this.negExamples.addAll(rsc.getStringListForVariable("subject")); + } + logger.debug("neg Example size: "+negExamples.size()); + + } + + private SortedSet<String> getSuperClasses(SortedSet<String> superClasses, int depth) { + SortedSet<String> ret = new TreeSet<String>(); + SortedSet<String> tmpset = new TreeSet<String>(); + ret.addAll(superClasses); + //logger.debug(superClasses); + JenaResultSetConvenience rsc; + + String query = ""; + for (; depth != 0 ; depth--) { + for (String oneSuperClass : superClasses) { + + //tmp = oneSuperClass.replace("\"", ""); + query = "SELECT * WHERE { \n" + "<" + oneSuperClass + "> " + + "<http://www.w3.org/2000/01/rdf-schema#subClassOf> ?superclass. \n" + + "}"; + + String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); + ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); + rsc = new JenaResultSetConvenience(rs); + tmpset.addAll(rsc.getStringListForVariable("superclass")); + + } + ret.addAll(tmpset); + //logger.debug(ret); + superClasses.clear(); + superClasses.addAll(tmpset); + tmpset.clear(); + } + //logger.debug(concept); + //logger.debug(query); + return ret; + } + + + + public ResultSet queryConcept(String concept,int limit) { + ResultSet rs = null; + try { + String query = SparqlQueryDescriptionConvertVisitor + .getSparqlQuery(concept,limit); + + SparqlQuery sq = new SparqlQuery(query, se); + String JSON = c.executeSparqlQuery(sq); + //System.out.println("JSON:\n"+JSON); + rs = SparqlQuery.JSONtoResultSet(JSON); + + } catch (Exception e) { + e.printStackTrace(); + } + + return rs; + } + + public ResultSet dbpediaQuerySKOSConcept(String SKOSconcept,int limit) { + if(limit==0)limit=99999; + // + ResultSet rs = null; + try { + + String query = "SELECT * WHERE { \n " + + "?subject " + + "<http://www.w3.org/2004/02/skos/core#subject> " + + "<" + SKOSconcept + "> \n" + + "} LIMIT "+limit; + SparqlQuery sq = new SparqlQuery(query, se); + String JSON = c.executeSparqlQuery(sq); + //System.out.println(JSON); + rs = SparqlQuery.JSONtoResultSet(JSON); + + } catch (Exception e) { + e.printStackTrace(); + } + + return rs; + } + + public ResultSet getClassesForInstance(String instance) { + ResultSet rs = null; + try { + + String query = "SELECT ?subject WHERE { \n " + + "<" + instance + ">"+ + " a " + + "?subject " + + "\n" + + "} LIMIT "+limit; + SparqlQuery sq = new SparqlQuery(query, se); + //System.out.println(query); + String JSON = c.executeSparqlQuery(sq); + //System.out.println(JSON); + rs = SparqlQuery.JSONtoResultSet(JSON); + + } catch (Exception e) { + e.printStackTrace(); + } + + return rs; + } + + public SortedSet<String> getPosExamples() { + return posExamples; + } + + public SortedSet<String> getNegExamples() { + return negExamples; + } + + + + + + +} Copied: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSPARQLtest.java (from rev 905, trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSPARQL.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSPARQLtest.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSPARQLtest.java 2008-05-20 16:41:30 UTC (rev 907) @@ -0,0 +1,21 @@ +package org.dllearner.utilities.examples; + +import java.util.SortedSet; + +import org.dllearner.kb.sparql.Cache; +import org.dllearner.kb.sparql.SparqlEndpoint; + +public class AutomaticExampleFinderSPARQLtest { + + + private Cache c; + private SparqlEndpoint se; + private SortedSet<String> posExamples; + private SortedSet<String> negExamples; + + static boolean useRelated = false; + static boolean useSuperClasses = false; + static boolean useParallelClasses = true; + static int poslimit = 10; + static int neglimit = 20; +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-05-21 15:07:08
|
Revision: 912 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=912&view=rev Author: kurzum Date: 2008-05-21 07:59:31 -0700 (Wed, 21 May 2008) Log Message: ----------- cleanup Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java trunk/src/dl-learner/org/dllearner/scripts/SPARQLExtractionEvaluation.java trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderRolesSPARQL.java trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSKOSSPARQL.java trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSPARQLold.java trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java trunk/src/dl-learner/org/dllearner/utilities/learn/LearnSparql.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/utilities/JamonTimeLogger.java trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticPositiveExampleFinderSPARQL.java trunk/src/dl-learner/org/dllearner/utilities/examples/SPARQLTasks.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/utilities/datastructures/JenaResultSetConvenience.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-05-21 13:53:46 UTC (rev 911) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-05-21 14:59:31 UTC (rev 912) @@ -82,6 +82,18 @@ this("cache"); } */ + public static Cache getPersistentCache(){ + Cache c = new Cache("cachePersistant"); + c.setFreshnessInDays(365); + return c; + } + + public static Cache getDefaultCache(){ + Cache c = new Cache("cache"); + + return c; + } + /** * Constructor for the cache itself. * @@ -242,5 +254,9 @@ return json; } } + + public void setFreshnessInDays(int days){ + freshnessSeconds = days * 24 * 60 * 60; + } } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-05-21 13:53:46 UTC (rev 911) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-05-21 14:59:31 UTC (rev 912) @@ -112,6 +112,9 @@ return queryString; } + /** + * @return String JSON + */ public String getResult() { return json; } Modified: trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java 2008-05-21 13:53:46 UTC (rev 911) +++ trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java 2008-05-21 14:59:31 UTC (rev 912) @@ -1,7 +1,8 @@ package org.dllearner.scripts; -import java.util.LinkedList; +import java.util.HashSet; import java.util.List; +import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; @@ -10,222 +11,198 @@ import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.SimpleLayout; +import org.dllearner.algorithms.refexamples.ExampleBasedROLComponent; +import org.dllearner.core.ComponentManager; import org.dllearner.core.KnowledgeSource; +import org.dllearner.core.LearningAlgorithm; +import org.dllearner.core.LearningProblem; +import org.dllearner.core.ReasonerComponent; +import org.dllearner.core.ReasoningService; import org.dllearner.core.owl.Description; -import org.dllearner.core.owl.NamedClass; -import org.dllearner.core.owl.Union; import org.dllearner.kb.sparql.Cache; import org.dllearner.kb.sparql.SparqlEndpoint; -import org.dllearner.kb.sparql.SparqlQuery; -import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertRDFS; -import org.dllearner.utilities.datastructures.JenaResultSetConvenience; +import org.dllearner.kb.sparql.SparqlKnowledgeSource; +import org.dllearner.learningproblems.PosNegDefinitionLP; +import org.dllearner.learningproblems.PosNegLP; +import org.dllearner.reasoning.FastInstanceChecker; import org.dllearner.utilities.datastructures.SetManipulation; -import org.dllearner.utilities.examples.AutomaticExampleFinderSKOSSPARQL; -import org.dllearner.utilities.learn.LearnSparql; -import org.dllearner.utilities.statistics.SimpleClock; +import org.dllearner.utilities.examples.AutomaticNegativeExampleFinderSPARQL; +import org.dllearner.utilities.examples.AutomaticPositiveExampleFinderSPARQL; +import org.dllearner.utilities.examples.SPARQLTasks; -import com.hp.hpl.jena.query.ResultSet; -import com.hp.hpl.jena.query.ResultSetFormatter; -import com.hp.hpl.jena.sparql.core.ResultBinding; - public class SKOS7030 { - static Cache c; - static SparqlEndpoint se; + private static SPARQLTasks sparqlTasks; + private static Logger logger = Logger.getRootLogger(); + static boolean local = true; + static String url = ""; + //LEARNING + static int recursiondepth=1; + static boolean closeAfterRecursion=true; + static boolean randomizeCache=false; + static double noise=15; + static int maxExecutionTimeInSeconds = 30; + static int guaranteeXgoodDescriptions = 40; + //static int limit=200; - //vars - static boolean useRelated = false; - static boolean useSuperClasses = false; - static boolean useParallelClasses = true; - static int poslimit = 10; - static int neglimit = 20; - static int recursiondepth=1; - static boolean closeAfterRecursion=true; - static boolean randomizeCache=false; - static int resultsize=20; - static double noise=15; - static int limit=200; - static double percentage=0.3; + //examples + static int sparqlResultSize=2000; + static double percentOfSKOSSet=0.7; + static double negfactor=0.3; + SortedSet<String> posExamples = new TreeSet<String>(); + SortedSet<String> fullPositiveSet = new TreeSet<String>(); + SortedSet<String> fullminusposRest = new TreeSet<String>(); + SortedSet<String> negExamples = new TreeSet<String>(); + + + + + /** * @param args */ public static void main(String[] args) { - init(); - //logger.setLevel(Level.TRACE); - Logger.getLogger(KnowledgeSource.class).setLevel(Level.WARN); - //System.out.println(Logger.getLogger(SparqlQuery.class).getLevel()); - SimpleClock sc=new SimpleClock(); + System.out.println("Start"); + initLogger(); + //parameters - se = SparqlEndpoint.EndpointLOCALDBpedia(); -// String t="\"http://dbpedia.org/class/yago/Fiction106367107\""; -// t="(\"http://dbpedia.org/class/yago/HeadOfState110164747\" AND (\"http://dbpedia.org/class/yago/Negotiator110351874\" AND \"http://dbpedia.org/class/yago/Representative110522035\"))"; -// //System.out.println(t); -// //t="\"http://www.w3.org/2004/02/skos/core#subject\""; -// //conceptRewrite(t); -// //getSubClasses(t); -// -// AutomaticExampleFinderSKOSSPARQL ae= new AutomaticExampleFinderSKOSSPARQL( se); -// try{ -// System.out.println("oneconcept: "+t); -// SortedSet<String> instances = ae.queryConceptAsStringSet(conceptRewrite(t), 200); -// if(instances.size()>=0)System.out.println("size of instances "+instances.size()); -// if(instances.size()>=0 && instances.size()<100) System.out.println("instances"+instances); -// }catch (Exception e) { -// e.printStackTrace(); -// } - SortedSet<String> concepts = new TreeSet<String>(); + if(local){ + url = "http://139.18.2.37:8890/sparql"; + sparqlTasks = new SPARQLTasks(Cache.getPersistentCache(),SparqlEndpoint.EndpointLOCALDBpedia()); + }else{ + url = "http://dbpedia.openlinksw.com:8890/sparql"; + sparqlTasks = new SPARQLTasks(Cache.getPersistentCache(),SparqlEndpoint.EndpointDBpedia()); + } String prim="http://dbpedia.org/resource/Category:Prime_Ministers_of_the_United_Kingdom"; String award=("http://dbpedia.org/resource/Category:Best_Actor_Academy_Award_winners"); - System.out.println(DBpediaSKOS(prim)); -// double acc1=0.0; -// for (int i = 0; i < 5; i++) { -// acc1+=DBpediaSKOS(prim); -// } -// System.out.println("accprim"+(acc1/5)); -// -// double acc2=0.0; -// for (int i = 0; i < 5; i++) { -// acc2+=DBpediaSKOS(award); -// } -// System.out.println("accprim"+(acc2/5)); + SKOS7030 s= new SKOS7030(); -// DBpediaSKOS(concepts.first()); -// DBpediaSKOS(concepts.first()); -// concepts.remove(concepts.first()); -// DBpediaSKOS(concepts.first()); -// DBpediaSKOS(concepts.first()); -// concepts.remove(concepts.first()); -// DBpediaSKOS(concepts.first()); -// DBpediaSKOS(concepts.first()); - //algorithm="refinement"; - //roles(); + s.makeExamples(prim, percentOfSKOSSet, negfactor, sparqlResultSize); + //QUALITY s.posExamples + List<Description> conceptresults = s.learn(s.posExamples, s.negExamples); + logger.debug("found nr of concepts: "+conceptresults.size()); - /*System.out.println(Level.DEBUG.getClass()); - System.out.println(Level.toLevel("INFO")); - System.out.println(Level.INFO);*/ - //System.exit(0); + for (Description oneConcept : conceptresults) { + s.evaluate(oneConcept, 1000); + } + + + System.out.println("Finished"); + + } + void evaluate(Description oneConcept, int sparqlResultLimit){ + logger.debug("oneconcept: "+oneConcept); + SortedSet<String> instances = sparqlTasks.retrieveInstancesForConcept(oneConcept.toKBSyntaxString(), sparqlResultLimit); - sc.printAndSet("Finished"); - + System.out.println(fullminusposRest.size()); + System.out.println(instances.size()); + + SortedSet<String> coveredInRest = new TreeSet<String>(fullminusposRest); + coveredInRest.retainAll(instances); + + System.out.println(fullminusposRest.size()); + System.out.println(instances.size()); + System.out.println(coveredInRest.size()); + + + + //SortedSet<String> possibleNewCandidates = new TreeSet<String>(); + //SortedSet<String> notCoveredInTotal = new TreeSet<String>(); + + } - - static double DBpediaSKOS(String concept){ - se = SparqlEndpoint.EndpointLOCALDBpedia(); - //se = SparqlEndpoint.EndpointDBpedia(); - String url = "http://dbpedia.openlinksw.com:8890/sparql"; - url = "http://139.18.2.37:8890/sparql"; + static void DBpediaSKOS(String SKOSConcept){ + //concepts.add("http://dbpedia.org/resource/Category:Grammy_Award_winners"); //concepts.add("EXISTS \"http://dbpedia.org/property/grammyawards\".TOP"); - SortedSet<String> posExamples = new TreeSet<String>(); - SortedSet<String> negExamples = new TreeSet<String>(); + //HashMap<String, ResultSet> result = new HashMap<String, ResultSet>(); //HashMap<String, String> result2 = new HashMap<String, String>(); //System.out.println(concepts.first()); //logger.setLevel(Level.TRACE); - AutomaticExampleFinderSKOSSPARQL ae= new AutomaticExampleFinderSKOSSPARQL( se); + - ae.initDBpediaSKOS(concept,percentage , useRelated, useParallelClasses); - posExamples = ae.getPosExamples(); - negExamples = ae.getNegExamples(); - for (String string2 : negExamples) { - logger.debug("-"+string2); - } +// LearnSparql ls = new LearnSparql(); +// +// //igno.add(oneConcept.replaceAll("\"", "")); +// +// List<Description> conceptresults= ls.learnDBpediaSKOS(posExamples, negExamples, url,new TreeSet<String>(),recursiondepth, closeAfterRecursion,randomizeCache,resultsize,noise); +// +// System.out.println("concepts"+conceptresults); +// //System.exit(0); +// +// SortedSet<ResultCompare> res=new TreeSet<ResultCompare>(); +// for (Description oneConcept : conceptresults) { +// try{ +// +// +// int i=0; +// int a=0; +// for (String oneinst : instances) { +// boolean inRest=false; +// boolean inTotal=false; +// for (String onerest : rest) { +// if(onerest.equalsIgnoreCase(oneinst)) +// { i++; inRest=true; break;} +// +// } +// if (inRest){coveredInRest.add(oneinst);}; +// +// for (String onetotal : totalSKOSset) { +// if(onetotal.equalsIgnoreCase(oneinst)) +// { a++; inTotal=true; break;} +// } +// if(!inRest && !inTotal){ +// possibleNewCandidates.add(oneinst); +// } +// } +// +// for (String onetotal : totalSKOSset) { +// boolean mm=false; +// for (String oneinst : instances) { +// if(onetotal.equalsIgnoreCase(oneinst)){ +// mm=true;break; +// } +// +// } +// if(!mm)notCoveredInTotal.add(onetotal); +// +// } +// +// +// +// double accuracy= (double)i/rest.size(); +// double accuracy2= (double)a/totalSKOSset.size(); +// +// logger.debug((new ResultCompare(oneConcept.toKBSyntaxString(),instances,accuracy,accuracy2,instances.size(), +// coveredInRest,possibleNewCandidates,notCoveredInTotal)).toStringFull()); +// +// //if(instances.size()>=0)System.out.println("size of instances "+instances.size()); +// //if(instances.size()>=0 && instances.size()<100) System.out.println("instances"+instances); +// }catch (Exception e) {e.printStackTrace();} +// } - for (String string2 : posExamples) { - logger.debug("+"+string2); - } - SortedSet<String> totalSKOSset= ae.totalSKOSset; - SortedSet<String> rest= ae.rest; - logger.debug(totalSKOSset); - logger.debug(rest); - - - LearnSparql ls = new LearnSparql(); - - //igno.add(oneConcept.replaceAll("\"", "")); - - List<Description> conceptresults= ls.learnDBpediaSKOS(posExamples, negExamples, url,new TreeSet<String>(),recursiondepth, closeAfterRecursion,randomizeCache,resultsize,noise); - - System.out.println("concepts"+conceptresults); - //System.exit(0); - logger.debug("found nr of concepts:"+conceptresults.size()); - SortedSet<ResultCompare> res=new TreeSet<ResultCompare>(); - for (Description oneConcept : conceptresults) { - try{ - System.out.println("oneconcept: "+oneConcept); - String rewritten = SparqlQueryDescriptionConvertRDFS.conceptRewrite(oneConcept.toKBSyntaxString(), se, c, true); - SortedSet<String> instances = ae.queryConceptAsStringSet(rewritten, 200); - SortedSet<String> coveredInRest = new TreeSet<String>(); - SortedSet<String> possibleNewCandidates = new TreeSet<String>(); - SortedSet<String> notCoveredInTotal = new TreeSet<String>(); - - int i=0; - int a=0; - for (String oneinst : instances) { - boolean inRest=false; - boolean inTotal=false; - for (String onerest : rest) { - if(onerest.equalsIgnoreCase(oneinst)) - { i++; inRest=true; break;} - - } - if (inRest){coveredInRest.add(oneinst);}; - - for (String onetotal : totalSKOSset) { - if(onetotal.equalsIgnoreCase(oneinst)) - { a++; inTotal=true; break;} - } - if(!inRest && !inTotal){ - possibleNewCandidates.add(oneinst); - } - } - - for (String onetotal : totalSKOSset) { - boolean mm=false; - for (String oneinst : instances) { - if(onetotal.equalsIgnoreCase(oneinst)){ - mm=true;break; - } - - } - if(!mm)notCoveredInTotal.add(onetotal); - - } - - - - double accuracy= (double)i/rest.size(); - double accuracy2= (double)a/totalSKOSset.size(); - - logger.debug((new ResultCompare(oneConcept.toKBSyntaxString(),instances,accuracy,accuracy2,instances.size(), - coveredInRest,possibleNewCandidates,notCoveredInTotal)).toStringFull()); - - //if(instances.size()>=0)System.out.println("size of instances "+instances.size()); - //if(instances.size()>=0 && instances.size()<100) System.out.println("instances"+instances); - }catch (Exception e) {e.printStackTrace();} - } - // System.out.println(res.last()); // res.remove(res.last()); // System.out.println(res.last()); @@ -250,7 +227,7 @@ // // } // - return 0.0; +// return 0.0; //System.out.println("AAAAAAAA"); @@ -268,7 +245,7 @@ - public static void init() { + public static void initLogger() { SimpleLayout layout = new SimpleLayout(); // create logger (a simple logger which outputs @@ -283,12 +260,11 @@ logger.addAppender(consoleAppender); logger.addAppender(fileAppender); logger.setLevel(Level.DEBUG); - c = new Cache("cachetemp"); - - + Logger.getLogger(KnowledgeSource.class).setLevel(Level.WARN); + } - public static SortedSet<String> selectDBpediaConcepts(int number){ + /*public static SortedSet<String> selectDBpediaConcepts(int number){ String query = "SELECT DISTINCT ?concept WHERE { \n" + "[] a ?concept .FILTER (regex(str(?concept),'yago'))" + " \n} \n"; //LIMIT "+number+" @@ -298,8 +274,181 @@ ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); JenaResultSetConvenience rsc = new JenaResultSetConvenience(rs); return SetManipulation.fuzzyShrink(rsc.getStringListForVariable("concept"),number); + }*/ + + public void makeExamples(String SKOSConcept, double percentOfSKOSSet , double negfactor, int sparqlResultSize){ + + //POSITIVES + AutomaticPositiveExampleFinderSPARQL apos = new AutomaticPositiveExampleFinderSPARQL(sparqlTasks); + apos.makePositiveExamplesFromSKOSConcept(SKOSConcept); + fullPositiveSet = apos.getPosExamples(); + + int poslimit=(int)Math.round(percentOfSKOSSet*fullPositiveSet.size()); + int neglimit=(int)Math.round(poslimit*negfactor); + + this.posExamples = SetManipulation.fuzzyShrink(fullPositiveSet,poslimit); + + + + //NEGATIVES + + AutomaticNegativeExampleFinderSPARQL aneg = new AutomaticNegativeExampleFinderSPARQL(fullPositiveSet,sparqlTasks); + + aneg.makeNegativeExamplesFromParallelClasses(posExamples, sparqlResultSize); + SortedSet<String> negativeSet = aneg.getNegativeExamples(neglimit); + + logger.debug("POSITIVE EXAMPLES"); + for (String pos : posExamples) { + logger.debug("+"+pos); + } + + logger.debug("NEGATIVE EXAMPLES"); + for (String negs : negativeSet) { + logger.debug("-"+negs); + } + + + + fullminusposRest = fullPositiveSet; + fullminusposRest.removeAll(posExamples); + + + logger.debug(fullPositiveSet); + logger.debug(fullminusposRest); } + public List<Description> learn(SortedSet<String> posExamples, SortedSet<String> negExamples){ + + SortedSet<String> instances = new TreeSet<String>(); + instances.addAll(posExamples); + instances.addAll(negExamples); + + + ComponentManager cm = ComponentManager.getInstance(); + LearningAlgorithm la = null; + ReasoningService rs = null; + LearningProblem lp = null; + SparqlKnowledgeSource ks =null; + try { + Set<KnowledgeSource> sources = new HashSet<KnowledgeSource>(); + ks = cm.knowledgeSource(SparqlKnowledgeSource.class); + ReasonerComponent r = new FastInstanceChecker(sources); + rs = new ReasoningService(r); + //System.out.println("satisfy: "+rs.isSatisfiable()); + lp = new PosNegDefinitionLP(rs); + ((PosNegLP) lp).setPositiveExamples(SetManipulation.stringToInd(posExamples)); + ((PosNegLP) lp).setNegativeExamples(SetManipulation.stringToInd(negExamples)); + + la = cm.learningAlgorithm(ExampleBasedROLComponent.class, lp, rs); + + logger.debug("start learning"); + + + //KNOWLEDGESOURCE + cm.applyConfigEntry(ks, "instances",instances); + cm.applyConfigEntry(ks, "url",url); + cm.applyConfigEntry(ks, "recursionDepth",recursiondepth); + cm.applyConfigEntry(ks, "closeAfterRecursion",closeAfterRecursion); + cm.applyConfigEntry(ks, "predefinedFilter","YAGO"); + if(local) + cm.applyConfigEntry(ks, "predefinedEndpoint","LOCALDBPEDIA"); + else { + cm.applyConfigEntry(ks, "predefinedEndpoint","DBPEDIA"); + } + if(randomizeCache) + cm.applyConfigEntry(ks, "cacheDir","cache/"+System.currentTimeMillis()+""); + else {cm.applyConfigEntry(ks, "cacheDir",Cache.getDefaultCache());} + + //LEARNINGALGORITHM + cm.applyConfigEntry(la,"useAllConstructor",false); + cm.applyConfigEntry(la,"useExistsConstructor",true); + cm.applyConfigEntry(la,"useCardinalityRestrictions",false); + cm.applyConfigEntry(la,"useNegation",false); + cm.applyConfigEntry(la,"minExecutionTimeInSeconds",0); + cm.applyConfigEntry(la,"maxExecutionTimeInSeconds",maxExecutionTimeInSeconds); + cm.applyConfigEntry(la,"guaranteeXgoodDescriptions",guaranteeXgoodDescriptions); + cm.applyConfigEntry(la,"writeSearchTree",false); + cm.applyConfigEntry(la,"searchTreeFile","log/SKOS.txt"); + cm.applyConfigEntry(la,"replaceSearchTree",true); + cm.applyConfigEntry(la,"noisePercentage",noise); + //cm.applyConfigEntry(la,"guaranteeXgoodDescriptions",999999); + cm.applyConfigEntry(la,"logLevel","TRACE"); + /*if(ignoredConcepts.size()>0) + cm.applyConfigEntry(la,"ignoredConcepts",ignoredConcepts); + */ + + ks.init(); + sources.add(ks); + r.init(); + lp.init(); + la.init(); + + + la.start(); + //Statistics.addTimeCollecting(sc.getTime()); + //Statistics.addTimeLearning(sc.getTime()); + + + return la.getGoodSolutions(); + + }catch (Exception e) {e.printStackTrace();} + return null; + + } + +// String t="\"http://dbpedia.org/class/yago/Fiction106367107\""; +// t="(\"http://dbpedia.org/class/yago/HeadOfState110164747\" AND (\"http://dbpedia.org/class/yago/Negotiator110351874\" AND \"http://dbpedia.org/class/yago/Representative110522035\"))"; +// //System.out.println(t); +// //t="\"http://www.w3.org/2004/02/skos/core#subject\""; +// //conceptRewrite(t); +// //getSubClasses(t); +// +// AutomaticExampleFinderSKOSSPARQL ae= new AutomaticExampleFinderSKOSSPARQL( se); +// try{ +// System.out.println("oneconcept: "+t); +// SortedSet<String> instances = ae.queryConceptAsStringSet(conceptRewrite(t), 200); +// if(instances.size()>=0)System.out.println("size of instances "+instances.size()); +// if(instances.size()>=0 && instances.size()<100) System.out.println("instances"+instances); +// }catch (Exception e) { +// e.printStackTrace(); +// } + //SortedSet<String> concepts = new TreeSet<String>(); + + + + //System.out.println(DBpediaSKOS(prim)); +// double acc1=0.0; +// for (int i = 0; i < 5; i++) { +// acc1+=DBpediaSKOS(prim); +// } +// System.out.println("accprim"+(acc1/5)); +// +// double acc2=0.0; +// for (int i = 0; i < 5; i++) { +// acc2+=DBpediaSKOS(award); +// } +// System.out.println("accprim"+(acc2/5)); + +// DBpediaSKOS(concepts.first()); +// DBpediaSKOS(concepts.first()); +// concepts.remove(concepts.first()); +// DBpediaSKOS(concepts.first()); +// DBpediaSKOS(concepts.first()); +// concepts.remove(concepts.first()); +// DBpediaSKOS(concepts.first()); +// DBpediaSKOS(concepts.first()); + //algorithm="refinement"; + //roles(); + + /*System.out.println(Level.DEBUG.getClass()); + System.out.println(Level.toLevel("INFO")); + System.out.println(Level.INFO);*/ + //System.exit(0); + + + + + } Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLExtractionEvaluation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLExtractionEvaluation.java 2008-05-21 13:53:46 UTC (rev 911) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLExtractionEvaluation.java 2008-05-21 14:59:31 UTC (rev 912) @@ -14,8 +14,6 @@ import org.dllearner.kb.sparql.Cache; import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlQuery; -import org.dllearner.utilities.datastructures.JenaResultSetConvenience; -import org.dllearner.utilities.datastructures.SetManipulation; import org.dllearner.utilities.examples.AutomaticExampleFinderSPARQLold; import org.dllearner.utilities.learn.LearnSparql; import org.dllearner.utilities.statistics.SimpleClock; @@ -107,7 +105,7 @@ System.out.println(oneConcept); AutomaticExampleFinderSPARQLold ae= new AutomaticExampleFinderSPARQLold( se); - ae.initDBpedia(oneConcept, useRelated, useSuperClasses,useParallelClasses, poslimit, neglimit); + //ae.initDBpedia(oneConcept, useRelated, useSuperClasses,useParallelClasses, poslimit, neglimit); posExamples = ae.getPosExamples(); negExamples = ae.getNegExamples(); @@ -183,6 +181,7 @@ } + //FIXME public static SortedSet<String> selectDBpediaConcepts(int number){ String query = "SELECT DISTINCT ?concept WHERE { \n" + "[] a ?concept .FILTER (regex(str(?concept),'yago'))" + @@ -190,8 +189,9 @@ String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); - JenaResultSetConvenience rsc = new JenaResultSetConvenience(rs); - return SetManipulation.fuzzyShrink(rsc.getStringListForVariable("concept"),number); + //JenaResultSetConvenience rsc = new JenaResultSetConvenience(rs); + //return SetManipulation.fuzzyShrink(rsc.getStringListForVariable("concept"),number); + return null; } public static SortedSet<String> initConcepts(){ Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-05-21 13:53:46 UTC (rev 911) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-05-21 14:59:31 UTC (rev 912) @@ -13,9 +13,6 @@ import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.kb.sparql.SparqlQuery; -import org.dllearner.utilities.datastructures.JenaResultSetConvenience; -import org.dllearner.utilities.datastructures.SetManipulation; -import org.dllearner.utilities.examples.AutomaticExampleFinderRolesSPARQL; import org.dllearner.utilities.examples.AutomaticExampleFinderSPARQLold; import org.dllearner.utilities.learn.ConfWriter; import org.dllearner.utilities.learn.LearnSparql; @@ -114,12 +111,12 @@ //HashMap<String, String> result2 = new HashMap<String, String>(); //System.out.println(concepts.first()); //logger.setLevel(Level.TRACE); - AutomaticExampleFinderRolesSPARQL ae= new AutomaticExampleFinderRolesSPARQL( se); + //AutomaticExampleFinderRolesSPARQL ae= new AutomaticExampleFinderRolesSPARQL( se); - ae.initDomainRange(roles.first(), poslimit, neglimit); + //ae.initDomainRange(roles.first(), poslimit, neglimit); - posExamples = ae.getPosExamples(); - negExamples = ae.getNegExamples(); + //posExamples = ae.getPosExamples(); + //negExamples = ae.getNegExamples(); System.out.println(posExamples); System.out.println(negExamples); @@ -192,7 +189,7 @@ poslimit=10; neglimit=10; - ae.initDBpedia(concept, useRelated, useSuperClasses,useParallelClasses, poslimit, neglimit); + //ae.initDBpedia(concept, useRelated, useSuperClasses,useParallelClasses, poslimit, neglimit); posExamples = ae.getPosExamples(); negExamples = ae.getNegExamples(); @@ -286,8 +283,9 @@ String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); - JenaResultSetConvenience rsc = new JenaResultSetConvenience(rs); - return SetManipulation.fuzzyShrink(rsc.getStringListForVariable("concept"),number); + //JenaResultSetConvenience rsc = new JenaResultSetConvenience(rs); + //return SetManipulation.fuzzyShrink(rsc.getStringListForVariable("concept"),number); + return null; } Modified: trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java 2008-05-21 13:53:46 UTC (rev 911) +++ trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java 2008-05-21 14:59:31 UTC (rev 912) @@ -11,12 +11,9 @@ import org.apache.log4j.SimpleLayout; import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlKnowledgeSource; -import org.dllearner.kb.sparql.SparqlQuery; -import org.dllearner.utilities.datastructures.JenaResultSetConvenience; +import org.dllearner.utilities.examples.SPARQLTasks; import org.dllearner.utilities.statistics.SimpleClock; -import com.hp.hpl.jena.query.ResultSet; - public class SparqlEndpointTest { private static Logger logger = Logger.getRootLogger(); static Set<String> working = new HashSet<String>(); @@ -65,22 +62,15 @@ SimpleClock sc = new SimpleClock(); try{ - String query ="" + + String SPARQLquery ="" + "SELECT DISTINCT ?c " + "WHERE {[] a ?c }" + "LIMIT 100"; - query ="SELECT DISTINCT ?c WHERE {[] a ?c }LIMIT 100"; - - SparqlQuery s = new SparqlQuery(query,se); + SPARQLquery ="SELECT DISTINCT ?c WHERE {[] a ?c }LIMIT 100"; + int i = new SPARQLTasks(se).queryAsSet(SPARQLquery, "c").size(); - s.send(); - String result = s.getResult(); - ResultSet rs = SparqlQuery.JSONtoResultSet(result); - JenaResultSetConvenience jsr = new JenaResultSetConvenience(rs); - int i = jsr.getStringListForVariable("c").size(); - working.add(sc.getAndSet("endpoint working: "+se.getURL()+" ("+((i==100)?"more than 100 concepts":"about "+i+" concepts")+" )")); }catch (Exception e) {notworking.add(sc.getAndSet("endpoint NOT working: "+se.getURL()));} } Added: trunk/src/dl-learner/org/dllearner/utilities/JamonTimeLogger.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/JamonTimeLogger.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/JamonTimeLogger.java 2008-05-21 14:59:31 UTC (rev 912) @@ -0,0 +1,9 @@ +package org.dllearner.utilities; + +/** + * provides convenience functions for timelogs + * + */ +public class JamonTimeLogger { + +} Deleted: trunk/src/dl-learner/org/dllearner/utilities/datastructures/JenaResultSetConvenience.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/datastructures/JenaResultSetConvenience.java 2008-05-21 13:53:46 UTC (rev 911) +++ trunk/src/dl-learner/org/dllearner/utilities/datastructures/JenaResultSetConvenience.java 2008-05-21 14:59:31 UTC (rev 912) @@ -1,37 +0,0 @@ -package org.dllearner.utilities.datastructures; - -import java.util.List; -import java.util.SortedSet; -import java.util.TreeSet; - -import com.hp.hpl.jena.query.ResultSet; -import com.hp.hpl.jena.query.ResultSetFormatter; -import com.hp.hpl.jena.sparql.core.ResultBinding; - -public class JenaResultSetConvenience { - ResultSet rs; - - public JenaResultSetConvenience(ResultSet rs) { - super(); - this.rs = rs; - } - - @SuppressWarnings("unchecked") - public SortedSet<String> getStringListForVariable(String var){ - SortedSet<String> result = new TreeSet<String>(); - - //String s=ResultSetFormatter.asXMLString(this.rs); - List<ResultBinding> l = ResultSetFormatter.toList(this.rs); - - for (ResultBinding resultBinding : l) { - - result.add(resultBinding.get(var).toString()); - - } - - return result; - - } - - -} Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderRolesSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderRolesSPARQL.java 2008-05-21 13:53:46 UTC (rev 911) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderRolesSPARQL.java 2008-05-21 14:59:31 UTC (rev 912) @@ -1,18 +1,12 @@ package org.dllearner.utilities.examples; import java.util.SortedSet; -import java.util.TreeSet; import org.apache.log4j.Logger; import org.dllearner.core.ComponentManager; import org.dllearner.kb.sparql.Cache; import org.dllearner.kb.sparql.SparqlEndpoint; -import org.dllearner.kb.sparql.SparqlQuery; -import org.dllearner.utilities.datastructures.JenaResultSetConvenience; -import org.dllearner.utilities.datastructures.SetManipulation; - -import com.hp.hpl.jena.query.ResultSet; - +// keep this class it still needs to be worked in public class AutomaticExampleFinderRolesSPARQL { private static Logger logger = Logger @@ -24,7 +18,7 @@ private SortedSet<String> negExamples; private int roleLimit=1000; - + /* public AutomaticExampleFinderRolesSPARQL(SparqlEndpoint se){ this.c=new Cache("cachetemp"); this.se=se; @@ -119,7 +113,7 @@ + */ - } Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSKOSSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSKOSSPARQL.java 2008-05-21 13:53:46 UTC (rev 911) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSKOSSPARQL.java 2008-05-21 14:59:31 UTC (rev 912) @@ -7,13 +7,8 @@ import org.dllearner.core.ComponentManager; import org.dllearner.kb.sparql.Cache; import org.dllearner.kb.sparql.SparqlEndpoint; -import org.dllearner.kb.sparql.SparqlQuery; -import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; -import org.dllearner.utilities.datastructures.JenaResultSetConvenience; import org.dllearner.utilities.datastructures.SetManipulation; -import com.hp.hpl.jena.query.ResultSet; - public class AutomaticExampleFinderSKOSSPARQL { private static Logger logger = Logger @@ -35,8 +30,9 @@ negExamples = new TreeSet<String>(); } + @Deprecated public void initDBpediaSKOS(String concept, double percent, boolean useRelated,boolean useParallelClasses) { - dbpediaMakePositiveExamplesFromConcept( concept); + //dbpediaMakePositiveExamplesFromConcept( concept); SortedSet<String> keepForClean = new TreeSet<String>(); keepForClean.addAll(this.posExamples); totalSKOSset.addAll(this.posExamples); @@ -55,12 +51,12 @@ logger.debug("rest: "+rest.size()); if(useRelated) { - dbpediaMakeNegativeExamplesFromRelatedInstances(this.posExamples); + //dbpediaMakeNegativeExamplesFromRelatedInstances(this.posExamples); } if(useParallelClasses) { int limit = this.posExamples.size(); - makeNegativeExamplesFromClassesOfInstances(limit); + //makeNegativeExamplesFromClassesOfInstances(limit); } //clean negExamples.removeAll(keepForClean); @@ -98,16 +94,8 @@ - public SortedSet<String> dbpediaGetPosOnly(String concept, int limit){ - dbpediaMakePositiveExamplesFromConcept( concept); - return SetManipulation.fuzzyShrink(this.posExamples, limit); - } - public SortedSet<String> getPosOnly(String concept, int limit){ - makePositiveExamplesFromConcept( concept); - return SetManipulation.fuzzyShrink(this.posExamples, limit); - } - + /* private void dbpediaMakePositiveExamplesFromConcept(String concept){ logger.debug("making Positive Examples from Concept: "+concept); if(concept.contains("http://dbpedia.org/resource/Category:")) { @@ -118,14 +106,15 @@ .getStringListForVariable("subject"); } logger.debug("pos Example size: "+posExamples.size()); - } + }*/ + /* private void makePositiveExamplesFromConcept(String concept){ logger.debug("making Positive Examples from Concept: "+concept); this.posExamples = new JenaResultSetConvenience(queryConcept(concept,0)) .getStringListForVariable("subject"); logger.debug(" pos Example size: "+posExamples.size()); - } + }*/ @@ -145,60 +134,18 @@ - private void dbpediaMakeNegativeExamplesFromRelatedInstances(SortedSet<String> subject) { - logger.debug("making examples from related instances"); - for (String string : subject) { - dbpediaMakeNegativeExamplesFromRelatedInstances(string); - } - logger.debug(" negExample size: "+negExamples.size()); - } - private void makeNegativeExamplesFromRelatedInstances(SortedSet<String> subject, String namespace) { - logger.debug("making examples from related instances"); - for (String string : subject) { - makeNegativeExamplesFromRelatedInstances(string,namespace); - } - logger.debug(" negExample size: "+negExamples.size()); - } - /** * * @param subject * @return */ - private void dbpediaMakeNegativeExamplesFromRelatedInstances(String subject) { - // SortedSet<String> result = new TreeSet<String>(); - String query = "SELECT * WHERE { \n" + "<" + subject + "> " + "?p ?o. \n" - + "FILTER (REGEX(str(?o), 'http://dbpedia.org/resource/')).\n" - + "FILTER (!REGEX(str(?p), 'http://www.w3.org/2004/02/skos'))\n" - + "}"; - - String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); - ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); - JenaResultSetConvenience rsc = new JenaResultSetConvenience(rs); - this.negExamples.addAll(rsc.getStringListForVariable("o")); - - - } - private void makeNegativeExamplesFromRelatedInstances(String subject, String namespace) { - // SortedSet<String> result = new TreeSet<String>(); - String query = "SELECT * WHERE { \n" + "<" + subject + "> " + "?p ?o. \n" - + "FILTER (REGEX(str(?o), '"+namespace+"')).\n" - + "}"; - - String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); - ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); - JenaResultSetConvenience rsc = new JenaResultSetConvenience(rs); - this.negExamples.addAll(rsc.getStringListForVariable("o")); - - - } - + /* private void makeNegativeExamplesFromSuperClasses(String concept) { SortedSet<String> superClasses = new TreeSet<String>(); @@ -213,109 +160,14 @@ this.negExamples.addAll(rsc.getStringListForVariable("subject")); } logger.debug(" neg Example size: "+negExamples.size()); - } + }*/ - private void makeNegativeExamplesFromClassesOfInstances(int limit) { - logger.debug("making neg Examples from parallel classes"); - SortedSet<String> classes = new TreeSet<String>(); - //superClasses.add(concept.replace("\"", "")); - //logger.debug("before"+superClasses); - //superClasses = dbpediaGetSuperClasses( superClasses, 4); - //logger.debug("getting negExamples from "+superClasses.size()+" superclasses"); - JenaResultSetConvenience rsc; - ResultSet rs=null; - for (String instance : posExamples) { - //System.out.println(instance); - rs = getClassesForInstance(instance); - //System.out.println(ResultSetFormatter.asXMLString(rs)); - rsc = new JenaResultSetConvenience(rs); - classes.addAll(rsc.getStringListForVariable("subject")); - //System.out.println(classes); - } - logger.debug("getting negExamples from "+classes.size()+" parallel classes"); - for (String oneClass : classes) { - logger.debug(oneClass); - rsc = new JenaResultSetConvenience(queryConcept("\""+oneClass+"\"",limit)); - this.negExamples.addAll(rsc.getStringListForVariable("subject")); - } - logger.debug("neg Example size: "+negExamples.size()); - - } - - private SortedSet<String> getSuperClasses(SortedSet<String> superClasses, int depth) { - SortedSet<String> ret = new TreeSet<String>(); - SortedSet<String> tmpset = new TreeSet<String>(); - ret.addAll(superClasses); - //logger.debug(superClasses); - JenaResultSetConvenience rsc; - - String query = ""; - for (; depth != 0 ; depth--) { - for (String oneSuperClass : superClasses) { - - //tmp = oneSuperClass.replace("\"", ""); - query = "SELECT * WHERE { \n" + "<" + oneSuperClass + "> " - + "<http://www.w3.org/2000/01/rdf-schema#subClassOf> ?superclass. \n" - + "}"; - - String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); - ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); - rsc = new JenaResultSetConvenience(rs); - tmpset.addAll(rsc.getStringListForVariable("superclass")); - - } - ret.addAll(tmpset); - //logger.debug(ret); - superClasses.clear(); - superClasses.addAll(tmpset); - tmpset.clear(); - } - //logger.debug(concept); - //logger.debug(query); - return ret; - } - - - public ResultSet queryConcept(String concept,int limit) { - ResultSet rs = null; - try { - String query = SparqlQueryDescriptionConvertVisitor - .getSparqlQuery(concept,limit); - - SparqlQuery sq = new SparqlQuery(query, se); - String JSON = c.executeSparqlQuery(sq); - //System.out.println("JSON:\n"+JSON); - rs = SparqlQuery.JSONtoResultSet(JSON); - } catch (Exception e) { - e.printStackTrace(); - } - - return rs; - } - public SortedSet<String> queryConceptAsStringSet(String concept,int limit) { - ResultSet rs = null; - try { - String query = SparqlQueryDescriptionConvertVisitor - .getSparqlQuery(concept,limit); - - SparqlQuery sq = new SparqlQuery(query, se); - //System.out.println(query); - String JSON = c.executeSparqlQuery(sq); - //System.out.println("JSON:\n"+JSON); - rs = SparqlQuery.JSONtoResultSet(JSON); - - } catch (Exception e) { - e.printStackTrace(); - } - return new JenaResultSetConvenience(rs).getStringListForVariable("subject"); - - } - + /* public ResultSet dbpediaQuerySKOSConcept(String SKOSconcept,int limit) { if(limit==0)limit=99999; // @@ -337,31 +189,10 @@ } return rs; - } + }*/ - public ResultSet getClassesForInstance(String instance) { - ResultSet rs = null; - try { - - String query = "SELECT ?subject WHERE { \n " + - "<" + instance + ">"+ - " a " + - "?subject " + - "\n" + - "} LIMIT 200"; - SparqlQuery sq = new SparqlQuery(query, se); - //System.out.println(query); - String JSON = c.executeSparqlQuery(sq); - //System.out.println(JSON); - rs = SparqlQuery.JSONtoResultSet(JSON); + - } catch (Exception e) { - e.printStackTrace(); - } - - return rs; - } - public SortedSet<String> getPosExamples() { return posExamples; } Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSPARQLold.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSPARQLold.java 2008-05-21 13:53:46 UTC (rev 911) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSPARQLold.java 2008-05-21 14:59:31 UTC (rev 912) @@ -7,13 +7,7 @@ import org.dllearner.core.ComponentManager; import org.dllearner.kb.sparql.Cache; import org.dllearner.kb.sparql.SparqlEndpoint; -import org.dllearner.kb.sparql.SparqlQuery; -import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; -import org.dllearner.utilities.datastructures.JenaResultSetConvenience; -import org.dllearner.utilities.datastructures.SetManipulation; -import com.hp.hpl.jena.query.ResultSet; - public class AutomaticExampleFinderSPARQLold { private static Logger logger = Logger @@ -33,7 +27,7 @@ posExamples = new TreeSet<String>(); negExamples = new TreeSet<String>(); } - + /* public void initDBpedia(String concept, boolean useRelated, boolean useSuperclasses,boolean useParallelClasses, int poslimit, int neglimit) { dbpediaMakePositiveExamplesFromConcept( concept); SortedSet<String> keepForClean = new TreeSet<String>(); @@ -62,43 +56,21 @@ logger.debug("Finished examples for concept: "+concept); } - public void init(String concept, String namespace, boolean useRelated, boolean useSuperclasses,boolean useParallelClasses, int poslimit, int neglimit) { - makePositiveExamplesFromConcept( concept); - SortedSet<String> keepForClean = new TreeSet<String>(); - keepForClean.addAll(this.posExamples); - this.posExamples = SetManipulation.fuzzyShrink(this.posExamples, poslimit); - logger.trace("shrinking: pos Example size: "+posExamples.size()); - - if(useRelated) { - makeNegativeExamplesFromRelatedInstances(this.posExamples,namespace); - } - if(useSuperclasses) { - makeNegativeExamplesFromSuperClasses(concept); - } - if(useParallelClasses) { - makeNegativeExamplesFromClassesOfInstances(); - } - //clean - negExamples.removeAll(keepForClean); - logger.trace("neg Example size after cleaning: "+negExamples.size()); - this.negExamples = SetManipulation.fuzzyShrink(negExamples, neglimit); - logger.debug("pos Example size after shrinking: "+posExamples.size()); - logger.debug("neg Example size after shrinking: "+negExamples.size()); - logger.debug("Finished examples for concept: "+concept); - } + */ - + /* public SortedSet<String> dbpediaGetPosOnly(String concept, int limit){ dbpediaMakePositiveExamplesFromConcept( concept); return SetManipulation.fuzzyShrink(this.posExamples, limit); - } + }*/ - public SortedSet<String> getPosOnly(String concept, int limit){ + /*public SortedSet<String> getPosOnly(String concept, int limit){ makePositiveExamplesFromConcept( concept); return SetManipulation.fuzzyShrink(this.posExamples, limit); - } + }*/ + /* private void dbpediaMakePositiveExamplesFromConcept(String concept){ logger.debug("making Positive Examples from Concept: "+concept); if(concept.contains("http://dbpedia.org/resource/Category:")) { @@ -110,16 +82,12 @@ } logger.debug(" pos Example size: "+posExamples.size()); } + */ - private void makePositiveExamplesFromConcept(String concept){ - logger.debug("making Positive Examples from Concept: "+concept); - this.posExamples = new JenaResultSetConvenience(queryConcept(concept,0)) - .getStringListForVariable("subject"); - logger.debug(" pos Example size: "+posExamples.size()); - } + /*private void makePositiveExamplesFromConcept(String concept){ logger.debug("making Positive Examples from Concept: "+concept); if(concept.contains("http://dbpedia.org/resource/Category:")) { @@ -136,29 +104,11 @@ - private void dbpediaMakeNegativeExamplesFromRelatedInstances(SortedSet<String> subject) { - logger.debug("making examples from related instances"); - for (String string : subject) { - dbpediaMakeNegativeExamplesFromRelatedInstances(string); - } - logger.debug(" negExample size: "+negExamples.size()); - } - private void makeNegativeExamplesFromRelatedInstances(SortedSet<String> subject, String namespace) { - logger.debug("making examples from related instances"); - for (String string : subject) { - makeNegativeExamplesFromRelatedInstances(string,namespace); - } - logger.debug(" negExample size: "+negExamples.size()); - } - /** - * - * @param subject - * @return - */ - private void dbpediaMakeNegativeExamplesFromRelatedInstances(String subject) { + + /*private void dbpediaMakeNegativeExamplesFromRelatedInstances(String subject) { // SortedSet<String> result = new TreeSet<String>(); String query = "SELECT * WHERE { \n" + "<" + subject + "> " + "?p ?o. \n" @@ -172,8 +122,8 @@ this.negExamples.addAll(rsc.getStringListForVariable("o")); - } - + }*/ + /* private void makeNegativeExamplesFromRelatedInstances(String subject, String namespace) { // SortedSet<String> result = new TreeSet<String>(); @@ -187,27 +137,13 @@ this.negExamples.addAll(rsc.getStringListForVariable("o")); - } + }*/ - private void makeNegativeExamplesFromSuperClasses(String concept) { - - SortedSet<String> superClasses = new TreeSet<String>(); - superClasses.add(concept.replace("\"", "")); - //logger.debug("before"+superClasses); - superClasses = getSuperClasses( superClasses, 4); - logger.debug("making neg Examples from "+superClasses.size()+" superclasses"); - JenaResultSetConvenience rsc; - for (String oneSuperClass : superClasses) { - logger.debug(oneSuperClass); - rsc = new JenaResultSetConvenience(queryConcept("\""+oneSuperClass+"\"", limit)); - this.negExamples.addAll(rsc.getStringListForVariable("subject")); - } - logger.debug(" neg Example size: "+negExamples.size()); - } + /* private void makeNegativeExamplesFromClassesOfInstances() { logger.debug("making neg Examples from parallel classes"); SortedSet<String> classes = new TreeSet<String>(); @@ -233,107 +169,13 @@ } logger.debug("neg Example size: "+negExamples.size()); - } + }*/ - private SortedSet<String> getSuperClasses(SortedSet<String> superClasses, int depth) { - SortedSet<String> ret = new TreeSet<String>(); - SortedSet<String> tmpset = new TreeSet<String>(); - ret.addAll(superClasses); - //logger.debug(superClasses); - JenaResultSetConvenience rsc; - - String query = ""; - for (; depth != 0 ; depth--) { - for (String oneSuperClass : superClasses) { - - //tmp = oneSuperClass.replace("\"", ""); - query = "SELECT * WHERE { \n" + "<" + oneSuperClass + "> " - + "<http://www.w3.org/2000/01/rdf-schema#subClassOf> ?superclass. \n" - + "}"; - - String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); - ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); - rsc = new JenaResultSetConvenience(rs); - tmpset.addAll(rsc.getStringListForVariable("superclass")); - - } - ret.addAll(tmpset); - //logger.debug(ret); - superClasses.clear(); - superClasses.addAll(tmpset); - tmpset.clear(); - } - //logger.debug(concept); - //logger.debug(query); - return ret; - } - public ResultSet queryConcept(String concept,int limit) { - ResultSet rs = null; - try { - String query = SparqlQueryDescriptionConvertVisitor - .getSparqlQuery(concept,limit); - - SparqlQuery sq = new SparqlQuery(query, se); - String JSON = c.executeSparqlQuery(sq); - //System.out.println("JSON:\n"+JSON); - rs = SparqlQuery.JSONtoResultSet(JSON); - - } catch (Exception e) { - e.printStackTrace(); - } - - return rs; - } - public ResultSet dbpediaQuerySKOSConcept(String SKOSconcept,int limit) { - if(limit==0)limit=99999; - // - ResultSet rs = null; - try { - - String query = "SELECT * WHERE { \n " + - "?subject " + - "<http://www.w3.org/2004/02/skos/core#subject> " + - "<" + SKOSconcept + "> \n" + - "} LIMIT "+limit; - SparqlQuery sq = new SparqlQuery(query, se); - String JSON = c.executeSparqlQuery(sq); - //System.out.println(JSON); - rs = SparqlQuery.JSONtoResultSet(JSON); - } catch (Exception e) { - e.printStackTrace(); - } - - return rs; - } - - public ResultSet getClassesForInstance(String instance) { - ResultSet rs = null; - try { - - String query = "SELECT ?subject WHERE { \n " + - "<" + instance + ">"+ - " a " + - "?subject " + - "\n" + - "} LIMIT "+limit; - SparqlQuery sq = new SparqlQuery(query, se); - //System.out.println(query); - String JSON = c.executeSparqlQuery(sq); - //System.out.println(JSON); - rs = SparqlQuery.JSONtoResultSet(JSON); - - } catch (Exception e) { - e.printStackTrace(); - } - - return rs; - } - public SortedSet<String> getPosExamples() { return posExamples; } Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java 2008-05-21 13:53:46 UTC (rev 911) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java 2008-05-21 14:59:31 UTC (rev 912) @@ -1,21 +1,145 @@ package org.dllearner.utilities.examples; import java.util.SortedSet; +import java.util.TreeSet; +import org.apache.log4j.Logger; +import org.dllearner.core.ComponentManager; import org.dllearner.kb.sparql.Cache; import org.dllearner.kb.sparql.SparqlEndpoint; +import org.dllearner.kb.sparql.SparqlQuery; +import org.dllearner.utilities.datastructures.SetManipulation; +import com.hp.hpl.jena.query.ResultSet; + public class AutomaticNegativeExampleFinderSPARQL { + // CHECK + private static Logger logger = Logger.getLogger(ComponentManager.class); + + private SPARQLTasks sparqltasks; + + private SortedSet<String> fullPositiveSet; - private Cache c; - private SparqlEndpoint se; - private SortedSet<String> posExamples; - private SortedSet<String> negExamples; + //static boolean useRelated = false; + private SortedSet<String> fromRelated; + //static boolean useSuperClasses = false; + private SortedSet<String> fromSuperclasses; + //static boolean useParallelClasses = true; + private SortedSet<String> fromParallelClasses; - static boolean useRelated = false; - static boolean useSuperClasses = false; - static boolean useParallelClasses = true; static int poslimit = 10; static int neglimit = 20; + + // CHECK all vars needed + public AutomaticNegativeExampleFinderSPARQL( + SortedSet<String> fullPositiveSet, + SPARQLTasks st) { + super(); + this.fromParallelClasses = new TreeSet<String>(); + this.fromRelated = new TreeSet<String>(); + this.fromSuperclasses = new TreeSet<String>(); + + this.fullPositiveSet = fullPositiveSet; + this.sparqltasks = st; + + } + + + + public SortedSet<String> getNegativeExamples(int neglimit ) { + + SortedSet<String> negatives = new TreeSet<String>(); + negatives.addAll(fromParallelClasses); + negatives.addAll(fromRelated); + negatives.addAll(fromSuperclasses); + logger.debug("neg Example size before shrinking: " + negatives.size()); + negatives = SetManipulation.fuzzyShrink(negatives,neglimit); + logger.debug("neg Example size after shrinking: " + negatives.size()); + return negatives; + } + + // CHECK namespace + public void makeNegativeExamplesFromRelatedInstances(SortedSet<String> instances, + String namespace) { + logger.debug("making examples from related instances"); + for (String oneInstance : instances) { + makeNegativeExamplesFromRelatedInstances(oneInstance, namespace); + } + logger.debug("|-negExample size from related: " + fromRelated.size()); + } + + private void makeNegativeExamplesFromRelatedInstances(String oneInstance, String objectnamespace) { + // SortedSet<String> result = new TreeSet<String>(); + + String SPARQLquery = "SELECT * WHERE { \n" + "<" + oneInstance + "> " + "?p ?object. \n" + + "FILTER (REGEX(str(?object), '" + objectnamespace + "')).\n" + "}"; + + this.fromRelated.addAll(sparqltasks.queryAsSet(SPARQLquery, "object")); + this.fromRelated.removeAll(this.fullPositiveSet); + + } + + // QUALITY: weird function, best removed + public void dbpediaMakeNegativeExamplesFromRelatedInstances(String subject) { + // SortedSet<String> result = new TreeSet<String>(); + + String SPARQLquery = "SELECT * WHERE { \n" + "<" + subject + "> " + "?p ?o. \n" + + "FILTER (REGEX(str(?o), 'http://dbpedia.org/resource/')).\n" + + "FILTER (!REGEX(str(?p), 'http://www.w3.org/2004/02/skos'))\n" + "}"; + + this.fromRelated.addAll(sparqltasks.queryAsSet(SPARQLquery, "o")); + + } + + public void makeNegativeExamplesFromParallelClasses(SortedSet<String> positiveSet, int resultLimit){ + makeNegativeExamplesFromClassesOfInstances(positiveSet, resultLimit); + } + + public void makeNegativeExamplesFromClassesOfInstances(SortedSet<String> positiveSet, + int resultLimit) { + logger.debug("making neg Examples from parallel classes"); + SortedSet<String> classes = new TreeSet<String>(); + // superClasses.add(concept.replace("\"", "")); + // logger.debug("before"+superClasses); + // superClasses = dbpediaGetSuperClasses( superClasses, 4); + // logger.debug("getting negExamples from "+superClasses.size()+" + // superclasses"); + + for (String instance : positiveSet) { + classes.addAll(sparqltasks.getClassesForInstance(instance, resultLimit)); + } + logger.debug("getting negExamples from " + classes.size() + " parallel classes"); + for (String oneClass : classes) { + logger.debug(oneClass); + // rsc = new + // JenaResultSetConvenience(queryConcept("\""+oneClass+"\"",limit)); + this.fromParallelClasses.addAll(sparqltasks.retrieveInstancesForConcept("\"" + oneClass + + "\"", resultLimit)); + + } + + this.fromParallelClasses.removeAll(this.fullPositiveSet); + logger.debug("|-neg Example size from parallelclass: " + fromParallelClasses.size()); + + } + + public void makeNegativeExamplesFromSuperClasses(String concept, int resultLimit) { + + concept = concept.replaceAll("\"", ""); + // superClasses.add(concept.replace("\"", "")); + // logger.debug("before"+superClasses); + SortedSet<String> superClasses = sparqltasks.getSuperClasses(concept, 4); + logger.debug("making neg Examples from " + superClasses.size() + " superclasses"); + + for (String oneSuperClass : superClasses) { + logger.debug(oneSuperClass); + this.fromSuperclasses.addAll(sparqltasks.retrieveInstancesForConcept("\"" + + oneSuperClass + "\"", resultLimit)); + + } + this.fromSuperclasses.removeAll(this.fullPositiveSet); + logger.debug("|-neg Example from superclass: " + fromSuperclasses.size()); + } + } Added: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticPositiveExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticPositiveExampleFinderSPARQL.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticPositiveExampleFinderSPARQL.java 2008-05-21 14:59:31 UTC (rev 912) @@ -0,0 +1,59 @@ +package org.dllearner.utilities.examples; + +import java.util.SortedSet; +import java.util.TreeSet; + +import org.apache.log4j.Logger; +import org.dllearner.core.ComponentManager; +import org.dllearner.kb.sparql.Cache; +import org.dllearner.kb.sparql.SparqlEndpoint; + +public class AutomaticPositiveExampleFinderSPARQL { + + //CHECK + private static Logger logger = Logger + .getLogger(ComponentManager.class); + + + private SPARQLTasks sparqltasks; + + private SortedSet<String> posExamples; + + public AutomaticPositiveExampleFinderSPARQL(SPARQLTasks st) { + super(); + + this.posExamples = new TreeSet<String>(); + this.sparqltasks = st; + } + + //QUALITY resultsize is not accounted for + public void makePositiveExamplesFromConcept(String conceptKBSyntax){ + logger.debug("making Positive Examples from Concept: "+conceptKBSyntax); + this.posExamples = sparqltasks.retrieveInstancesForConcept(conceptKBSyntax, 0); + logger.debug(" pos Example size: "+posExamples.size()); + } + + + //QUALITY resultsize is not accounted for + public void makePositiveExamplesFromRoleAndObject(String role, String object){ + logger.debug("making Positive Examples from role: "+role+" and object: "+object); + this.posExamples = sparqltasks.retrieveDISTINCTSubjectsForRoleAndObject(role, object, 0); + logger.debug(" pos Example size: "+posExamples.size()); + } + + //QUALITY resultsize is not accounted for + public void makePositiveExamplesFromSKOSConcept(String SKOSConcept){ + logger.debug("making Positive Examples from SKOSConcept: "+SKOSConcept); + this.posExamples = sparqltasks.retrieveInstancesForSKOSConcept(SKOSConcept, 0); + logger.debug(" pos Example size: "+posExamples.size()); + } + + public SortedSet<String> getPosExamples() { + return posExamples; + } + + + + + +} Added: trunk/src/dl-learner/org/dllearner/utilities/examples/SPARQLTasks.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/SPARQLTasks.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/SPARQLTasks.java 2008-05-21 14:59:31 UTC (rev 912) @@ -0,0 +1,216 @@ +package org.dllearner.utilities.examples; + +import java.util.List; +import java.util.SortedSet; +import java.util.TreeSet; + +import org.dllearner.kb.sparql.Cache; +import org.dllearner.kb.sparql.SparqlEndpoint; +import org.dllearner.kb.sparql.SparqlQuery; +import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; + +import com.hp.hpl.jena.query.ResultSet; +import com.hp.hpl.jena.query.ResultSetFormatter; +import com.hp.hpl.jena.sparql.core.ResultBinding; + +public class SPARQLTasks { + + private Cache c; + private SparqlEndpoint se; + + public SPARQLTasks(Cache c, SparqlEndpoint se) { + super(); + this.c = c; + this.se = se; + } + + public SPARQLTasks( SparqlEndpoint se) { + super(); + this.c = null; + this.se = se; + } + + + + + /** + * QUALITY: doesn't seem optimal, check! + * get all superclasses up to a certain depth + * 1 means direct superclasses + * depth + * @param superClasses + * @param depth + * @return + */ + public SortedSet<String> getSuperClasses(String oneClass, int depth) { + SortedSet<String> superClasses = new TreeSet<String>(); + superClasses.add(oneClass); + SortedSet<String> ret = new TreeSet<String>(); + SortedSet<String> tmpset = new TreeSet<String>(); + //ret.addAll(superClasses); + //logger.debug(superClasses); + + + String SPARQLquery = ""; + for (; depth != 0 ; depth--) { + for (String oneSuperClass : superClasses) { + ... [truncated message content] |
From: <ku...@us...> - 2008-05-22 14:10:35
|
Revision: 921 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=921&view=rev Author: kurzum Date: 2008-05-22 07:10:08 -0700 (Thu, 22 May 2008) Log Message: ----------- added jamon Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java trunk/src/dl-learner/org/dllearner/scripts/SPARQLExtractionEvaluation.java trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticPositiveExampleFinderSPARQL.java trunk/src/dl-learner/org/dllearner/utilities/examples/SPARQLTasks.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/utilities/JamonTimeLogger.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-05-22 12:06:39 UTC (rev 920) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-05-22 14:10:08 UTC (rev 921) @@ -46,6 +46,7 @@ import org.dllearner.refinementoperators.RhoDRDown; import org.dllearner.utilities.Files; import org.dllearner.utilities.Helper; +import org.dllearner.utilities.JamonMonitorLogger; import org.dllearner.utilities.owl.ConceptComparator; import org.dllearner.utilities.owl.ConceptTransformation; @@ -279,6 +280,7 @@ public void start() { runtime=System.currentTimeMillis(); + JamonMonitorLogger.getTimeMonitor(ExampleBasedROLComponent.class, "totalLearningTime").start(); // TODO: write a JUnit test for this problem (long-lasting or infinite loops because // redundant children of a node are called recursively after when the node is extended // twice) @@ -432,9 +434,6 @@ // Anzahl Schleifendurchläufe loop++; - - - }//end while @@ -467,9 +466,13 @@ if(stop) logger.info("Algorithm stopped."); else - logger.info("Algorithm terminated succesfully."); + logger.info("Algorithm terminated succesfully."); + + JamonMonitorLogger.getTimeMonitor(ExampleBasedROLComponent.class, "totalLearningTime").stop(); } + + // we apply the operator recursively until all proper refinements up // to the maxmimum length are reached private void extendNodeProper(ExampleBasedNode node, int maxLength) { Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-05-22 12:06:39 UTC (rev 920) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-05-22 14:10:08 UTC (rev 921) @@ -32,7 +32,7 @@ import org.apache.log4j.Logger; import org.dllearner.core.KnowledgeSource; -import org.dllearner.utilities.statistics.Statistics; +import org.dllearner.utilities.JamonMonitorLogger; /** * SPARQL query cache to avoid possibly expensive multiple queries. The queries @@ -94,6 +94,10 @@ return c; } + public static String getDefaultCacheDir(){ + return "cache"; + } + /** * Constructor for the cache itself. * @@ -234,14 +238,21 @@ * @return Jena result set. */ public String executeSparqlQuery(SparqlQuery query) { + JamonMonitorLogger.getTimeMonitor(Cache.class, "TotalTimeExecuteSparqlQuery").start(); + JamonMonitorLogger.increaseCount(Cache.class, "TotalQueries"); - Statistics.increaseQuery(); + + //Statistics.increaseQuery(); + + JamonMonitorLogger.getTimeMonitor(Cache.class, "ReadTime").start(); String result = getCacheEntry(query.getQueryString()); + JamonMonitorLogger.getTimeMonitor(Cache.class, "ReadTime").stop(); + if (result != null) { logger.trace("got from cache"); - - Statistics.increaseCachedQuery(); - return result; + JamonMonitorLogger.increaseCount(Cache.class, "SuccessfulHits"); + //Statistics.increaseCachedQuery(); + //return result; } else { //SimpleClock sc = new SimpleClock(); query.send(); @@ -251,8 +262,11 @@ addToCache(query.getQueryString(), json); } else json=""; - return json; + logger.warn("empty result: "+query.getQueryString()); + //return json; } + JamonMonitorLogger.getTimeMonitor(Cache.class, "TotalTimeExecuteSparqlQuery").stop(); + return result; } public void setFreshnessInDays(int days){ Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-05-22 12:06:39 UTC (rev 920) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-05-22 14:10:08 UTC (rev 921) @@ -25,6 +25,7 @@ import org.apache.log4j.Logger; import org.dllearner.core.KnowledgeSource; +import org.dllearner.utilities.JamonMonitorLogger; import com.hp.hpl.jena.query.ResultSet; import com.hp.hpl.jena.query.ResultSetFactory; @@ -85,9 +86,11 @@ try{ //TODO remove after overnext Jena release HttpQuery.urlLimit = 3*1024 ; - //SimpleClock sc=new SimpleClock(); + + JamonMonitorLogger.getTimeMonitor(SparqlQuery.class, "httpTime").start(); rs = queryExecution.execSelect(); - //sc.printAndSet("rs to list"); + JamonMonitorLogger.getTimeMonitor(SparqlQuery.class, "httpTime").stop(); + logger.debug("query SPARQL server ["+extraDebugInfo+"], retrieved: "+rs.getResultVars()); json=SparqlQuery.getAsJSON(rs); Modified: trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java 2008-05-22 12:06:39 UTC (rev 920) +++ trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java 2008-05-22 14:10:08 UTC (rev 921) @@ -25,6 +25,7 @@ import org.dllearner.learningproblems.PosNegDefinitionLP; import org.dllearner.learningproblems.PosNegLP; import org.dllearner.reasoning.FastInstanceChecker; +import org.dllearner.utilities.JamonMonitorLogger; import org.dllearner.utilities.datastructures.SetManipulation; import org.dllearner.utilities.examples.AutomaticNegativeExampleFinderSPARQL; import org.dllearner.utilities.examples.AutomaticPositiveExampleFinderSPARQL; @@ -70,6 +71,7 @@ */ public static void main(String[] args) { System.out.println("Start"); + initLogger(); //parameters @@ -94,12 +96,13 @@ logger.debug("found nr of concepts: "+conceptresults.size()); for (Description oneConcept : conceptresults) { - s.evaluate(oneConcept, 1000); + //s.evaluate(oneConcept, 1000); } System.out.println("Finished"); + JamonMonitorLogger.printAll(); } @@ -283,6 +286,8 @@ apos.makePositiveExamplesFromSKOSConcept(SKOSConcept); fullPositiveSet = apos.getPosExamples(); + //System.exit(0); + int poslimit=(int)Math.round(percentOfSKOSSet*fullPositiveSet.size()); int neglimit=(int)Math.round(poslimit*negfactor); @@ -358,7 +363,7 @@ } if(randomizeCache) cm.applyConfigEntry(ks, "cacheDir","cache/"+System.currentTimeMillis()+""); - else {cm.applyConfigEntry(ks, "cacheDir",Cache.getDefaultCache());} + else {cm.applyConfigEntry(ks, "cacheDir",Cache.getDefaultCacheDir());} //LEARNINGALGORITHM cm.applyConfigEntry(la,"useAllConstructor",false); Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLExtractionEvaluation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLExtractionEvaluation.java 2008-05-22 12:06:39 UTC (rev 920) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLExtractionEvaluation.java 2008-05-22 14:10:08 UTC (rev 921) @@ -14,7 +14,6 @@ import org.dllearner.kb.sparql.Cache; import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlQuery; -import org.dllearner.utilities.examples.AutomaticExampleFinderSPARQLold; import org.dllearner.utilities.learn.LearnSparql; import org.dllearner.utilities.statistics.SimpleClock; import org.dllearner.utilities.statistics.Statistics; @@ -103,12 +102,12 @@ boolean closeAfterRecursion=true; System.out.println(oneConcept); - AutomaticExampleFinderSPARQLold ae= new AutomaticExampleFinderSPARQLold( se); + //AutomaticExampleFinderSPARQLold ae= new AutomaticExampleFinderSPARQLold( se); //ae.initDBpedia(oneConcept, useRelated, useSuperClasses,useParallelClasses, poslimit, neglimit); - posExamples = ae.getPosExamples(); - negExamples = ae.getNegExamples(); + //posExamples = ae.getPosExamples(); + //negExamples = ae.getNegExamples(); for(recursiondepth=0;recursiondepth<4;recursiondepth++) { Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-05-22 12:06:39 UTC (rev 920) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-05-22 14:10:08 UTC (rev 921) @@ -13,7 +13,6 @@ import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.kb.sparql.SparqlQuery; -import org.dllearner.utilities.examples.AutomaticExampleFinderSPARQLold; import org.dllearner.utilities.learn.ConfWriter; import org.dllearner.utilities.learn.LearnSparql; import org.dllearner.utilities.statistics.SimpleClock; @@ -23,6 +22,7 @@ public class SPARQLMassLearning { + static Cache c; static SparqlEndpoint se; private static Logger logger = Logger.getRootLogger(); @@ -182,7 +182,7 @@ boolean closeAfterRecursion=false; int numberOfTriples = 0; for (String oneConcept : concepts) { - AutomaticExampleFinderSPARQLold ae= new AutomaticExampleFinderSPARQLold( se); + //AutomaticExampleFinderSPARQLold ae= new AutomaticExampleFinderSPARQLold( se); useRelated = true; useSuperClasses = true; useParallelClasses = false; @@ -190,8 +190,8 @@ poslimit=10; neglimit=10; //ae.initDBpedia(concept, useRelated, useSuperClasses,useParallelClasses, poslimit, neglimit); - posExamples = ae.getPosExamples(); - negExamples = ae.getNegExamples(); + //posExamples = ae.getPosExamples(); + //negExamples = ae.getNegExamples(); /*String tmp = concepts.first().replace("http://dbpedia.org/resource/Category:", "").replace("\"",""); @@ -223,33 +223,7 @@ } - /*************************************************************************** - * *********************OLDCODE String - * conj="(\"http://dbpedia.org/class/yago/Person100007846\" AND - * \"http://dbpedia.org/class/yago/Head110162991\")"; - * - * - * concepts.add("EXISTS \"http://dbpedia.org/property/disambiguates\".TOP"); - * concepts.add("EXISTS - * \"http://dbpedia.org/property/successor\".\"http://dbpedia.org/class/yago/Person100007846\""); - * concepts.add("EXISTS \"http://dbpedia.org/property/successor\"."+conj); - * //concepts.add("ALL \"http://dbpedia.org/property/disambiguates\".TOP"); - * //concepts.add("ALL - * \"http://dbpedia.org/property/successor\".\"http://dbpedia.org/class/yago/Person100007846\""); - * concepts.add("\"http://dbpedia.org/class/yago/Person100007846\""); - * concepts.add(conj); - * concepts.add("(\"http://dbpedia.org/class/yago/Person100007846\" OR - * \"http://dbpedia.org/class/yago/Head110162991\")"); - * - * //concepts.add("NOT \"http://dbpedia.org/class/yago/Person100007846\""); - * - * for (String kbsyntax : concepts) { - * result.put(kbsyntax,queryConcept(kbsyntax)); } - * System.out.println("************************"); for (String string : - * result.keySet()) { System.out.println("KBSyntayString: "+string); - * System.out.println("Query:\n"+result.get(string).hasNext()); - * System.out.println("************************"); } - **************************************************************************/ + Copied: trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java (from rev 920, trunk/src/dl-learner/org/dllearner/utilities/JamonTimeLogger.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java 2008-05-22 14:10:08 UTC (rev 921) @@ -0,0 +1,101 @@ +package org.dllearner.utilities; + +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.SortedSet; +import java.util.TreeSet; + +import org.dllearner.algorithms.refexamples.ExampleBasedROLComponent; +import org.dllearner.kb.sparql.Cache; +import org.dllearner.kb.sparql.SparqlQuery; + +import com.jamonapi.Monitor; +import com.jamonapi.MonitorFactory; + +/** + * provides convenience functions for timelogs + * + */ +public class JamonMonitorLogger { + + + public static List<Monitor> getMonitorsSortedByLabel(){ + MonitorFactory mf=(MonitorFactory)MonitorFactory.getFactory(); + SortedSet<String> retMon = new TreeSet<String>(); + + @SuppressWarnings("unchecked") + Iterator<Monitor> it = mf.iterator(); + + while (it.hasNext()) { + Monitor monitor = (Monitor) it.next(); + retMon.add(monitor.getLabel()); + } + + LinkedList<Monitor> l=new LinkedList<Monitor>(); + + for (String label : retMon) { + l.add(MonitorFactory.getTimeMonitor(label)); + } + + return l; + } + + + + public static void printAll() { + List<Monitor> l= getMonitorsSortedByLabel(); + for (int i = 0; i < l.size(); i++) { + Monitor monitor = l.get(i); + System.out.println(monitor); + } + } + + + + + public static String getMonitorPrefix(Class clazz){ + String retval=""; + if (clazz == SparqlQuery.class) { + retval= "Sparql:"; + } else if (clazz == Cache.class) { + retval= "Sparql:"; + } else if (clazz == Cache.class) { + retval= "Sparql:"; + } else if (clazz == SparqlQuery.class) { + retval= "sparql:"; + } else if (clazz == SparqlQuery.class) { + retval= "sparql:"; + } else if (clazz == SparqlQuery.class) { + retval= "sparql:"; + } else if (clazz == SparqlQuery.class) { + retval= "sparql:"; + } else if (clazz == SparqlQuery.class) { + retval= "sparql:"; + } else if (clazz == SparqlQuery.class) { + retval= "sparql:"; + } else if (clazz == ExampleBasedROLComponent.class) { + retval= "Learning:"; + } else if (clazz == SparqlQuery.class) { + retval= "sparql:"; + } else { + retval= "undefined:"; + } + return retval+clazz.getSimpleName()+":"; + } + + public static Monitor getTimeMonitor(Class clazz, String label) { + + String labeltmp = getMonitorPrefix(clazz)+label; + return MonitorFactory.getTimeMonitor(labeltmp); + + } + + public static void increaseCount (Class clazz, String label) { + MonitorFactory.getMonitor(getMonitorPrefix(clazz)+label, "#").add(1.0); + } + + + + +} Deleted: trunk/src/dl-learner/org/dllearner/utilities/JamonTimeLogger.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/JamonTimeLogger.java 2008-05-22 12:06:39 UTC (rev 920) +++ trunk/src/dl-learner/org/dllearner/utilities/JamonTimeLogger.java 2008-05-22 14:10:08 UTC (rev 921) @@ -1,9 +0,0 @@ -package org.dllearner.utilities; - -/** - * provides convenience functions for timelogs - * - */ -public class JamonTimeLogger { - -} Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticPositiveExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticPositiveExampleFinderSPARQL.java 2008-05-22 12:06:39 UTC (rev 920) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticPositiveExampleFinderSPARQL.java 2008-05-22 14:10:08 UTC (rev 921) @@ -45,7 +45,7 @@ public void makePositiveExamplesFromSKOSConcept(String SKOSConcept){ logger.debug("making Positive Examples from SKOSConcept: "+SKOSConcept); this.posExamples = sparqltasks.retrieveInstancesForSKOSConcept(SKOSConcept, 0); - logger.debug(" pos Example size: "+posExamples.size()); + logger.debug("pos Example size: "+posExamples.size()); } public SortedSet<String> getPosExamples() { Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/SPARQLTasks.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/SPARQLTasks.java 2008-05-22 12:06:39 UTC (rev 920) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/SPARQLTasks.java 2008-05-22 14:10:08 UTC (rev 921) @@ -90,7 +90,7 @@ "?subject " + "<"+role+"> " + "<" + object + "> \n" + - "} LIMIT "+resultLimit; + "} "+limit(resultLimit); return queryAsSet(SPARQLquery, "subject"); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-05-23 17:12:47
|
Revision: 924 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=924&view=rev Author: kurzum Date: 2008-05-23 10:12:31 -0700 (Fri, 23 May 2008) Log Message: ----------- fixed some bugs, sparqlqueries working again, added some time statistics SKOS Script basically working Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/cli/Start.java trunk/src/dl-learner/org/dllearner/examples/KRKModular.java trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java trunk/src/dl-learner/org/dllearner/scripts/SPARQLExtractionEvaluation.java trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java trunk/src/dl-learner/org/dllearner/test/JenaHTTPTest.java trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderRolesSPARQL.java trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSKOSSPARQL.java trunk/src/dl-learner/org/dllearner/utilities/examples/SPARQLTasks.java Property Changed: ---------------- trunk/src/dl-learner/org/dllearner/test/ Modified: trunk/src/dl-learner/org/dllearner/cli/Start.java =================================================================== --- trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-05-23 10:03:01 UTC (rev 923) +++ trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-05-23 17:12:31 UTC (rev 924) @@ -84,6 +84,7 @@ import org.dllearner.reasoning.FastRetrievalReasoner; import org.dllearner.reasoning.OWLAPIReasoner; import org.dllearner.utilities.Helper; +import org.dllearner.utilities.JamonMonitorLogger; import org.dllearner.utilities.datastructures.Datastructures; import org.dllearner.utilities.datastructures.StringTuple; import org.dllearner.utilities.owl.ConceptComparator; @@ -134,6 +135,7 @@ Start start = null; start = new Start(file); start.start(inQueryMode); + JamonMonitorLogger.printAllSortedByLabel(); } /** Modified: trunk/src/dl-learner/org/dllearner/examples/KRKModular.java =================================================================== --- trunk/src/dl-learner/org/dllearner/examples/KRKModular.java 2008-05-23 10:03:01 UTC (rev 923) +++ trunk/src/dl-learner/org/dllearner/examples/KRKModular.java 2008-05-23 17:12:31 UTC (rev 924) @@ -364,7 +364,7 @@ } public static void initAllInstancesAndReasoners(){ - // Datei \xF6ffnen + // Datei oeffnen BufferedReader in = null; try { in = new BufferedReader(new FileReader(allData)); @@ -423,7 +423,7 @@ } public static void initAllInstancesWithoutReasoners(){ - // Datei \xF6ffnen + // Datei oeffnen BufferedReader in = null; try { in = new BufferedReader(new FileReader(allData)); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-05-23 10:03:01 UTC (rev 923) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-05-23 17:12:31 UTC (rev 924) @@ -260,9 +260,13 @@ String json = query.getResult(); if (json!=null){ addToCache(query.getQueryString(), json); + result=json; } - else json=""; - logger.warn("empty result: "+query.getQueryString()); + else { + json=""; + logger.warn(Cache.class.getSimpleName()+"empty result: "+query.getQueryString()); + } + //return json; } JamonMonitorLogger.getTimeMonitor(Cache.class, "TotalTimeExecuteSparqlQuery").stop(); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java 2008-05-23 10:03:01 UTC (rev 923) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java 2008-05-23 17:12:31 UTC (rev 924) @@ -132,6 +132,7 @@ ll.add(EndpointTalisBlogs()); ll.add(EndpointSWSchool()); ll.add(EndpointSparqlette()); + ll.add(EndpointLOCALDBpedia()); return ll; } Modified: trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java 2008-05-23 10:03:01 UTC (rev 923) +++ trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java 2008-05-23 17:12:31 UTC (rev 924) @@ -55,8 +55,8 @@ //examples static int sparqlResultSize=2000; - static double percentOfSKOSSet=0.7; - static double negfactor=0.3; + static double percentOfSKOSSet=0.2; + static double negfactor=1.0; SortedSet<String> posExamples = new TreeSet<String>(); SortedSet<String> fullPositiveSet = new TreeSet<String>(); SortedSet<String> fullminusposRest = new TreeSet<String>(); @@ -78,6 +78,7 @@ if(local){ url = "http://139.18.2.37:8890/sparql"; + //RBC sparqlTasks = new SPARQLTasks(Cache.getPersistentCache(),SparqlEndpoint.EndpointLOCALDBpedia()); }else{ url = "http://dbpedia.openlinksw.com:8890/sparql"; @@ -96,13 +97,14 @@ logger.debug("found nr of concepts: "+conceptresults.size()); for (Description oneConcept : conceptresults) { + //s.evaluate(oneConcept, 1000); } System.out.println("Finished"); - JamonMonitorLogger.printAll(); + JamonMonitorLogger.printAllSortedByLabel(); } Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLExtractionEvaluation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLExtractionEvaluation.java 2008-05-23 10:03:01 UTC (rev 923) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLExtractionEvaluation.java 2008-05-23 17:12:31 UTC (rev 924) @@ -188,6 +188,7 @@ String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); + if(rs==null); //JenaResultSetConvenience rsc = new JenaResultSetConvenience(rs); //return SetManipulation.fuzzyShrink(rsc.getStringListForVariable("concept"),number); return null; Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-05-23 10:03:01 UTC (rev 923) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-05-23 17:12:31 UTC (rev 924) @@ -175,12 +175,13 @@ //HashMap<String, String> result2 = new HashMap<String, String>(); //System.out.println(concepts.first()); //logger.setLevel(Level.TRACE); - String concept=concepts.first(); - int i=0; + + //String concept=concepts.first(); + //int i=0; Statistics.setCurrentLabel("0"); int recursiondepth=0; boolean closeAfterRecursion=false; - int numberOfTriples = 0; + //int numberOfTriples = 0; for (String oneConcept : concepts) { //AutomaticExampleFinderSPARQLold ae= new AutomaticExampleFinderSPARQLold( se); useRelated = true; @@ -257,6 +258,7 @@ String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); + if(rs==null); //JenaResultSetConvenience rsc = new JenaResultSetConvenience(rs); //return SetManipulation.fuzzyShrink(rsc.getStringListForVariable("concept"),number); return null; Property changes on: trunk/src/dl-learner/org/dllearner/test ___________________________________________________________________ Name: svn:ignore + JamonTest.java Modified: trunk/src/dl-learner/org/dllearner/test/JenaHTTPTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/JenaHTTPTest.java 2008-05-23 10:03:01 UTC (rev 923) +++ trunk/src/dl-learner/org/dllearner/test/JenaHTTPTest.java 2008-05-23 17:12:31 UTC (rev 924) @@ -103,6 +103,8 @@ return ((end-start)/1000); } + @Deprecated + @SuppressWarnings("all") private static double httpQuery(String query) throws Exception { char value[]={13,10}; Modified: trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java 2008-05-23 10:03:01 UTC (rev 923) +++ trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java 2008-05-23 17:12:31 UTC (rev 924) @@ -3,6 +3,7 @@ import java.util.HashSet; import java.util.LinkedList; import java.util.Set; +import java.util.SortedSet; import org.apache.log4j.ConsoleAppender; import org.apache.log4j.FileAppender; @@ -11,6 +12,7 @@ import org.apache.log4j.SimpleLayout; import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlKnowledgeSource; +import org.dllearner.utilities.JamonMonitorLogger; import org.dllearner.utilities.examples.SPARQLTasks; import org.dllearner.utilities.statistics.SimpleClock; @@ -29,8 +31,8 @@ logger.removeAllAppenders(); logger.addAppender(fileAppender); logger.addAppender(consoleAppender); - logger.setLevel(Level.DEBUG); - Logger.getLogger(SparqlKnowledgeSource.class).setLevel(Level.INFO); + logger.setLevel(Level.TRACE); + Logger.getLogger(SparqlKnowledgeSource.class).setLevel(Level.WARN); //SELECT DISTINCT ?c WHERE {[] a ?c }LIMIT 100 @@ -42,6 +44,7 @@ for (int j = 0; j < ll.size(); j++) { testEndPoint(ll.get(j)); + if(i==3)break; logger.info("finished "+i+" of "+ll.size()); i++; } @@ -54,7 +57,7 @@ } //set.add(SparqlEndpoint.); - + JamonMonitorLogger.printAllSortedByLabel(); } @@ -68,7 +71,8 @@ "LIMIT 100"; SPARQLquery ="SELECT DISTINCT ?c WHERE {[] a ?c }LIMIT 100"; - int i = new SPARQLTasks(se).queryAsSet(SPARQLquery, "c").size(); + SortedSet<String> tmp = new SPARQLTasks(se).queryAsSet(SPARQLquery, "c"); + int i =tmp.size(); working.add(sc.getAndSet("endpoint working: "+se.getURL()+" ("+((i==100)?"more than 100 concepts":"about "+i+" concepts")+" )")); Modified: trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java 2008-05-23 10:03:01 UTC (rev 923) +++ trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java 2008-05-23 17:12:31 UTC (rev 924) @@ -19,41 +19,47 @@ */ public class JamonMonitorLogger { - - public static List<Monitor> getMonitorsSortedByLabel(){ - MonitorFactory mf=(MonitorFactory)MonitorFactory.getFactory(); - SortedSet<String> retMon = new TreeSet<String>(); + public static List<Monitor> getMonitors(){ + //MonitorFactory mf=(MonitorFactory)MonitorFactory.getFactory(); + LinkedList<Monitor> l=new LinkedList<Monitor>(); + @SuppressWarnings("unchecked") - Iterator<Monitor> it = mf.iterator(); - + Iterator<Monitor> it = MonitorFactory.getFactory().iterator(); + //mf.iterator(); while (it.hasNext()) { Monitor monitor = (Monitor) it.next(); - retMon.add(monitor.getLabel()); + + l.add(monitor); } - LinkedList<Monitor> l=new LinkedList<Monitor>(); + - for (String label : retMon) { + /*for (String label : retMon) { l.add(MonitorFactory.getTimeMonitor(label)); - } + }*/ return l; } - public static void printAll() { - List<Monitor> l= getMonitorsSortedByLabel(); + public static void printAllSortedByLabel() { + List<Monitor> l= getMonitors(); + SortedSet<String> sset = new TreeSet<String>(); + for (int i = 0; i < l.size(); i++) { Monitor monitor = l.get(i); - System.out.println(monitor); + sset.add(monitor.toString()); } + for (String onemon : sset) { + System.out.println(onemon); + } } - + @SuppressWarnings("all") public static String getMonitorPrefix(Class clazz){ String retval=""; if (clazz == SparqlQuery.class) { @@ -84,6 +90,9 @@ return retval+clazz.getSimpleName()+":"; } + + + @SuppressWarnings("all") public static Monitor getTimeMonitor(Class clazz, String label) { String labeltmp = getMonitorPrefix(clazz)+label; @@ -91,8 +100,13 @@ } + @SuppressWarnings("all") public static void increaseCount (Class clazz, String label) { - MonitorFactory.getMonitor(getMonitorPrefix(clazz)+label, "#").add(1.0); + // MonitorFactory.getMonitor(getMonitorPrefix(clazz)+label, "#").add(1.0); + Monitor m = MonitorFactory.getMonitor(getMonitorPrefix(clazz)+label, "count"); + // System.out.println(m); + m.setHits(m.getHits()+1); + //System.out.println(m); } Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderRolesSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderRolesSPARQL.java 2008-05-23 10:03:01 UTC (rev 923) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderRolesSPARQL.java 2008-05-23 17:12:31 UTC (rev 924) @@ -1,23 +1,17 @@ package org.dllearner.utilities.examples; -import java.util.SortedSet; - -import org.apache.log4j.Logger; -import org.dllearner.core.ComponentManager; -import org.dllearner.kb.sparql.Cache; -import org.dllearner.kb.sparql.SparqlEndpoint; // keep this class it still needs to be worked in public class AutomaticExampleFinderRolesSPARQL { - private static Logger logger = Logger - .getLogger(ComponentManager.class); +// private static Logger logger = Logger +// .getLogger(ComponentManager.class); +// +// private Cache c; +// private SparqlEndpoint se; +// private SortedSet<String> posExamples; +// private SortedSet<String> negExamples; +// private int roleLimit=1000; - private Cache c; - private SparqlEndpoint se; - private SortedSet<String> posExamples; - private SortedSet<String> negExamples; - private int roleLimit=1000; - /* public AutomaticExampleFinderRolesSPARQL(SparqlEndpoint se){ this.c=new Cache("cachetemp"); Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSKOSSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSKOSSPARQL.java 2008-05-23 10:03:01 UTC (rev 923) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticExampleFinderSKOSSPARQL.java 2008-05-23 17:12:31 UTC (rev 924) @@ -30,6 +30,7 @@ negExamples = new TreeSet<String>(); } + @Deprecated public void initDBpediaSKOS(String concept, double percent, boolean useRelated,boolean useParallelClasses) { //dbpediaMakePositiveExamplesFromConcept( concept); @@ -55,7 +56,7 @@ } if(useParallelClasses) { - int limit = this.posExamples.size(); + //int limit = this.posExamples.size(); //makeNegativeExamplesFromClassesOfInstances(limit); } //clean Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/SPARQLTasks.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/SPARQLTasks.java 2008-05-23 10:03:01 UTC (rev 923) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/SPARQLTasks.java 2008-05-23 17:12:31 UTC (rev 924) @@ -4,6 +4,7 @@ import java.util.SortedSet; import java.util.TreeSet; +import org.apache.log4j.Logger; import org.dllearner.kb.sparql.Cache; import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlQuery; @@ -15,6 +16,9 @@ public class SPARQLTasks { + //CHECK + private static Logger logger = Logger + .getLogger(SPARQLTasks.class); private Cache c; private SparqlEndpoint se; @@ -78,6 +82,7 @@ /** + * QUALITY: buggy because role doesn't work sometimes * get subject with fixed role and object * @param role * @param object @@ -95,7 +100,7 @@ return queryAsSet(SPARQLquery, "subject"); } - public SortedSet<String> retrieveObjectsForSubjectAndRole(String subject, String role,int resultLimit) { + public SortedSet<String> retrieveObjectsForSubjectAndRole(String subject, String role, int resultLimit) { String SPARQLquery = "SELECT DISTINCT * WHERE { \n " + "<" +subject+ "> "+ @@ -113,8 +118,8 @@ * @return */ public SortedSet<String> retrieveInstancesForSKOSConcept(String SKOSconcept,int resultLimit) { - return retrieveDISTINCTSubjectsForRoleAndObject("http://www.w3.org/2004/02/skos/core#subject", - SKOSconcept, resultLimit); + return queryPatternAsSet("?subject", "?predicate", "<"+SKOSconcept+">", "subject", resultLimit); + //return retrieveDISTINCTSubjectsForRoleAndObject("http://www.w3.org/2004/02/skos/core#subject", } @@ -157,6 +162,27 @@ } + + /** + * query a pattern with a standard SPARQL query + * usage (?subject, ?predicate, <http:something> , subject ) + * @param subject + * @param predicate + * @param object + * @param var + * @return + */ + public SortedSet<String> queryPatternAsSet(String subject, String predicate, String object, String var, int resultLimit){ + String SPARQLquery = "SELECT ?subject WHERE { \n " + + " " + subject + + " " + predicate + + " " + object + + " \n" + + "} "+limit(resultLimit); + return queryAsSet( SPARQLquery, var); + } + + /** * little higher level, executes query ,returns all resources for a variable * @param SPARQLquery @@ -166,12 +192,13 @@ public SortedSet<String> queryAsSet(String SPARQLquery, String var){ ResultSet rs = null; try { - rs = SparqlQuery.JSONtoResultSet(query(SPARQLquery)); + String JSON = query(SPARQLquery); + rs = SparqlQuery.JSONtoResultSet(JSON); } catch (Exception e) { e.printStackTrace(); } - return getStringListForVariable(rs,"subject"); + return getStringListForVariable(rs,var); } @@ -183,8 +210,10 @@ public String query(String SPARQLquery){ if(c==null){ SparqlQuery sq = new SparqlQuery(SPARQLquery,se); + sq.extraDebugInfo+=se.getURL(); sq.send(); - return sq.getResult(); + String JSON = sq.getResult(); + return JSON; }else{ return c.executeSparqlQuery(new SparqlQuery(SPARQLquery,se)); } @@ -204,9 +233,7 @@ List<ResultBinding> l = ResultSetFormatter.toList(rs); for (ResultBinding resultBinding : l) { - result.add(resultBinding.get(var).toString()); - } return result; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-05-26 12:02:42
|
Revision: 928 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=928&view=rev Author: kurzum Date: 2008-05-26 05:02:10 -0700 (Mon, 26 May 2008) Log Message: ----------- moved sparqltasks to sparql Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticPositiveExampleFinderSPARQL.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java trunk/src/dl-learner/org/dllearner/utilities/examples/SPARQLTasks.java Copied: trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java (from rev 927, trunk/src/dl-learner/org/dllearner/utilities/examples/SPARQLTasks.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java 2008-05-26 12:02:10 UTC (rev 928) @@ -0,0 +1,273 @@ +package org.dllearner.kb.sparql; + +import java.util.List; +import java.util.SortedSet; +import java.util.TreeSet; + +import org.apache.log4j.Logger; + +import com.hp.hpl.jena.query.ResultSet; +import com.hp.hpl.jena.query.ResultSetFormatter; +import com.hp.hpl.jena.sparql.core.ResultBinding; + +public class SPARQLTasks { + + //CHECK + @SuppressWarnings("unused") + private static Logger logger = Logger + .getLogger(SPARQLTasks.class); + private Cache c; + private SparqlEndpoint se; + + public SPARQLTasks(Cache c, SparqlEndpoint se) { + super(); + this.c = c; + this.se = se; + } + + public SPARQLTasks( SparqlEndpoint se) { + super(); + this.c = null; + this.se = se; + } + + + + + /** + * QUALITY: doesn't seem optimal, check! + * get all superclasses up to a certain depth + * 1 means direct superclasses + * depth + * @param superClasses + * @param depth + * @return + */ + public SortedSet<String> getSuperClasses(String oneClass, int depth) { + SortedSet<String> superClasses = new TreeSet<String>(); + superClasses.add(oneClass); + SortedSet<String> ret = new TreeSet<String>(); + SortedSet<String> tmpset = new TreeSet<String>(); + //ret.addAll(superClasses); + //logger.debug(superClasses); + + + String SPARQLquery = ""; + for (; depth != 0 ; depth--) { + for (String oneSuperClass : superClasses) { + + //tmp = oneSuperClass.replace("\"", ""); + SPARQLquery = "SELECT * WHERE { \n" + "<" + oneSuperClass + "> " + + "<http://www.w3.org/2000/01/rdf-schema#subClassOf> ?superclass. \n" + + "}"; + + tmpset.addAll(queryAsSet(SPARQLquery, "superclass")); + + } + ret.addAll(tmpset); + //logger.debug(ret); + superClasses.clear(); + superClasses.addAll(tmpset); + tmpset.clear(); + } + //logger.debug(concept); + //logger.debug(query); + return ret; + } + + + + + /** + * QUALITY: buggy because role doesn't work sometimes + * get subject with fixed role and object + * @param role + * @param object + * @param resultLimit + * @return + */ + public SortedSet<String> retrieveDISTINCTSubjectsForRoleAndObject(String role, String object,int resultLimit) { + String SPARQLquery = + "SELECT DISTINCT * WHERE { \n " + + "?subject " + + "<"+role+"> " + + "<" + object + "> \n" + + "} "+limit(resultLimit); + + return queryAsSet(SPARQLquery, "subject"); + } + + public SortedSet<String> retrieveObjectsForSubjectAndRole(String subject, String role, int resultLimit) { + String SPARQLquery = + "SELECT DISTINCT * WHERE { \n " + + "<" +subject+ "> "+ + "<"+role+"> " + + " ?object \n" + + "} LIMIT "+resultLimit; + + return queryAsSet(SPARQLquery, "object"); + } + + /** + * all instances for a SKOS concept + * @param SKOSconcept + * @param resultLimit + * @return + */ + public SortedSet<String> retrieveInstancesForSKOSConcept(String SKOSconcept,int resultLimit) { + return queryPatternAsSet("?subject", "?predicate", "<"+SKOSconcept+">", "subject", resultLimit); + //return retrieveDISTINCTSubjectsForRoleAndObject("http://www.w3.org/2004/02/skos/core#subject", + } + + + + /** + * get all instances for a concept + * @param conceptKBSyntax + * @param sparqlResultLimit + * @return + */ + public SortedSet<String> retrieveInstancesForConcept (String conceptKBSyntax,int sparqlResultLimit) { + + String SPARQLquery = ""; + try{ + SPARQLquery = SparqlQueryDescriptionConvertVisitor + .getSparqlQuery(conceptKBSyntax,sparqlResultLimit); + }catch (Exception e) {e.printStackTrace();} + return queryAsSet(SPARQLquery, "subject"); + } + + + + + /** + * get all direct Classes of an instance + * @param instance + * @param resultLimit + * @return + */ + public SortedSet<String> getClassesForInstance(String instance, int resultLimit) { + + String SPARQLquery = "SELECT ?subject WHERE { \n " + + "<" + instance + ">"+ + " a " + + "?subject " + + "\n" + + "} "+limit(resultLimit); + + return queryAsSet(SPARQLquery, "subject"); + } + + + + public SortedSet<String> getDomain(String role,int resultLimit){ + + String SPARQLquery = "" + + "SELECT DISTINCT ?domain " + + "WHERE { \n" + + "?domain <" + role + "> " + " ?o. \n" + + "?domain a []\n." + + "FILTER (!isLiteral(?domain))." + + "}\n" + limit(resultLimit); + + return queryAsSet(SPARQLquery, "domain"); + + + } + + + public SortedSet<String> getRange(String role,int resultLimit){ + + String SPARQLquery = "" + + "SELECT DISTINCT ?range " + + "WHERE { \n" + + "?s <" + role + "> " + " ?range. \n" + + "?range a [].\n" + + "FILTER (!isLiteral(?range))." + + "}\n" + limit(resultLimit); + + return queryAsSet(SPARQLquery, "range"); + + } + + + + /** + * query a pattern with a standard SPARQL query + * usage (?subject, ?predicate, <http:something> , subject ) + * @param subject + * @param predicate + * @param object + * @param var + * @return + */ + public SortedSet<String> queryPatternAsSet(String subject, String predicate, String object, String var, int resultLimit){ + String SPARQLquery = "SELECT ?subject WHERE { \n " + + " " + subject + + " " + predicate + + " " + object + + " \n" + + "} "+limit(resultLimit); + return queryAsSet( SPARQLquery, var); + } + + + /** + * little higher level, executes query ,returns all resources for a variable + * @param SPARQLquery + * @param var + * @return + */ + public SortedSet<String> queryAsSet(String SPARQLquery, String var){ + ResultSet rs = null; + try { + String JSON = query(SPARQLquery); + rs = SparqlQuery.JSONtoResultSet(JSON); + + } catch (Exception e) { + e.printStackTrace(); + } + return getStringListForVariable(rs,var); + } + + + /** + * lowlevel, executes query returns JSON + * @param SPARQLquery + * @return + */ + public String query(String SPARQLquery){ + if(c==null){ + SparqlQuery sq = new SparqlQuery(SPARQLquery,se); + sq.extraDebugInfo+=se.getURL(); + sq.send(); + String JSON = sq.getResult(); + return JSON; + }else{ + return c.executeSparqlQuery(new SparqlQuery(SPARQLquery,se)); + } + + } + + private String limit(int resultLimit){ + if(resultLimit>0)return " LIMIT "+resultLimit; + return ""; + } + + + public static SortedSet<String> getStringListForVariable(ResultSet rs, String var){ + SortedSet<String> result = new TreeSet<String>(); + + //String s=ResultSetFormatter.asXMLString(this.rs); + @SuppressWarnings("unchecked") + List<ResultBinding> l = ResultSetFormatter.toList(rs); + + for (ResultBinding resultBinding : l) { + result.add(resultBinding.get(var).toString()); + } + + return result; + + } + +} Modified: trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java 2008-05-26 10:37:56 UTC (rev 927) +++ trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java 2008-05-26 12:02:10 UTC (rev 928) @@ -20,6 +20,7 @@ import org.dllearner.core.ReasoningService; import org.dllearner.core.owl.Description; import org.dllearner.kb.sparql.Cache; +import org.dllearner.kb.sparql.SPARQLTasks; import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.learningproblems.PosNegDefinitionLP; @@ -29,7 +30,6 @@ import org.dllearner.utilities.datastructures.SetManipulation; import org.dllearner.utilities.examples.AutomaticNegativeExampleFinderSPARQL; import org.dllearner.utilities.examples.AutomaticPositiveExampleFinderSPARQL; -import org.dllearner.utilities.examples.SPARQLTasks; public class SKOS7030 { Modified: trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java 2008-05-26 10:37:56 UTC (rev 927) +++ trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java 2008-05-26 12:02:10 UTC (rev 928) @@ -10,10 +10,10 @@ import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.SimpleLayout; +import org.dllearner.kb.sparql.SPARQLTasks; import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.utilities.JamonMonitorLogger; -import org.dllearner.utilities.examples.SPARQLTasks; import org.dllearner.utilities.statistics.SimpleClock; public class SparqlEndpointTest { Deleted: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java 2008-05-26 10:37:56 UTC (rev 927) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java 2008-05-26 12:02:10 UTC (rev 928) @@ -1,152 +0,0 @@ -package org.dllearner.utilities.examples; - -import java.util.SortedSet; -import java.util.TreeSet; - -import org.apache.log4j.Logger; -import org.dllearner.core.ComponentManager; -import org.dllearner.utilities.datastructures.SetManipulation; - -public class AutomaticNegativeExampleFinderSPARQL { - - // CHECK - private static Logger logger = Logger.getLogger(ComponentManager.class); - - private SPARQLTasks sparqltasks; - - private SortedSet<String> fullPositiveSet; - - private SortedSet<String> fromRelated = new TreeSet<String>(); - private SortedSet<String> fromSuperclasses = new TreeSet<String>();; - private SortedSet<String> fromParallelClasses = new TreeSet<String>();; - private SortedSet<String> fromDomain = new TreeSet<String>();; - private SortedSet<String> fromRange = new TreeSet<String>();; - - static int poslimit = 10; - static int neglimit = 20; - - // CHECK separate posexamples and fullposset - public AutomaticNegativeExampleFinderSPARQL( - SortedSet<String> fullPositiveSet, - SPARQLTasks st) { - super(); - this.fullPositiveSet = fullPositiveSet; - this.sparqltasks = st; - - } - - - - public SortedSet<String> getNegativeExamples(int neglimit ) { - - SortedSet<String> negatives = new TreeSet<String>(); - negatives.addAll(fromParallelClasses); - negatives.addAll(fromRelated); - negatives.addAll(fromSuperclasses); - logger.debug("neg Example size before shrinking: " + negatives.size()); - negatives = SetManipulation.fuzzyShrink(negatives,neglimit); - logger.debug("neg Example size after shrinking: " + negatives.size()); - return negatives; - } - - // CHECK namespace - public void makeNegativeExamplesFromRelatedInstances(SortedSet<String> instances, - String namespace) { - logger.debug("making examples from related instances"); - for (String oneInstance : instances) { - makeNegativeExamplesFromRelatedInstances(oneInstance, namespace); - } - logger.debug("|-negExample size from related: " + fromRelated.size()); - } - - private void makeNegativeExamplesFromRelatedInstances(String oneInstance, String objectnamespace) { - // SortedSet<String> result = new TreeSet<String>(); - - String SPARQLquery = "SELECT * WHERE { \n" + "<" + oneInstance + "> " + "?p ?object. \n" - + "FILTER (REGEX(str(?object), '" + objectnamespace + "')).\n" + "}"; - - this.fromRelated.addAll(sparqltasks.queryAsSet(SPARQLquery, "object")); - this.fromRelated.removeAll(this.fullPositiveSet); - - } - - // QUALITY: keep a while may still be needed - /*public void dbpediaMakeNegativeExamplesFromRelatedInstances(String subject) { - // SortedSet<String> result = new TreeSet<String>(); - - String SPARQLquery = "SELECT * WHERE { \n" + "<" + subject + "> " + "?p ?o. \n" - + "FILTER (REGEX(str(?o), 'http://dbpedia.org/resource/')).\n" - + "FILTER (!REGEX(str(?p), 'http://www.w3.org/2004/02/skos'))\n" + "}"; - - this.fromRelated.addAll(sparqltasks.queryAsSet(SPARQLquery, "o")); - - }*/ - - public void makeNegativeExamplesFromParallelClasses(SortedSet<String> positiveSet, int resultLimit){ - makeNegativeExamplesFromClassesOfInstances(positiveSet, resultLimit); - } - - public void makeNegativeExamplesFromClassesOfInstances(SortedSet<String> positiveSet, - int resultLimit) { - logger.debug("making neg Examples from parallel classes"); - SortedSet<String> classes = new TreeSet<String>(); - // superClasses.add(concept.replace("\"", "")); - // logger.debug("before"+superClasses); - // superClasses = dbpediaGetSuperClasses( superClasses, 4); - // logger.debug("getting negExamples from "+superClasses.size()+" - // superclasses"); - - for (String instance : positiveSet) { - classes.addAll(sparqltasks.getClassesForInstance(instance, resultLimit)); - } - logger.debug("getting negExamples from " + classes.size() + " parallel classes"); - for (String oneClass : classes) { - logger.debug(oneClass); - // rsc = new - // JenaResultSetConvenience(queryConcept("\""+oneClass+"\"",limit)); - this.fromParallelClasses.addAll(sparqltasks.retrieveInstancesForConcept("\"" + oneClass - + "\"", resultLimit)); - - } - - this.fromParallelClasses.removeAll(this.fullPositiveSet); - logger.debug("|-neg Example size from parallelclass: " + fromParallelClasses.size()); - - } - - public void makeNegativeExamplesFromSuperClasses(String concept, int resultLimit) { - - concept = concept.replaceAll("\"", ""); - // superClasses.add(concept.replace("\"", "")); - // logger.debug("before"+superClasses); - SortedSet<String> superClasses = sparqltasks.getSuperClasses(concept, 4); - logger.debug("making neg Examples from " + superClasses.size() + " superclasses"); - - for (String oneSuperClass : superClasses) { - logger.debug(oneSuperClass); - this.fromSuperclasses.addAll(sparqltasks.retrieveInstancesForConcept("\"" - + oneSuperClass + "\"", resultLimit)); - - } - this.fromSuperclasses.removeAll(this.fullPositiveSet); - logger.debug("|-neg Example from superclass: " + fromSuperclasses.size()); - } - - @SuppressWarnings("unused") - private void makeNegativeExamplesFromDomain(String role, int resultLimit){ - logger.debug("making Negative Examples from Domain of : "+role); - this.fromDomain.addAll(sparqltasks.getDomain(role, resultLimit)); - this.fromDomain.removeAll(this.fullPositiveSet); - logger.debug("|-neg Example size from Domain: "+this.fromDomain.size()); - } - - @SuppressWarnings("unused") - private void makeNegativeExamplesFromRange(String role, int resultLimit){ - logger.debug("making Negative Examples from Range of : "+role); - this.fromRange.addAll(sparqltasks.getRange(role, resultLimit)); - this.fromRange.removeAll(this.fullPositiveSet); - logger.debug("|-neg Example size from Range: "+this.fromRange.size()); - } - - -} Added: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java 2008-05-26 12:02:10 UTC (rev 928) @@ -0,0 +1,153 @@ +package org.dllearner.utilities.examples; + +import java.util.SortedSet; +import java.util.TreeSet; + +import org.apache.log4j.Logger; +import org.dllearner.core.ComponentManager; +import org.dllearner.kb.sparql.SPARQLTasks; +import org.dllearner.utilities.datastructures.SetManipulation; + +public class AutomaticNegativeExampleFinderSPARQL { + + // CHECK + private static Logger logger = Logger.getLogger(ComponentManager.class); + + private SPARQLTasks sparqltasks; + + private SortedSet<String> fullPositiveSet; + + private SortedSet<String> fromRelated = new TreeSet<String>(); + private SortedSet<String> fromSuperclasses = new TreeSet<String>();; + private SortedSet<String> fromParallelClasses = new TreeSet<String>();; + private SortedSet<String> fromDomain = new TreeSet<String>();; + private SortedSet<String> fromRange = new TreeSet<String>();; + + static int poslimit = 10; + static int neglimit = 20; + + // CHECK separate posexamples and fullposset + public AutomaticNegativeExampleFinderSPARQL( + SortedSet<String> fullPositiveSet, + SPARQLTasks st) { + super(); + this.fullPositiveSet = fullPositiveSet; + this.sparqltasks = st; + + } + + + + public SortedSet<String> getNegativeExamples(int neglimit ) { + + SortedSet<String> negatives = new TreeSet<String>(); + negatives.addAll(fromParallelClasses); + negatives.addAll(fromRelated); + negatives.addAll(fromSuperclasses); + logger.debug("neg Example size before shrinking: " + negatives.size()); + negatives = SetManipulation.fuzzyShrink(negatives,neglimit); + logger.debug("neg Example size after shrinking: " + negatives.size()); + return negatives; + } + + // CHECK namespace + public void makeNegativeExamplesFromRelatedInstances(SortedSet<String> instances, + String namespace) { + logger.debug("making examples from related instances"); + for (String oneInstance : instances) { + makeNegativeExamplesFromRelatedInstances(oneInstance, namespace); + } + logger.debug("|-negExample size from related: " + fromRelated.size()); + } + + private void makeNegativeExamplesFromRelatedInstances(String oneInstance, String objectnamespace) { + // SortedSet<String> result = new TreeSet<String>(); + + String SPARQLquery = "SELECT * WHERE { \n" + "<" + oneInstance + "> " + "?p ?object. \n" + + "FILTER (REGEX(str(?object), '" + objectnamespace + "')).\n" + "}"; + + this.fromRelated.addAll(sparqltasks.queryAsSet(SPARQLquery, "object")); + this.fromRelated.removeAll(this.fullPositiveSet); + + } + + // QUALITY: keep a while may still be needed + /*public void dbpediaMakeNegativeExamplesFromRelatedInstances(String subject) { + // SortedSet<String> result = new TreeSet<String>(); + + String SPARQLquery = "SELECT * WHERE { \n" + "<" + subject + "> " + "?p ?o. \n" + + "FILTER (REGEX(str(?o), 'http://dbpedia.org/resource/')).\n" + + "FILTER (!REGEX(str(?p), 'http://www.w3.org/2004/02/skos'))\n" + "}"; + + this.fromRelated.addAll(sparqltasks.queryAsSet(SPARQLquery, "o")); + + }*/ + + public void makeNegativeExamplesFromParallelClasses(SortedSet<String> positiveSet, int resultLimit){ + makeNegativeExamplesFromClassesOfInstances(positiveSet, resultLimit); + } + + public void makeNegativeExamplesFromClassesOfInstances(SortedSet<String> positiveSet, + int resultLimit) { + logger.debug("making neg Examples from parallel classes"); + SortedSet<String> classes = new TreeSet<String>(); + // superClasses.add(concept.replace("\"", "")); + // logger.debug("before"+superClasses); + // superClasses = dbpediaGetSuperClasses( superClasses, 4); + // logger.debug("getting negExamples from "+superClasses.size()+" + // superclasses"); + + for (String instance : positiveSet) { + classes.addAll(sparqltasks.getClassesForInstance(instance, resultLimit)); + } + logger.debug("getting negExamples from " + classes.size() + " parallel classes"); + for (String oneClass : classes) { + logger.debug(oneClass); + // rsc = new + // JenaResultSetConvenience(queryConcept("\""+oneClass+"\"",limit)); + this.fromParallelClasses.addAll(sparqltasks.retrieveInstancesForConcept("\"" + oneClass + + "\"", resultLimit)); + + } + + this.fromParallelClasses.removeAll(this.fullPositiveSet); + logger.debug("|-neg Example size from parallelclass: " + fromParallelClasses.size()); + + } + + public void makeNegativeExamplesFromSuperClasses(String concept, int resultLimit) { + + concept = concept.replaceAll("\"", ""); + // superClasses.add(concept.replace("\"", "")); + // logger.debug("before"+superClasses); + SortedSet<String> superClasses = sparqltasks.getSuperClasses(concept, 4); + logger.debug("making neg Examples from " + superClasses.size() + " superclasses"); + + for (String oneSuperClass : superClasses) { + logger.debug(oneSuperClass); + this.fromSuperclasses.addAll(sparqltasks.retrieveInstancesForConcept("\"" + + oneSuperClass + "\"", resultLimit)); + + } + this.fromSuperclasses.removeAll(this.fullPositiveSet); + logger.debug("|-neg Example from superclass: " + fromSuperclasses.size()); + } + + @SuppressWarnings("unused") + private void makeNegativeExamplesFromDomain(String role, int resultLimit){ + logger.debug("making Negative Examples from Domain of : "+role); + this.fromDomain.addAll(sparqltasks.getDomain(role, resultLimit)); + this.fromDomain.removeAll(this.fullPositiveSet); + logger.debug("|-neg Example size from Domain: "+this.fromDomain.size()); + } + + @SuppressWarnings("unused") + private void makeNegativeExamplesFromRange(String role, int resultLimit){ + logger.debug("making Negative Examples from Range of : "+role); + this.fromRange.addAll(sparqltasks.getRange(role, resultLimit)); + this.fromRange.removeAll(this.fullPositiveSet); + logger.debug("|-neg Example size from Range: "+this.fromRange.size()); + } + + +} Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticPositiveExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticPositiveExampleFinderSPARQL.java 2008-05-26 10:37:56 UTC (rev 927) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticPositiveExampleFinderSPARQL.java 2008-05-26 12:02:10 UTC (rev 928) @@ -5,6 +5,7 @@ import org.apache.log4j.Logger; import org.dllearner.core.ComponentManager; +import org.dllearner.kb.sparql.SPARQLTasks; public class AutomaticPositiveExampleFinderSPARQL { Deleted: trunk/src/dl-learner/org/dllearner/utilities/examples/SPARQLTasks.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/SPARQLTasks.java 2008-05-26 10:37:56 UTC (rev 927) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/SPARQLTasks.java 2008-05-26 12:02:10 UTC (rev 928) @@ -1,277 +0,0 @@ -package org.dllearner.utilities.examples; - -import java.util.List; -import java.util.SortedSet; -import java.util.TreeSet; - -import org.apache.log4j.Logger; -import org.dllearner.kb.sparql.Cache; -import org.dllearner.kb.sparql.SparqlEndpoint; -import org.dllearner.kb.sparql.SparqlQuery; -import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; - -import com.hp.hpl.jena.query.ResultSet; -import com.hp.hpl.jena.query.ResultSetFormatter; -import com.hp.hpl.jena.sparql.core.ResultBinding; - -public class SPARQLTasks { - - //CHECK - @SuppressWarnings("unused") - private static Logger logger = Logger - .getLogger(SPARQLTasks.class); - private Cache c; - private SparqlEndpoint se; - - public SPARQLTasks(Cache c, SparqlEndpoint se) { - super(); - this.c = c; - this.se = se; - } - - public SPARQLTasks( SparqlEndpoint se) { - super(); - this.c = null; - this.se = se; - } - - - - - /** - * QUALITY: doesn't seem optimal, check! - * get all superclasses up to a certain depth - * 1 means direct superclasses - * depth - * @param superClasses - * @param depth - * @return - */ - public SortedSet<String> getSuperClasses(String oneClass, int depth) { - SortedSet<String> superClasses = new TreeSet<String>(); - superClasses.add(oneClass); - SortedSet<String> ret = new TreeSet<String>(); - SortedSet<String> tmpset = new TreeSet<String>(); - //ret.addAll(superClasses); - //logger.debug(superClasses); - - - String SPARQLquery = ""; - for (; depth != 0 ; depth--) { - for (String oneSuperClass : superClasses) { - - //tmp = oneSuperClass.replace("\"", ""); - SPARQLquery = "SELECT * WHERE { \n" + "<" + oneSuperClass + "> " - + "<http://www.w3.org/2000/01/rdf-schema#subClassOf> ?superclass. \n" - + "}"; - - tmpset.addAll(queryAsSet(SPARQLquery, "superclass")); - - } - ret.addAll(tmpset); - //logger.debug(ret); - superClasses.clear(); - superClasses.addAll(tmpset); - tmpset.clear(); - } - //logger.debug(concept); - //logger.debug(query); - return ret; - } - - - - - /** - * QUALITY: buggy because role doesn't work sometimes - * get subject with fixed role and object - * @param role - * @param object - * @param resultLimit - * @return - */ - public SortedSet<String> retrieveDISTINCTSubjectsForRoleAndObject(String role, String object,int resultLimit) { - String SPARQLquery = - "SELECT DISTINCT * WHERE { \n " + - "?subject " + - "<"+role+"> " + - "<" + object + "> \n" + - "} "+limit(resultLimit); - - return queryAsSet(SPARQLquery, "subject"); - } - - public SortedSet<String> retrieveObjectsForSubjectAndRole(String subject, String role, int resultLimit) { - String SPARQLquery = - "SELECT DISTINCT * WHERE { \n " + - "<" +subject+ "> "+ - "<"+role+"> " + - " ?object \n" + - "} LIMIT "+resultLimit; - - return queryAsSet(SPARQLquery, "object"); - } - - /** - * all instances for a SKOS concept - * @param SKOSconcept - * @param resultLimit - * @return - */ - public SortedSet<String> retrieveInstancesForSKOSConcept(String SKOSconcept,int resultLimit) { - return queryPatternAsSet("?subject", "?predicate", "<"+SKOSconcept+">", "subject", resultLimit); - //return retrieveDISTINCTSubjectsForRoleAndObject("http://www.w3.org/2004/02/skos/core#subject", - } - - - - /** - * get all instances for a concept - * @param conceptKBSyntax - * @param sparqlResultLimit - * @return - */ - public SortedSet<String> retrieveInstancesForConcept (String conceptKBSyntax,int sparqlResultLimit) { - - String SPARQLquery = ""; - try{ - SPARQLquery = SparqlQueryDescriptionConvertVisitor - .getSparqlQuery(conceptKBSyntax,sparqlResultLimit); - }catch (Exception e) {e.printStackTrace();} - return queryAsSet(SPARQLquery, "subject"); - } - - - - - /** - * get all direct Classes of an instance - * @param instance - * @param resultLimit - * @return - */ - public SortedSet<String> getClassesForInstance(String instance, int resultLimit) { - - String SPARQLquery = "SELECT ?subject WHERE { \n " + - "<" + instance + ">"+ - " a " + - "?subject " + - "\n" + - "} "+limit(resultLimit); - - return queryAsSet(SPARQLquery, "subject"); - } - - - - public SortedSet<String> getDomain(String role,int resultLimit){ - - String SPARQLquery = "" + - "SELECT DISTINCT ?domain " + - "WHERE { \n" + - "?domain <" + role + "> " + " ?o. \n" + - "?domain a []\n." + - "FILTER (!isLiteral(?domain))." + - "}\n" + limit(resultLimit); - - return queryAsSet(SPARQLquery, "domain"); - - - } - - - public SortedSet<String> getRange(String role,int resultLimit){ - - String SPARQLquery = "" + - "SELECT DISTINCT ?range " + - "WHERE { \n" + - "?s <" + role + "> " + " ?range. \n" + - "?range a [].\n" + - "FILTER (!isLiteral(?range))." + - "}\n" + limit(resultLimit); - - return queryAsSet(SPARQLquery, "range"); - - } - - - - /** - * query a pattern with a standard SPARQL query - * usage (?subject, ?predicate, <http:something> , subject ) - * @param subject - * @param predicate - * @param object - * @param var - * @return - */ - public SortedSet<String> queryPatternAsSet(String subject, String predicate, String object, String var, int resultLimit){ - String SPARQLquery = "SELECT ?subject WHERE { \n " + - " " + subject + - " " + predicate + - " " + object + - " \n" + - "} "+limit(resultLimit); - return queryAsSet( SPARQLquery, var); - } - - - /** - * little higher level, executes query ,returns all resources for a variable - * @param SPARQLquery - * @param var - * @return - */ - public SortedSet<String> queryAsSet(String SPARQLquery, String var){ - ResultSet rs = null; - try { - String JSON = query(SPARQLquery); - rs = SparqlQuery.JSONtoResultSet(JSON); - - } catch (Exception e) { - e.printStackTrace(); - } - return getStringListForVariable(rs,var); - } - - - /** - * lowlevel, executes query returns JSON - * @param SPARQLquery - * @return - */ - public String query(String SPARQLquery){ - if(c==null){ - SparqlQuery sq = new SparqlQuery(SPARQLquery,se); - sq.extraDebugInfo+=se.getURL(); - sq.send(); - String JSON = sq.getResult(); - return JSON; - }else{ - return c.executeSparqlQuery(new SparqlQuery(SPARQLquery,se)); - } - - } - - private String limit(int resultLimit){ - if(resultLimit>0)return " LIMIT "+resultLimit; - return ""; - } - - - public static SortedSet<String> getStringListForVariable(ResultSet rs, String var){ - SortedSet<String> result = new TreeSet<String>(); - - //String s=ResultSetFormatter.asXMLString(this.rs); - @SuppressWarnings("unchecked") - List<ResultBinding> l = ResultSetFormatter.toList(rs); - - for (ResultBinding resultBinding : l) { - result.add(resultBinding.get(var).toString()); - } - - return result; - - } - -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-05-26 14:48:07
|
Revision: 929 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=929&view=rev Author: kurzum Date: 2008-05-26 07:48:00 -0700 (Mon, 26 May 2008) Log Message: ----------- intermediate Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertRDFS.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticPositiveExampleFinderSPARQL.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/utilities/datastructures/ResultConceptSorter.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/scripts/ResultCompare.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java 2008-05-26 12:02:10 UTC (rev 928) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java 2008-05-26 14:48:00 UTC (rev 929) @@ -1,5 +1,6 @@ package org.dllearner.kb.sparql; +import java.util.LinkedList; import java.util.List; import java.util.SortedSet; import java.util.TreeSet; @@ -12,10 +13,10 @@ public class SPARQLTasks { - //CHECK - @SuppressWarnings("unused") + //@SuppressWarnings("unused") + //LOGGER: SPARQLTasks private static Logger logger = Logger - .getLogger(SPARQLTasks.class); + .getLogger(SPARQLTasks.class); private Cache c; private SparqlEndpoint se; @@ -76,9 +77,95 @@ } - + /** + * gets a SortedSet of all subclasses QUALITY: maybe it is better to have a + * parameter int depth, to choose a depth of subclass interference + * + * @see conceptRewrite(String descriptionKBSyntax, SparqlEndpoint se, Cache + * c, boolean simple ) + * @param description + * @param se + * @param c + * @param simple + * @return + */ + public SortedSet<String> getSubClasses(String description, boolean simple) { + // ResultSet rs = null; + // System.out.println(description); + SortedSet<String> alreadyQueried = new TreeSet<String>(); + try { + + // initialisation get direct Subclasses + LinkedList<String> remainingClasses = new LinkedList<String>(); + + // collect remaining classes + remainingClasses.addAll(getDirectSubClasses(description.replaceAll("\"", ""))); + + // remainingClasses.addAll(alreadyQueried); + + // alreadyQueried = new TreeSet<String>(); + alreadyQueried.add(description.replaceAll("\"", "")); + + if (simple) { + alreadyQueried.addAll(remainingClasses); + return alreadyQueried; + } else { + + logger.warn("Retrieval auf all subclasses via SPARQL is cost intensive and might take a while"); + while (remainingClasses.size() != 0) { + SortedSet<String> tmpSet = new TreeSet<String>(); + String tmp = remainingClasses.removeFirst(); + alreadyQueried.add(tmp); + + tmpSet = getDirectSubClasses(tmp); + for (String string : tmpSet) { + if (!(alreadyQueried.contains(string))) { + remainingClasses.add(string); + }// if + }// for + }// while + }// else + + } catch (Exception e) { + + } + + return alreadyQueried; + } + /** + * QUALITY: workaround for a sparql glitch {?a owl:subclassOf ?b} returns an + * empty set on some entpoints. returns all direct subclasses of String + * concept + * + * @param concept + * @return SortedSet of direct subclasses as String + */ + private SortedSet<String> getDirectSubClasses(String concept) { + String SPARQLquery = "SELECT * \n"; + SPARQLquery += "WHERE {\n"; + SPARQLquery += " ?subject ?predicate <" + concept + "> \n"; + SPARQLquery += "}\n"; + + ResultSet rs = queryAsResultSet(SPARQLquery); + + SortedSet<String> subClasses = new TreeSet<String>(); + @SuppressWarnings("unchecked") + List<ResultBinding> l = ResultSetFormatter.toList(rs); + String p = "", s = ""; + for (ResultBinding resultBinding : l) { + + s = ((resultBinding.get("subject").toString())); + p = ((resultBinding.get("predicate").toString())); + if (p.equalsIgnoreCase("http://www.w3.org/2000/01/rdf-schema#subClassOf")) { + subClasses.add(s); + } + } + return subClasses; + } + + /** * QUALITY: buggy because role doesn't work sometimes * get subject with fixed role and object * @param role @@ -137,9 +224,26 @@ return queryAsSet(SPARQLquery, "subject"); } + /** + * get all instances for a concept including RDFS Reasoning + * @param conceptKBSyntax + * @param sparqlResultLimit + * @return + */ + public SortedSet<String> retrieveInstancesForConceptIncludingSubclasses (String conceptKBSyntax,int sparqlResultLimit) { + + String SPARQLquery = ""; + try{ + SPARQLquery = SparqlQueryDescriptionConvertVisitor + .getSparqlQueryIncludingSubclasses(conceptKBSyntax,sparqlResultLimit,this,true); + }catch (Exception e) {e.printStackTrace();} + return queryAsSet(SPARQLquery, "subject"); + } + + /** * get all direct Classes of an instance * @param instance @@ -232,8 +336,18 @@ /** - * lowlevel, executes query returns JSON + * low level, executes query returns ResultSet * @param SPARQLquery + * @return jena ResultSet + */ + public ResultSet queryAsResultSet(String SPARQLquery){ + return SparqlQuery.JSONtoResultSet(query(SPARQLquery)); + + } + + /** + * low level, executes query returns JSON + * @param SPARQLquery * @return */ public String query(String SPARQLquery){ Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertRDFS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertRDFS.java 2008-05-26 12:02:10 UTC (rev 928) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertRDFS.java 2008-05-26 14:48:00 UTC (rev 929) @@ -1,7 +1,25 @@ +/** + * Copyright (C) 2007, Sebastian Hellmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ package org.dllearner.kb.sparql; import java.util.LinkedList; -import java.util.List; import java.util.SortedSet; import java.util.TreeSet; @@ -10,14 +28,17 @@ import org.dllearner.core.owl.NamedClass; import org.dllearner.core.owl.Union; -import com.hp.hpl.jena.query.ResultSet; -import com.hp.hpl.jena.query.ResultSetFormatter; -import com.hp.hpl.jena.sparql.core.ResultBinding; -//COMMENT: header +/** + * @author Sebastian Hellmann + * Enables RDFS reasoning for the DL2SPARQL class + * by concept rewriting + * //QUALITY use SPARQLtasks + */ public class SparqlQueryDescriptionConvertRDFS { - static Logger logger = Logger.getLogger(SparqlQueryDescriptionConvertRDFS.class); + //LOGGER: SparqlQueryDescriptionConvertVisitor + static Logger logger = Logger.getLogger(SparqlQueryDescriptionConvertVisitor.class); /** * @@ -35,7 +56,7 @@ * RECOMMENDED for large hierarchies) * @return the altered String */ - public static String conceptRewrite(String descriptionKBSyntax, SparqlEndpoint se, Cache c, + public static String conceptRewrite(String descriptionKBSyntax, SPARQLTasks st, boolean simple) { String quote = "\""; String returnValue = ""; @@ -58,7 +79,7 @@ // System.out.println(currentconcept); // subclasses are retrieved - subclasses = getSubClasses(currentconcept, se, c, simple); + subclasses = st.getSubClasses(currentconcept, simple); // if only one then keep if (subclasses.size() == 1) @@ -80,100 +101,6 @@ return returnValue; } - /** - * gets a SortedSet of all subclasses QUALITY: maybe it is better to have a - * parameter int depth, to choose a depth of subclass interference - * - * @see conceptRewrite(String descriptionKBSyntax, SparqlEndpoint se, Cache - * c, boolean simple ) - * @param description - * @param se - * @param c - * @param simple - * @return - */ - private static SortedSet<String> getSubClasses(String description, SparqlEndpoint se, Cache c, - boolean simple) { + - // ResultSet rs = null; - // System.out.println(description); - SortedSet<String> alreadyQueried = new TreeSet<String>(); - try { - - // initialisation get direct Subclasses - LinkedList<String> remainingClasses = new LinkedList<String>(); - - // collect remaining classes - remainingClasses.addAll(getDirectSubClasses(description.replaceAll("\"", ""), se, c)); - - // remainingClasses.addAll(alreadyQueried); - - // alreadyQueried = new TreeSet<String>(); - alreadyQueried.add(description.replaceAll("\"", "")); - - if (simple) { - alreadyQueried.addAll(remainingClasses); - return alreadyQueried; - } else { - - logger - .warn("Retrieval auf all subclasses via SPARQL is cost intensive and might take a while"); - while (remainingClasses.size() != 0) { - SortedSet<String> tmpSet = new TreeSet<String>(); - String tmp = remainingClasses.removeFirst(); - alreadyQueried.add(tmp); - - tmpSet = getDirectSubClasses(tmp, se, c); - for (String string : tmpSet) { - if (!(alreadyQueried.contains(string))) { - remainingClasses.add(string); - }// if - }// for - }// while - }// else - - } catch (Exception e) { - - } - - return alreadyQueried; - } - - /** - * QUALITY: workaround for a sparql glitch {?a owl:subclassOf ?b} returns an - * empty set on some entpoints. returns all direct subclasses of String - * concept - * - * @param concept - * @return SortedSet of direct subclasses as String - */ - private static SortedSet<String> getDirectSubClasses(String concept, SparqlEndpoint se, Cache c) { - String query = "SELECT * \n"; - query += "WHERE {\n"; - query += " ?subject ?predicate <" + concept + "> \n"; - query += "}\n"; - - ResultSet rs = null; - if (c == null) { - rs = new SparqlQuery(query, se).send(); - } else { - String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); - rs = SparqlQuery.JSONtoResultSet(JSON); - } - - SortedSet<String> subClasses = new TreeSet<String>(); - @SuppressWarnings("unchecked") - List<ResultBinding> l = ResultSetFormatter.toList(rs); - String p = "", s = ""; - for (ResultBinding resultBinding : l) { - - s = ((resultBinding.get("subject").toString())); - p = ((resultBinding.get("predicate").toString())); - if (p.equalsIgnoreCase("http://www.w3.org/2000/01/rdf-schema#subClassOf")) { - subClasses.add(s); - } - } - return subClasses; - } - } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-05-26 12:02:10 UTC (rev 928) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-05-26 14:48:00 UTC (rev 929) @@ -70,14 +70,13 @@ return getSparqlQuery(defaultLimit); }*/ - private String getSparqlQuery(int limit) + private String getSparqlQuery(int resultLimit) { // for old function see below // it was using the object attribute in a strange way // QUALITY: what if this function is called several times?? should be private maybe? String tmpQuery= "SELECT ?subject \nWHERE {"+query+ - " }\n "; - if(limit>0) tmpQuery+="LIMIT "+limit; + " }\n "+ limit(resultLimit); query = tmpQuery; return query; @@ -112,11 +111,11 @@ return getSparqlQuery(description, defaultLimit); } - public static String getSparqlQuery(Description description, int limit) + public static String getSparqlQuery(Description description, int resultLimit) { SparqlQueryDescriptionConvertVisitor visitor=new SparqlQueryDescriptionConvertVisitor(); description.accept(visitor); - String ret = visitor.getSparqlQuery(limit); + String ret = visitor.getSparqlQuery(resultLimit); //HACK see replace might be a good solution, needs testing while (ret.contains("..")) { ret = ret.replace("..", "."); @@ -142,11 +141,11 @@ * @return * @throws ParseException */ - public static String getSparqlQueryIncludingSubclasses(String descriptionKBSyntax, int limit, SparqlEndpoint se,Cache c, boolean simple) throws ParseException + public static String getSparqlQueryIncludingSubclasses(String descriptionKBSyntax, int resultLimit, SPARQLTasks st, boolean simple) throws ParseException { - String rewritten = SparqlQueryDescriptionConvertRDFS.conceptRewrite(descriptionKBSyntax, se, c, simple); + String rewritten = SparqlQueryDescriptionConvertRDFS.conceptRewrite(descriptionKBSyntax, st, simple); - return getSparqlQuery(rewritten, limit); + return getSparqlQuery(rewritten, resultLimit); } @@ -341,6 +340,10 @@ logger.trace("DatatypeSomeRestriction"); } + private String limit(int resultLimit){ + if(resultLimit>0)return " LIMIT "+resultLimit; + return ""; + } } Deleted: trunk/src/dl-learner/org/dllearner/scripts/ResultCompare.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/ResultCompare.java 2008-05-26 12:02:10 UTC (rev 928) +++ trunk/src/dl-learner/org/dllearner/scripts/ResultCompare.java 2008-05-26 14:48:00 UTC (rev 929) @@ -1,83 +0,0 @@ -package org.dllearner.scripts; - -import java.util.SortedSet; - -public class ResultCompare implements Comparable<ResultCompare> { - String concept; - SortedSet<String> instances; - double accuracy; - double accuracy2; - int nrOfInstances; - SortedSet<String> coveredInRest; - SortedSet<String> possibleNewCandidates; - SortedSet<String> notCoveredInTotal; - - - public ResultCompare(String concept, SortedSet<String> instances, double accuracy, - double accuracy2, int nrOfInstances, SortedSet<String> coveredInRest, - SortedSet<String> possibleNewCandidates, SortedSet<String> notCoveredInTotal) { - super(); - this.concept = concept; - this.instances = instances; - this.accuracy = accuracy; - this.accuracy2 = accuracy2; - this.nrOfInstances = nrOfInstances; - this.coveredInRest = coveredInRest; - this.possibleNewCandidates = possibleNewCandidates; - this.notCoveredInTotal = notCoveredInTotal; - } - - - - - public int compareTo(ResultCompare in) { - ResultCompare obj = in; - if(obj.accuracy > this.accuracy) return 1; - else if(obj.accuracy == this.accuracy){ - - if(obj.nrOfInstances<this.nrOfInstances)return 1; - else if(obj.nrOfInstances>this.nrOfInstances)return -1; - else return 1; - //if(obj.nrOfInstances==this.nrOfInstances)return 0; - } - else {//if(obj.accuracy < this.accuracy){ - return -1; - } - - } - - - - - public String toStringFull(){ - String ret=""; - ret+="concept\t"+concept+"\n"; - ret+="instances\t"+instances+"\n"; - ret+="accuracy\t"+accuracy+"\n"; - ret+="nrOfInstances\t"+nrOfInstances+"\n"; - ret+="accuracy2\t"+accuracy2+"\n"; - ret+="coveredInRest("+coveredInRest.size()+")\t"+coveredInRest+"\n"; - ret+="possibleNewCandidates("+possibleNewCandidates.size()+")\t"+possibleNewCandidates+"\n"; - ret+="notCoveredInTotal("+notCoveredInTotal.size()+")\t"+notCoveredInTotal+"\n"; - - return ret; - - } - - @Override - public String toString(){ - String ret=""; - ret+="concept\t"+concept+"\n"; - //ret+="instances\t"+instances+"\n"; - ret+="accuracy\t"+accuracy+"\n"; - ret+="nrOfInstances\t"+nrOfInstances+"\n"; - ret+="accuracy2\t"+accuracy2+"\n"; - //ret+="coveredInRest("+coveredInRest.size()+")\t"+coveredInRest+"\n"; - //ret+="possibleNewCandidates("+possibleNewCandidates.size()+")\t"+possibleNewCandidates+"\n"; - //ret+="notCoveredInTotal("+notCoveredInTotal.size()+")\t"+notCoveredInTotal+"\n"; - - return ret; - - } - -} Modified: trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java 2008-05-26 12:02:10 UTC (rev 928) +++ trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java 2008-05-26 14:48:00 UTC (rev 929) @@ -47,19 +47,14 @@ static int maxExecutionTimeInSeconds = 30; static int guaranteeXgoodDescriptions = 40; - //static int limit=200; - - - - //examples static int sparqlResultSize=2000; static double percentOfSKOSSet=0.2; static double negfactor=1.0; SortedSet<String> posExamples = new TreeSet<String>(); SortedSet<String> fullPositiveSet = new TreeSet<String>(); - SortedSet<String> fullminusposRest = new TreeSet<String>(); + SortedSet<String> fullPosSetWithoutPosExamples = new TreeSet<String>(); SortedSet<String> negExamples = new TreeSet<String>(); @@ -78,13 +73,14 @@ if(local){ url = "http://139.18.2.37:8890/sparql"; - //RBC sparqlTasks = new SPARQLTasks(Cache.getPersistentCache(),SparqlEndpoint.EndpointLOCALDBpedia()); }else{ url = "http://dbpedia.openlinksw.com:8890/sparql"; sparqlTasks = new SPARQLTasks(Cache.getPersistentCache(),SparqlEndpoint.EndpointDBpedia()); } + System.out.println(sparqlTasks.getDomain("http://dbpedia.org/property/predecessor", 1000)); + String prim="http://dbpedia.org/resource/Category:Prime_Ministers_of_the_United_Kingdom"; String award=("http://dbpedia.org/resource/Category:Best_Actor_Academy_Award_winners"); @@ -92,164 +88,93 @@ SKOS7030 s= new SKOS7030(); s.makeExamples(prim, percentOfSKOSSet, negfactor, sparqlResultSize); - //QUALITY s.posExamples - List<Description> conceptresults = s.learn(s.posExamples, s.negExamples); + + List<Description> conceptresults = s.learn(); logger.debug("found nr of concepts: "+conceptresults.size()); + System.out.println(conceptresults); - for (Description oneConcept : conceptresults) { + int x=0; + + SortedSet<ResultMostCoveredInRest> res = new TreeSet<ResultMostCoveredInRest>(); + for (Description concept : conceptresults) { + if(x++==100)break; + res.add(s.evaluate(concept, 1000)); - //s.evaluate(oneConcept, 1000); + } + + x=0; + for (ResultMostCoveredInRest resultMostCoveredInRest : res) { + if(x++==10)break; + System.out.println(resultMostCoveredInRest.concept); + System.out.println(resultMostCoveredInRest.accuracy); + System.out.println(resultMostCoveredInRest.retrievedInstancesSize); + } + s.print(res.first().concept, 1000); System.out.println("Finished"); JamonMonitorLogger.printAllSortedByLabel(); } - void evaluate(Description oneConcept, int sparqlResultLimit){ - logger.debug("oneconcept: "+oneConcept); - SortedSet<String> instances = sparqlTasks.retrieveInstancesForConcept(oneConcept.toKBSyntaxString(), sparqlResultLimit); + void print(Description concept, int sparqlResultLimit){ + logger.debug("evaluating concept: "+concept); +// SortedSet<String> instances = sparqlTasks.retrieveInstancesForConcept(oneConcept.toKBSyntaxString(), sparqlResultLimit); + SortedSet<String> instances = + sparqlTasks.retrieveInstancesForConceptIncludingSubclasses( + concept.toKBSyntaxString(),sparqlResultLimit); - System.out.println(fullminusposRest.size()); - System.out.println(instances.size()); - - SortedSet<String> coveredInRest = new TreeSet<String>(fullminusposRest); + SortedSet<String> coveredInRest = new TreeSet<String>(fullPosSetWithoutPosExamples); coveredInRest.retainAll(instances); + - System.out.println(fullminusposRest.size()); - System.out.println(instances.size()); - System.out.println(coveredInRest.size()); + SortedSet<String> coveredTotal = new TreeSet<String>(fullPositiveSet); + coveredTotal.retainAll(instances); + SortedSet<String> notCoveredInRest = new TreeSet<String>(fullPosSetWithoutPosExamples); + notCoveredInRest.retainAll(coveredInRest); + System.out.println(notCoveredInRest); - //SortedSet<String> possibleNewCandidates = new TreeSet<String>(); - //SortedSet<String> notCoveredInTotal = new TreeSet<String>(); + SortedSet<String> notCoveredTotal = new TreeSet<String>(fullPositiveSet); + notCoveredTotal.retainAll(coveredTotal); + System.out.println(notCoveredTotal); - } - - static void DBpediaSKOS(String SKOSConcept){ + ResultMostCoveredInRest evaluate(Description concept, int sparqlResultLimit){ + logger.debug("evaluating concept: "+concept); +// SortedSet<String> instances = sparqlTasks.retrieveInstancesForConcept(oneConcept.toKBSyntaxString(), sparqlResultLimit); + SortedSet<String> instances = + sparqlTasks.retrieveInstancesForConceptIncludingSubclasses( + concept.toKBSyntaxString(),sparqlResultLimit); + SortedSet<String> coveredInRest = new TreeSet<String>(fullPosSetWithoutPosExamples); + coveredInRest.retainAll(instances); - //concepts.add("http://dbpedia.org/resource/Category:Grammy_Award_winners"); - //concepts.add("EXISTS \"http://dbpedia.org/property/grammyawards\".TOP"); + SortedSet<String> coveredTotal = new TreeSet<String>(fullPositiveSet); + coveredTotal.retainAll(instances); + SortedSet<String> notCoveredInRest = new TreeSet<String>(fullPosSetWithoutPosExamples); + notCoveredInRest.retainAll(coveredInRest); - //HashMap<String, ResultSet> result = new HashMap<String, ResultSet>(); - //HashMap<String, String> result2 = new HashMap<String, String>(); - //System.out.println(concepts.first()); - //logger.setLevel(Level.TRACE); + SortedSet<String> notCoveredTotal = new TreeSet<String>(fullPositiveSet); + notCoveredTotal.retainAll(coveredTotal); + double acc = (double) (coveredInRest.size() / fullPosSetWithoutPosExamples.size()); + System.out.println("Accuracy: "+acc); + return new ResultMostCoveredInRest(concept,acc,instances.size()); - - -// LearnSparql ls = new LearnSparql(); -// -// //igno.add(oneConcept.replaceAll("\"", "")); -// -// List<Description> conceptresults= ls.learnDBpediaSKOS(posExamples, negExamples, url,new TreeSet<String>(),recursiondepth, closeAfterRecursion,randomizeCache,resultsize,noise); -// -// System.out.println("concepts"+conceptresults); -// //System.exit(0); -// -// SortedSet<ResultCompare> res=new TreeSet<ResultCompare>(); -// for (Description oneConcept : conceptresults) { -// try{ -// -// -// int i=0; -// int a=0; -// for (String oneinst : instances) { -// boolean inRest=false; -// boolean inTotal=false; -// for (String onerest : rest) { -// if(onerest.equalsIgnoreCase(oneinst)) -// { i++; inRest=true; break;} -// -// } -// if (inRest){coveredInRest.add(oneinst);}; -// -// for (String onetotal : totalSKOSset) { -// if(onetotal.equalsIgnoreCase(oneinst)) -// { a++; inTotal=true; break;} -// } -// if(!inRest && !inTotal){ -// possibleNewCandidates.add(oneinst); -// } -// } -// -// for (String onetotal : totalSKOSset) { -// boolean mm=false; -// for (String oneinst : instances) { -// if(onetotal.equalsIgnoreCase(oneinst)){ -// mm=true;break; -// } -// -// } -// if(!mm)notCoveredInTotal.add(onetotal); -// -// } -// -// -// -// double accuracy= (double)i/rest.size(); -// double accuracy2= (double)a/totalSKOSset.size(); -// -// logger.debug((new ResultCompare(oneConcept.toKBSyntaxString(),instances,accuracy,accuracy2,instances.size(), -// coveredInRest,possibleNewCandidates,notCoveredInTotal)).toStringFull()); -// -// //if(instances.size()>=0)System.out.println("size of instances "+instances.size()); -// //if(instances.size()>=0 && instances.size()<100) System.out.println("instances"+instances); -// }catch (Exception e) {e.printStackTrace();} -// } - -// System.out.println(res.last()); -// res.remove(res.last()); -// System.out.println(res.last()); -// res.remove(res.last()); -// System.out.println(res.last()); -// res.remove(res.last()); -// - - //double percent=0.80*(double)res.size();; -// double acc=res.first().accuracy; -// logger.debug(res.first().toStringFull()); -// res.remove(res.first()); -// logger.debug(res.first().toStringFull()); -// res.remove(res.first()); -// int i=0; -// while (res.size()>0){ -// logger.debug(res.first()); -// res.remove(res.first()); -// //if(res.size()<=percent)break; -// if(i>50)break; -// i++; -// -// } -// -// return 0.0; - - - //System.out.println("AAAAAAAA"); - //System.exit(0); - //"relearned concept: "; - //cf.writeSPARQL(confname, posExamples, negExamples, url, new TreeSet<String>(),standardSettings,algorithm); - // - - //Statistics.print(); + } - - - public static void initLogger() { SimpleLayout layout = new SimpleLayout(); @@ -302,7 +227,7 @@ AutomaticNegativeExampleFinderSPARQL aneg = new AutomaticNegativeExampleFinderSPARQL(fullPositiveSet,sparqlTasks); aneg.makeNegativeExamplesFromParallelClasses(posExamples, sparqlResultSize); - SortedSet<String> negativeSet = aneg.getNegativeExamples(neglimit); + this.negExamples = aneg.getNegativeExamples(neglimit); logger.debug("POSITIVE EXAMPLES"); for (String pos : posExamples) { @@ -310,27 +235,35 @@ } logger.debug("NEGATIVE EXAMPLES"); - for (String negs : negativeSet) { + for (String negs : this.negExamples) { logger.debug("-"+negs); } - fullminusposRest = fullPositiveSet; - fullminusposRest.removeAll(posExamples); + fullPosSetWithoutPosExamples = fullPositiveSet; + fullPosSetWithoutPosExamples.removeAll(posExamples); logger.debug(fullPositiveSet); - logger.debug(fullminusposRest); + logger.debug(fullPosSetWithoutPosExamples); } - public List<Description> learn(SortedSet<String> posExamples, SortedSet<String> negExamples){ + public List<Description> learn(){ SortedSet<String> instances = new TreeSet<String>(); - instances.addAll(posExamples); - instances.addAll(negExamples); + instances.addAll(this.posExamples); + instances.addAll(this.negExamples); + logger.info("Start Learning with"); + logger.info("positive examples: \t"+posExamples.size()); + logger.info("negative examples: \t"+negExamples.size()); + logger.info("instances \t"+instances.size()); + + + + ComponentManager cm = ComponentManager.getInstance(); LearningAlgorithm la = null; @@ -344,8 +277,8 @@ rs = new ReasoningService(r); //System.out.println("satisfy: "+rs.isSatisfiable()); lp = new PosNegDefinitionLP(rs); - ((PosNegLP) lp).setPositiveExamples(SetManipulation.stringToInd(posExamples)); - ((PosNegLP) lp).setNegativeExamples(SetManipulation.stringToInd(negExamples)); + ((PosNegLP) lp).setPositiveExamples(SetManipulation.stringToInd(this.posExamples)); + ((PosNegLP) lp).setNegativeExamples(SetManipulation.stringToInd(this.negExamples)); la = cm.learningAlgorithm(ExampleBasedROLComponent.class, lp, rs); @@ -454,8 +387,57 @@ System.out.println(Level.INFO);*/ //System.exit(0); + private class ResultCompare implements Comparable<ResultCompare>{ + Description concept ; + double accuracy = 0.0; + int retrievedInstancesSize=0; + + public int compareTo(ResultCompare o2) { + return 0; + } + public boolean equals(ResultCompare o2){ + return this.concept.equals(o2.concept); + } + + + public ResultCompare(Description conceptKBSyntax, double accuracy, int retrievedInstancesSize) { + super(); + this.concept = conceptKBSyntax; + this.accuracy = accuracy; + this.retrievedInstancesSize = retrievedInstancesSize; + } + + + } + + private class ResultMostCoveredInRest extends ResultCompare{ + + public ResultMostCoveredInRest(Description concept, double accuracy, + int retrievedInstancesSize) { + super(concept, accuracy, retrievedInstancesSize); + + } + public int compareTo(ResultMostCoveredInRest o2) { + if(this.equals(o2))return 0; + + if(this.accuracy > o2.accuracy){ + return 1; + } + else if(this.accuracy == o2.accuracy) { + if(this.retrievedInstancesSize < o2.retrievedInstancesSize ) + return 1; + else if(this.retrievedInstancesSize > o2.retrievedInstancesSize){ + return -1; + } + else return this.concept.toKBSyntaxString().compareTo(o2.concept.toKBSyntaxString()); + }else { + return -1; + } + + } + + } - } Added: trunk/src/dl-learner/org/dllearner/utilities/datastructures/ResultConceptSorter.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/datastructures/ResultConceptSorter.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/datastructures/ResultConceptSorter.java 2008-05-26 14:48:00 UTC (rev 929) @@ -0,0 +1,89 @@ +package org.dllearner.utilities.datastructures; + +import java.util.SortedSet; + +import org.dllearner.core.owl.Description; + +public class ResultConceptSorter implements Comparable<ResultConceptSorter> { + String concept; + SortedSet<String> instances; + double accuracy; + double accuracy2; + int nrOfInstances; + SortedSet<String> coveredInRest; + SortedSet<String> possibleNewCandidates; + SortedSet<String> notCoveredInTotal; + + + public ResultConceptSorter(String concept, SortedSet<String> instances, double accuracy, + double accuracy2, int nrOfInstances, SortedSet<String> coveredInRest, + SortedSet<String> possibleNewCandidates, SortedSet<String> notCoveredInTotal) { + super(); + this.concept = concept; + this.instances = instances; + this.accuracy = accuracy; + this.accuracy2 = accuracy2; + this.nrOfInstances = nrOfInstances; + this.coveredInRest = coveredInRest; + this.possibleNewCandidates = possibleNewCandidates; + this.notCoveredInTotal = notCoveredInTotal; + } + + + + + public int compareTo(ResultConceptSorter in) { + ResultConceptSorter obj = in; + if(obj.accuracy > this.accuracy) return 1; + else if(obj.accuracy == this.accuracy){ + + if(obj.nrOfInstances<this.nrOfInstances)return 1; + else if(obj.nrOfInstances>this.nrOfInstances)return -1; + else return 1; + //if(obj.nrOfInstances==this.nrOfInstances)return 0; + } + else {//if(obj.accuracy < this.accuracy){ + return -1; + } + + } + + + + + public String toStringFull(){ + String ret=""; + ret+="concept\t"+concept+"\n"; + ret+="instances\t"+instances+"\n"; + ret+="accuracy\t"+accuracy+"\n"; + ret+="nrOfInstances\t"+nrOfInstances+"\n"; + ret+="accuracy2\t"+accuracy2+"\n"; + ret+="coveredInRest("+coveredInRest.size()+")\t"+coveredInRest+"\n"; + ret+="possibleNewCandidates("+possibleNewCandidates.size()+")\t"+possibleNewCandidates+"\n"; + ret+="notCoveredInTotal("+notCoveredInTotal.size()+")\t"+notCoveredInTotal+"\n"; + + return ret; + + } + + @Override + public String toString(){ + String ret=""; + ret+="concept\t"+concept+"\n"; + //ret+="instances\t"+instances+"\n"; + ret+="accuracy\t"+accuracy+"\n"; + ret+="nrOfInstances\t"+nrOfInstances+"\n"; + ret+="accuracy2\t"+accuracy2+"\n"; + //ret+="coveredInRest("+coveredInRest.size()+")\t"+coveredInRest+"\n"; + //ret+="possibleNewCandidates("+possibleNewCandidates.size()+")\t"+possibleNewCandidates+"\n"; + //ret+="notCoveredInTotal("+notCoveredInTotal.size()+")\t"+notCoveredInTotal+"\n"; + + return ret; + + } + + + + + +} Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java 2008-05-26 12:02:10 UTC (rev 928) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java 2008-05-26 14:48:00 UTC (rev 929) @@ -10,7 +10,7 @@ public class AutomaticNegativeExampleFinderSPARQL { - // CHECK + // LOGGER: ComponentManager private static Logger logger = Logger.getLogger(ComponentManager.class); private SPARQLTasks sparqltasks; @@ -26,7 +26,13 @@ static int poslimit = 10; static int neglimit = 20; - // CHECK separate posexamples and fullposset + + /** + * takes as input a full positive set to make sure no negatives are added as positives + * + * @param fullPositiveSet + * @param SPARQLTasks st + */ public AutomaticNegativeExampleFinderSPARQL( SortedSet<String> fullPositiveSet, SPARQLTasks st) { @@ -38,6 +44,11 @@ + /** + * aggregates all collected neg examples + * @param neglimit + * @return + */ public SortedSet<String> getNegativeExamples(int neglimit ) { SortedSet<String> negatives = new TreeSet<String>(); @@ -50,12 +61,18 @@ return negatives; } - // CHECK namespace + + /** + * makes neg ex from related instances, that take part in a role R(pos,neg) + * filters all objects, that don't use the given namespace + * @param instances + * @param objectNamespace + */ public void makeNegativeExamplesFromRelatedInstances(SortedSet<String> instances, - String namespace) { + String objectNamespace) { logger.debug("making examples from related instances"); for (String oneInstance : instances) { - makeNegativeExamplesFromRelatedInstances(oneInstance, namespace); + makeNegativeExamplesFromRelatedInstances(oneInstance, objectNamespace); } logger.debug("|-negExample size from related: " + fromRelated.size()); } @@ -83,11 +100,16 @@ }*/ + /** + * makes neg ex from classes, the pos ex belong to + * @param positiveSet + * @param resultLimit + */ public void makeNegativeExamplesFromParallelClasses(SortedSet<String> positiveSet, int resultLimit){ makeNegativeExamplesFromClassesOfInstances(positiveSet, resultLimit); } - public void makeNegativeExamplesFromClassesOfInstances(SortedSet<String> positiveSet, + private void makeNegativeExamplesFromClassesOfInstances(SortedSet<String> positiveSet, int resultLimit) { logger.debug("making neg Examples from parallel classes"); SortedSet<String> classes = new TreeSet<String>(); @@ -115,6 +137,11 @@ } + /** + * if pos ex derive from one class, then neg ex are taken from a superclass + * @param concept + * @param resultLimit + */ public void makeNegativeExamplesFromSuperClasses(String concept, int resultLimit) { concept = concept.replaceAll("\"", ""); Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticPositiveExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticPositiveExampleFinderSPARQL.java 2008-05-26 12:02:10 UTC (rev 928) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticPositiveExampleFinderSPARQL.java 2008-05-26 14:48:00 UTC (rev 929) @@ -9,7 +9,7 @@ public class AutomaticPositiveExampleFinderSPARQL { - //CHECK + // LOGGER: ComponentManager private static Logger logger = Logger .getLogger(ComponentManager.class); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-06-04 12:07:51
|
Revision: 938 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=938&view=rev Author: jenslehmann Date: 2008-06-04 05:07:48 -0700 (Wed, 04 Jun 2008) Log Message: ----------- removed black hole for exceptions in SparqlQuery Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java trunk/src/dl-learner/org/dllearner/cli/Start.java trunk/src/dl-learner/org/dllearner/kb/extraction/TypedSparqlQuery.java trunk/src/dl-learner/org/dllearner/kb/extraction/TypedSparqlQueryClasses.java trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java trunk/src/dl-learner/org/dllearner/scripts/PaperStatistics.java trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java 2008-06-04 11:50:54 UTC (rev 937) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java 2008-06-04 12:07:48 UTC (rev 938) @@ -30,7 +30,6 @@ import org.apache.log4j.Logger; import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.LearningProblem; -import org.dllearner.core.ReasoningMethodUnsupportedException; import org.dllearner.core.ReasoningService; import org.dllearner.core.Score; import org.dllearner.core.config.BooleanConfigOption; Modified: trunk/src/dl-learner/org/dllearner/cli/Start.java =================================================================== --- trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-06-04 11:50:54 UTC (rev 937) +++ trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-06-04 12:07:48 UTC (rev 938) @@ -70,7 +70,6 @@ import org.dllearner.core.owl.ObjectProperty; import org.dllearner.kb.KBFile; import org.dllearner.kb.OWLFile; -import org.dllearner.kb.extraction.TypedSparqlQuery; import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.learningproblems.PosNegDefinitionLP; import org.dllearner.learningproblems.PosNegInclusionLP; @@ -85,7 +84,6 @@ import org.dllearner.reasoning.OWLAPIReasoner; import org.dllearner.utilities.Files; import org.dllearner.utilities.Helper; -import org.dllearner.utilities.JamonMonitorLogger; import org.dllearner.utilities.datastructures.Datastructures; import org.dllearner.utilities.datastructures.StringTuple; import org.dllearner.utilities.owl.ConceptComparator; Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/TypedSparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/TypedSparqlQuery.java 2008-06-04 11:50:54 UTC (rev 937) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/TypedSparqlQuery.java 2008-06-04 12:07:48 UTC (rev 938) @@ -96,7 +96,7 @@ // .getSparqlEndpoint(), cache, uri.toString(), sparqlQueryString); SparqlQuery query = new SparqlQuery(sparqlQueryString, configuration.getSparqlEndpoint()); - query.extraDebugInfo=uri.toString(); +// query.extraDebugInfo=uri.toString(); String JSON = cache.executeSparqlQuery(query); ResultSet rs = SparqlQuery.JSONtoResultSet(JSON); Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/TypedSparqlQueryClasses.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/TypedSparqlQueryClasses.java 2008-06-04 11:50:54 UTC (rev 937) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/TypedSparqlQueryClasses.java 2008-06-04 12:07:48 UTC (rev 938) @@ -64,7 +64,7 @@ + "}"; SparqlQuery query = new SparqlQuery(sparqlQueryString, configuration.getSparqlEndpoint()); - query.extraDebugInfo=uri.toString(); +// query.extraDebugInfo=uri.toString(); ResultSet rs = SparqlQuery.JSONtoResultSet(cache.executeSparqlQuery(query)); List<ResultBinding> l = ResultSetFormatter.toList(rs); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java 2008-06-04 11:50:54 UTC (rev 937) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java 2008-06-04 12:07:48 UTC (rev 938) @@ -353,7 +353,7 @@ public String query(String SPARQLquery){ if(c==null){ SparqlQuery sq = new SparqlQuery(SPARQLquery,se); - sq.extraDebugInfo+=se.getURL(); +// sq.extraDebugInfo+=se.getURL(); sq.send(); String JSON = sq.getResult(); return JSON; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-06-04 11:50:54 UTC (rev 937) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-06-04 12:07:48 UTC (rev 938) @@ -21,6 +21,7 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; +import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; import org.apache.log4j.Logger; @@ -44,13 +45,12 @@ private static Logger logger = Logger.getLogger(KnowledgeSource.class); - public String extraDebugInfo = ""; private boolean isRunning = false; private String queryString; private QueryEngineHTTP queryExecution; private SparqlEndpoint endpoint; private String json = null; - private SparqlQueryException sendException=null; +// private SparqlQueryException sendException=null; /** * Standard constructor. @@ -83,25 +83,24 @@ queryExecution.addNamedGraph(ngu); } - try{ - //TODO remove after overnext Jena release - HttpQuery.urlLimit = 3*1024 ; + //TODO remove after overnext Jena release + HttpQuery.urlLimit = 3*1024 ; - JamonMonitorLogger.getTimeMonitor(SparqlQuery.class, "httpTime").start(); - rs = queryExecution.execSelect(); - JamonMonitorLogger.getTimeMonitor(SparqlQuery.class, "httpTime").stop(); + JamonMonitorLogger.getTimeMonitor(SparqlQuery.class, "httpTime").start(); + rs = queryExecution.execSelect(); + JamonMonitorLogger.getTimeMonitor(SparqlQuery.class, "httpTime").stop(); - logger.debug("query SPARQL server ["+extraDebugInfo+"], retrieved: "+rs.getResultVars()); - json=SparqlQuery.getAsJSON(rs); + logger.debug("query SPARQL server, retrieved: "+rs.getResultVars()); + json=SparqlQuery.getAsJSON(rs); - logger.trace(rs.getResultVars().toString()); - } catch (Exception e){ - sendException=new SparqlQueryException(e.getMessage()); - logger.debug(e.getMessage()); - //e.printStackTrace(); - logger.debug("Exception when querying Sparql Endpoint in " + this.getClass()); - logger.debug(queryString); - } + logger.trace(rs.getResultVars().toString()); +// } catch (Exception e){ +// sendException=new SparqlQueryException(e.getMessage()); +// logger.debug(e.getMessage()); +// //e.printStackTrace(); +// logger.debug("Exception when querying Sparql Endpoint in " + this.getClass()); +// logger.debug(queryString); +// } isRunning = false; return rs; } @@ -130,9 +129,9 @@ return queryExecution; } - public SparqlQueryException getException(){ - return sendException; - } +// public SparqlQueryException getException(){ +// return sendException; +// } public boolean hasCompleted() { return (json != null); @@ -163,10 +162,11 @@ // possible Jena bug: Jena modifies the result set during // JSON transformation, so we need to get it back resultSet = JSONtoResultSet(baos.toString()); - try{ + try { return baos.toString("UTF-8"); - }catch (Exception e){ - return baos.toString(); + } catch (UnsupportedEncodingException e) { + // should never happen as UTF-8 is supported + throw new Error(e); } } Modified: trunk/src/dl-learner/org/dllearner/scripts/PaperStatistics.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/PaperStatistics.java 2008-06-04 11:50:54 UTC (rev 937) +++ trunk/src/dl-learner/org/dllearner/scripts/PaperStatistics.java 2008-06-04 12:07:48 UTC (rev 938) @@ -29,7 +29,6 @@ import org.dllearner.algorithms.gp.GP; import org.dllearner.core.ComponentManager; import org.dllearner.core.KnowledgeSource; -import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.OntologyFormat; import org.dllearner.core.ReasonerComponent; import org.dllearner.core.ReasoningService; Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-06-04 11:50:54 UTC (rev 937) +++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-06-04 12:07:48 UTC (rev 938) @@ -302,25 +302,17 @@ * method will block until learning is completed. * * @param id Session ID. + * @param format The format of the result string: "manchester", "kb", "dl". * @return The best solution found. * @throws ClientNotKnownException - */ + */ @WebMethod - public String learn(int id) throws ClientNotKnownException { - ClientState state = getState(id); - state.getLearningAlgorithm().start(); - return state.getLearningAlgorithm().getBestSolution().toString(); - } - - @WebMethod public String learn(int id, String format) throws ClientNotKnownException { ClientState state = getState(id); state.getLearningAlgorithm().start(); - // ResultSet resultSet=SparqlQuery.JSONtoResultSet(state.getQuery(id).getResult()); Description solution = state.getLearningAlgorithm().getBestSolution(); if(format == "manchester") - return solution.toManchesterSyntaxString(state.getReasoningService().getBaseURI(), new HashMap<String,String>()). - replace("\"", ""); + return solution.toManchesterSyntaxString(state.getReasoningService().getBaseURI(), new HashMap<String,String>()); else if(format == "kb") return solution.toKBSyntaxString(); else @@ -528,8 +520,6 @@ public String getAsJSON(int sessionID, int queryID) throws ClientNotKnownException, SparqlQueryException { ClientState state = getState(sessionID); - SparqlQueryException exception=null; - if ((exception=state.getQuery(queryID).getSparqlQuery().getException())!=null) throw exception; return state.getQuery(queryID).getResult(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Jen...@us...> - 2008-06-05 10:43:29
|
Revision: 942 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=942&view=rev Author: JensLehmann Date: 2008-06-05 03:43:24 -0700 (Thu, 05 Jun 2008) Log Message: ----------- updated statistics and cross validation script Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/gp/GP.java trunk/src/dl-learner/org/dllearner/cli/Start.java trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java trunk/src/dl-learner/org/dllearner/scripts/CrossValidation.java trunk/src/dl-learner/org/dllearner/scripts/PaperStatistics.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/gp/GP.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/gp/GP.java 2008-06-05 05:35:11 UTC (rev 941) +++ trunk/src/dl-learner/org/dllearner/algorithms/gp/GP.java 2008-06-05 10:43:24 UTC (rev 942) @@ -163,19 +163,20 @@ options.add(new BooleanConfigOption("elitism", "specifies whether to use elitism in selection", true)); StringConfigOption algorithmType = new StringConfigOption("algorithmType", "algorithm type", "steadyState"); algorithmType.setAllowedValues(new String[] {"generational", "steadyState"}); - DoubleConfigOption mutationProb = new DoubleConfigOption("mutationProbablitiy", "mutation probability", 0.03); + options.add(algorithmType); + DoubleConfigOption mutationProb = new DoubleConfigOption("mutationProbability", "mutation probability", 0.03); mutationProb.setLowerLimit(0.0); mutationProb.setUpperLimit(1.0); options.add(mutationProb); - DoubleConfigOption crossoverProb = new DoubleConfigOption("crossoverProbablitiy", "crossover probability", 0.95); + DoubleConfigOption crossoverProb = new DoubleConfigOption("crossoverProbability", "crossover probability", 0.95); crossoverProb.setLowerLimit(0.0); crossoverProb.setUpperLimit(1.0); options.add(crossoverProb); - DoubleConfigOption hillClimbingProb = new DoubleConfigOption("hillClimbingProbablitiy", "hill climbing probability", 0.0); + DoubleConfigOption hillClimbingProb = new DoubleConfigOption("hillClimbingProbability", "hill climbing probability", 0.0); hillClimbingProb.setLowerLimit(0.0); hillClimbingProb.setUpperLimit(1.0); options.add(hillClimbingProb); - DoubleConfigOption refinementProb = new DoubleConfigOption("refinementProbablitiy", "refinement operator probability (values higher than 0 turn this into a hybrid GP algorithm - see publication)", 0.00); + DoubleConfigOption refinementProb = new DoubleConfigOption("refinementProbability", "refinement operator probability (values higher than 0 turn this into a hybrid GP algorithm - see publication)", 0.00); refinementProb.setLowerLimit(0.0); refinementProb.setUpperLimit(1.0); options.add(refinementProb); Modified: trunk/src/dl-learner/org/dllearner/cli/Start.java =================================================================== --- trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-06-05 05:35:11 UTC (rev 941) +++ trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-06-05 10:43:24 UTC (rev 942) @@ -104,6 +104,7 @@ private LearningAlgorithm la; private LearningProblem lp; private ReasoningService rs; + private ReasonerComponent rc; /** * Entry point for CLI interface. @@ -183,10 +184,10 @@ // step 2: detect used reasoner ConfFileOption reasonerOption = parser.getConfOptionsByName("reasoner"); - ReasonerComponent reasoner = cm.reasoner(getReasonerClass(reasonerOption), sources); - configureComponent(cm, reasoner, componentPrefixMapping, parser); - initComponent(cm, reasoner); - rs = cm.reasoningService(reasoner); + rc = cm.reasoner(getReasonerClass(reasonerOption), sources); + configureComponent(cm, rc, componentPrefixMapping, parser); + initComponent(cm, rc); + rs = cm.reasoningService(rc); // step 3: detect learning problem ConfFileOption problemOption = parser.getConfOptionsByName("problem"); @@ -754,6 +755,10 @@ return lp; } + public ReasonerComponent getReasonerComponent() { + return rc; + } + public ReasoningService getReasoningService() { return rs; } @@ -829,4 +834,6 @@ return laClass; } + + } Modified: trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2008-06-05 05:35:11 UTC (rev 941) +++ trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2008-06-05 10:43:24 UTC (rev 942) @@ -35,7 +35,6 @@ import org.dllearner.core.KnowledgeSource; import org.dllearner.core.ReasonerComponent; import org.dllearner.core.ReasoningMethodUnsupportedException; -import org.dllearner.core.ReasoningService; import org.dllearner.core.config.ConfigEntry; import org.dllearner.core.config.ConfigOption; import org.dllearner.core.config.InvalidConfigOptionValueException; @@ -100,7 +99,7 @@ private SortedSet<DatatypeProperty> intDatatypeProperties = new TreeSet<DatatypeProperty>(); private SortedSet<Individual> individuals; - private ReasoningService rs; +// private ReasoningService rs; private OWLAPIReasoner rc; private Set<KnowledgeSource> sources; @@ -177,7 +176,7 @@ atomicRoles = rc.getAtomicRoles(); individuals = rc.getIndividuals(); - rs = new ReasoningService(rc); +// rs = new ReasoningService(rc); // TODO: some code taken from Helper.createFlatABox, but pasted here // because additional things need to @@ -187,9 +186,9 @@ logger.debug("dematerialising concepts"); - for (NamedClass atomicConcept : rs.getAtomicConcepts()) { + for (NamedClass atomicConcept : rc.getAtomicConcepts()) { - SortedSet<Individual> pos = rs.retrieval(atomicConcept); + SortedSet<Individual> pos = rc.retrieval(atomicConcept); classInstancesPos.put(atomicConcept, pos); if(defaultNegation) { @@ -199,7 +198,7 @@ // on the carcinogenesis data set (and probably others), so we have to // be careful here Negation negatedAtomicConcept = new Negation(atomicConcept); - classInstancesNeg.put(atomicConcept, rs.retrieval(negatedAtomicConcept)); + classInstancesNeg.put(atomicConcept, rc.retrieval(negatedAtomicConcept)); } @@ -521,32 +520,32 @@ * @see org.dllearner.core.Reasoner#prepareSubsumptionHierarchy(java.util.Set) */ public void prepareSubsumptionHierarchy(Set<NamedClass> allowedConcepts) { - rs.prepareSubsumptionHierarchy(); + rc.prepareSubsumptionHierarchy(allowedConcepts); } @Override public SubsumptionHierarchy getSubsumptionHierarchy() { - return rs.getSubsumptionHierarchy(); + return rc.getSubsumptionHierarchy(); } @Override public void prepareRoleHierarchy(Set<ObjectProperty> allowedRoles) { - rs.prepareRoleHierarchy(allowedRoles); + rc.prepareRoleHierarchy(allowedRoles); } @Override public ObjectPropertyHierarchy getRoleHierarchy() { - return rs.getRoleHierarchy(); + return rc.getRoleHierarchy(); } @Override public void prepareDatatypePropertyHierarchy(Set<DatatypeProperty> allowedRoles) { - rs.prepareDatatypePropertyHierarchy(allowedRoles); + rc.prepareDatatypePropertyHierarchy(allowedRoles); } @Override public DatatypePropertyHierarchy getDatatypePropertyHierarchy() { - return rs.getDatatypePropertyHierarchy(); + return rc.getDatatypePropertyHierarchy(); } @Override @@ -554,7 +553,7 @@ // Negation neg = new Negation(subConcept); // Intersection c = new Intersection(neg,superConcept); // return fastRetrieval.calculateSets(c).getPosSet().isEmpty(); - return rs.subsumes(superConcept, subConcept); + return rc.subsumes(superConcept, subConcept); } /** Modified: trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2008-06-05 05:35:11 UTC (rev 941) +++ trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2008-06-05 10:43:24 UTC (rev 942) @@ -474,6 +474,9 @@ private TreeSet<Description> getMoreSpecialConcepts(Description concept) { Set<Set<OWLClass>> classes = null; try { +// System.out.println(OWLAPIDescriptionConvertVisitor.getOWLDescription(concept)); +// System.out.println(getSubsumptionHierarchy()); +// System.out.println(reasoner); classes = reasoner.getSubClasses(OWLAPIDescriptionConvertVisitor.getOWLDescription(concept)); } catch (OWLReasonerException e) { e.printStackTrace(); Modified: trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java =================================================================== --- trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java 2008-06-05 05:35:11 UTC (rev 941) +++ trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java 2008-06-05 10:43:24 UTC (rev 942) @@ -34,6 +34,7 @@ import org.apache.log4j.Logger; import org.dllearner.algorithms.refinement.RefinementOperator; +import org.dllearner.core.ReasoningMethodUnsupportedException; import org.dllearner.core.ReasoningService; import org.dllearner.core.owl.BooleanValueRestriction; import org.dllearner.core.owl.DataRange; Modified: trunk/src/dl-learner/org/dllearner/scripts/CrossValidation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/CrossValidation.java 2008-06-05 05:35:11 UTC (rev 941) +++ trunk/src/dl-learner/org/dllearner/scripts/CrossValidation.java 2008-06-05 10:43:24 UTC (rev 942) @@ -115,7 +115,8 @@ } LearningProblem lp = start.getLearningProblem(); - ReasoningService rs = start.getReasoningService(); +// ReasoningService rs = start.getReasoningService(); +// start.getReasoningService().releaseKB(); // the training and test sets used later on List<Set<Individual>> trainingSetsPos = new LinkedList<Set<Individual>>(); @@ -194,7 +195,6 @@ try { start = new Start(file); } catch (ComponentInitException e) { - // TODO Auto-generated catch block e.printStackTrace(); } lp = start.getLearningProblem(); @@ -206,17 +206,17 @@ // System.out.println("neg: " + neg.size()); // System.exit(0); - // es fehlt init zwischendurch - - if(la == null) - la = start.getLearningAlgorithm(); + la = start.getLearningAlgorithm(); // init again, because examples have changed try { +// start.getReasonerComponent().init(); + lp.init(); la.init(); } catch (ComponentInitException e) { // TODO Auto-generated catch block e.printStackTrace(); } + long algorithmStartTime = System.nanoTime(); la.start(); long algorithmDuration = System.nanoTime() - algorithmStartTime; @@ -224,6 +224,7 @@ Description concept = la.getBestSolution(); + ReasoningService rs = start.getReasoningService(); Set<Individual> tmp = rs.instanceCheck(concept, testSetsPos.get(currFold)); Set<Individual> tmp2 = Helper.difference(testSetsPos.get(currFold), tmp); Set<Individual> tmp3 = rs.instanceCheck(concept, testSetsNeg.get(currFold)); @@ -258,7 +259,7 @@ System.out.println(" runtime: " + df.format(algorithmDuration/(double)1000000000) + "s"); // free all resources - start.getReasoningService().releaseKB(); + rs.releaseKB(); cm.freeAllComponents(); } @@ -312,7 +313,7 @@ return splits; } - private String statOutput(DecimalFormat df, Stat stat, String unit) { + public static String statOutput(DecimalFormat df, Stat stat, String unit) { String str = "av. " + df.format(stat.getMean()) + unit; str += " (deviation " + df.format(stat.getStandardDeviation()) + unit + "; "; str += "min " + df.format(stat.getMin()) + unit + "; "; Modified: trunk/src/dl-learner/org/dllearner/scripts/PaperStatistics.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/PaperStatistics.java 2008-06-05 05:35:11 UTC (rev 941) +++ trunk/src/dl-learner/org/dllearner/scripts/PaperStatistics.java 2008-06-05 10:43:24 UTC (rev 942) @@ -22,6 +22,7 @@ import java.io.File; import java.net.MalformedURLException; import java.net.URL; +import java.text.DecimalFormat; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -49,6 +50,8 @@ */ public class PaperStatistics { + private static DecimalFormat df = new DecimalFormat(); + /** * Points to the current statistic generation function. * @@ -82,7 +85,7 @@ // learning examples: // - trains - // - arches + // - arches => left out, insufficiently many examples // - moral (simple) // - moral (complex) // - poker (pair) @@ -95,22 +98,22 @@ String statBaseDir = "log/stat/"; File[] confFiles = new File[1]; -// confFiles[0] = new File(exampleBaseDir + "trains", "trains_owl"); - confFiles[0] = new File(exampleBaseDir + "arch", "arch"); -// confFiles[2] = new File(exampleBaseDir + "moral_reasoner", "moral_43examples_owl"); -// confFiles[3] = new File(exampleBaseDir + "moral_reasoner", "moral_43examples_complex_owl"); -// confFiles[4] = new File(exampleBaseDir + "poker", "pair_owl"); -// confFiles[5] = new File(exampleBaseDir + "poker", "straight_owl"); -// confFiles[6] = new File(exampleBaseDir + "forte", "forte_uncle_owl"); + confFiles[0] = new File(exampleBaseDir + "trains", "trains_owl"); +// confFiles[0] = new File(exampleBaseDir + "arch", "arch"); + confFiles[1] = new File(exampleBaseDir + "moral_reasoner", "moral_43examples_owl"); + confFiles[2] = new File(exampleBaseDir + "moral_reasoner", "moral_43examples_complex_owl"); + confFiles[3] = new File(exampleBaseDir + "poker", "pair_owl"); + confFiles[4] = new File(exampleBaseDir + "poker", "straight_owl"); + confFiles[5] = new File(exampleBaseDir + "forte", "forte_uncle_owl"); String[] examples = new String[7]; examples[0] = "trains"; - examples[1] = "arches"; - examples[2] = "moral reasoner (43 examples, simple)"; - examples[3] = "moral reasoner (43 examples, complex)"; - examples[4] = "poker (49 examples, pair)"; - examples[5] = "poker (55 examples, straight)"; - examples[6] = "uncle (FORTE data set)"; +// examples[0] = "arches"; + examples[1] = "moral reasoner (43 examples, simple)"; + examples[2] = "moral reasoner (43 examples, complex)"; + examples[3] = "poker (49 examples, pair)"; + examples[4] = "poker (55 examples, straight)"; + examples[5] = "uncle (FORTE data set)"; int startExampleNr = 0; // for any example, we create conf files for each configuration to be tested @@ -121,6 +124,8 @@ algorithmPostfix[3] = "_hybrid"; int startAlgorithmNr = 0; + int[] folds = new int[] {5,5,5,5,5,5}; + File statFile = new File(statBaseDir, "statistics.txt"); String statString = "**automatically generated statistics**\n\n"; @@ -132,16 +137,22 @@ File confFile = new File(confFiles[exampleNr] + algorithmPostfix[algorithmNr] + ".conf"); - CrossValidation cv = new CrossValidation(confFile, 5, false); - Stat classification = new Stat(); - Stat length = new Stat(); - Stat runtime = new Stat(); + System.out.println("running " + folds[exampleNr] + " fold cross validation on " + confFile); + CrossValidation cv = new CrossValidation(confFile, folds[exampleNr], false); + Stat accuracy = cv.getAccuracy(); + Stat length = cv.getLength(); + Stat runtime = cv.getRuntime(); + statString += "conf file: " + confFile + "\n"; - statString += "classification: " + classification.getMean() + "% (standard deviation: " + classification.getStandardDeviation() + "%)\n"; - statString += "concept length: " + length.getMean() + " (standard deviation: " + length.getStandardDeviation() + ")\n"; - statString += "runtime: " + Helper.prettyPrintNanoSeconds(Math.round(runtime.getMean())) + " (standard deviation: " + Helper.prettyPrintNanoSeconds(Math.round(runtime.getStandardDeviation())) + ")\n\n"; +// statString += "classification: " + classification.getMean() + "% (standard deviation: " + classification.getStandardDeviation() + "%)\n"; +// statString += "concept length: " + length.getMean() + " (standard deviation: " + length.getStandardDeviation() + ")\n"; +// statString += "runtime: " + runtime.getMean() + " (standard deviation: " + runtime.getStandardDeviation() + ")\n\n"; + statString += "accuracy: " + CrossValidation.statOutput(df, accuracy, "%") + "\n"; + statString += "length: " + CrossValidation.statOutput(df, length, "") + "\n"; + statString += "runtime: " + CrossValidation.statOutput(df, runtime, "s") + "\n\n"; + Files.createFile(statFile, statString); } // end algorithm loop This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sk...@us...> - 2008-06-10 15:52:33
|
Revision: 954 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=954&view=rev Author: sknappe Date: 2008-06-10 08:51:54 -0700 (Tue, 10 Jun 2008) Log Message: ----------- Added Manipulator Interface and changed classes accordingly Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java trunk/src/dl-learner/org/dllearner/kb/extraction/Manipulator.java trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/test/ComponentTest.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/kb/extraction/DBpediaNavigatorManipulator.java trunk/src/dl-learner/org/dllearner/kb/extraction/ManipulatorType.java trunk/src/dl-learner/org/dllearner/kb/extraction/Manipulators.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java 2008-06-10 15:48:27 UTC (rev 953) +++ trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java 2008-06-10 15:51:54 UTC (rev 954) @@ -152,6 +152,5 @@ @Override public Score getSolutionScore() { return learner.getSolutionScore(); - } - + } } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-06-10 15:48:27 UTC (rev 953) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-06-10 15:51:54 UTC (rev 954) @@ -41,7 +41,7 @@ // expands all directly connected nodes @Override - public Vector<Node> expand(TypedSparqlQueryInterface tsq, Manipulator m) { + public Vector<Node> expand(TypedSparqlQueryInterface tsq, Manipulators m) { Set<StringTuple> s = tsq.getTupelForResource(this.uri); // see manipulator @@ -85,7 +85,7 @@ // gets the types for properties recursively @Override - public void expandProperties(TypedSparqlQueryInterface tsq, Manipulator m) { + public void expandProperties(TypedSparqlQueryInterface tsq, Manipulators m) { } /* Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java 2008-06-10 15:48:27 UTC (rev 953) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java 2008-06-10 15:51:54 UTC (rev 954) @@ -32,7 +32,7 @@ private SparqlEndpoint endpoint; private SparqlQueryType sparqlQueryType; - private Manipulator manipulator; + private Manipulators manipulator; // the following needs to be moved to // class extraction algorithm or manipulator private int recursiondepth; @@ -43,7 +43,7 @@ public String cacheDir="cache"; public Configuration(SparqlEndpoint specificSparqlEndpoint, - SparqlQueryType sparqlQueryType, Manipulator manipulator, + SparqlQueryType sparqlQueryType, Manipulators manipulator, int recursiondepth, boolean getAllSuperClasses, boolean closeAfterRecursion, String cacheDir) { this.endpoint = specificSparqlEndpoint; @@ -64,7 +64,7 @@ } - public Manipulator getManipulator() { + public Manipulators getManipulator() { return this.manipulator; } Added: trunk/src/dl-learner/org/dllearner/kb/extraction/DBpediaNavigatorManipulator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/DBpediaNavigatorManipulator.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/DBpediaNavigatorManipulator.java 2008-06-10 15:51:54 UTC (rev 954) @@ -0,0 +1,120 @@ +/** + * Copyright (C) 2007, Sebastian Hellmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.kb.extraction; + +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.Set; + +import org.dllearner.utilities.datastructures.StringTuple; + +/** + * Used to manipulate retrieved tupels, identify blanknodes, etc. + * + * @author Sebastian Hellmann + * + */ +public class DBpediaNavigatorManipulator implements Manipulators{ + public final String subclass = "http://www.w3.org/2000/01/rdf-schema#subClassOf"; + public final String type = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"; + final String objectProperty = "http://www.w3.org/2002/07/owl#ObjectProperty"; + final String classns = "http://www.w3.org/2002/07/owl#Class"; + final String thing = "http://www.w3.org/2002/07/owl#Thing"; + + public String blankNodeIdentifier = "bnode"; + public int breakSuperClassRetrievalAfter = 200; + public LinkedList<StringTuple> replacePredicate; + public LinkedList<StringTuple> replaceObject; + + // Set<String> classproperties; + + public DBpediaNavigatorManipulator(String blankNodeIdentifier, + int breakSuperClassRetrievalAfter, + LinkedList<StringTuple> replacePredicate, + LinkedList<StringTuple> replaceObject) { + this.blankNodeIdentifier = blankNodeIdentifier; + this.replaceObject = replaceObject; + this.replacePredicate = replacePredicate; + this.breakSuperClassRetrievalAfter = breakSuperClassRetrievalAfter; + // Set<String> classproperties = new HashSet<String>(); + // classproperties.add(subclass); + + } + + /** + * this checks for consistency and manipulates the tuples, before they get + * triple + * + * @param tuples + * tuples for the node + * @param node + * @return + */ + public Set<StringTuple> check(Set<StringTuple> tuples, Node node) { + Set<StringTuple> toRemove = new HashSet<StringTuple>(); + Iterator<StringTuple> it = tuples.iterator(); + while (it.hasNext()) { + StringTuple t = (StringTuple) it.next(); + + replacePredicate(t); + replaceObject(t); + + + // remove <rdf:type, owl:class> + // this is done to avoid transformation to owl:subclassof + if (t.a.equals(type) && t.b.equals(classns) + && node instanceof ClassNode) { + toRemove.add(t); + } + + // all with type class + if (t.b.equals(classns) && node instanceof ClassNode) { + toRemove.add(t); + } + + // remove all instances with owl:type thing + if (t.a.equals(type) && t.b.equals(thing) + && node instanceof InstanceNode) { + toRemove.add(t); + } + + } + tuples.removeAll(toRemove); + + return tuples; + } + + private void replacePredicate(StringTuple t) { + for (StringTuple rep : replacePredicate) { + if (rep.a.equals(t.a)) { + t.a = rep.b; + } + } + } + + private void replaceObject(StringTuple t) { + for (StringTuple rep : replaceObject) { + if (rep.a.equals(t.a)) { + t.a = rep.b; + } + } + } +} Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-06-10 15:48:27 UTC (rev 953) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-06-10 15:51:54 UTC (rev 954) @@ -34,7 +34,7 @@ public class ExtractionAlgorithm { private Configuration configuration; - private Manipulator manipulator; + private Manipulators manipulator; private int recursionDepth = 1; // private boolean getAllSuperClasses = true; // private boolean closeAfterRecursion = true; Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-06-10 15:48:27 UTC (rev 953) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-06-10 15:51:54 UTC (rev 954) @@ -47,7 +47,7 @@ // expands all directly connected nodes @Override - public Vector<Node> expand(TypedSparqlQueryInterface tsq, Manipulator m) { + public Vector<Node> expand(TypedSparqlQueryInterface tsq, Manipulators m) { Set<StringTuple> s = tsq.getTupelForResource(uri); // see Manipulator @@ -86,7 +86,7 @@ // gets the types for properties recursively @Override - public void expandProperties(TypedSparqlQueryInterface tsq, Manipulator m) { + public void expandProperties(TypedSparqlQueryInterface tsq, Manipulators m) { for (PropertyNode one : properties) { one.expandProperties(tsq, m); } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java 2008-06-10 15:48:27 UTC (rev 953) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java 2008-06-10 15:51:54 UTC (rev 954) @@ -47,7 +47,7 @@ public void useConfiguration(SparqlQueryType SparqlQueryType, - SparqlEndpoint SparqlEndpoint, Manipulator manipulator, + SparqlEndpoint SparqlEndpoint, Manipulators manipulator, int recursiondepth, boolean getAllSuperClasses, boolean closeAfterRecursion, String cacheDir) { Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Manipulator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/Manipulator.java 2008-06-10 15:48:27 UTC (rev 953) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/Manipulator.java 2008-06-10 15:51:54 UTC (rev 954) @@ -32,7 +32,7 @@ * @author Sebastian Hellmann * */ -public class Manipulator { +public class Manipulator implements Manipulators{ public final String subclass = "http://www.w3.org/2000/01/rdf-schema#subClassOf"; public final String type = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"; final String objectProperty = "http://www.w3.org/2002/07/owl#ObjectProperty"; Added: trunk/src/dl-learner/org/dllearner/kb/extraction/ManipulatorType.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ManipulatorType.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ManipulatorType.java 2008-06-10 15:51:54 UTC (rev 954) @@ -0,0 +1,23 @@ +package org.dllearner.kb.extraction; + +import java.util.LinkedList; + +import org.dllearner.utilities.datastructures.StringTuple; + + +/** + * Used to get the right manipulator + * + * @author Sebastian Knappe + * + */ +public class ManipulatorType { + + public static Manipulators getManipulatorByName(String predefinedManipulator,String blankNodeIdentifier, int breakSuperClassRetrievalAfter, LinkedList<StringTuple> replacePredicate,LinkedList<StringTuple> replaceObject) + { + if (predefinedManipulator.equals("DBPEDIA-NAVIGATOR")) return new DBpediaNavigatorManipulator(blankNodeIdentifier, + breakSuperClassRetrievalAfter, replacePredicate, replaceObject); + else return new Manipulator(blankNodeIdentifier, + breakSuperClassRetrievalAfter, replacePredicate, replaceObject); + } +} Added: trunk/src/dl-learner/org/dllearner/kb/extraction/Manipulators.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/Manipulators.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/Manipulators.java 2008-06-10 15:51:54 UTC (rev 954) @@ -0,0 +1,15 @@ +package org.dllearner.kb.extraction; + +import java.util.Set; + +import org.dllearner.utilities.datastructures.StringTuple; + +public interface Manipulators { + + public int breakSuperClassRetrievalAfter = 200; + public final String subclass = "http://www.w3.org/2000/01/rdf-schema#subClassOf"; + public final String type = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"; + public String blankNodeIdentifier = "bnode"; + + public Set<StringTuple> check(Set<StringTuple> tuples, Node node); +} Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-06-10 15:48:27 UTC (rev 953) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-06-10 15:51:54 UTC (rev 954) @@ -55,7 +55,7 @@ * @return Vector<Node> all Nodes that are new because of expansion */ public abstract Vector<Node> expand( - TypedSparqlQueryInterface typedSparqlQuery, Manipulator manipulator); + TypedSparqlQueryInterface typedSparqlQuery, Manipulators manipulator); /** * gets type defs for properties like rdf:type SymmetricProperties @@ -65,7 +65,7 @@ * @return Vector<Node> */ public abstract void expandProperties( - TypedSparqlQueryInterface typedSparqlQuery, Manipulator manipulator); + TypedSparqlQueryInterface typedSparqlQuery, Manipulators manipulator); /** * output Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java 2008-06-10 15:48:27 UTC (rev 953) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java 2008-06-10 15:51:54 UTC (rev 954) @@ -53,13 +53,13 @@ // Property Nodes are normally not expanded, // this function is never called @Override - public Vector<Node> expand(TypedSparqlQueryInterface tsq, Manipulator m) { + public Vector<Node> expand(TypedSparqlQueryInterface tsq, Manipulators m) { return null; } // gets the types for properties recursively @Override - public void expandProperties(TypedSparqlQueryInterface tsq, Manipulator m) { + public void expandProperties(TypedSparqlQueryInterface tsq, Manipulators m) { b.expandProperties(tsq, m); Set<StringTuple> s = tsq.getTupelForResource(uri); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-06-10 15:48:27 UTC (rev 953) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-06-10 15:51:54 UTC (rev 954) @@ -46,6 +46,8 @@ import org.dllearner.core.owl.KB; import org.dllearner.kb.extraction.Manager; import org.dllearner.kb.extraction.Manipulator; +import org.dllearner.kb.extraction.ManipulatorType; +import org.dllearner.kb.extraction.Manipulators; import org.dllearner.parser.KBParser; import org.dllearner.reasoning.DIGConverter; import org.dllearner.reasoning.JenaOWLDIGConverter; @@ -73,6 +75,7 @@ private int recursionDepth = recursionDepthDefault; private String predefinedFilter = null; private String predefinedEndpoint = null; + private String predefinedManipulator = "STANDARD"; private Set<String> predList = new HashSet<String>(); private Set<String> objList = new HashSet<String>(); // private Set<String> classList; @@ -136,7 +139,8 @@ "the mode of the SPARQL Filter, use one of YAGO,SKOS,YAGOSKOS , YAGOSPECIALHIERARCHY, TEST")); options.add(new StringConfigOption("predefinedEndpoint", "the mode of the SPARQL Filter, use one of DBPEDIA, LOCAL, GOVTRACK, REVYU, MYOPENLINK, FACTBOOK")); - + options.add(new StringConfigOption("predefinedManipulator", + "the mode of the Manipulator, use one of STANDARD, DBPEDIA-NAVIGATOR")); options.add(new StringSetConfigOption("predList", "list of all ignored roles")); options.add(new StringSetConfigOption("objList", @@ -220,6 +224,8 @@ predefinedEndpoint = ((String) entry.getValue()).toUpperCase(); } else if (option.equals("predefinedFilter")) { predefinedFilter = ((String) entry.getValue()).toUpperCase(); + } else if (option.equals("predefinedManipulator")) { + predefinedManipulator = ((String) entry.getValue()).toUpperCase(); } else if (option.equals("format")) { format = (String) entry.getValue(); } else if (option.equals("dumpToFile")) { @@ -292,7 +298,7 @@ Manager m = new Manager(); SparqlQueryType sparqlQueryType = null; // get Options for Manipulator - Manipulator manipulator = new Manipulator(blankNodeIdentifier, + Manipulators manipulator = ManipulatorType.getManipulatorByName(predefinedManipulator, blankNodeIdentifier, breakSuperClassRetrievalAfter, replacePredicate, replaceObject); // get Options for endpoints Modified: trunk/src/dl-learner/org/dllearner/test/ComponentTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/ComponentTest.java 2008-06-10 15:48:27 UTC (rev 953) +++ trunk/src/dl-learner/org/dllearner/test/ComponentTest.java 2008-06-10 15:51:54 UTC (rev 954) @@ -23,6 +23,7 @@ import java.util.Set; import java.util.TreeSet; +import org.dllearner.algorithms.DBpediaNavigationSuggestor; import org.dllearner.algorithms.RandomGuesser; import org.dllearner.core.ComponentInitException; import org.dllearner.core.ComponentManager; @@ -35,6 +36,7 @@ import org.dllearner.kb.OWLFile; import org.dllearner.learningproblems.PosNegDefinitionLP; import org.dllearner.reasoning.DIGReasoner; +import org.dllearner.reasoning.OWLAPIReasoner; /** * Test for component based design. @@ -55,12 +57,12 @@ // create knowledge source KnowledgeSource source = cm.knowledgeSource(OWLFile.class); - String example = "examples/family/father.owl"; + String example = "examples/family/uncle.owl"; cm.applyConfigEntry(source, "url", new File(example).toURI().toString()); source.init(); // create DIG reasoning service with standard settings - ReasonerComponent reasoner = cm.reasoner(DIGReasoner.class, source); + ReasonerComponent reasoner = cm.reasoner(OWLAPIReasoner.class, source); // ReasoningService rs = cm.reasoningService(DIGReasonerNew.class, source); reasoner.init(); ReasoningService rs = cm.reasoningService(reasoner); @@ -68,29 +70,31 @@ // create a learning problem and set positive and negative examples LearningProblem lp = cm.learningProblem(PosNegDefinitionLP.class, rs); Set<String> positiveExamples = new TreeSet<String>(); - positiveExamples.add("http://example.com/father#stefan"); - positiveExamples.add("http://example.com/father#markus"); - positiveExamples.add("http://example.com/father#martin"); + positiveExamples.add("http://localhost/foo#heinz"); + positiveExamples.add("http://localhost/foo#alex"); Set<String> negativeExamples = new TreeSet<String>(); - negativeExamples.add("http://example.com/father#heinz"); - negativeExamples.add("http://example.com/father#anna"); - negativeExamples.add("http://example.com/father#michelle"); + negativeExamples.add("http://localhost/foo#jan"); + negativeExamples.add("http://localhost/foo#anna"); + negativeExamples.add("http://localhost/foo#hanna"); cm.applyConfigEntry(lp, "positiveExamples", positiveExamples); cm.applyConfigEntry(lp, "negativeExamples", negativeExamples); + lp.init(); + // create the learning algorithm LearningAlgorithm la = null; try { - la = cm.learningAlgorithm(RandomGuesser.class, lp, rs); + la = cm.learningAlgorithm(DBpediaNavigationSuggestor.class, lp, rs); } catch (LearningProblemUnsupportedException e) { // TODO Auto-generated catch block e.printStackTrace(); } - cm.applyConfigEntry(la, "numberOfTrees", 100); - cm.applyConfigEntry(la, "maxDepth", 5); - la.init(); - + try{ + la.init(); + }catch (Exception e){ + } + // start the algorithm and print the best concept found la.start(); System.out.println(la.getBestSolution()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sk...@us...> - 2008-06-10 16:51:13
|
Revision: 955 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=955&view=rev Author: sknappe Date: 2008-06-10 09:51:06 -0700 (Tue, 10 Jun 2008) Log Message: ----------- I don't use SparqlQueryThreaded anymore Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/server/ClientState.java trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-06-10 15:51:54 UTC (rev 954) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-06-10 16:51:06 UTC (rev 955) @@ -66,7 +66,7 @@ //DEFAULTS static int recursionDepthDefault = 1; - + private boolean useCache=true; // ConfigOptions public URL url; // String host; @@ -164,6 +164,8 @@ options.add(new BooleanConfigOption("learnDomain", "learns the Domain for a Role")); + options.add(new BooleanConfigOption("useCache", + "If true a Cache is used")); options.add(new BooleanConfigOption("learnRange", "learns the Range for a Role")); options.add(new StringConfigOption("role", @@ -232,7 +234,9 @@ dumpToFile = (Boolean) entry.getValue(); } else if (option.equals("useLits")) { useLits = (Boolean) entry.getValue(); - } else if (option.equals("getAllSuperClasses")) { + } else if (option.equals("useCache")) { + useCache = (Boolean) entry.getValue(); + }else if (option.equals("getAllSuperClasses")) { getAllSuperClasses = (Boolean) entry.getValue(); /* * TODO remaove } else if (option.equals("learnDomain")) { @@ -415,9 +419,6 @@ return new SparqlQuery(query, endpoint); } - public SparqlQueryThreaded sparqlQueryThreaded(String query){ - return new SparqlQueryThreaded(new Cache("cache"),this.sparqlQuery(query)); - } /* (non-Javadoc) * @see org.dllearner.core.KnowledgeSource#toKB() @@ -431,6 +432,14 @@ public URL getNTripleURL(){ return dumpFile; } + + public boolean getUseCache(){ + return useCache; + } + + public String getCacheDir(){ + return cacheDir; + } /*public static void main(String[] args) throws MalformedURLException { String query = "SELECT ?pred ?obj\n" Modified: trunk/src/dl-learner/org/dllearner/server/ClientState.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/ClientState.java 2008-06-10 15:51:54 UTC (rev 954) +++ trunk/src/dl-learner/org/dllearner/server/ClientState.java 2008-06-10 16:51:06 UTC (rev 955) @@ -34,6 +34,7 @@ import org.dllearner.core.ReasoningService; import org.dllearner.kb.OWLFile; import org.dllearner.kb.sparql.SparqlKnowledgeSource; +import org.dllearner.kb.sparql.SparqlQuery; import org.dllearner.kb.sparql.SparqlQueryThreaded; /** @@ -51,7 +52,7 @@ private Set<KnowledgeSource> knowledgeSources = new HashSet<KnowledgeSource>(); - private Map<Integer, SparqlQueryThreaded> queryIDs = new HashMap<Integer, SparqlQueryThreaded>(); + private Map<Integer, SparqlQuery> queryIDs = new HashMap<Integer, SparqlQuery>(); private LearningProblem learningProblem; @@ -73,7 +74,7 @@ return id; } - private int generateQueryID(SparqlQueryThreaded query) { + private int generateQueryID(SparqlQuery query) { int id; Random rand = new Random(); do { @@ -83,11 +84,11 @@ return id; } - public int addQuery(SparqlQueryThreaded query){ + public int addQuery(SparqlQuery query){ return this.generateQueryID(query); } - public SparqlQueryThreaded getQuery(int id){ + public SparqlQuery getQuery(int id){ return queryIDs.get(id); } Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-06-10 15:51:54 UTC (rev 954) +++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-06-10 16:51:06 UTC (rev 955) @@ -61,6 +61,7 @@ import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; import org.dllearner.kb.sparql.SparqlQueryException; import org.dllearner.kb.sparql.SparqlQueryThreaded; +import org.dllearner.kb.sparql.Cache; import org.dllearner.learningproblems.PosNegDefinitionLP; import org.dllearner.learningproblems.PosNegInclusionLP; import org.dllearner.learningproblems.PosOnlyDefinitionLP; @@ -536,11 +537,16 @@ { final ClientState state = getState(sessionID); Component component = state.getComponent(componentID); - final int id=state.addQuery(((SparqlKnowledgeSource)component).sparqlQueryThreaded(query)); + final SparqlKnowledgeSource ks=(SparqlKnowledgeSource)component; + final int id=state.addQuery(ks.sparqlQuery(query)); Thread sparqlThread = new Thread() { @Override public void run() { - state.getQuery(id).send(); + if (ks.getUseCache()){ + Cache cache=new Cache(ks.getCacheDir()); + cache.executeSparqlQuery(state.getQuery(id)); + } + else state.getQuery(id).send(); } }; sparqlThread.start(); @@ -552,8 +558,13 @@ { ClientState state = getState(sessionID); Component component = state.getComponent(componentID); - SparqlQueryThreaded sparql=((SparqlKnowledgeSource)component).sparqlQueryThreaded(query); - sparql.send(); + SparqlKnowledgeSource ks=(SparqlKnowledgeSource)component; + SparqlQuery sparql=ks.sparqlQuery(query); + if (ks.getUseCache()){ + Cache cache=new Cache(ks.getCacheDir()); + cache.executeSparqlQuery(sparql); + } + else sparql.send(); return sparql.getResult(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2008-06-17 10:53:46
|
Revision: 963 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=963&view=rev Author: lorenz_b Date: 2008-06-17 03:53:42 -0700 (Tue, 17 Jun 2008) Log Message: ----------- added method getInconsistentClasses() to class OWLAPIReasoner and interface ReasonerComponent Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java Modified: trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java 2008-06-15 13:46:32 UTC (rev 962) +++ trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java 2008-06-17 10:53:42 UTC (rev 963) @@ -38,6 +38,7 @@ import org.dllearner.core.owl.ObjectPropertyHierarchy; import org.dllearner.core.owl.SubsumptionHierarchy; import org.dllearner.utilities.datastructures.SortedSetTuple; +import org.semanticweb.owl.model.OWLClass; /** * @author Jens Lehmann @@ -255,4 +256,7 @@ public abstract void releaseKB(); + public Set<OWLClass> getInconsistentClasses() throws ReasoningMethodUnsupportedException{ + throw new ReasoningMethodUnsupportedException(); + } } Modified: trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2008-06-15 13:46:32 UTC (rev 962) +++ trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2008-06-17 10:53:42 UTC (rev 963) @@ -938,5 +938,17 @@ public boolean hasDatatypeSupport() { return true; } + + @Override + public Set<OWLClass> getInconsistentClasses(){ + + try { + return reasoner.getInconsistentClasses(); + } catch (OWLReasonerException e) { + e.printStackTrace(); + throw new Error("Inconsistens classes check error in OWL API."); + } + + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sk...@us...> - 2008-06-17 17:04:01
|
Revision: 966 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=966&view=rev Author: sknappe Date: 2008-06-17 10:03:58 -0700 (Tue, 17 Jun 2008) Log Message: ----------- Changed the classes to work without SparqlQueryThreaded Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-06-17 16:33:03 UTC (rev 965) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-06-17 17:03:58 UTC (rev 966) @@ -34,6 +34,8 @@ import org.dllearner.core.KnowledgeSource; import org.dllearner.utilities.JamonMonitorLogger; +import com.hp.hpl.jena.query.ResultSet; + /** * SPARQL query cache to avoid possibly expensive multiple queries. The queries * and their results are written to files. A cache has an associated cache @@ -249,15 +251,17 @@ JamonMonitorLogger.getTimeMonitor(Cache.class, "ReadTime").stop(); if (result != null) { + query.setJson(result); + query.setRunning(false); logger.trace("got from cache"); JamonMonitorLogger.increaseCount(Cache.class, "SuccessfulHits"); //Statistics.increaseCachedQuery(); //return result; } else { //SimpleClock sc = new SimpleClock(); - query.send(); //sc.printAndSet("query"); - String json = query.getResult(); + ResultSet rs= query.send(); + String json = SparqlQuery.getAsJSON(rs); if (json!=null){ addToCache(query.getQueryString(), json); result=json; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java 2008-06-17 16:33:03 UTC (rev 965) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java 2008-06-17 17:03:58 UTC (rev 966) @@ -354,8 +354,8 @@ if(c==null){ SparqlQuery sq = new SparqlQuery(SPARQLquery,se); // sq.extraDebugInfo+=se.getURL(); - sq.send(); - String JSON = sq.getResult(); + ResultSet rs=sq.send(); + String JSON = SparqlQuery.getAsJSON(rs); return JSON; }else{ return c.executeSparqlQuery(new SparqlQuery(SPARQLquery,se)); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-06-17 16:33:03 UTC (rev 965) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-06-17 17:03:58 UTC (rev 966) @@ -49,7 +49,8 @@ private String queryString; private QueryEngineHTTP queryExecution; private SparqlEndpoint endpoint; - private String json = null; + private ResultSet rs; + private String json; // private SparqlQueryException sendException=null; /** @@ -69,9 +70,8 @@ public ResultSet send() { isRunning = true; - ResultSet rs=null; logger.trace(queryString); - + String service = endpoint.getURL().toString(); logger.trace(endpoint.getURL().toString()); // Jena access to SPARQL endpoint @@ -91,8 +91,7 @@ JamonMonitorLogger.getTimeMonitor(SparqlQuery.class, "httpTime").stop(); logger.debug("query SPARQL server, retrieved: "+rs.getResultVars()); - json=SparqlQuery.getAsJSON(rs); - + logger.trace(rs.getResultVars().toString()); // } catch (Exception e){ // sendException=new SparqlQueryException(e.getMessage()); @@ -114,13 +113,6 @@ return queryString; } - /** - * @return String JSON - */ - public String getResult() { - return json; - } - public boolean isRunning() { return isRunning; } @@ -133,10 +125,6 @@ // return sendException; // } - public boolean hasCompleted() { - return (json != null); - } - /** * sends a query and returns XML * @@ -184,4 +172,19 @@ return ResultSetFactory.fromJSON(bais); } + public String getJson() { + return json; + } + + public void setJson(String json) { + this.json = json; + } + + public void setRunning(boolean running){ + this.isRunning=running; + } + + public ResultSet getResultSet(){ + return rs; + } } Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-06-17 16:33:03 UTC (rev 965) +++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-06-17 17:03:58 UTC (rev 966) @@ -521,15 +521,22 @@ public String getAsJSON(int sessionID, int queryID) throws ClientNotKnownException, SparqlQueryException { ClientState state = getState(sessionID); - return state.getQuery(queryID).getResult(); + ResultSet resultSet=null; + String json=null; + if ((json=state.getQuery(queryID).getJson())!=null) return json; + else if ((resultSet=state.getQuery(queryID).getResultSet())!=null) return SparqlQuery.getAsJSON(resultSet); + else return SparqlQuery.getAsJSON(state.getQuery(queryID).send()); } @WebMethod public String getAsXMLString(int sessionID, int queryID) throws ClientNotKnownException { ClientState state = getState(sessionID); - ResultSet resultSet=SparqlQuery.JSONtoResultSet(state.getQuery(queryID).getResult()); - return SparqlQuery.getAsXMLString(resultSet); + ResultSet resultSet=null; + String json=null; + if ((resultSet=state.getQuery(queryID).getResultSet())!=null) return SparqlQuery.getAsXMLString(resultSet); + else if ((json=state.getQuery(queryID).getJson())!=null) return SparqlQuery.getAsXMLString(SparqlQuery.JSONtoResultSet(json)); + else return SparqlQuery.getAsXMLString(state.getQuery(queryID).send()); } @WebMethod @@ -543,6 +550,7 @@ @Override public void run() { if (ks.getUseCache()){ + state.getQuery(id).setRunning(true); Cache cache=new Cache(ks.getCacheDir()); cache.executeSparqlQuery(state.getQuery(id)); } @@ -562,10 +570,9 @@ SparqlQuery sparql=ks.sparqlQuery(query); if (ks.getUseCache()){ Cache cache=new Cache(ks.getCacheDir()); - cache.executeSparqlQuery(sparql); + return cache.executeSparqlQuery(sparql); } - else sparql.send(); - return sparql.getResult(); + else return SparqlQuery.getAsJSON(sparql.send()); } @WebMethod This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sk...@us...> - 2008-06-17 17:05:11
|
Revision: 967 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=967&view=rev Author: sknappe Date: 2008-06-17 10:05:00 -0700 (Tue, 17 Jun 2008) Log Message: ----------- Changed the classes to work without SparqlQueryThreaded Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/server/ClientState.java trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryThreaded.java Deleted: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryThreaded.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryThreaded.java 2008-06-17 17:03:58 UTC (rev 966) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryThreaded.java 2008-06-17 17:05:00 UTC (rev 967) @@ -1,41 +0,0 @@ -package org.dllearner.kb.sparql; - -/** - * The class is used for threaded querying of a Sparql Endpoint. - * @author Sebastian Knappe - * - */ -public class SparqlQueryThreaded { - private Cache cache; - private SparqlQuery query; - private String result; - - public SparqlQueryThreaded(Cache cache, SparqlQuery query) - { - this.cache=cache; - this.query=query; - this.result=null; - } - - public void stop() { - query.getExecution().abort(); - result=null; - } - - public boolean isRunning() { - return result==null; - } - - public void send() - { - result=cache.executeSparqlQuery(query); - } - - public SparqlQuery getSparqlQuery(){ - return query; - } - - public String getResult(){ - return result; - } -} Modified: trunk/src/dl-learner/org/dllearner/server/ClientState.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/ClientState.java 2008-06-17 17:03:58 UTC (rev 966) +++ trunk/src/dl-learner/org/dllearner/server/ClientState.java 2008-06-17 17:05:00 UTC (rev 967) @@ -35,7 +35,6 @@ import org.dllearner.kb.OWLFile; import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.kb.sparql.SparqlQuery; -import org.dllearner.kb.sparql.SparqlQueryThreaded; /** * Stores the state of a DL-Learner client session. Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-06-17 17:03:58 UTC (rev 966) +++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-06-17 17:05:00 UTC (rev 967) @@ -60,7 +60,6 @@ import org.dllearner.kb.sparql.SparqlQuery; import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; import org.dllearner.kb.sparql.SparqlQueryException; -import org.dllearner.kb.sparql.SparqlQueryThreaded; import org.dllearner.kb.sparql.Cache; import org.dllearner.learningproblems.PosNegDefinitionLP; import org.dllearner.learningproblems.PosNegInclusionLP; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sk...@us...> - 2008-06-18 18:26:52
|
Revision: 972 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=972&view=rev Author: sknappe Date: 2008-06-18 11:26:41 -0700 (Wed, 18 Jun 2008) Log Message: ----------- changed to work without SparqlQueryThreaded Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-06-18 18:25:58 UTC (rev 971) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-06-18 18:26:41 UTC (rev 972) @@ -265,6 +265,7 @@ if (json!=null){ addToCache(query.getQueryString(), json); result=json; + query.setJson(result); } else { json=""; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-06-18 18:25:58 UTC (rev 971) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-06-18 18:26:41 UTC (rev 972) @@ -23,11 +23,13 @@ import java.io.ByteArrayOutputStream; import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; +import java.util.Iterator; import org.apache.log4j.Logger; import org.dllearner.core.KnowledgeSource; import org.dllearner.utilities.JamonMonitorLogger; +import com.hp.hpl.jena.query.QuerySolution; import com.hp.hpl.jena.query.ResultSet; import com.hp.hpl.jena.query.ResultSetFactory; import com.hp.hpl.jena.query.ResultSetFormatter; @@ -69,7 +71,7 @@ */ public ResultSet send() { - isRunning = true; + //isRunning = true; logger.trace(queryString); String service = endpoint.getURL().toString(); @@ -85,11 +87,10 @@ //TODO remove after overnext Jena release HttpQuery.urlLimit = 3*1024 ; - JamonMonitorLogger.getTimeMonitor(SparqlQuery.class, "httpTime").start(); rs = queryExecution.execSelect(); JamonMonitorLogger.getTimeMonitor(SparqlQuery.class, "httpTime").stop(); - + logger.debug("query SPARQL server, retrieved: "+rs.getResultVars()); logger.trace(rs.getResultVars().toString()); @@ -100,7 +101,7 @@ // logger.debug("Exception when querying Sparql Endpoint in " + this.getClass()); // logger.debug(queryString); // } - isRunning = false; + //isRunning = false; return rs; } Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-06-18 18:25:58 UTC (rev 971) +++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-06-18 18:26:41 UTC (rev 972) @@ -552,8 +552,13 @@ state.getQuery(id).setRunning(true); Cache cache=new Cache(ks.getCacheDir()); cache.executeSparqlQuery(state.getQuery(id)); + state.getQuery(id).setRunning(false); } - else state.getQuery(id).send(); + else{ + state.getQuery(id).setRunning(true); + state.getQuery(id).send(); + state.getQuery(id).setRunning(false); + } } }; sparqlThread.start(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hee...@us...> - 2008-06-23 11:12:45
|
Revision: 976 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=976&view=rev Author: heeroyuy Date: 2008-06-23 04:11:48 -0700 (Mon, 23 Jun 2008) Log Message: ----------- -bug fixes -removed unnecessary outputs Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/SimpleSuggestionLearningAlgorithm.java trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java trunk/src/dl-learner/org/dllearner/tools/protege/OWLClassDescriptionEditorWithDLLearnerTab.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/SimpleSuggestionLearningAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/SimpleSuggestionLearningAlgorithm.java 2008-06-22 11:09:36 UTC (rev 975) +++ trunk/src/dl-learner/org/dllearner/algorithms/SimpleSuggestionLearningAlgorithm.java 2008-06-23 11:11:48 UTC (rev 976) @@ -72,7 +72,6 @@ test.iterator().next(); Description d1 = new ObjectSomeRestriction(test.iterator().next(), new Thing()); test.remove(rs.getAtomicRolesList().iterator().next()); - System.out.println("TADA: "+d1); simpleSuggestions.add(d1); } return simpleSuggestions; Modified: trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2008-06-22 11:09:36 UTC (rev 975) +++ trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2008-06-23 11:11:48 UTC (rev 976) @@ -195,8 +195,6 @@ try { if(source instanceof OWLAPIOntology) { - System.out.println(source instanceof OWLAPIOntology); - System.out.println("JUHU es geht"); OWLOntology ontology = ((OWLAPIOntology)source).getOWLOntolgy(); owlAPIOntologies.add(ontology); allImports.addAll(manager.getImportsClosure(ontology)); @@ -216,7 +214,6 @@ } else { - System.out.println(":'S"); OWLOntology ontology = manager.loadOntologyFromPhysicalURI(url.toURI()); owlAPIOntologies.add(ontology); allImports.addAll(manager.getImportsClosure(ontology)); Modified: trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java 2008-06-22 11:09:36 UTC (rev 975) +++ trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java 2008-06-23 11:11:48 UTC (rev 976) @@ -438,20 +438,28 @@ public void setPositiveConcept() { SortedSet<Individual> individuals = null; - for(Iterator<NamedClass> i = rs.getAtomicConcepts().iterator(); i.hasNext();) + if(!aktuell.getRootObject().toString().equals("Thing")) { - if(individuals==null) + for(Iterator<NamedClass> i = rs.getAtomicConcepts().iterator(); i.hasNext();) { - NamedClass concept = i.next(); - if(concept.toString().endsWith("#"+aktuell.getRootObject().toString())) + if(individuals==null) { - if(rs.retrieval(concept)!=null){ - individual = rs.retrieval(concept); - break; + NamedClass concept = i.next(); + if(concept.toString().endsWith("#"+aktuell.getRootObject().toString())) + { + if(rs.retrieval(concept)!=null) + { + individual = rs.retrieval(concept); + break; + } } } } } + else + { + individual = rs.getIndividuals(); + } } /** @@ -463,9 +471,12 @@ public boolean setPositivExamplesChecked(String indi) { boolean isChecked = false; - if(individual.toString().contains(indi)) + if(individual != null) { - isChecked = true; + if(individual.toString().contains(indi)) + { + isChecked = true; + } } return isChecked; Modified: trunk/src/dl-learner/org/dllearner/tools/protege/OWLClassDescriptionEditorWithDLLearnerTab.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/OWLClassDescriptionEditorWithDLLearnerTab.java 2008-06-22 11:09:36 UTC (rev 975) +++ trunk/src/dl-learner/org/dllearner/tools/protege/OWLClassDescriptionEditorWithDLLearnerTab.java 2008-06-23 11:11:48 UTC (rev 976) @@ -177,7 +177,6 @@ public void clear() { - System.out.println("Und jetzt bin ich hier :-)"); dllearner.unsetEverything(); dllearner.makeView(); handleVerifyEditorContents(); @@ -194,8 +193,6 @@ return restrictionCreatorPanel.createRestrictions(); } else if(tabbedPane.getSelectedComponent() == dllearner){ - System.out.println("die loesungen:"+dllearner.getSollutions()); - return dllearner.getSollutions(); } return super.getEditedObjects(); @@ -478,7 +475,6 @@ */ public OWLDescription getSollution() { - System.out.println(model.getSolution()); return model.getSolution(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-06-24 17:05:38
|
Revision: 979 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=979&view=rev Author: kurzum Date: 2008-06-24 10:04:10 -0700 (Tue, 24 Jun 2008) Log Message: ----------- made an extra log file just fo sparql in folder log/sparql.txt SparqlQuery method send should not return resultSet. Therefore I marked it deprecated. It is a possible source of errors, because it can only be used/traversed once. e.g. SparqlQuery.getAsXML(ResulSet); SparqlQuery.getAsXML(ResulSet); will produce an error on second call. Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/cli/Start.java trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java trunk/src/dl-learner/org/dllearner/server/DLLearnerWSStart.java Modified: trunk/src/dl-learner/org/dllearner/cli/Start.java =================================================================== --- trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-06-24 12:08:34 UTC (rev 978) +++ trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-06-24 17:04:10 UTC (rev 979) @@ -64,9 +64,9 @@ import org.dllearner.core.config.StringConfigOption; import org.dllearner.core.config.StringSetConfigOption; import org.dllearner.core.config.StringTupleListConfigOption; -import org.dllearner.core.owl.NamedClass; 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.KBFile; import org.dllearner.kb.OWLFile; @@ -120,18 +120,24 @@ // create logger (a simple logger which outputs // its messages to the console and a log file) + SimpleLayout layout = new SimpleLayout(); ConsoleAppender consoleAppender = new ConsoleAppender(layout); - FileAppender fileAppender = null; + FileAppender fileAppenderNormal = null; + File f = new File("log/sparql.txt"); try { - fileAppender = new FileAppender(layout, "log/log.txt", false); + fileAppenderNormal = new FileAppender(layout, "log/log.txt", false); + f.delete(); + f.createNewFile(); } catch (IOException e) { e.printStackTrace(); } + logger.removeAllAppenders(); logger.addAppender(consoleAppender); - logger.addAppender(fileAppender); + logger.addAppender(fileAppenderNormal); logger.setLevel(Level.DEBUG); + // Logger.getLogger(KnowledgeSource.class).setLevel(Level.WARN); // Logger.getLogger(SparqlKnowledgeSource.class).setLevel(Level.WARN); // Logger.getLogger(TypedSparqlQuery.class).setLevel(Level.WARN); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-06-24 12:08:34 UTC (rev 978) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-06-24 17:04:10 UTC (rev 979) @@ -31,11 +31,8 @@ import java.util.LinkedList; import org.apache.log4j.Logger; -import org.dllearner.core.KnowledgeSource; import org.dllearner.utilities.JamonMonitorLogger; -import com.hp.hpl.jena.query.ResultSet; - /** * SPARQL query cache to avoid possibly expensive multiple queries. The queries * and their results are written to files. A cache has an associated cache @@ -61,7 +58,8 @@ */ public class Cache implements Serializable { - private static Logger logger = Logger.getLogger(KnowledgeSource.class); + private static Logger logger = Logger.getLogger(Cache.class); + private static final long serialVersionUID = 843308736471742205L; @@ -237,39 +235,41 @@ * * @param query * The SPARQL query. - * @return Jena result set. + * @return Jena result set in JSON format */ public String executeSparqlQuery(SparqlQuery query) { JamonMonitorLogger.getTimeMonitor(Cache.class, "TotalTimeExecuteSparqlQuery").start(); JamonMonitorLogger.increaseCount(Cache.class, "TotalQueries"); - - - //Statistics.increaseQuery(); - + JamonMonitorLogger.getTimeMonitor(Cache.class, "ReadTime").start(); String result = getCacheEntry(query.getQueryString()); JamonMonitorLogger.getTimeMonitor(Cache.class, "ReadTime").stop(); if (result != null) { - query.setJson(result); - query.setRunning(false); - logger.trace("got from cache"); + //query.setJson(result); + + query.setRunning(false); + SparqlQuery.writeToSpecialLog("***********\nJSON retrieved from cache"); + SparqlQuery.writeToSpecialLog(query.getQueryString()); + SparqlQuery.writeToSpecialLog(query.getEndpoint().getURL().toString()); JamonMonitorLogger.increaseCount(Cache.class, "SuccessfulHits"); - //Statistics.increaseCachedQuery(); - //return result; + } else { - //SimpleClock sc = new SimpleClock(); - //sc.printAndSet("query"); - ResultSet rs= query.send(); - String json = SparqlQuery.getAsJSON(rs); + + //ResultSet rs= query.send(); + query.send(); + String json = query.getJson(); if (json!=null){ addToCache(query.getQueryString(), json); + SparqlQuery.writeToSpecialLog("result added to cache: "+json); result=json; query.setJson(result); } else { json=""; + result=""; logger.warn(Cache.class.getSimpleName()+"empty result: "+query.getQueryString()); + SparqlQuery.writeToSpecialLog("empty result for : "+query.getQueryString()); } //return json; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-06-24 12:08:34 UTC (rev 978) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-06-24 17:04:10 UTC (rev 979) @@ -21,15 +21,13 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; +import java.io.FileWriter; import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; -import java.util.Iterator; import org.apache.log4j.Logger; -import org.dllearner.core.KnowledgeSource; import org.dllearner.utilities.JamonMonitorLogger; -import com.hp.hpl.jena.query.QuerySolution; import com.hp.hpl.jena.query.ResultSet; import com.hp.hpl.jena.query.ResultSetFactory; import com.hp.hpl.jena.query.ResultSetFormatter; @@ -45,13 +43,14 @@ */ public class SparqlQuery { - private static Logger logger = Logger.getLogger(KnowledgeSource.class); + private static Logger logger = Logger.getLogger(SparqlQuery.class); + private boolean isRunning = false; private String queryString; private QueryEngineHTTP queryExecution; private SparqlEndpoint endpoint; - private ResultSet rs; + //private ResultSet rs; private String json; // private SparqlQueryException sendException=null; @@ -66,16 +65,26 @@ this.endpoint = endpoint; } + + + + /** * Sends a SPARQL query using the Jena library. + * should return JSON String + * needs refactoring + * @return ResultSet */ + @Deprecated public ResultSet send() { - + ResultSet rs; //isRunning = true; - logger.trace(queryString); + writeToSpecialLog("***********\nNew Query:"); + writeToSpecialLog(queryString); + writeToSpecialLog(endpoint.getURL().toString()); String service = endpoint.getURL().toString(); - logger.trace(endpoint.getURL().toString()); + // Jena access to SPARQL endpoint queryExecution = new QueryEngineHTTP(service, queryString); for (String dgu : endpoint.getDefaultGraphURIs()) { @@ -91,17 +100,20 @@ rs = queryExecution.execSelect(); JamonMonitorLogger.getTimeMonitor(SparqlQuery.class, "httpTime").stop(); + logger.debug("query SPARQL server, retrieved: "+rs.getResultVars()); - - logger.trace(rs.getResultVars().toString()); -// } catch (Exception e){ -// sendException=new SparqlQueryException(e.getMessage()); -// logger.debug(e.getMessage()); -// //e.printStackTrace(); -// logger.debug("Exception when querying Sparql Endpoint in " + this.getClass()); -// logger.debug(queryString); -// } - //isRunning = false; + writeToSpecialLog("query SPARQL server, retrieved: "+rs.getResultVars()); + writeToSpecialLog("Results from ResultSet"); + + json = SparqlQuery.getAsJSON(rs); + writeToSpecialLog(json); + rs = SparqlQuery.JSONtoResultSet(json); + while (rs.hasNext()){ + writeToSpecialLog("Result: "+rs.nextBinding()); + } + + isRunning = false; + rs = SparqlQuery.JSONtoResultSet(json); return rs; } @@ -114,6 +126,10 @@ return queryString; } + public SparqlEndpoint getEndpoint() { + return endpoint; + } + public boolean isRunning() { return isRunning; } @@ -185,7 +201,18 @@ this.isRunning=running; } - public ResultSet getResultSet(){ + public static void writeToSpecialLog(String s){ + try{ + FileWriter fw = new FileWriter("log/sparql.txt",true); + fw.write(s+"\n"); + fw.flush(); + fw.close(); + }catch (Exception e) { + e.printStackTrace(); + } + } + + /*public ResultSet getResultSet(){ return rs; - } + }*/ } Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-06-24 12:08:34 UTC (rev 978) +++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-06-24 17:04:10 UTC (rev 979) @@ -51,16 +51,16 @@ import org.dllearner.core.LearningProblemUnsupportedException; import org.dllearner.core.ReasonerComponent; import org.dllearner.core.config.ConfigOption; -import org.dllearner.core.owl.NamedClass; 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.OWLFile; +import org.dllearner.kb.sparql.Cache; import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.kb.sparql.SparqlQuery; import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; import org.dllearner.kb.sparql.SparqlQueryException; -import org.dllearner.kb.sparql.Cache; import org.dllearner.learningproblems.PosNegDefinitionLP; import org.dllearner.learningproblems.PosNegInclusionLP; import org.dllearner.learningproblems.PosOnlyDefinitionLP; @@ -72,8 +72,6 @@ import org.dllearner.utilities.Helper; import org.dllearner.utilities.datastructures.Datastructures; -import com.hp.hpl.jena.query.ResultSet; - /** * DL-Learner web service interface. * @@ -520,10 +518,10 @@ public String getAsJSON(int sessionID, int queryID) throws ClientNotKnownException, SparqlQueryException { ClientState state = getState(sessionID); - ResultSet resultSet=null; + //ResultSet resultSet=null; String json=null; if ((json=state.getQuery(queryID).getJson())!=null) return json; - else if ((resultSet=state.getQuery(queryID).getResultSet())!=null) return SparqlQuery.getAsJSON(resultSet); + //else if ((resultSet=state.getQuery(queryID).getResultSet())!=null) return SparqlQuery.getAsJSON(resultSet); else return SparqlQuery.getAsJSON(state.getQuery(queryID).send()); } @@ -531,10 +529,10 @@ public String getAsXMLString(int sessionID, int queryID) throws ClientNotKnownException { ClientState state = getState(sessionID); - ResultSet resultSet=null; + //ResultSet resultSet=null; String json=null; - if ((resultSet=state.getQuery(queryID).getResultSet())!=null) return SparqlQuery.getAsXMLString(resultSet); - else if ((json=state.getQuery(queryID).getJson())!=null) return SparqlQuery.getAsXMLString(SparqlQuery.JSONtoResultSet(json)); + //if ((resultSet=state.getQuery(queryID).getResultSet())!=null) return SparqlQuery.getAsXMLString(resultSet); + if ((json=state.getQuery(queryID).getJson())!=null) return SparqlQuery.getAsXMLString(SparqlQuery.JSONtoResultSet(json)); else return SparqlQuery.getAsXMLString(state.getQuery(queryID).send()); } @@ -590,7 +588,6 @@ public void stopSparqlThread(int sessionID, int queryID) throws ClientNotKnownException { ClientState state = getState(sessionID); - state.getQuery(queryID).stop(); } Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWSStart.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/DLLearnerWSStart.java 2008-06-24 12:08:34 UTC (rev 978) +++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWSStart.java 2008-06-24 17:04:10 UTC (rev 979) @@ -20,6 +20,7 @@ package org.dllearner.server; import java.io.BufferedReader; +import java.io.File; import java.io.IOException; import java.io.InputStreamReader; import java.net.InetSocketAddress; @@ -29,6 +30,7 @@ import javax.xml.ws.Endpoint; import org.apache.log4j.ConsoleAppender; +import org.apache.log4j.FileAppender; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.SimpleLayout; @@ -46,14 +48,28 @@ public class DLLearnerWSStart { public static void main(String[] args) { - - // create web service logger - SimpleLayout layout = new SimpleLayout(); + + //create web service logger + SimpleLayout layout = new SimpleLayout(); ConsoleAppender consoleAppender = new ConsoleAppender(layout); Logger logger = Logger.getRootLogger(); + + FileAppender fileAppenderNormal = null; + File f = new File("log/sparql.txt"); + try { + fileAppenderNormal = new FileAppender(layout, "log/log.txt", false); + f.delete(); + f.createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + } + + logger.removeAllAppenders(); logger.addAppender(consoleAppender); + logger.addAppender(fileAppenderNormal); logger.setLevel(Level.INFO); + InetSocketAddress isa = new InetSocketAddress("localhost", 8181); HttpServer server = null; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2008-06-25 20:33:28
|
Revision: 980 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=980&view=rev Author: lorenz_b Date: 2008-06-25 13:33:25 -0700 (Wed, 25 Jun 2008) Log Message: ----------- changed return type of method getInconsistentClasses() to NamedClass Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java Modified: trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java 2008-06-24 17:04:10 UTC (rev 979) +++ trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java 2008-06-25 20:33:25 UTC (rev 980) @@ -256,7 +256,7 @@ public abstract void releaseKB(); - public Set<OWLClass> getInconsistentClasses() throws ReasoningMethodUnsupportedException{ + public Set<NamedClass> getInconsistentClasses() throws ReasoningMethodUnsupportedException{ throw new ReasoningMethodUnsupportedException(); } } Modified: trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2008-06-24 17:04:10 UTC (rev 979) +++ trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2008-06-25 20:33:25 UTC (rev 980) @@ -937,15 +937,18 @@ } @Override - public Set<OWLClass> getInconsistentClasses(){ + public Set<NamedClass> getInconsistentClasses(){ + Set<NamedClass> concepts = new HashSet<NamedClass>(); try { - return reasoner.getInconsistentClasses(); + for(OWLClass concept : reasoner.getInconsistentClasses()) + concepts.add(new NamedClass(concept.getURI().toString())); + } catch (OWLReasonerException e) { e.printStackTrace(); - throw new Error("Inconsistens classes check error in OWL API."); + throw new Error("Inconsistent classes check error in OWL API."); } - + return concepts; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-06-26 15:22:06
|
Revision: 984 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=984&view=rev Author: kurzum Date: 2008-06-26 08:21:53 -0700 (Thu, 26 Jun 2008) Log Message: ----------- main format for sparqlquery is json now hope it doesn't produce so much errors now anymore Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java trunk/src/dl-learner/org/dllearner/test/JenaQueryToResultSpeedTest.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-06-26 10:44:36 UTC (rev 983) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-06-26 15:21:53 UTC (rev 984) @@ -246,12 +246,13 @@ JamonMonitorLogger.getTimeMonitor(Cache.class, "ReadTime").stop(); if (result != null) { - //query.setJson(result); + query.setJson(result); query.setRunning(false); - SparqlQuery.writeToSpecialLog("***********\nJSON retrieved from cache"); - SparqlQuery.writeToSpecialLog(query.getQueryString()); - SparqlQuery.writeToSpecialLog(query.getEndpoint().getURL().toString()); + SparqlQuery.writeToSparqlLog("***********\nJSON retrieved from cache"); + SparqlQuery.writeToSparqlLog(query.getQueryString()); + SparqlQuery.writeToSparqlLog(query.getEndpoint().getURL().toString()); + SparqlQuery.writeToSparqlLog("JSON: "+result); JamonMonitorLogger.increaseCount(Cache.class, "SuccessfulHits"); } else { @@ -261,7 +262,7 @@ String json = query.getJson(); if (json!=null){ addToCache(query.getQueryString(), json); - SparqlQuery.writeToSpecialLog("result added to cache: "+json); + SparqlQuery.writeToSparqlLog("result added to cache: "+json); result=json; query.setJson(result); } @@ -269,7 +270,7 @@ json=""; result=""; logger.warn(Cache.class.getSimpleName()+"empty result: "+query.getQueryString()); - SparqlQuery.writeToSpecialLog("empty result for : "+query.getQueryString()); + SparqlQuery.writeToSparqlLog("empty result for : "+query.getQueryString()); } //return json; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java 2008-06-26 10:44:36 UTC (rev 983) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java 2008-06-26 15:21:53 UTC (rev 984) @@ -354,8 +354,8 @@ if(c==null){ SparqlQuery sq = new SparqlQuery(SPARQLquery,se); // sq.extraDebugInfo+=se.getURL(); - ResultSet rs=sq.send(); - String JSON = SparqlQuery.getAsJSON(rs); + sq.send(); + String JSON = sq.getJson(); return JSON; }else{ return c.executeSparqlQuery(new SparqlQuery(SPARQLquery,se)); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-06-26 10:44:36 UTC (rev 983) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-06-26 15:21:53 UTC (rev 984) @@ -45,7 +45,6 @@ import org.dllearner.core.config.StringTupleListConfigOption; import org.dllearner.core.owl.KB; import org.dllearner.kb.extraction.Manager; -import org.dllearner.kb.extraction.Manipulator; import org.dllearner.kb.extraction.ManipulatorType; import org.dllearner.kb.extraction.Manipulators; import org.dllearner.parser.KBParser; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-06-26 10:44:36 UTC (rev 983) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-06-26 15:21:53 UTC (rev 984) @@ -47,11 +47,12 @@ private boolean isRunning = false; + private boolean wasExecuted = false; private String queryString; private QueryEngineHTTP queryExecution; private SparqlEndpoint endpoint; //private ResultSet rs; - private String json; + private String json = null; // private SparqlQueryException sendException=null; /** @@ -61,7 +62,8 @@ * @param endpoint */ public SparqlQuery(String queryString, SparqlEndpoint endpoint) { - this.queryString = queryString; + // QUALITY there seems to be a bug in ontowiki + this.queryString = queryString.replaceAll("\n", " "); this.endpoint = endpoint; } @@ -71,17 +73,18 @@ /** * Sends a SPARQL query using the Jena library. - * should return JSON String - * needs refactoring - * @return ResultSet + * main format is JSON use method getasjson + * + * @return nothing */ - @Deprecated - public ResultSet send() { + + public void send() { + wasExecuted = true; ResultSet rs; //isRunning = true; - writeToSpecialLog("***********\nNew Query:"); - writeToSpecialLog(queryString); - writeToSpecialLog(endpoint.getURL().toString()); + writeToSparqlLog("***********\nNew Query:"); + writeToSparqlLog(queryString); + writeToSparqlLog(endpoint.getURL().toString()); String service = endpoint.getURL().toString(); @@ -94,6 +97,7 @@ queryExecution.addNamedGraph(ngu); } + //TODO remove after overnext Jena release HttpQuery.urlLimit = 3*1024 ; JamonMonitorLogger.getTimeMonitor(SparqlQuery.class, "httpTime").start(); @@ -101,20 +105,17 @@ JamonMonitorLogger.getTimeMonitor(SparqlQuery.class, "httpTime").stop(); - logger.debug("query SPARQL server, retrieved: "+rs.getResultVars()); - writeToSpecialLog("query SPARQL server, retrieved: "+rs.getResultVars()); - writeToSpecialLog("Results from ResultSet"); + logger.debug("query length: "+queryString.length()+" | ENDPOINT: "+endpoint.getURL().toString()); + //writeToSparqlLog("query: "+queryString+ " | ENDPOINT: "+endpoint.getURL().toString()); + + json = SparqlQuery.getAsJSON(rs); - writeToSpecialLog(json); - rs = SparqlQuery.JSONtoResultSet(json); - while (rs.hasNext()){ - writeToSpecialLog("Result: "+rs.nextBinding()); - } + writeToSparqlLog("JSON: "+json); + isRunning = false; - rs = SparqlQuery.JSONtoResultSet(json); - return rs; + } public void stop() { @@ -143,7 +144,7 @@ // } /** - * sends a query and returns XML + * Converts Jena result set to XML. * * @return String xml */ @@ -188,12 +189,25 @@ //System.out.println("JSON " + json); return ResultSetFactory.fromJSON(bais); } + + /** + * Converts from JSON to xml format. + * + * @param json + * A JSON representation if a SPARQL query result. + * @return A Jena ResultSet. + */ + public static String JSONtoXML(String json) { + return getAsXMLString(JSONtoResultSet(json)); + } public String getJson() { + if(wasExecuted == false){this.send();} return json; } public void setJson(String json) { + this.wasExecuted=true; this.json = json; } @@ -201,7 +215,7 @@ this.isRunning=running; } - public static void writeToSpecialLog(String s){ + public static void writeToSparqlLog(String s){ try{ FileWriter fw = new FileWriter("log/sparql.txt",true); fw.write(s+"\n"); @@ -212,7 +226,13 @@ } } - /*public ResultSet getResultSet(){ - return rs; - }*/ + public ResultSet getResultSet(){ + if(getJson() == null) {return null;} + else return JSONtoResultSet(json) ; + } + + public String getXMLString(){ + if(getJson() == null) {return null;} + else return JSONtoXML(json) ; + } } Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-06-26 10:44:36 UTC (rev 983) +++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-06-26 15:21:53 UTC (rev 984) @@ -519,21 +519,39 @@ { ClientState state = getState(sessionID); //ResultSet resultSet=null; - String json=null; - if ((json=state.getQuery(queryID).getJson())!=null) return json; + String json = null; + try { + json = state.getQuery(queryID).getJson(); + }catch (Exception e) { + e.printStackTrace(); + throw new SparqlQueryException("SparqlQuery failed"+e.toString()); + } + + if(json == null) { throw new SparqlQueryException("SparqlQuery failed JSON was null");} + return json; + //if ((json=state.getQuery(queryID).getJson())!=null) return json; //else if ((resultSet=state.getQuery(queryID).getResultSet())!=null) return SparqlQuery.getAsJSON(resultSet); - else return SparqlQuery.getAsJSON(state.getQuery(queryID).send()); + //else return SparqlQuery.getAsJSON(state.getQuery(queryID).send()); } @WebMethod - public String getAsXMLString(int sessionID, int queryID) throws ClientNotKnownException + public String getAsXMLString(int sessionID, int queryID) throws ClientNotKnownException, SparqlQueryException { ClientState state = getState(sessionID); - //ResultSet resultSet=null; - String json=null; + + String xml = null; + try{ + xml = state.getQuery(queryID).getXMLString(); + }catch (Exception e) { + e.printStackTrace(); + throw new SparqlQueryException("SparqlQuery failed"+e.toString()); + } + + if(xml == null) throw new SparqlQueryException("SparqlQuery failed xml was null"); + return xml; //if ((resultSet=state.getQuery(queryID).getResultSet())!=null) return SparqlQuery.getAsXMLString(resultSet); - if ((json=state.getQuery(queryID).getJson())!=null) return SparqlQuery.getAsXMLString(SparqlQuery.JSONtoResultSet(json)); - else return SparqlQuery.getAsXMLString(state.getQuery(queryID).send()); + //if ((json=state.getQuery(queryID).getJson())!=null) return SparqlQuery.getAsXMLString(SparqlQuery.JSONtoResultSet(json)); + //else return SparqlQuery.getAsXMLString(state.getQuery(queryID).send()); } @WebMethod @@ -574,7 +592,7 @@ Cache cache=new Cache(ks.getCacheDir()); return cache.executeSparqlQuery(sparql); } - else return SparqlQuery.getAsJSON(sparql.send()); + else return sparql.getJson(); } @WebMethod Modified: trunk/src/dl-learner/org/dllearner/test/JenaQueryToResultSpeedTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/JenaQueryToResultSpeedTest.java 2008-06-26 10:44:36 UTC (rev 983) +++ trunk/src/dl-learner/org/dllearner/test/JenaQueryToResultSpeedTest.java 2008-06-26 15:21:53 UTC (rev 984) @@ -22,7 +22,6 @@ import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlQuery; -import com.hp.hpl.jena.query.ResultSet; import com.hp.hpl.jena.query.ResultSetFormatter; @@ -54,14 +53,14 @@ SparqlEndpoint sse = SparqlEndpoint.EndpointDBpedia(); SparqlQuery sqJena = new SparqlQuery(queryString, sse); // first query is not counted - ResultSet rs = sqJena.send(); - SparqlQuery.getAsXMLString(rs); + sqJena.send(); + sqJena.getXMLString(); long now = System.currentTimeMillis(); long tmp = now; for (int i = 0; i < howOften; i++) { - rs = sqJena.send(); - SparqlQuery.getAsXMLString(rs); + sqJena.send(); + sqJena.getXMLString(); p("Jena as XML needed: " + (System.currentTimeMillis() - tmp)); tmp = System.currentTimeMillis(); @@ -83,8 +82,8 @@ for (int i = 0; i < howOften; i++) { // sqJena.getAsList(); - ResultSet rs = sqJena.send(); - ResultSetFormatter.toList(rs); + sqJena.send(); + ResultSetFormatter.toList(sqJena.getResultSet()); p("Jena as List needed: " + (System.currentTimeMillis() - tmp)); tmp = System.currentTimeMillis(); @@ -100,14 +99,14 @@ SparqlEndpoint sse = SparqlEndpoint.EndpointDBpedia(); SparqlQuery sqJena = new SparqlQuery(queryString, sse); // first query is not counted - ResultSet rs = sqJena.send(); - SparqlQuery.getAsJSON(rs); + sqJena.send(); + sqJena.getJson(); long now = System.currentTimeMillis(); long tmp = now; for (int i = 0; i < howOften; i++) { - rs = sqJena.send(); - SparqlQuery.getAsJSON(rs); + sqJena.send(); + sqJena.getJson(); p("Jena as JSON needed: " + (System.currentTimeMillis() - tmp)); tmp = System.currentTimeMillis(); @@ -123,15 +122,15 @@ SparqlEndpoint sse = SparqlEndpoint.EndpointDBpedia(); SparqlQuery sqJena = new SparqlQuery(queryString, sse); // first query is not counted - ResultSet rs = sqJena.send(); - SparqlQuery.getAsJSON(rs); + sqJena.send(); + sqJena.getJson(); long now = System.currentTimeMillis(); long tmp = now; for (int i = 0; i < howOften; i++) { // System.out.println(sqJena.getAsJSON()); - rs = sqJena.send(); - String json = SparqlQuery.getAsJSON(rs); + sqJena.send(); + String json = sqJena.getJson(); SparqlQuery.JSONtoResultSet(json); p("Jena as JSON and back needed: " + (System.currentTimeMillis() - tmp)); @@ -150,8 +149,8 @@ SparqlQuery sqJena = new SparqlQuery(queryString, sse); // SparqlQueryConventional sqConv=new SparqlQueryConventional(sse); - ResultSet rs = sqJena.send(); - System.out.println(SparqlQuery.getAsXMLString(rs)); + sqJena.send(); + System.out.println(sqJena.getJson()); // System.out.println(sqConv.getAsXMLString("")); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-06-27 14:28:52
|
Revision: 986 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=986&view=rev Author: jenslehmann Date: 2008-06-27 07:28:48 -0700 (Fri, 27 Jun 2008) Log Message: ----------- extension of abstract LearningAlgorithm class and many subsequent (possibly code-breaking) changes Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/BruteForceLearner.java trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java trunk/src/dl-learner/org/dllearner/algorithms/RandomGuesser.java trunk/src/dl-learner/org/dllearner/algorithms/SimpleSuggestionLearningAlgorithm.java trunk/src/dl-learner/org/dllearner/algorithms/gp/GP.java trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java trunk/src/dl-learner/org/dllearner/core/Score.java trunk/src/dl-learner/org/dllearner/examples/KRKModular.java trunk/src/dl-learner/org/dllearner/gui/MiniGUI.java trunk/src/dl-learner/org/dllearner/gui/RunPanel.java trunk/src/dl-learner/org/dllearner/learningproblems/ScoreThreeValued.java trunk/src/dl-learner/org/dllearner/learningproblems/ScoreTwoValued.java trunk/src/dl-learner/org/dllearner/scripts/CrossValidation.java trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java trunk/src/dl-learner/org/dllearner/scripts/TestValidation.java trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java trunk/src/dl-learner/org/dllearner/test/ComponentTest.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java trunk/src/dl-learner/org/dllearner/utilities/owl/ConceptTransformation.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/core/EvaluatedDescription.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/BruteForceLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/BruteForceLearner.java 2008-06-27 13:44:33 UTC (rev 985) +++ trunk/src/dl-learner/org/dllearner/algorithms/BruteForceLearner.java 2008-06-27 14:28:48 UTC (rev 986) @@ -26,6 +26,7 @@ import java.util.List; import java.util.Map; +import org.dllearner.core.EvaluatedDescription; import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.LearningProblem; import org.dllearner.core.ReasoningService; @@ -277,8 +278,13 @@ } @Override - public Description getBestSolution() { + public Description getCurrentlyBestDescription() { return bestDefinition; + } + + @Override + public EvaluatedDescription getCurrentlyBestEvaluatedDescription() { + return new EvaluatedDescription(bestDefinition,bestScore); } @Override @@ -286,4 +292,22 @@ stop = true; } + /* (non-Javadoc) + * @see org.dllearner.core.LearningAlgorithm#pause() + */ + @Override + public void pause() { + // TODO Auto-generated method stub + + } + + /* (non-Javadoc) + * @see org.dllearner.core.LearningAlgorithm#resume() + */ + @Override + public void resume() { + // TODO Auto-generated method stub + + } + } Modified: trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java 2008-06-27 13:44:33 UTC (rev 985) +++ trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java 2008-06-27 14:28:48 UTC (rev 986) @@ -24,6 +24,7 @@ import org.dllearner.algorithms.refexamples.ExampleBasedROLComponent; import org.dllearner.core.ComponentInitException; +import org.dllearner.core.EvaluatedDescription; import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.LearningProblem; import org.dllearner.core.ReasoningService; @@ -145,12 +146,35 @@ } @Override - public Description getBestSolution() { - return learner.getBestSolution(); + public Description getCurrentlyBestDescription() { + return learner.getCurrentlyBestDescription(); + } + + @Override + public EvaluatedDescription getCurrentlyBestEvaluatedDescription() { + return learner.getCurrentlyBestEvaluatedDescription(); } @Override public Score getSolutionScore() { return learner.getSolutionScore(); } + + /* (non-Javadoc) + * @see org.dllearner.core.LearningAlgorithm#pause() + */ + @Override + public void pause() { + // TODO Auto-generated method stub + + } + + /* (non-Javadoc) + * @see org.dllearner.core.LearningAlgorithm#resume() + */ + @Override + public void resume() { + // TODO Auto-generated method stub + + } } Modified: trunk/src/dl-learner/org/dllearner/algorithms/RandomGuesser.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/RandomGuesser.java 2008-06-27 13:44:33 UTC (rev 985) +++ trunk/src/dl-learner/org/dllearner/algorithms/RandomGuesser.java 2008-06-27 14:28:48 UTC (rev 986) @@ -25,6 +25,7 @@ import org.apache.log4j.Logger; import org.dllearner.algorithms.gp.Program; import org.dllearner.algorithms.gp.GPUtilities; +import org.dllearner.core.EvaluatedDescription; import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.LearningProblem; import org.dllearner.core.ReasoningService; @@ -117,8 +118,13 @@ } @Override - public Description getBestSolution() { + public Description getCurrentlyBestDescription() { return bestDefinition; + } + + @Override + public EvaluatedDescription getCurrentlyBestEvaluatedDescription() { + return new EvaluatedDescription(bestDefinition,bestScore); } @Override Modified: trunk/src/dl-learner/org/dllearner/algorithms/SimpleSuggestionLearningAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/SimpleSuggestionLearningAlgorithm.java 2008-06-27 13:44:33 UTC (rev 985) +++ trunk/src/dl-learner/org/dllearner/algorithms/SimpleSuggestionLearningAlgorithm.java 2008-06-27 14:28:48 UTC (rev 986) @@ -1,9 +1,8 @@ package org.dllearner.algorithms; -import java.util.Set; -import java.util.List; import java.util.*; +import org.dllearner.core.EvaluatedDescription; import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.LearningProblem; import org.dllearner.core.ReasoningService; @@ -25,9 +24,14 @@ //this.learningProblem = learningProblem; } - public Description getBestSolution() + public Description getCurrentlyBestDescription() { return bestSollution; + } + + public EvaluatedDescription getCurrentlyBestEvaluatedDescription() + { + return new EvaluatedDescription(bestSollution, solutionScore); } Modified: trunk/src/dl-learner/org/dllearner/algorithms/gp/GP.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/gp/GP.java 2008-06-27 13:44:33 UTC (rev 985) +++ trunk/src/dl-learner/org/dllearner/algorithms/gp/GP.java 2008-06-27 14:28:48 UTC (rev 986) @@ -30,6 +30,7 @@ import java.util.Map.Entry; import org.dllearner.algorithms.hybridgp.Psi; +import org.dllearner.core.EvaluatedDescription; import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.LearningProblem; import org.dllearner.core.ReasoningService; @@ -948,9 +949,14 @@ } @Override - public Description getBestSolution() { + public Description getCurrentlyBestDescription() { + return bestConcept; + } + + @Override + public EvaluatedDescription getCurrentlyBestEvaluatedDescription() { // return fittestIndividual.getTree(); - return bestConcept; + return new EvaluatedDescription(bestConcept,bestScore); } @Override Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java 2008-06-27 13:44:33 UTC (rev 985) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java 2008-06-27 14:28:48 UTC (rev 986) @@ -25,9 +25,11 @@ import java.util.LinkedList; import java.util.List; import java.util.Set; +import java.util.SortedSet; import org.apache.log4j.Level; import org.apache.log4j.Logger; +import org.dllearner.core.EvaluatedDescription; import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.LearningProblem; import org.dllearner.core.ReasoningService; @@ -391,21 +393,24 @@ } @Override - public Description getBestSolution() { + public Description getCurrentlyBestDescription() { return algorithm.getBestSolution(); } @Override - public synchronized List<Description> getBestSolutions(int nrOfSolutions) { - return algorithm.getBestSolutions(nrOfSolutions); + public synchronized SortedSet<Description> getCurrentlyBestDescriptions() { + return algorithm.getCurrentlyBestDescriptions(); } @Override - public synchronized List<Description> getGoodSolutions() { - return algorithm.getGoodSolutions(); + public EvaluatedDescription getCurrentlyBestEvaluatedDescription() { + return new EvaluatedDescription(algorithm.getBestSolution(),algorithm.getSolutionScore()); } - + @Override + public synchronized SortedSet<EvaluatedDescription> getCurrentlyBestEvaluatedDescriptions() { + return algorithm.getCurrentlyBestEvaluatedDescriptions(); + } @Override public void stop() { @@ -415,14 +420,15 @@ public ExampleBasedNode getStartNode() { return algorithm.getStartNode(); } + + @Override + public void pause() { + // TODO: not implemented + } + + @Override + public void resume() { + // TODO: not implemented + } - - /*public void printBestSolutions(int nrOfSolutions){ - - algorithm.printBestSolutions(nrOfSolutions); - }*/ - - - - } Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-06-27 13:44:33 UTC (rev 985) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-06-27 14:28:48 UTC (rev 986) @@ -33,6 +33,7 @@ import org.apache.log4j.Logger; import org.dllearner.algorithms.refinement.RefinementOperator; +import org.dllearner.core.EvaluatedDescription; import org.dllearner.core.LearningProblem; import org.dllearner.core.ReasoningService; import org.dllearner.core.Score; @@ -455,8 +456,7 @@ String KBSyntax="KBSyntax:\n"; for(Description c : solutions) { logger.info(show+": " + c.toString(baseURI,null) + " (length " + c.getLength() +", depth " + c.getDepth() + ")"); - // watch for String.replace Quick hack - manchester+=show+": "+c.toManchesterSyntaxString(baseURI, new HashMap<String,String>()).replace("\"", "")+"\n"; + manchester+=show+": "+c.toManchesterSyntaxString(baseURI, new HashMap<String,String>())+"\n"; KBSyntax+=show+": " + c.toKBSyntaxString()+"\n"; if(show>=5){break;} show++; } @@ -1059,43 +1059,34 @@ return candidatesStable.last().getConcept(); } - - public synchronized List<Description> getBestSolutions(int nrOfSolutions) { - List<Description> best = new LinkedList<Description>(); + public SortedSet<Description> getCurrentlyBestDescriptions() { + SortedSet<Description> best = new TreeSet<Description>(); int i=0; + int nrOfSolutions = 200; for(ExampleBasedNode n : candidatesStable.descendingSet()) { - - best.add(n.getConcept()); - if(i==nrOfSolutions) - return best; + best.add(n.getConcept()); + if(i==nrOfSolutions) + return best; i++; } return best; } - - /** - * returns the solutions, that have at least a certain quality - * either accuracy = 100% full solutions - * or accuracy > 100% - noise; - * @return - */ - public synchronized List<Description> getGoodSolutions() { - List<Description> best = new LinkedList<Description>(); - - for(ExampleBasedNode n : candidatesStable.descendingSet()) { - if(n.getAccuracy(nrOfPositiveExamples, nrOfNegativeExamples)<(1-noise)) - return best; - best.add(n.getConcept()); - + public SortedSet<EvaluatedDescription> getCurrentlyBestEvaluatedDescriptions() { + int count = 0; + SortedSet<ExampleBasedNode> rev = candidatesStable.descendingSet(); + SortedSet<EvaluatedDescription> cbd = new TreeSet<EvaluatedDescription>(); + for(ExampleBasedNode eb : rev) { + cbd.add(new EvaluatedDescription(eb.getConcept(), getScore(eb.getConcept()))); + // return a maximum of 200 elements (we need a maximum, because the + // candidate set can be very large) + if(count > 200) + return cbd; + count++; } - return best; + return cbd; } - - - - public void printBestSolutions(int nrOfSolutions, boolean showOrderedSolutions){ //QUALITY: could be optimized if(!logger.isTraceEnabled()) @@ -1136,6 +1127,13 @@ return learningProblem.computeScore(getBestSolution()); } + private Score getScore(Description d) { + if(posOnly) + return posOnlyLearningProblem.computeScore(d); + else + return learningProblem.computeScore(d); + } + public ExampleBasedNode getStartNode() { return startNode; } Modified: trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java 2008-06-27 13:44:33 UTC (rev 985) +++ trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java 2008-06-27 14:28:48 UTC (rev 986) @@ -14,6 +14,7 @@ import org.apache.log4j.Level; import org.apache.log4j.Logger; +import org.dllearner.core.EvaluatedDescription; import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.LearningProblem; import org.dllearner.core.ReasoningService; @@ -1033,8 +1034,13 @@ } @Override - public Description getBestSolution() { + public Description getCurrentlyBestDescription() { return candidatesStable.last().getConcept(); + } + + @Override + public EvaluatedDescription getCurrentlyBestEvaluatedDescription() { + return new EvaluatedDescription(candidatesStable.last().getConcept(), getSolutionScore()); } public void printBestSolutions(int nrOfSolutions){ @@ -1050,7 +1056,7 @@ } @Override - public synchronized List<Description> getBestSolutions(int nrOfSolutions) { + public synchronized List<Description> getCurrentlyBestDescriptions(int nrOfSolutions) { List<Description> best = new LinkedList<Description>(); int i=0; for(Node n : candidatesStable.descendingSet()) { @@ -1065,9 +1071,9 @@ @Override public Score getSolutionScore() { if(posOnly) - return posOnlyLearningProblem.computeScore(getBestSolution()); + return posOnlyLearningProblem.computeScore(getCurrentlyBestEvaluatedDescription().getDescription()); else - return learningProblem.computeScore(getBestSolution()); + return learningProblem.computeScore(getCurrentlyBestEvaluatedDescription().getDescription()); } Added: trunk/src/dl-learner/org/dllearner/core/EvaluatedDescription.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/EvaluatedDescription.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/core/EvaluatedDescription.java 2008-06-27 14:28:48 UTC (rev 986) @@ -0,0 +1,108 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.core; + +import java.util.Set; + +import org.dllearner.core.owl.Description; +import org.dllearner.core.owl.Individual; +import org.dllearner.learningproblems.ScoreTwoValued; + +/** + * This represents a class description, which has been + * evaluated by the learning algorithm, i.e. it has been checked + * which examples it covers. It can be used as return value for + * learning algorithms to make it easier for applications to + * assess how good an offered class description is and how it + * classifies particular examples. + * + * @author Jens Lehmann + * + */ +public class EvaluatedDescription { + + private Description description; + private Score score; + + public EvaluatedDescription(Description description, Score score) { + this.description = description; + this.score = score; + } + + public EvaluatedDescription(Description description, Set<Individual> posAsPos, Set<Individual> posAsNeg, Set<Individual> negAsPos, Set<Individual> negAsNeg) { + this.description = description; + // usually core methods should not depend on methods outside of the core package (except utilities) + // in this case, this is just a convenience constructor + score = new ScoreTwoValued(posAsPos, posAsNeg, negAsPos, negAsNeg); + } + + public Description getDescription() { + return description; + } + + public int getDescriptionLength() { + return description.getLength(); + } + + public int getDescriptionDepth() { + return description.getDepth(); + } + + /** + * @return + * @see org.dllearner.core.Score#getAccuracy() + */ + public double getAccuracy() { + return score.getAccuracy(); + } + + /** + * @return + * @see org.dllearner.core.Score#getCoveredNegatives() + */ + public Set<Individual> getCoveredNegatives() { + return score.getCoveredNegatives(); + } + + /** + * @return + * @see org.dllearner.core.Score#getCoveredPositives() + */ + public Set<Individual> getCoveredPositives() { + return score.getCoveredPositives(); + } + + /** + * @return + * @see org.dllearner.core.Score#getNotCoveredNegatives() + */ + public Set<Individual> getNotCoveredNegatives() { + return score.getNotCoveredNegatives(); + } + + /** + * @return + * @see org.dllearner.core.Score#getNotCoveredPositives() + */ + public Set<Individual> getNotCoveredPositives() { + return score.getNotCoveredPositives(); + } + +} Modified: trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java 2008-06-27 13:44:33 UTC (rev 985) +++ trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java 2008-06-27 14:28:48 UTC (rev 986) @@ -1,5 +1,5 @@ /** - * Copyright (C) 2007, Jens Lehmann + * Copyright (C) 2007-2008, Jens Lehmann * * This file is part of DL-Learner. * @@ -22,73 +22,188 @@ import java.util.Collection; import java.util.LinkedList; import java.util.List; +import java.util.SortedSet; +import java.util.TreeSet; import org.dllearner.core.owl.Description; +import org.dllearner.utilities.owl.ConceptTransformation; /** + * Abstract superclass of all learning algorithm implementations. + * Includes support for anytime learning algorithms and resumable + * learning algorithms. Provides methods for filtering the best + * descriptions found by the algorithm. As results of the algorithm, + * you can either get only descriptions or evaluated descriptions. + * Evaluated descriptions have information about accuracy and + * example coverage associated with them. However, retrieving those + * may require addition reasoner queries, because the learning + * algorithms usually use but do not necessarily store this information. + * * @author Jens Lehmann * */ public abstract class LearningAlgorithm extends Component { /** - * Starts the algorithm. - * + * Starts the algorithm. It runs until paused, stopped, or + * a termination criterion has been reached. */ public abstract void start(); - /** - * Stops the algorithm gracefully. - * + * Pauses the algorithm (not all algorithms need to implement + * this operation). */ + public void pause() { }; + + /** + * Resumes the algorithm (not all algorithms need to implement + * this operation). You can use this method to continue + * an algorithm run even after a termination criterion has been + * reached. It will run until paused, stopped, or terminated + * again. + */ + public void resume() { }; + + /** + * Stops the algorithm gracefully. A stopped algorithm cannot be resumed anymore. + * Use this method for cleanup and freeing memory. + */ public abstract void stop(); - + /** * Every algorithm must be able to return the score of the * best solution found. + * * @return Best score. */ + @Deprecated public abstract Score getSolutionScore(); /** - * Returns the best solutions obtained so far. - * @return Best solution. + * @see #getCurrentlyBestEvaluatedDescription() */ - public abstract Description getBestSolution(); + public abstract Description getCurrentlyBestDescription(); + /** + * @see #getCurrentlyBestEvaluatedDescriptions() + */ + public SortedSet<Description> getCurrentlyBestDescriptions() { + TreeSet<Description> ds = new TreeSet<Description>(); + ds.add(getCurrentlyBestDescription()); + return ds; + } + /** + * @see #getCurrentlyBestEvaluatedDescriptions(int) + */ + public synchronized List<Description> getCurrentlyBestDescriptions(int nrOfDescriptions) { + return getCurrentlyBestDescriptions(nrOfDescriptions, false); + } /** - * returns the best nrOfSolutions solutions - * regardless of quality, just depends on input int - * @param nrOfSolutions - * @return List<Description> + * @see #getCurrentlyBestEvaluatedDescriptions(int,double,boolean) */ - public synchronized List<Description> getBestSolutions(int nrOfSolutions) { - List<Description> single = new LinkedList<Description>(); - single.add(getBestSolution()); - return single; + public synchronized List<Description> getCurrentlyBestDescriptions(int nrOfDescriptions, boolean filterNonMinimalDescriptions) { + SortedSet<Description> currentlyBest = getCurrentlyBestDescriptions(); + List<Description> returnList = new LinkedList<Description>(); + int count = 0; + for(Description ed : currentlyBest) { + // return if we have sufficiently many descriptions + if(count >= nrOfDescriptions) + return returnList; + + if(!filterNonMinimalDescriptions || ConceptTransformation.isDescriptionMinimal(ed)) + returnList.add(ed); + + count++; + } + return returnList; + } + + /** + * Returns the best descriptions obtained so far. + * @return Best class description found so far. + */ + public abstract EvaluatedDescription getCurrentlyBestEvaluatedDescription(); + + /** + * Returns a sorted set of the best descriptions found so far. We + * assume that they are ordered such that the best ones come in + * first. + * @return Best class descriptions found so far. + */ + public SortedSet<EvaluatedDescription> getCurrentlyBestEvaluatedDescriptions() { + TreeSet<EvaluatedDescription> ds = new TreeSet<EvaluatedDescription>(); + ds.add(getCurrentlyBestEvaluatedDescription()); + return ds; } /** - * returns the solutions, that have at least a certain quality - * either accuracy = 100%, i.e. full solutions - * or accuracy > 100% - noise; - * @return + * Returns a filtered list of currently best class descriptions. + * + * @param nrOfDescriptions Maximum number of restrictions. Use Integer.MAX_VALUE + * if you do not want this filter to be active. + * + * @param accuracyThreshold Minimum accuracy. All class descriptions with lower + * accuracy are disregarded. Specify a value between 0.0 and 1.0. Use 0.0 if + * you do not want this filter to be active. + * + * @param filterNonMinimalDescriptions If true, non-minimal descriptions are + * filtered, e.g. ALL r.TOP (being equivalent to TOP), male AND male (can be + * shortened to male). Currently, non-minimal descriptions are just skipped, + * i.e. they are completely omitted from the return list. Later, implementation + * might be changed to return shortened versions of those descriptions. + * + * @return A list of currently best class descriptions. */ - public synchronized List<Description> getGoodSolutions() { - List<Description> single = new LinkedList<Description>(); - single.add(getBestSolution()); - return single; + public synchronized List<EvaluatedDescription> getCurrentlyBestEvaluatedDescriptions(int nrOfDescriptions, double accuracyThreshold, boolean filterNonMinimalDescriptions) { + SortedSet<EvaluatedDescription> currentlyBest = getCurrentlyBestEvaluatedDescriptions(); + List<EvaluatedDescription> returnList = new LinkedList<EvaluatedDescription>(); + int count = 0; + for(EvaluatedDescription ed : currentlyBest) { + // once we hit a description with a below threshold accuracy, we simply return + // because learning algorithms are advised to order descriptions by accuracy, + // so we won't find any concept with higher accuracy in the remaining list + if(ed.getAccuracy() < accuracyThreshold) + return returnList; + + // return if we have sufficiently many descriptions + if(count >= nrOfDescriptions) + return returnList; + + if(!filterNonMinimalDescriptions || ConceptTransformation.isDescriptionMinimal(ed.getDescription())) + returnList.add(ed); + + count++; + } + return returnList; } + /** + * Return the best currently found concepts up to some maximum + * count (no minimality filter used). + * @param nrOfDescriptions Maximum number of descriptions returned. + * @return Return value is getCurrentlyBestDescriptions(nrOfDescriptions, 0.0, false). + */ + public synchronized List<EvaluatedDescription> getCurrentlyBestEvaluatedDescriptions(int nrOfDescriptions) { + return getCurrentlyBestEvaluatedDescriptions(nrOfDescriptions, 0.0, false); + } /** + * Returns a fraction of class descriptions with sufficiently high accuracy. + * @param accuracyThreshold Only return solutions with this accuracy or higher. + * @return Return value is getCurrentlyBestDescriptions(Integer.MAX_VALUE, accuracyThreshold, false). + */ + public synchronized List<EvaluatedDescription> getCurrentlyBestEvaluatedDescriptions(double accuracyThreshold) { + return getCurrentlyBestEvaluatedDescriptions(Integer.MAX_VALUE, accuracyThreshold, false); + } + + /** * Returns all learning problems supported by this component. */ public static Collection<Class<? extends LearningProblem>> supportedLearningProblems() { return new LinkedList<Class<? extends LearningProblem>>(); } - + } Modified: trunk/src/dl-learner/org/dllearner/core/Score.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/Score.java 2008-06-27 13:44:33 UTC (rev 985) +++ trunk/src/dl-learner/org/dllearner/core/Score.java 2008-06-27 14:28:48 UTC (rev 986) @@ -1,3 +1,23 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + package org.dllearner.core; import java.util.Set; @@ -4,9 +24,26 @@ import org.dllearner.core.owl.Individual; +/** + * The score class is used to store how well a class description did + * on a learning problem. + * + * @author Jens Lehmann + * + */ public abstract class Score { + + // accuracy + public abstract double getAccuracy(); + + // example coverage + public abstract Set<Individual> getCoveredPositives(); + public abstract Set<Individual> getCoveredNegatives(); + public abstract Set<Individual> getNotCoveredPositives(); + public abstract Set<Individual> getNotCoveredNegatives(); + + // older methods (not frequently used anymore) public abstract double getScore(); - /** * The score of a concept depends on how good it classifies the * examples of a learning problem and the length of the concept @@ -20,9 +57,4 @@ */ public abstract Score getModifiedLengthScore(int newLength); - public abstract Set<Individual> getCoveredPositives(); - public abstract Set<Individual> getCoveredNegatives(); - public abstract Set<Individual> getNotCoveredPositives(); - - // public abstract int getNrOfMiss } Modified: trunk/src/dl-learner/org/dllearner/examples/KRKModular.java =================================================================== --- trunk/src/dl-learner/org/dllearner/examples/KRKModular.java 2008-06-27 13:44:33 UTC (rev 985) +++ trunk/src/dl-learner/org/dllearner/examples/KRKModular.java 2008-06-27 14:28:48 UTC (rev 986) @@ -284,7 +284,7 @@ //System.out.println("best"+la.getBestSolution()); }catch (Exception e) {e.printStackTrace();} - return la.getBestSolution(); + return la.getCurrentlyBestDescription(); } static KB getKB(SortedSet<Integer> lines){ Modified: trunk/src/dl-learner/org/dllearner/gui/MiniGUI.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/MiniGUI.java 2008-06-27 13:44:33 UTC (rev 985) +++ trunk/src/dl-learner/org/dllearner/gui/MiniGUI.java 2008-06-27 14:28:48 UTC (rev 986) @@ -198,7 +198,7 @@ // wait for a solution (note that not all learning problems have a // solution (100% accuracy), so one usually has to run the algorithm in its own // thread, such that it can be aborted after some time - Description solution = la.getBestSolution(); + Description solution = la.getCurrentlyBestDescription(); solutionDisplay.setText(solution.toString()); } } Modified: trunk/src/dl-learner/org/dllearner/gui/RunPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/RunPanel.java 2008-06-27 13:44:33 UTC (rev 985) +++ trunk/src/dl-learner/org/dllearner/gui/RunPanel.java 2008-06-27 14:28:48 UTC (rev 986) @@ -172,9 +172,9 @@ infoArea.setText(""); // best solutions - if (config.getLearningAlgorithm().getBestSolutions(5) != null) { + if (config.getLearningAlgorithm().getCurrentlyBestEvaluatedDescriptions(5) != null) { infoArea.append("Best solutions: \n\n" - + listToString(config.getLearningAlgorithm().getBestSolutions(10)) + "\n"); + + listToString(config.getLearningAlgorithm().getCurrentlyBestEvaluatedDescriptions(10)) + "\n"); } // solution score // if (config.getLearningAlgorithm().getSolutionScore() != null) @@ -257,7 +257,7 @@ if (millis > 0) time += millis + "ms "; if (false) - time += mikros + "\xB5s "; + time += mikros + "�s "; if (false) time += nanos + "ns "; return time; Modified: trunk/src/dl-learner/org/dllearner/learningproblems/ScoreThreeValued.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/ScoreThreeValued.java 2008-06-27 13:44:33 UTC (rev 985) +++ trunk/src/dl-learner/org/dllearner/learningproblems/ScoreThreeValued.java 2008-06-27 14:28:48 UTC (rev 986) @@ -233,6 +233,22 @@ @Override public Score getModifiedLengthScore(int newLength) { return new ScoreThreeValued(newLength, accuracyPenalty, errorPenalty, penaliseNeutralExamples, percentPerLengthUnit, posClassified, neutClassified, negClassified, posExamples, neutExamples, negExamples); + } + + /* (non-Javadoc) + * @see org.dllearner.core.Score#getAccuracy() + */ + @Override + public double getAccuracy() { + return accuracy; + } + + /* (non-Javadoc) + * @see org.dllearner.core.Score#getNotCoveredNegatives() + */ + @Override + public Set<Individual> getNotCoveredNegatives() { + return negAsNeg; } } Modified: trunk/src/dl-learner/org/dllearner/learningproblems/ScoreTwoValued.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/ScoreTwoValued.java 2008-06-27 13:44:33 UTC (rev 985) +++ trunk/src/dl-learner/org/dllearner/learningproblems/ScoreTwoValued.java 2008-06-27 14:28:48 UTC (rev 986) @@ -1,3 +1,23 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + package org.dllearner.learningproblems; import java.util.Set; @@ -6,10 +26,15 @@ import org.dllearner.core.owl.Individual; /** + * Calculates accuracy and score (with respect to some length penalty) of + * a class description. * - * TODO: accuracy-Berechnung (positive+negative Beispiele muessen dafuer bekannt sein) + * TODO: In fact, a score value influencing a learning algorithm + * should not be calculated here, but rather in a separate heuristic + * as there are many methods to calculate such a value. This class + * should only be used for computing example coverage, accuracy etc. * - * @author jl + * @author Jens Lehmann * */ public class ScoreTwoValued extends Score { @@ -19,11 +44,15 @@ private Set<Individual> negAsPos; private Set<Individual> negAsNeg; private double score; - private double classificationScore; + private double accuracy; private int nrOfExamples; private int conceptLength; private double percentPerLengthUnit; + public ScoreTwoValued(Set<Individual> posAsPos, Set<Individual> posAsNeg, Set<Individual> negAsPos, Set<Individual> negAsNeg) { + this(0,0,posAsPos,posAsNeg,negAsPos,posAsPos); + } + public ScoreTwoValued(int conceptLength, double percentPerLengthUnit, Set<Individual> posAsPos, Set<Individual> posAsNeg, Set<Individual> negAsPos, Set<Individual> negAsNeg) { this.conceptLength = conceptLength; this.percentPerLengthUnit = percentPerLengthUnit; @@ -36,15 +65,22 @@ } private void computeScore() { - // - Anzahl falscher Klassifikationen - classificationScore = - posAsNeg.size() - negAsPos.size(); - // Anteil falscher Klassifikationen (Zahl zwischen -1 und 0) - classificationScore = classificationScore / (double) nrOfExamples; - // Berücksichtigung des Längenfaktors - score = classificationScore - percentPerLengthUnit * conceptLength; + // compute accuracy + accuracy = posAsPos.size() + negAsNeg.size(); + accuracy = accuracy / (double) nrOfExamples; + // compute score + score = accuracy - 1 - percentPerLengthUnit * conceptLength; } @Override + public double getAccuracy() { + return accuracy; + } + + /** + * score = accuracy - 1 - length * length penalty + */ + @Override public double getScore() { return score; } @@ -53,7 +89,7 @@ public String toString() { String str = ""; str += "score: " + score + "\n"; - str += "accuracy: " + (1 + classificationScore) + "\n"; + str += "accuracy: " + accuracy + "\n"; str += "posAsPos (" + posAsPos.size() + "): " + posAsPos + "\n"; str += "positive examples classified as negative (" + posAsNeg.size() + "): " + posAsNeg + "\n"; str += "negative examples classified as positive (" + negAsPos.size() + "): " + negAsPos + "\n"; @@ -74,16 +110,15 @@ public Set<Individual> getNotCoveredPositives() { return posAsNeg; } - - /* + @Override - public double getModifiedLengthScore(int newLength) { - return classificationScore - Config.percentPerLengthUnit * newLength; - } - */ + public Set<Individual> getNotCoveredNegatives() { + return negAsNeg; + } @Override public Score getModifiedLengthScore(int newLength) { return new ScoreTwoValued(newLength, percentPerLengthUnit, posAsPos, posAsNeg, negAsPos, negAsNeg); - } + } + } Modified: trunk/src/dl-learner/org/dllearner/scripts/CrossValidation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/CrossValidation.java 2008-06-27 13:44:33 UTC (rev 985) +++ trunk/src/dl-learner/org/dllearner/scripts/CrossValidation.java 2008-06-27 14:28:48 UTC (rev 986) @@ -222,7 +222,7 @@ long algorithmDuration = System.nanoTime() - algorithmStartTime; runtime.addNumber(algorithmDuration/(double)1000000000); - Description concept = la.getBestSolution(); + Description concept = la.getCurrentlyBestDescription(); ReasoningService rs = start.getReasoningService(); Set<Individual> tmp = rs.instanceCheck(concept, testSetsPos.get(currFold)); Modified: trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java 2008-06-27 13:44:33 UTC (rev 985) +++ trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java 2008-06-27 14:28:48 UTC (rev 986) @@ -89,7 +89,7 @@ s.makeExamples(prim, percentOfSKOSSet, negfactor, sparqlResultSize); - List<Description> conceptresults = s.learn(); + SortedSet<Description> conceptresults = s.learn(); logger.debug("found nr of concepts: "+conceptresults.size()); System.out.println(conceptresults); @@ -249,7 +249,7 @@ logger.debug(fullPosSetWithoutPosExamples); } - public List<Description> learn(){ + public SortedSet<Description> learn(){ SortedSet<String> instances = new TreeSet<String>(); instances.addAll(this.posExamples); @@ -330,7 +330,7 @@ //Statistics.addTimeLearning(sc.getTime()); - return la.getGoodSolutions(); + return la.getCurrentlyBestDescriptions(); }catch (Exception e) {e.printStackTrace();} return null; Modified: trunk/src/dl-learner/org/dllearner/scripts/TestValidation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/TestValidation.java 2008-06-27 13:44:33 UTC (rev 985) +++ trunk/src/dl-learner/org/dllearner/scripts/TestValidation.java 2008-06-27 14:28:48 UTC (rev 986) @@ -57,7 +57,7 @@ Start start = new Start(new File(filenameTrain)); start.start(false); - Description solution = start.getLearningAlgorithm().getBestSolution(); + Description solution = start.getLearningAlgorithm().getCurrentlyBestDescription(); logger.setLevel(Level.WARN); Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-06-27 13:44:33 UTC (rev 985) +++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-06-27 14:28:48 UTC (rev 986) @@ -308,7 +308,7 @@ public String learn(int id, String format) throws ClientNotKnownException { ClientState state = getState(id); state.getLearningAlgorithm().start(); - Description solution = state.getLearningAlgorithm().getBestSolution(); + Description solution = state.getLearningAlgorithm().getCurrentlyBestDescription(); if(format.equals("manchester")) return solution.toManchesterSyntaxString(state.getReasoningService().getBaseURI(), new HashMap<String,String>()); else if(format.equals("kb")) @@ -342,13 +342,13 @@ @WebMethod public String getCurrentlyBestConcept(int id) throws ClientNotKnownException { ClientState state = getState(id); - return state.getLearningAlgorithm().getBestSolution().toString(); + return state.getLearningAlgorithm().getCurrentlyBestEvaluatedDescription().toString(); } @WebMethod public String[] getCurrentlyBestConcepts(int id, int nrOfConcepts) throws ClientNotKnownException { ClientState state = getState(id); - List<Description> bestConcepts = state.getLearningAlgorithm().getBestSolutions(nrOfConcepts); + List<Description> bestConcepts = state.getLearningAlgorithm().getCurrentlyBestDescriptions(nrOfConcepts); List<String> conc=new LinkedList<String>(); Iterator<Description> iter=bestConcepts.iterator(); while (iter.hasNext()) @@ -612,7 +612,7 @@ @WebMethod public int[] getConceptDepth(int id, int nrOfConcepts) throws ClientNotKnownException { ClientState state = getState(id); - List<Description> bestConcepts = state.getLearningAlgorithm().getBestSolutions(nrOfConcepts); + List<Description> bestConcepts = state.getLearningAlgorithm().getCurrentlyBestDescriptions(nrOfConcepts); Iterator<Description> iter=bestConcepts.iterator(); int[] length=new int[bestConcepts.size()]; int i=0; @@ -626,7 +626,7 @@ @WebMethod public int[] getConceptArity(int id, int nrOfConcepts) throws ClientNotKnownException { ClientState state = getState(id); - List<Description> bestConcepts = state.getLearningAlgorithm().getBestSolutions(nrOfConcepts); + List<Description> bestConcepts = state.getLearningAlgorithm().getCurrentlyBestDescriptions(nrOfConcepts); Iterator<Description> iter=bestConcepts.iterator(); int[] arity=new int[bestConcepts.size()]; int i=0; Modified: trunk/src/dl-learner/org/dllearner/test/ComponentTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/ComponentTest.java 2008-06-27 13:44:33 UTC (rev 985) +++ trunk/src/dl-learner/org/dllearner/test/ComponentTest.java 2008-06-27 14:28:48 UTC (rev 986) @@ -97,7 +97,7 @@ // start the algorithm and print the best concept found la.start(); - System.out.println(la.getBestSolution()); + System.out.println(la.getCurrentlyBestEvaluatedDescription()); } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-06-27 13:44:33 UTC (rev 985) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-06-27 14:28:48 UTC (rev 986) @@ -69,7 +69,7 @@ la = getWizardModel().getOre().start();//started endlosen Algorithmus - publish(la.getBestSolutions(10)); + publish(la.getCurrentlyBestDescriptions(10)); List<Description> result = getWizardModel().getOre().getLearningResults(100); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-06-27 13:44:33 UTC (rev 985) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-06-27 14:28:48 UTC (rev 986) @@ -177,15 +177,15 @@ } public Description getLearningResult(){ - return la.getBestSolution(); + return la.getCurrentlyBestDescription(); } - public List<Description> getSolutions(){ - return la.getGoodSolutions(); - } +// public List<Description> getSolutions(){ +// return la.getCurrentlyBestDescriptions(); +// } public List<Description> getLearningResults(int anzahl){ - return la.getBestSolutions(anzahl); + return la.getCurrentlyBestDescriptions(anzahl); } /** Modified: trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java 2008-06-27 13:44:33 UTC (rev 985) +++ trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java 2008-06-27 14:28:48 UTC (rev 986) @@ -224,9 +224,9 @@ */ private void addToListModel() { - for(int j = 0;j<la.getBestSolutions(anzahl).size();j++) + for(int j = 0;j<la.getCurrentlyBestEvaluatedDescriptions(anzahl).size();j++) { - suggestModel.add(j,la.getBestSolutions(anzahl).get(j)); + suggestModel.add(j,la.getCurrentlyBestEvaluatedDescriptions(anzahl).get(j)); } } @@ -352,7 +352,7 @@ error = "Learning succesful"; // start the algorithm and print the best concept found la.start(); - description = new Description[la.getBestSolutions(anzahl).size()]; + description = new Description[la.getCurrentlyBestEvaluatedDescriptions(anzahl).size()]; addToListModel(); view.renderErrorMessage(error); view.getRunButton().setEnabled(true); Modified: trunk/src/dl-learner/org/dllearner/utilities/owl/ConceptTransformation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/owl/ConceptTransformation.java 2008-06-27 13:44:33 UTC (rev 985) +++ trunk/src/dl-learner/org/dllearner/utilities/owl/ConceptTransformation.java 2008-06-27 14:28:48 UTC (rev 986) @@ -1,3 +1,22 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ package org.dllearner.utilities.owl; import java.util.Collections; @@ -21,8 +40,11 @@ import org.dllearner.core.owl.ObjectQuantorRestriction; import org.dllearner.core.owl.Thing; -// ev. kann man diese Klasse später in ein anderes Paket ziehen, da sie nicht direkt mit -// refinement zu tun hat +/** + * Concept transformation and concept checking methods. + * + * @author Jens Lehmann + */ public class ConceptTransformation { public static long cleaningTimeNs = 0; @@ -386,4 +408,39 @@ return concept; } + /** + * Method to determine, whether a class description is minimal, + * e.g. \forall r.\top (\equiv \top) or male \sqcup male are not + * minimal. This method performs heuristic sanity checks (it will + * not try to find semantically equivalent shorter descriptions). + * @param description Input description. + * @return True if a superfluous construct has been found. + */ + public static boolean isDescriptionMinimal(Description description) { + ConceptComparator cc = new ConceptComparator(); + int length = description.getLength(); + int length2 = ConceptTransformation.getShortConcept(description, cc).getLength(); + if(length2 < length) + return false; + if(ConceptTransformation.findEquivalences(description)) + return false; + return true; + } + + private static boolean findEquivalences(Description description) { + // \exists r.\bot \equiv \bot + if(description instanceof ObjectSomeRestriction && description.getChild(0) instanceof Nothing) + return true; + // \forall r.\top \equiv \top + if(description instanceof ObjectAllRestriction && description.getChild(0) instanceof Thing) + return true; + // check children + for(Description child : description.getChildren()) { + if(findEquivalences(child)) + return true; + } + // false if none of the checks was successful + return false; + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-06-28 07:28:20
|
Revision: 991 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=991&view=rev Author: jenslehmann Date: 2008-06-28 00:28:11 -0700 (Sat, 28 Jun 2008) Log Message: ----------- - comparator for evaluated descriptions - fixed some warnings Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/SimpleSuggestionLearningAlgorithm.java trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java trunk/src/dl-learner/org/dllearner/test/ComponentTest.java trunk/src/dl-learner/org/dllearner/utilities/datastructures/ResultConceptSorter.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/utilities/owl/EvaluatedDescriptionComparator.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/SimpleSuggestionLearningAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/SimpleSuggestionLearningAlgorithm.java 2008-06-27 16:49:46 UTC (rev 990) +++ trunk/src/dl-learner/org/dllearner/algorithms/SimpleSuggestionLearningAlgorithm.java 2008-06-28 07:28:11 UTC (rev 991) @@ -1,3 +1,22 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ package org.dllearner.algorithms; import java.util.*; @@ -4,79 +23,80 @@ import org.dllearner.core.EvaluatedDescription; import org.dllearner.core.LearningAlgorithm; -import org.dllearner.core.LearningProblem; import org.dllearner.core.ReasoningService; import org.dllearner.core.owl.Description; import org.dllearner.core.config.ConfigEntry; import org.dllearner.core.Score; import org.dllearner.core.owl.*; -public class SimpleSuggestionLearningAlgorithm extends LearningAlgorithm implements Runnable{ +/** + * TODO: Javadoc + * TODO: Extend such that it can really be used as learning algorithm. + * + * @author Christian Kötteritzsch + * + */ +public class SimpleSuggestionLearningAlgorithm extends LearningAlgorithm implements Runnable { -private Score solutionScore; -private boolean stop = false; -private Description bestSollution; -private Set<Description> simpleSuggestions; -private LearningProblem learningProblem; + private boolean stop = false; + private Score solutionScore; + private Description bestSollution; + private Set<Description> simpleSuggestions; - public SimpleSuggestionLearningAlgorithm() - { - //this.learningProblem = learningProblem; + public SimpleSuggestionLearningAlgorithm() { + // this.learningProblem = learningProblem; } - - public Description getCurrentlyBestDescription() - { + + @Override + public Description getCurrentlyBestDescription() { return bestSollution; - } - - public EvaluatedDescription getCurrentlyBestEvaluatedDescription() - { + } + + @Override + public EvaluatedDescription getCurrentlyBestEvaluatedDescription() { return new EvaluatedDescription(bestSollution, solutionScore); } - - - public void stop() - { + + @Override + public void stop() { stop = true; } - - public void start() - { - + + @Override + public void start() { + } - - public <T> void applyConfigEntry(ConfigEntry<T> entry) - { - + + @Override + public <T> void applyConfigEntry(ConfigEntry<T> entry) { + } - - public void init() - { - + + @Override + public void init() { + } - - public Score getSolutionScore() - { + + @Override + public Score getSolutionScore() { return solutionScore; } - - public void run() - { - + + public void run() { + } - - public Set<Description> getSimpleSuggestions(ReasoningService rs,Set<Individual> indi) { + + public Set<Description> getSimpleSuggestions(ReasoningService rs, Set<Individual> indi) { // EXISTS property.TOP // ESISTS hasChild // EXISTS hasChild.male - simpleSuggestions= new HashSet<Description>(); - List<ObjectProperty> test=rs.getAtomicRolesList(); - while(test.iterator().hasNext()) - { - test.iterator().next(); - Description d1 = new ObjectSomeRestriction(test.iterator().next(), new Thing()); - test.remove(rs.getAtomicRolesList().iterator().next()); - simpleSuggestions.add(d1); + simpleSuggestions = new HashSet<Description>(); + List<ObjectProperty> test = rs.getAtomicRolesList(); + while (test.iterator().hasNext()) { + test.iterator().next(); + Description d1 = new ObjectSomeRestriction(test.iterator().next(), new Thing()); + test.remove(rs.getAtomicRolesList().iterator().next()); + simpleSuggestions.add(d1); } return simpleSuggestions; } Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java 2008-06-27 16:49:46 UTC (rev 990) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java 2008-06-28 07:28:11 UTC (rev 991) @@ -398,7 +398,7 @@ } @Override - public synchronized SortedSet<Description> getCurrentlyBestDescriptions() { + public synchronized List<Description> getCurrentlyBestDescriptions() { return algorithm.getCurrentlyBestDescriptions(); } Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-06-27 16:49:46 UTC (rev 990) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-06-28 07:28:11 UTC (rev 991) @@ -50,6 +50,7 @@ import org.dllearner.utilities.JamonMonitorLogger; import org.dllearner.utilities.owl.ConceptComparator; import org.dllearner.utilities.owl.ConceptTransformation; +import org.dllearner.utilities.owl.EvaluatedDescriptionComparator; /** * Implements the example based refinement operator learning @@ -167,6 +168,8 @@ // comparator used to create ordered sets of concepts private ConceptComparator conceptComparator = new ConceptComparator(); + // comparator for evaluated descriptions + private EvaluatedDescriptionComparator edComparator = new EvaluatedDescriptionComparator(); // utility variables private DecimalFormat df = new DecimalFormat(); @@ -1059,8 +1062,8 @@ return candidatesStable.last().getConcept(); } - public SortedSet<Description> getCurrentlyBestDescriptions() { - SortedSet<Description> best = new TreeSet<Description>(); + public List<Description> getCurrentlyBestDescriptions() { + List<Description> best = new LinkedList<Description>(); int i=0; int nrOfSolutions = 200; for(ExampleBasedNode n : candidatesStable.descendingSet()) { @@ -1075,7 +1078,7 @@ public SortedSet<EvaluatedDescription> getCurrentlyBestEvaluatedDescriptions() { int count = 0; SortedSet<ExampleBasedNode> rev = candidatesStable.descendingSet(); - SortedSet<EvaluatedDescription> cbd = new TreeSet<EvaluatedDescription>(); + SortedSet<EvaluatedDescription> cbd = new TreeSet<EvaluatedDescription>(edComparator); for(ExampleBasedNode eb : rev) { cbd.add(new EvaluatedDescription(eb.getConcept(), getScore(eb.getConcept()))); // return a maximum of 200 elements (we need a maximum, because the Modified: trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java 2008-06-27 16:49:46 UTC (rev 990) +++ trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java 2008-06-28 07:28:11 UTC (rev 991) @@ -88,8 +88,8 @@ /** * @see #getCurrentlyBestEvaluatedDescriptions() */ - public SortedSet<Description> getCurrentlyBestDescriptions() { - TreeSet<Description> ds = new TreeSet<Description>(); + public List<Description> getCurrentlyBestDescriptions() { + List<Description> ds = new LinkedList<Description>(); ds.add(getCurrentlyBestDescription()); return ds; } @@ -105,7 +105,7 @@ * @see #getCurrentlyBestEvaluatedDescriptions(int,double,boolean) */ public synchronized List<Description> getCurrentlyBestDescriptions(int nrOfDescriptions, boolean filterNonMinimalDescriptions) { - SortedSet<Description> currentlyBest = getCurrentlyBestDescriptions(); + List<Description> currentlyBest = getCurrentlyBestDescriptions(); List<Description> returnList = new LinkedList<Description>(); int count = 0; for(Description ed : currentlyBest) { Modified: trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java =================================================================== --- trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java 2008-06-27 16:49:46 UTC (rev 990) +++ trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java 2008-06-28 07:28:11 UTC (rev 991) @@ -34,7 +34,6 @@ import org.apache.log4j.Logger; import org.dllearner.algorithms.refinement.RefinementOperator; -import org.dllearner.core.ReasoningMethodUnsupportedException; import org.dllearner.core.ReasoningService; import org.dllearner.core.owl.BooleanValueRestriction; import org.dllearner.core.owl.DataRange; Modified: trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java 2008-06-27 16:49:46 UTC (rev 990) +++ trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java 2008-06-28 07:28:11 UTC (rev 991) @@ -89,7 +89,7 @@ s.makeExamples(prim, percentOfSKOSSet, negfactor, sparqlResultSize); - SortedSet<Description> conceptresults = s.learn(); + List<Description> conceptresults = s.learn(); logger.debug("found nr of concepts: "+conceptresults.size()); System.out.println(conceptresults); @@ -249,7 +249,7 @@ logger.debug(fullPosSetWithoutPosExamples); } - public SortedSet<Description> learn(){ + public List<Description> learn(){ SortedSet<String> instances = new TreeSet<String>(); instances.addAll(this.posExamples); Modified: trunk/src/dl-learner/org/dllearner/test/ComponentTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/ComponentTest.java 2008-06-27 16:49:46 UTC (rev 990) +++ trunk/src/dl-learner/org/dllearner/test/ComponentTest.java 2008-06-28 07:28:11 UTC (rev 991) @@ -24,7 +24,6 @@ import java.util.TreeSet; import org.dllearner.algorithms.DBpediaNavigationSuggestor; -import org.dllearner.algorithms.RandomGuesser; import org.dllearner.core.ComponentInitException; import org.dllearner.core.ComponentManager; import org.dllearner.core.KnowledgeSource; @@ -35,7 +34,6 @@ import org.dllearner.core.ReasoningService; import org.dllearner.kb.OWLFile; import org.dllearner.learningproblems.PosNegDefinitionLP; -import org.dllearner.reasoning.DIGReasoner; import org.dllearner.reasoning.OWLAPIReasoner; /** Modified: trunk/src/dl-learner/org/dllearner/utilities/datastructures/ResultConceptSorter.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/datastructures/ResultConceptSorter.java 2008-06-27 16:49:46 UTC (rev 990) +++ trunk/src/dl-learner/org/dllearner/utilities/datastructures/ResultConceptSorter.java 2008-06-28 07:28:11 UTC (rev 991) @@ -2,8 +2,7 @@ import java.util.SortedSet; -import org.dllearner.core.owl.Description; - +// class is not used anywhere and is not documented - delete? public class ResultConceptSorter implements Comparable<ResultConceptSorter> { String concept; SortedSet<String> instances; Added: trunk/src/dl-learner/org/dllearner/utilities/owl/EvaluatedDescriptionComparator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/owl/EvaluatedDescriptionComparator.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/owl/EvaluatedDescriptionComparator.java 2008-06-28 07:28:11 UTC (rev 991) @@ -0,0 +1,61 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.utilities.owl; + +import java.util.Comparator; + +import org.dllearner.core.EvaluatedDescription; + +/** + * Comparator for evaluated descriptions, which orders them by + * accuracy as first criterion, length as second criterion, and + * syntactic structure as third criterion. + * + * @author Jens Lehmann + * + */ +public class EvaluatedDescriptionComparator implements Comparator<EvaluatedDescription> { + + ConceptComparator cc = new ConceptComparator(); + + /* (non-Javadoc) + * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object) + */ + @Override + public int compare(EvaluatedDescription ed1, EvaluatedDescription ed2) { + double acc1 = ed1.getAccuracy(); + double acc2 = ed2.getAccuracy(); + if(acc1 > acc2) + return 1; + else if(acc1 < acc2) + return -1; + else { + int length1 = ed1.getDescriptionLength(); + int length2 = ed2.getDescriptionLength(); + if(length1 < length2) + return 1; + else if(length1 > length2) + return -1; + else + return cc.compare(ed1.getDescription(), ed2.getDescription()); + } + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-06-30 08:56:15
|
Revision: 992 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=992&view=rev Author: jenslehmann Date: 2008-06-30 01:56:11 -0700 (Mon, 30 Jun 2008) Log Message: ----------- - added convenience method to get SPARQL query for evaluated description - fixed all warnings (you should now have zero errors, zero warnings, zero notices) Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java trunk/src/dl-learner/org/dllearner/algorithms/SimpleSuggestionLearningAlgorithm.java trunk/src/dl-learner/org/dllearner/core/EvaluatedDescription.java trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java trunk/src/dl-learner/org/dllearner/kb/OWLAPIOntology.java trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java 2008-06-28 07:28:11 UTC (rev 991) +++ trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java 2008-06-30 08:56:11 UTC (rev 992) @@ -53,12 +53,12 @@ */ public class DBpediaNavigationSuggestor extends LearningAlgorithm { - private ReasoningService rs; +// private ReasoningService rs; private ExampleBasedROLComponent learner; private static String defaultSearchTreeFile = "log/searchTree.txt"; public DBpediaNavigationSuggestor(LearningProblem learningProblem, ReasoningService rs) { - this.rs=rs; +// this.rs=rs; if(learningProblem instanceof PosNegLP) { PosNegLP lp = (PosNegLP) learningProblem; this.learner=new ExampleBasedROLComponent(lp, rs); Modified: trunk/src/dl-learner/org/dllearner/algorithms/SimpleSuggestionLearningAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/SimpleSuggestionLearningAlgorithm.java 2008-06-28 07:28:11 UTC (rev 991) +++ trunk/src/dl-learner/org/dllearner/algorithms/SimpleSuggestionLearningAlgorithm.java 2008-06-30 08:56:11 UTC (rev 992) @@ -38,7 +38,7 @@ */ public class SimpleSuggestionLearningAlgorithm extends LearningAlgorithm implements Runnable { - private boolean stop = false; +// private boolean stop = false; private Score solutionScore; private Description bestSollution; private Set<Description> simpleSuggestions; @@ -59,7 +59,7 @@ @Override public void stop() { - stop = true; +// stop = true; } @Override Modified: trunk/src/dl-learner/org/dllearner/core/EvaluatedDescription.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/EvaluatedDescription.java 2008-06-28 07:28:11 UTC (rev 991) +++ trunk/src/dl-learner/org/dllearner/core/EvaluatedDescription.java 2008-06-30 08:56:11 UTC (rev 992) @@ -23,6 +23,7 @@ import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; +import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; import org.dllearner.learningproblems.ScoreTwoValued; /** @@ -41,11 +42,24 @@ private Description description; private Score score; + /** + * Constructs an evaluated description using its score. + * @param description The description, which was evaluated. + * @param score The score of the description. + */ public EvaluatedDescription(Description description, Score score) { this.description = description; this.score = score; } + /** + * Constructs an evaluated description using example coverage. + * @param description The description, which was evaluated. + * @param posAsPos Positive examples classified as positive by (i.e. instance of) the description. + * @param posAsNeg Positive examples classified as negative by (i.e. not instance of) the description. + * @param negAsPos Negative examples classified as positive by (i.e. instance of) the description. + * @param negAsNeg Negative examples classified as negative by (i.e. not instance of) the description. + */ public EvaluatedDescription(Description description, Set<Individual> posAsPos, Set<Individual> posAsNeg, Set<Individual> negAsPos, Set<Individual> negAsNeg) { this.description = description; // usually core methods should not depend on methods outside of the core package (except utilities) @@ -53,20 +67,29 @@ score = new ScoreTwoValued(posAsPos, posAsNeg, negAsPos, negAsNeg); } + /** + * Gets the description, which was evaluated. + * @return The underlying description. + */ public Description getDescription() { return description; } + /** + * @see org.dllearner.core.owl.Description#getLength() + */ public int getDescriptionLength() { return description.getLength(); } + /** + * @see org.dllearner.core.owl.Description#getDepth() + */ public int getDescriptionDepth() { return description.getDepth(); } /** - * @return * @see org.dllearner.core.Score#getAccuracy() */ public double getAccuracy() { @@ -74,7 +97,6 @@ } /** - * @return * @see org.dllearner.core.Score#getCoveredNegatives() */ public Set<Individual> getCoveredNegatives() { @@ -82,7 +104,6 @@ } /** - * @return * @see org.dllearner.core.Score#getCoveredPositives() */ public Set<Individual> getCoveredPositives() { @@ -90,7 +111,6 @@ } /** - * @return * @see org.dllearner.core.Score#getNotCoveredNegatives() */ public Set<Individual> getNotCoveredNegatives() { @@ -98,11 +118,24 @@ } /** - * @return * @see org.dllearner.core.Score#getNotCoveredPositives() */ public Set<Individual> getNotCoveredPositives() { return score.getNotCoveredPositives(); } + /** + * Returns a SPARQL query to get instances of this description + * from a SPARQL endpoint. Of course, results may be incomplete, + * because no inference is done. The SPARQL query is a straightforward + * translation without any attempts to perform e.g. subclass + * inferencing. + * + * @param limit The maximum number of results. Corresponds to LIMIT + * in SPARQL. + * @return A SPARQL query of the underlying description. + */ + public String getSparqlQuery(int limit) { + return SparqlQueryDescriptionConvertVisitor.getSparqlQuery(description, limit); + } } Modified: trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java 2008-06-28 07:28:11 UTC (rev 991) +++ trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java 2008-06-30 08:56:11 UTC (rev 992) @@ -38,7 +38,6 @@ import org.dllearner.core.owl.ObjectPropertyHierarchy; import org.dllearner.core.owl.SubsumptionHierarchy; import org.dllearner.utilities.datastructures.SortedSetTuple; -import org.semanticweb.owl.model.OWLClass; /** * @author Jens Lehmann Modified: trunk/src/dl-learner/org/dllearner/kb/OWLAPIOntology.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/OWLAPIOntology.java 2008-06-28 07:28:11 UTC (rev 991) +++ trunk/src/dl-learner/org/dllearner/kb/OWLAPIOntology.java 2008-06-30 08:56:11 UTC (rev 992) @@ -20,6 +20,7 @@ this.ontology = onto; } + @Override public <T> void applyConfigEntry(ConfigEntry<T> entry) throws InvalidConfigOptionValueException { @@ -30,21 +31,25 @@ return ontology; } + @Override public KB toKB() { throw new Error("OWL -> KB conversion not implemented yet."); } + @Override public void init() { } + @Override public void export(File file, OntologyFormat format) { } + @Override public String toDIG(URI kbURI) { return null; Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-06-28 07:28:11 UTC (rev 991) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-06-30 08:56:11 UTC (rev 992) @@ -52,9 +52,9 @@ StringTuple t = (StringTuple) it.next(); try { // substitute rdf:type with owl:subclassof - if (t.a.equals(m.type) || t.a.equals(m.subclass)) { + if (t.a.equals(Manipulators.type) || t.a.equals(Manipulators.subclass)) { ClassNode tmp = new ClassNode(new URI(t.b)); - properties.add(new PropertyNode(new URI(m.subclass), this, + properties.add(new PropertyNode(new URI(Manipulators.subclass), this, tmp)); Nodes.add(tmp); } else { @@ -67,9 +67,9 @@ // if o is a blank node expand further // TODO this needs a lot more work - if (t.b.startsWith(m.blankNodeIdentifier)) { + if (t.b.startsWith(Manipulators.blankNodeIdentifier)) { tmp.expand(tsq, m); - System.out.println(m.blankNodeIdentifier); + System.out.println(Manipulators.blankNodeIdentifier); System.out.println("XXXXX" + t.b); } // Nodes.add(tmp); Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-06-28 07:28:11 UTC (rev 991) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-06-30 08:56:11 UTC (rev 992) @@ -131,7 +131,7 @@ Node next = instances.remove(0); logger.trace("Getting classes for: " + next); classes.addAll(next.expand(tsqc, manipulator)); - if (classes.size() >= manipulator.breakSuperClassRetrievalAfter) { + if (classes.size() >= Manipulators.breakSuperClassRetrievalAfter) { break; } } @@ -155,7 +155,7 @@ // if(i % 50==0)System.out.println("got "+i+" extra classes, // max: "+manipulator.breakSuperClassRetrievalAfter); i++; - if (i >= manipulator.breakSuperClassRetrievalAfter) { + if (i >= Manipulators.breakSuperClassRetrievalAfter) { break; } } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-06-28 07:28:11 UTC (rev 991) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-06-30 08:56:11 UTC (rev 992) @@ -64,7 +64,7 @@ // basically : if p is rdf:type then o is a class // else it is an instance try { - if (t.a.equals(m.type)) { + if (t.a.equals(Manipulators.type)) { ClassNode tmp = new ClassNode(new URI(t.b)); classes.add(tmp); Nodes.add(tmp); Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java 2008-06-28 07:28:11 UTC (rev 991) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java 2008-06-30 08:56:11 UTC (rev 992) @@ -67,7 +67,7 @@ while (it.hasNext()) { StringTuple t = (StringTuple) it.next(); try { - if (t.a.equals(m.type)) { + if (t.a.equals(Manipulators.type)) { specialTypes.add(t.b); } } catch (Exception e) { Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-06-28 07:28:11 UTC (rev 991) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-06-30 08:56:11 UTC (rev 992) @@ -1,6 +1,24 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ package org.dllearner.kb.sparql; - import java.util.HashMap; import java.util.SortedSet; import java.util.Stack; @@ -34,7 +52,9 @@ /** * Converter from DL-Learner descriptions to a corresponding SPARQL query * to get all instances that are described by this description. + * * @author Sebastian Knappe + * @author Sebastian Hellmann * */ public class SparqlQueryDescriptionConvertVisitor implements DescriptionVisitor{ Modified: trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java 2008-06-28 07:28:11 UTC (rev 991) +++ trunk/src/dl-learner/org/dllearner/scripts/SKOS7030.java 2008-06-30 08:56:11 UTC (rev 992) @@ -83,7 +83,7 @@ String prim="http://dbpedia.org/resource/Category:Prime_Ministers_of_the_United_Kingdom"; - String award=("http://dbpedia.org/resource/Category:Best_Actor_Academy_Award_winners"); +// String award=("http://dbpedia.org/resource/Category:Best_Actor_Academy_Award_winners"); SKOS7030 s= new SKOS7030(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java 2008-06-28 07:28:11 UTC (rev 991) +++ trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java 2008-06-30 08:56:11 UTC (rev 992) @@ -22,7 +22,6 @@ import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.NamedClass; -import org.dllearner.reasoning.OWLAPIReasoner; import org.semanticweb.owl.model.OWLOntologyChange; import org.semanticweb.owl.model.RemoveAxiom; @@ -49,17 +48,17 @@ private ORE ore; private Individual ind; - private OWLAPIReasoner reasoner; +// private OWLAPIReasoner reasoner; private Description actualDesc; private Description newDesc; - private Individual object; +// private Individual object; public NegExampleRepairDialog(Individual ind, JDialog dialog, ORE ore){ super(dialog, "Repair negative example", true); this.ind = ind; this.ore = ore; - this.reasoner = ore.reasoner2; +// this.reasoner = ore.reasoner2; init(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-06-30 14:38:12
|
Revision: 995 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=995&view=rev Author: jenslehmann Date: 2008-06-30 07:37:58 -0700 (Mon, 30 Jun 2008) Log Message: ----------- descriptions can now be converted to OWL/XML making it easier for clients to use their structure Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/EvaluatedDescription.java trunk/src/dl-learner/org/dllearner/utilities/owl/OWLAPIRenderers.java Modified: trunk/src/dl-learner/org/dllearner/core/EvaluatedDescription.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/EvaluatedDescription.java 2008-06-30 14:12:50 UTC (rev 994) +++ trunk/src/dl-learner/org/dllearner/core/EvaluatedDescription.java 2008-06-30 14:37:58 UTC (rev 995) @@ -25,9 +25,12 @@ import org.dllearner.core.owl.Individual; import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; import org.dllearner.learningproblems.ScoreTwoValued; +import org.dllearner.reasoning.OWLAPIDescriptionConvertVisitor; +import org.dllearner.utilities.owl.OWLAPIRenderers; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; +import org.semanticweb.owl.model.OWLDescription; /** * This represents a class description, which has been @@ -151,6 +154,8 @@ JSONObject object = new JSONObject(); try { object.put("descriptionManchesterSyntax", description.toManchesterSyntaxString(null, null)); + OWLDescription d = OWLAPIDescriptionConvertVisitor.getOWLDescription(description); + object.put("descriptionOWLXML", OWLAPIRenderers.toOWLXMLSyntax(d)); object.put("accuracy", score.getAccuracy()); object.put("coveredPositives", getJSONArray(score.getCoveredPositives())); object.put("coveredNegatives", getJSONArray(score.getCoveredNegatives())); Modified: trunk/src/dl-learner/org/dllearner/utilities/owl/OWLAPIRenderers.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/owl/OWLAPIRenderers.java 2008-06-30 14:12:50 UTC (rev 994) +++ trunk/src/dl-learner/org/dllearner/utilities/owl/OWLAPIRenderers.java 2008-06-30 14:37:58 UTC (rev 995) @@ -22,9 +22,13 @@ import java.io.StringWriter; import java.net.URI; +import org.coode.owlapi.owlxml.renderer.OWLXMLObjectRenderer; +import org.coode.owlapi.owlxml.renderer.OWLXMLWriter; +import org.coode.xml.XMLWriterNamespaceManager; import org.semanticweb.owl.apibinding.OWLManager; import org.semanticweb.owl.model.OWLDataFactory; import org.semanticweb.owl.model.OWLDescription; +import org.semanticweb.owl.model.OWLObjectProperty; import org.semanticweb.owl.model.OWLOntologyManager; import uk.ac.manchester.cs.owl.mansyntaxrenderer.ManchesterOWLSyntaxObjectRenderer; @@ -51,11 +55,32 @@ return sw.toString(); } + /** + * Converts an OWL API description to an OWL/XML syntax string. + * + * @param description Input OWLDescription. + * @return OWL/XML syntax string. + */ + public static String toOWLXMLSyntax(OWLDescription description) { + StringWriter sw = new StringWriter(); + // set up default namespace and prefixes + XMLWriterNamespaceManager ns = new XMLWriterNamespaceManager("http://example.com"); + ns.setPrefix("owl2", "http://www.w3.org/2006/12/owl2-xml#"); + OWLXMLWriter oxw = new OWLXMLWriter(sw, ns); + OWLXMLObjectRenderer renderer = new OWLXMLObjectRenderer(oxw); + description.accept(renderer); + return sw.toString(); + } + public static void main(String args[]) { OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); OWLDataFactory factory = manager.getOWLDataFactory(); - OWLDescription d = factory.getOWLClass(URI.create("http://example.com/test")); - String s = toManchesterOWLSyntax(d); + OWLDescription a1 = factory.getOWLClass(URI.create("http://example.com/test#a1")); + OWLDescription a2 = factory.getOWLClass(URI.create("http://example.com/test#a2")); + OWLObjectProperty r = factory.getOWLObjectProperty(URI.create("http://example.com/test#r")); + OWLDescription d3 = factory.getOWLObjectSomeRestriction(r, a2); + OWLDescription d = factory.getOWLObjectIntersectionOf(a1,d3); + String s = toOWLXMLSyntax(d); System.out.println(s); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |