From: <jen...@us...> - 2008-04-21 07:07:20
|
Revision: 801 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=801&view=rev Author: jenslehmann Date: 2008-04-21 00:06:53 -0700 (Mon, 21 Apr 2008) Log Message: ----------- - added Manchester OWL syntax parser based on OWL API 2.2.0 - fixed all warnings Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/examples/KRK.java trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java trunk/src/dl-learner/org/dllearner/tools/ore/ColorListCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/LeftPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardPanelNotFoundException.java trunk/src/dl-learner/org/dllearner/tools/protege/ProtegePlugin.java trunk/src/dl-learner/org/dllearner/tools/protege/SuggestEquivalentClassButton.java trunk/src/dl-learner/org/dllearner/tools/protege/SuggestEquivalentClassView.java trunk/src/dl-learner/org/dllearner/utilities/OntologyCloserOWLAPI.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/utilities/ManchesterOWLSyntaxParser.java Modified: trunk/src/dl-learner/org/dllearner/examples/KRK.java =================================================================== --- trunk/src/dl-learner/org/dllearner/examples/KRK.java 2008-04-21 06:44:04 UTC (rev 800) +++ trunk/src/dl-learner/org/dllearner/examples/KRK.java 2008-04-21 07:06:53 UTC (rev 801) @@ -130,7 +130,7 @@ + "."); } - // Datei \xF6ffnen + // Datei �ffnen BufferedReader in = null; try { in = new BufferedReader(new FileReader(fileIn)); @@ -155,7 +155,7 @@ try { String line = ""; String[] ar = new String[6]; - String currentclass=""; +// String currentclass=""; int x = 0; while ((line = in.readLine()) != null) { @@ -164,7 +164,7 @@ System.out.println("Currently at line" + x); ar = tokenize(line); - currentclass = ar[6]; +// currentclass = ar[6]; gameind = getIndividual("game" + x); wkingind = getIndividual("wking_" + ar[0] + ar[1] + "_" + x); Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-04-21 06:44:04 UTC (rev 800) +++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-04-21 07:06:53 UTC (rev 801) @@ -592,7 +592,7 @@ @WebMethod public void SparqlRetrievalThreaded(int id, int componentID, String conceptString) throws ClientNotKnownException, ParseException { - ClientState state = getState(id); +// ClientState state = getState(id); // call parser to parse concept String sparqlQuery = SparqlQueryDescriptionConvertVisitor.getSparqlQuery(conceptString); sparqlQueryThreaded(id, componentID,sparqlQuery); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ColorListCellRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ColorListCellRenderer.java 2008-04-21 06:44:04 UTC (rev 800) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ColorListCellRenderer.java 2008-04-21 07:06:53 UTC (rev 801) @@ -9,6 +9,8 @@ public class ColorListCellRenderer extends JLabel implements ListCellRenderer { + private static final long serialVersionUID = -7592805113197759247L; + public ColorListCellRenderer() { setOpaque(true); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java 2008-04-21 06:44:04 UTC (rev 800) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java 2008-04-21 07:06:53 UTC (rev 801) @@ -13,6 +13,7 @@ public class ColumnListCellRenderer extends JPanel implements ListCellRenderer { + private static final long serialVersionUID = 3024913291199515567L; private ORE ore; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanel.java 2008-04-21 06:44:04 UTC (rev 800) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanel.java 2008-04-21 07:06:53 UTC (rev 801) @@ -19,8 +19,8 @@ public class ConceptPanel extends JPanel{ + private static final long serialVersionUID = 3026319637264844550L; - private javax.swing.JList conceptList; private JPanel contentPanel; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanel.java 2008-04-21 06:44:04 UTC (rev 800) +++ trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanel.java 2008-04-21 07:06:53 UTC (rev 801) @@ -15,6 +15,7 @@ public class IntroductionPanel extends JPanel { + private static final long serialVersionUID = 7184544803724152044L; private JTextArea instructionsField; private JScrollPane jScrollPane1; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java 2008-04-21 06:44:04 UTC (rev 800) +++ trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java 2008-04-21 07:06:53 UTC (rev 801) @@ -12,7 +12,7 @@ public class KnowledgeSourcePanel extends JPanel{ - + private static final long serialVersionUID = -3997200565180270088L; private javax.swing.JTextField fileURL; private javax.swing.JButton browseButton; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-04-21 06:44:04 UTC (rev 800) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-04-21 07:06:53 UTC (rev 801) @@ -24,6 +24,7 @@ public class LearningPanel extends JPanel{ + private static final long serialVersionUID = -7411197973240429632L; private JPanel contentPanel; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LeftPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LeftPanel.java 2008-04-21 06:44:04 UTC (rev 800) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LeftPanel.java 2008-04-21 07:06:53 UTC (rev 801) @@ -10,6 +10,7 @@ public class LeftPanel extends JPanel{ + private static final long serialVersionUID = -1205252523136710091L; private JLabel[] jLabel; public LeftPanel(int i){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/WizardPanelNotFoundException.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/WizardPanelNotFoundException.java 2008-04-21 06:44:04 UTC (rev 800) +++ trunk/src/dl-learner/org/dllearner/tools/ore/WizardPanelNotFoundException.java 2008-04-21 07:06:53 UTC (rev 801) @@ -4,7 +4,9 @@ public class WizardPanelNotFoundException extends RuntimeException { - public WizardPanelNotFoundException() { + private static final long serialVersionUID = -5211930098094599993L; + + public WizardPanelNotFoundException() { super(); } Modified: trunk/src/dl-learner/org/dllearner/tools/protege/ProtegePlugin.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/ProtegePlugin.java 2008-04-21 06:44:04 UTC (rev 800) +++ trunk/src/dl-learner/org/dllearner/tools/protege/ProtegePlugin.java 2008-04-21 07:06:53 UTC (rev 801) @@ -11,7 +11,8 @@ { private static final long serialVersionUID = 728362819273927L; private OWLFrameList2<OWLClass> list; - + + @Override public void initialiseClassView() throws Exception { list = new OWLFrameList2<OWLClass>(getOWLEditorKit(), new ButtonList(getOWLEditorKit())); setLayout(new BorderLayout()); @@ -21,13 +22,13 @@ } - + @Override protected OWLClass updateView(OWLClass selectedClass) { list.setRootObject(selectedClass); return selectedClass; } - + @Override public void disposeView() { list.dispose(); } Modified: trunk/src/dl-learner/org/dllearner/tools/protege/SuggestEquivalentClassButton.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/SuggestEquivalentClassButton.java 2008-04-21 06:44:04 UTC (rev 800) +++ trunk/src/dl-learner/org/dllearner/tools/protege/SuggestEquivalentClassButton.java 2008-04-21 07:06:53 UTC (rev 801) @@ -25,17 +25,18 @@ this.frame = frame; } + @Override protected void clear() { } - + @Override protected void refill(OWLOntology ontology) { } - + @Override protected void refillInferred() { } @@ -46,12 +47,12 @@ } - + @Override protected OWLEquivalentClassesAxiom createAxiom(OWLDescription object) { return getOWLDataFactory().getOWLEquivalentClassesAxiom(CollectionFactory.createSet(getRootObject(), object)); } - + @Override public OWLFrameSectionRowObjectEditor<OWLDescription> getObjectEditor() { view = new SuggestEquivalentClassView(getOWLEditorKit(), null, frame); view.setView(view); Modified: trunk/src/dl-learner/org/dllearner/tools/protege/SuggestEquivalentClassView.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/SuggestEquivalentClassView.java 2008-04-21 06:44:04 UTC (rev 800) +++ trunk/src/dl-learner/org/dllearner/tools/protege/SuggestEquivalentClassView.java 2008-04-21 07:06:53 UTC (rev 801) @@ -207,7 +207,7 @@ - + @Override public Set<OWLDescription> getEditedObjects() { return super.getEditedObjects(); Added: trunk/src/dl-learner/org/dllearner/utilities/ManchesterOWLSyntaxParser.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/ManchesterOWLSyntaxParser.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/ManchesterOWLSyntaxParser.java 2008-04-21 07:06:53 UTC (rev 801) @@ -0,0 +1,48 @@ +/** + * 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; + +import org.coode.manchesterowlsyntax.ManchesterOWLSyntaxEditorParser; +import org.semanticweb.owl.apibinding.OWLManager; +import org.semanticweb.owl.expression.ParserException; +import org.semanticweb.owl.model.OWLDescription; +import org.semanticweb.owl.model.OWLOntologyManager; + +/** + * Parser for Manchester Syntax strings (interface to OWL API parser). + * TODO: Currently, this outputs an OWL API OWLDescription, but there + * is no converter from OWL API descriptions to DL-Learner descriptions + * at the moment. + * + * @author Jens Lehmann + * + */ +public class ManchesterOWLSyntaxParser { + + public OWLDescription getDescription(String manchesterSyntaxDescription) throws ParserException { + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + + ManchesterOWLSyntaxEditorParser parser = new + ManchesterOWLSyntaxEditorParser(manager.getOWLDataFactory(), manchesterSyntaxDescription); + + return parser.parseDescription(); + } + +} Modified: trunk/src/dl-learner/org/dllearner/utilities/OntologyCloserOWLAPI.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/OntologyCloserOWLAPI.java 2008-04-21 06:44:04 UTC (rev 800) +++ trunk/src/dl-learner/org/dllearner/utilities/OntologyCloserOWLAPI.java 2008-04-21 07:06:53 UTC (rev 801) @@ -15,7 +15,6 @@ import org.dllearner.parser.KBParser; import org.dllearner.reasoning.OWLAPIReasoner; import org.semanticweb.owl.apibinding.OWLManager; -import org.semanticweb.owl.io.OWLXMLOntologyFormat; import org.semanticweb.owl.io.RDFXMLOntologyFormat; import org.semanticweb.owl.model.AddAxiom; import org.semanticweb.owl.model.OWLAxiom; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-04-21 14:58:05
|
Revision: 803 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=803&view=rev Author: kurzum Date: 2008-04-21 07:58:01 -0700 (Mon, 21 Apr 2008) Log Message: ----------- test script, changed comment in Cache.java Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-04-21 14:33:06 UTC (rev 802) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-04-21 14:58:01 UTC (rev 803) @@ -202,7 +202,7 @@ /** * Takes a SPARQL query (which has not been evaluated yet) as argument and - * returns a result set. The result set is taken from this cache if the + * returns a JSON result set. The result set is taken from this cache if the * query is stored here. Otherwise the query is send and its result added to * the cache and returned. Convenience method. * Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-04-21 14:33:06 UTC (rev 802) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-04-21 14:58:01 UTC (rev 803) @@ -37,7 +37,7 @@ */ public class SparqlQueryDescriptionConvertVisitor implements DescriptionVisitor{ - public boolean debug_flag=false; + public static boolean debug_flag=false; private Stack<String> stack = new Stack<String>(); Added: trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java 2008-04-21 14:58:01 UTC (rev 803) @@ -0,0 +1,75 @@ +package org.dllearner.test; + +import java.util.HashMap; +import java.util.SortedSet; +import java.util.TreeSet; + +import org.dllearner.kb.sparql.Cache; +import org.dllearner.kb.sparql.SparqlQuery; +import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; +import org.dllearner.kb.sparql.configuration.SparqlEndpoint; +import org.dllearner.parser.ParseException; + +import com.hp.hpl.jena.query.ResultSet; + +public class SPARQLPreparation { + + static Cache c; + /** + * @param args + */ + public static void main(String[] args) { + try { + SortedSet<String> concepts = new TreeSet<String>(); + HashMap<String,ResultSet> result = new HashMap<String,ResultSet>(); + HashMap<String,String> result2 = new HashMap<String,String>(); + + SparqlQueryDescriptionConvertVisitor.debug_flag=false; + c=new Cache("cache"); + 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("************************"); + } + System.out.println("Finished"); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + + } + + } + + public static ResultSet queryConcept(String concept){ + ResultSet rs =null; + try{ + String query = SparqlQueryDescriptionConvertVisitor.getSparqlQuery(concept); + SparqlQuery sq= new SparqlQuery(query,SparqlEndpoint.dbpediaEndpoint()); + String JSON = c.executeSparqlQuery(sq); + + rs= SparqlQuery.JSONtoResultSet(JSON); + + }catch (Exception e) {e.printStackTrace();} + + return rs; + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-04-21 20:21:41
|
Revision: 805 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=805&view=rev Author: kurzum Date: 2008-04-21 13:21:36 -0700 (Mon, 21 Apr 2008) Log Message: ----------- finished script for automatic example choice Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/utilities/JenaResultSetConvenience.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-04-21 19:55:38 UTC (rev 804) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-04-21 20:21:36 UTC (rev 805) @@ -58,6 +58,14 @@ return query; } + 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 description) throws ParseException { Description d = KBParser.parseConcept(description); @@ -66,6 +74,14 @@ return visitor.getSparqlQuery(); } + public static String getSparqlQuery(String description, int limit) throws ParseException + { if(limit==0)limit=99999; + Description d = KBParser.parseConcept(description); + SparqlQueryDescriptionConvertVisitor visitor=new SparqlQueryDescriptionConvertVisitor(); + d.accept(visitor); + return visitor.getSparqlQuery(limit); + } + public static String getSparqlQuery(Description description) { SparqlQueryDescriptionConvertVisitor visitor=new SparqlQueryDescriptionConvertVisitor(); Modified: trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java 2008-04-21 19:55:38 UTC (rev 804) +++ trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java 2008-04-21 20:21:36 UTC (rev 805) @@ -1,6 +1,6 @@ package org.dllearner.test; -import java.util.HashMap; +import java.util.Random; import java.util.SortedSet; import java.util.TreeSet; @@ -8,68 +8,144 @@ import org.dllearner.kb.sparql.SparqlQuery; import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; import org.dllearner.kb.sparql.configuration.SparqlEndpoint; -import org.dllearner.parser.ParseException; +import org.dllearner.utilities.JenaResultSetConvenience; +import org.dllearner.utilities.SimpleClock; import com.hp.hpl.jena.query.ResultSet; public class SPARQLPreparation { static Cache c; + static SparqlEndpoint se; + /** * @param args */ public static void main(String[] args) { + init(); try { + SimpleClock sc=new SimpleClock(); SortedSet<String> concepts = new TreeSet<String>(); - HashMap<String,ResultSet> result = new HashMap<String,ResultSet>(); - HashMap<String,String> result2 = new HashMap<String,String>(); + //concepts.add("\"http://dbpedia.org/class/yago/Person100007846\""); + concepts.add("\"http://dbpedia.org/class/yago/FieldMarshal110086821\""); + 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>(); - SparqlQueryDescriptionConvertVisitor.debug_flag=false; - c=new Cache("cache"); - String conj="(\"http://dbpedia.org/class/yago/Person100007846\" AND \"http://dbpedia.org/class/yago/Head110162991\")"; + //System.out.println(concepts.first()); + posExamples = new JenaResultSetConvenience(queryConcept(concepts.first(),0)) + .getStringListForVariable("subject"); + + for (String string : posExamples) { + negExamples.addAll( getObjects(string)); + //if(neg.size()>=1)System.out.println(neg); + } + /*for (String string2 : negExamples) { + if(posExamples.contains(string2)){ + System.out.println(string2); + negExamples.remove(string2); + }; + }*/ + System.out.println(negExamples.size()); + negExamples.removeAll(posExamples); - 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\")"); + negExamples=shrink(negExamples,posExamples.size()*2); + //System.out.println(posExamples.first())); + System.out.println(posExamples.size()); + System.out.println(negExamples.size()); + sc.printAndSet("Finished"); + } catch (Exception e) { + e.printStackTrace(); + + } + + } + + /*************************************************************************** + * *********************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("************************"); } + **************************************************************************/ + + static SortedSet<String> getObjects(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" + + "}"; + //System.out.println(query); + String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); + //System.out.println(JSON); + ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); + JenaResultSetConvenience rsc = new JenaResultSetConvenience(rs); + return rsc.getStringListForVariable("o"); + } + + public static ResultSet queryConcept(String concept,int limit) { + ResultSet rs = null; + try { + String query = SparqlQueryDescriptionConvertVisitor + .getSparqlQuery(concept,limit); - //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("************************"); - } - System.out.println("Finished"); + SparqlQuery sq = new SparqlQuery(query, se); + String JSON = c.executeSparqlQuery(sq); + //System.out.println(JSON); + rs = SparqlQuery.JSONtoResultSet(JSON); + } catch (Exception e) { - // TODO Auto-generated catch block e.printStackTrace(); + } + return rs; } + public static void init() { + SparqlQueryDescriptionConvertVisitor.debug_flag = false; + c = new Cache("cache"); + se = SparqlEndpoint.dbpediaEndpoint(); + } - public static ResultSet queryConcept(String concept){ - ResultSet rs =null; - try{ - String query = SparqlQueryDescriptionConvertVisitor.getSparqlQuery(concept); - SparqlQuery sq= new SparqlQuery(query,SparqlEndpoint.dbpediaEndpoint()); - String JSON = c.executeSparqlQuery(sq); + public static SortedSet<String> shrink(SortedSet<String> s, int limit) { + SortedSet<String> ret = new TreeSet<String>(); + Random r = new Random(); + double treshold = ((double)limit)/s.size(); + //System.out.println("treshold"+howmany); + //System.out.println("treshold"+allRetrieved.size()); + System.out.println("treshold"+treshold); - rs= SparqlQuery.JSONtoResultSet(JSON); - - }catch (Exception e) {e.printStackTrace();} - - return rs; + for (String oneInd : s) { + if(r.nextDouble()<treshold) { + ret.add(oneInd); + + } + } + return ret; } - + } Added: trunk/src/dl-learner/org/dllearner/utilities/JenaResultSetConvenience.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/JenaResultSetConvenience.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/JenaResultSetConvenience.java 2008-04-21 20:21:36 UTC (rev 805) @@ -0,0 +1,36 @@ +package org.dllearner.utilities; + +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>(); + + List<ResultBinding> l = ResultSetFormatter.toList(this.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-04-22 13:07:12
|
Revision: 806 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=806&view=rev Author: kurzum Date: 2008-04-22 06:07:07 -0700 (Tue, 22 Apr 2008) Log Message: ----------- loads of little changes 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/ComponentManager.java trunk/src/dl-learner/org/dllearner/core/config/CommonConfigOptions.java trunk/src/dl-learner/org/dllearner/examples/KRKModular.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlQueryType.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/test/SPARQLPreparation.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java trunk/src/dl-learner/org/dllearner/utilities/NT2RDF.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java 2008-04-21 20:21:36 UTC (rev 805) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java 2008-04-22 13:07:07 UTC (rev 806) @@ -38,8 +38,8 @@ import org.dllearner.core.config.DoubleConfigOption; import org.dllearner.core.config.InvalidConfigOptionValueException; import org.dllearner.core.config.StringConfigOption; +import org.dllearner.core.owl.Description; import org.dllearner.core.owl.NamedClass; -import org.dllearner.core.owl.Description; import org.dllearner.core.owl.ObjectProperty; import org.dllearner.learningproblems.PosNegLP; import org.dllearner.learningproblems.PosOnlyDefinitionLP; @@ -99,13 +99,18 @@ private boolean useOverlyGeneralList = true; private boolean useShortConceptConstruction = true; private boolean improveSubsumptionHierarchy = true; - private boolean useAllConstructor = true; - private boolean useExistsConstructor = true; - private boolean useCardinalityRestrictions = true; - private boolean useNegation = true; - private boolean useBooleanDatatypes = true; + private boolean useAllConstructor = CommonConfigOptions.useAllConstructorDefault; + private boolean useExistsConstructor = CommonConfigOptions.useExistsConstructorDefault; + private boolean useCardinalityRestrictions = CommonConfigOptions.useCardinalityRestrictionsDefault; + private boolean useNegation = CommonConfigOptions.useNegationDefault; + private boolean useBooleanDatatypes = CommonConfigOptions.useBooleanDatatypesDefault; private double noisePercentage = 0.0; private NamedClass startClass = null; + //extended Options + //in seconds + private int maxExecutionTimeInSeconds = CommonConfigOptions.maxExecutionTimeInSecondsDefault; + private int minExecutionTimeInSeconds = CommonConfigOptions.minExecutionTimeInSecondsDefault; + private int guaranteeXgoodDescriptions = CommonConfigOptions.guaranteeXgoodDescriptionsDefault; // Variablen zur Einstellung der Protokollierung // boolean quiet = false; @@ -164,7 +169,9 @@ options.add(CommonConfigOptions.useCardinalityRestrictions()); options.add(CommonConfigOptions.useNegation()); options.add(CommonConfigOptions.useBooleanDatatypes()); - + options.add(CommonConfigOptions.maxExecutionTimeInSeconds()); + options.add(CommonConfigOptions.minExecutionTimeInSeconds()); + options.add(CommonConfigOptions.guaranteeXgoodDescriptions()); DoubleConfigOption noisePercentage = new DoubleConfigOption("noisePercentage", "the (approximated) percentage of noise within the examples"); noisePercentage.setLowerLimit(0); noisePercentage.setUpperLimit(100); @@ -226,6 +233,12 @@ useBooleanDatatypes = (Boolean) entry.getValue(); } else if(name.equals("startClass")) { startClass = new NamedClass((String)entry.getValue()); + }else if(name.equals("maxExecutionTimeInSeconds")) { + maxExecutionTimeInSeconds = (Integer) entry.getValue(); + }else if(name.equals("minExecutionTimeInSeconds")) { + minExecutionTimeInSeconds = (Integer) entry.getValue(); + }else if(name.equals("guaranteeXgoodDescriptions")) { + guaranteeXgoodDescriptions = (Integer) entry.getValue(); } } @@ -319,7 +332,10 @@ searchTreeFile, useTooWeakList, useOverlyGeneralList, - useShortConceptConstruction + useShortConceptConstruction, + maxExecutionTimeInSeconds, + minExecutionTimeInSeconds, + guaranteeXgoodDescriptions ); // note: used concepts and roles do not need to be passed // as argument, because it is sufficient to prepare the @@ -363,4 +379,13 @@ return algorithm.getStartNode(); } + + 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-04-21 20:21:36 UTC (rev 805) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-22 13:07:07 UTC (rev 806) @@ -101,6 +101,11 @@ private boolean useOverlyGeneralList = true; private boolean useShortConceptConstruction = true; + //extended Options + private long maxExecutionTimeInSeconds; + private long minExecutionTimeInSeconds; + private int guaranteeXgoodDescriptions; + // if set to false we do not test properness; this may seem wrong // but the disadvantage of properness testing are additional reasoner // queries and a search bias towards ALL r.something because @@ -188,6 +193,7 @@ private long redundancyCheckTimeNs = 0; private long evaluateSetCreationTimeNs = 0; private long improperConceptsRemovalTimeNs = 0; + // prefixes private String baseURI; @@ -206,7 +212,10 @@ File searchTreeFile, boolean useTooWeakList, boolean useOverlyGeneralList, - boolean useShortConceptConstruction + boolean useShortConceptConstruction, + int maxExecutionTimeInSeconds, + int minExecutionTimeInSeconds, + int guaranteeXgoodDescriptions ) { if(learningProblem instanceof PosNegLP) { PosNegLP lp = (PosNegLP) learningProblem; @@ -239,7 +248,10 @@ this.useTooWeakList = useTooWeakList; this.useOverlyGeneralList = useOverlyGeneralList; this.useShortConceptConstruction = useShortConceptConstruction; - baseURI = rs.getBaseURI(); + this.baseURI = rs.getBaseURI(); + this.maxExecutionTimeInSeconds=maxExecutionTimeInSeconds; + this.minExecutionTimeInSeconds=minExecutionTimeInSeconds; + this.guaranteeXgoodDescriptions = guaranteeXgoodDescriptions; // logger.setLevel(Level.DEBUG); } @@ -317,7 +329,7 @@ long reductionInterval = 500l * 1000000000l; long currentTime; - while(!solutionFound && !stop) { + while(!solutionFound && !stop ) { // print statistics at most once a second currentTime = System.nanoTime(); @@ -352,7 +364,8 @@ candidates.add(bestNode); // newCandidates has been filled during node expansion candidates.addAll(newCandidates); - candidatesStable.addAll(newCandidates); + candidatesStable.addAll(newCandidates); + // System.out.println("done"); if(writeSearchTree) { @@ -380,8 +393,10 @@ } - - if(solutionFound) { + if(maxExecutionTimeReached()) { stop=true;} + boolean minSolutionrequirement = (solutions.size()>guaranteeXgoodDescriptions); + + if(solutionFound && minExecutionTimeReached() && minSolutionrequirement) { logger.info("best node " + candidatesStable.last().getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); logger.info("\nsolutions:"); for(Description c : solutions) { @@ -732,6 +747,7 @@ long algorithmRuntime = System.nanoTime() - algorithmStartTime; if(!finalStats) { + ExampleBasedNode bestNode = candidatesStable.last(); // double accuracy = 100 * ((bestNode.getCoveredPositives().size() // + nrOfNegativeExamples - bestNode.getCoveredNegatives().size())/(double)nrOfExamples); @@ -989,6 +1005,19 @@ return best; } + + public void printBestSolutions(int nrOfSolutions){ + + int i=0; + for(ExampleBasedNode n : candidatesStable.descendingSet()) { + System.out.println(n.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); + if(i==nrOfSolutions) + return ; + i++; + } + + } + public Score getSolutionScore() { if(posOnly) return posOnlyLearningProblem.computeScore(getBestSolution()); @@ -1000,4 +1029,30 @@ return startNode; } + private boolean maxExecutionTimeReached(){ + if(maxExecutionTimeInSeconds==0)return false; + long needed = System.nanoTime()- this.algorithmStartTime; + //millisec /100 + //seconds /1000 + long maxNanoSeconds = maxExecutionTimeInSeconds *100*1000 ; + if(maxNanoSeconds<needed)return true; + else return false; + + } + + /** + * true if minExecutionTime reached + * @return true + */ + private boolean minExecutionTimeReached(){ + //if(minExecutionTimeInSeconds==0)return true; + long needed = System.nanoTime()- this.algorithmStartTime; + //millisec /100 + //seconds /1000 + long minNanoSeconds = minExecutionTimeInSeconds *100*1000 ; + if(minNanoSeconds<needed)return true; + else return false; + + } + } Modified: trunk/src/dl-learner/org/dllearner/core/ComponentManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ComponentManager.java 2008-04-21 20:21:36 UTC (rev 805) +++ trunk/src/dl-learner/org/dllearner/core/ComponentManager.java 2008-04-22 13:07:07 UTC (rev 806) @@ -213,6 +213,10 @@ */ @SuppressWarnings( { "unchecked" }) public <T> void applyConfigEntry(Component component, String optionName, T value) { + System.out.println(component); + System.out.println(optionName); + System.out.println(value); + System.out.println(value.getClass()); // first we look whether the component is registered if (components.contains(component.getClass())) { Modified: trunk/src/dl-learner/org/dllearner/core/config/CommonConfigOptions.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/config/CommonConfigOptions.java 2008-04-21 20:21:36 UTC (rev 805) +++ trunk/src/dl-learner/org/dllearner/core/config/CommonConfigOptions.java 2008-04-22 13:07:07 UTC (rev 806) @@ -40,6 +40,9 @@ public static boolean useCardinalityRestrictionsDefault = true; public static boolean useNegationDefault = true; public static boolean useBooleanDatatypesDefault = true; + public static int maxExecutionTimeInSecondsDefault = 0; + public static int minExecutionTimeInSecondsDefault = 0; + public static int guaranteeXgoodDescriptionsDefault = 1; //public static double noisePercentageDefault = 0.0; @@ -105,4 +108,16 @@ public static BooleanConfigOption useBooleanDatatypes() { return new BooleanConfigOption("useBooleanDatatypes", "specifies whether boolean datatypes are used in the learning algorothm",useBooleanDatatypesDefault); } + + public static IntegerConfigOption maxExecutionTimeInSeconds() { + return new IntegerConfigOption("maxExecutionTimeInSeconds", "algorithm will stop after specified seconds",maxExecutionTimeInSecondsDefault); + } + + public static IntegerConfigOption minExecutionTimeInSeconds() { + return new IntegerConfigOption("minExecutionTimeInSeconds", "algorithm will run at least specified seconds",minExecutionTimeInSecondsDefault); + } + + public static IntegerConfigOption guaranteeXgoodDescriptions() { + return new IntegerConfigOption("guaranteeXgoodDescriptions", "algorithm will run until X good (100%) concept descritpions are found",guaranteeXgoodDescriptionsDefault); + } } Modified: trunk/src/dl-learner/org/dllearner/examples/KRKModular.java =================================================================== --- trunk/src/dl-learner/org/dllearner/examples/KRKModular.java 2008-04-21 20:21:36 UTC (rev 805) +++ trunk/src/dl-learner/org/dllearner/examples/KRKModular.java 2008-04-22 13:07:07 UTC (rev 806) @@ -32,7 +32,6 @@ import org.dllearner.core.owl.ObjectPropertyAssertion; import org.dllearner.kb.KBFile; import org.dllearner.learningproblems.PosNegDefinitionLP; -import org.dllearner.learningproblems.PosNegLP; import org.dllearner.parser.KBParser; import org.dllearner.reasoning.FastInstanceChecker; import org.dllearner.reasoning.OWLAPIReasoner; @@ -258,9 +257,12 @@ r.init(); ReasoningService rs = new ReasoningService(r); + //cm.learningProblem(lpClass, reasoner) LearningProblem lp = new PosNegDefinitionLP(rs); - ((PosNegLP)lp).setPositiveExamples(pos); - ((PosNegLP)lp).setNegativeExamples(neg); + //cm.getConfigOptionValue(lp, ""); + cm.applyConfigEntry(lp, "positiveExamples",pos); + cm.applyConfigEntry(lp, "negativeExamples",neg); + lp.init(); la = cm.learningAlgorithm(ExampleBasedROLComponent.class, lp, rs); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-04-21 20:21:36 UTC (rev 805) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-04-22 13:07:07 UTC (rev 806) @@ -405,6 +405,10 @@ // TODO Does this work? return kb; } + + public URL getNTripleURL(){ + return dumpFile; + } /*public static void main(String[] args) throws MalformedURLException { String query = "SELECT ?pred ?obj\n" Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlQueryType.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlQueryType.java 2008-04-21 20:21:36 UTC (rev 805) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlQueryType.java 2008-04-22 13:07:07 UTC (rev 806) @@ -95,6 +95,8 @@ pred.add("http://dbpedia.org/property/wikipage"); pred.add("http://dbpedia.org/property/wikiPageUsesTemplate"); pred.add("http://dbpedia.org/property/relatedInstance"); + pred.add("http://dbpedia.org/property/owner"); + pred.add("http://dbpedia.org/property/standard"); Set<String> obj = new HashSet<String>(); //obj.add("http://dbpedia.org/resource/Category:Wikipedia_"); @@ -108,7 +110,7 @@ obj.add("http://www.w3.org/2006/03/wn/wn20/instances/synset"); obj.add("http://www4.wiwiss.fu-berlin.de/flickrwrappr"); obj.add("http://www.w3.org/2004/02/skos/core"); - + return new SparqlQueryType("forbid", obj, pred, false); } public static SparqlQueryType YagoSpecialHierarchy(){ Modified: trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2008-04-21 20:21:36 UTC (rev 805) +++ trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2008-04-22 13:07:07 UTC (rev 806) @@ -162,8 +162,11 @@ public void init() throws ComponentInitException { rc = new OWLAPIReasoner(sources); //TODO make it nice + + rc.setReasonerType(reasonerType); rc.init(); + try { atomicConcepts = rc.getAtomicConcepts(); Modified: trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2008-04-21 20:21:36 UTC (rev 805) +++ trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2008-04-22 13:07:07 UTC (rev 806) @@ -58,6 +58,7 @@ import org.dllearner.core.owl.TypedConstant; import org.dllearner.core.owl.UntypedConstant; import org.dllearner.kb.OWLFile; +import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.utilities.ConceptComparator; import org.dllearner.utilities.RoleComparator; import org.semanticweb.owl.apibinding.OWLManager; @@ -180,9 +181,15 @@ Set<OWLOntology> allImports = new HashSet<OWLOntology>(); for(KnowledgeSource source : sources) { - // OWL files are read directly - if(source instanceof OWLFile) { - URL url = ((OWLFile)source).getURL(); + + if(source instanceof OWLFile || source instanceof SparqlKnowledgeSource ) { + URL url=null; + if(source instanceof OWLFile){ + url = ((OWLFile)source).getURL(); + } + else if(source instanceof SparqlKnowledgeSource) { + url=((SparqlKnowledgeSource)source).getNTripleURL(); + } try { OWLOntology ontology = manager.loadOntologyFromPhysicalURI(url.toURI()); Modified: trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java 2008-04-21 20:21:36 UTC (rev 805) +++ trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java 2008-04-22 13:07:07 UTC (rev 806) @@ -8,7 +8,9 @@ import org.dllearner.kb.sparql.SparqlQuery; import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; import org.dllearner.kb.sparql.configuration.SparqlEndpoint; +import org.dllearner.utilities.ConfWriter; import org.dllearner.utilities.JenaResultSetConvenience; +import org.dllearner.utilities.LearnSparql; import org.dllearner.utilities.SimpleClock; import com.hp.hpl.jena.query.ResultSet; @@ -24,12 +26,14 @@ public static void main(String[] args) { init(); try { + SimpleClock sc=new SimpleClock(); SortedSet<String> concepts = new TreeSet<String>(); //concepts.add("\"http://dbpedia.org/class/yago/Person100007846\""); concepts.add("\"http://dbpedia.org/class/yago/FieldMarshal110086821\""); SortedSet<String> posExamples = new TreeSet<String>(); SortedSet<String> negExamples = new TreeSet<String>(); + String url = "http://dbpedia.openlinksw.com:8890/sparql"; //HashMap<String, ResultSet> result = new HashMap<String, ResultSet>(); //HashMap<String, String> result2 = new HashMap<String, String>(); @@ -50,11 +54,16 @@ }*/ System.out.println(negExamples.size()); negExamples.removeAll(posExamples); - - negExamples=shrink(negExamples,posExamples.size()*2); + posExamples=shrink(posExamples,5); + negExamples=shrink(negExamples,posExamples.size()); //System.out.println(posExamples.first())); System.out.println(posExamples.size()); System.out.println(negExamples.size()); + + // + new ConfWriter().writeSPARQL("aaa.conf", posExamples, negExamples, url, new TreeSet<String>()); + new LearnSparql().learn(posExamples, negExamples, "http://dbpedia.openlinksw.com:8890/sparql", new TreeSet<String>()); + sc.printAndSet("Finished"); } catch (Exception e) { e.printStackTrace(); Added: trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java 2008-04-22 13:07:07 UTC (rev 806) @@ -0,0 +1,155 @@ +package org.dllearner.utilities; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.SortedSet; +import java.util.TreeSet; + +import org.dllearner.core.owl.Individual; + +public class ConfWriter { + + + public String workingDir="examples/stest/"; + + + public void writeROLLearnerOWLFileInd(String filename,SortedSet<Individual> pos,SortedSet<Individual> neg, + String owlFile, SortedSet<String> ignoredConcepts){ + + writeROLLearnerOWLFile( filename,toString( pos),toString( neg), + owlFile, ignoredConcepts); + } + + public void writeROLLearnerOWLFile(String filename,SortedSet<String> pos,SortedSet<String> neg, + String owlFile, SortedSet<String> ignoredConcepts){ + + String prefix = "refexamples"; + StringBuffer buf = new StringBuffer(); + buf.append("import(\"" + owlFile + "\");\n\n"); + + buf.append(getIgnoredConcepts(ignoredConcepts,prefix)); + + buf.append(getStandard(prefix)); + + buf.append( getPosAndNeg( pos, neg)); + + + writeToFile(filename, buf.toString()); + + } + + public void writeSPARQL(String filename,SortedSet<String> pos,SortedSet<String> neg, + String uri, SortedSet<String> ignoredConcepts){ + + String prefixAlgortihm = "refexamples"; + String prefixSparql = "sparql"; + + String standardSettings="sparql.recursionDepth = 1;\n" + + "sparql.predefinedFilter = 1;\n" + + "sparql.predefinedEndpoint = 1;\n"; + //"sparql.format = \"KB\";\n\n"; + + StringBuffer buf = new StringBuffer(); + buf.append("import(\"" + uri + "\",\"SPARQL\");\n\n"); + + buf.append(standardSettings); + + buf.append(getIgnoredConcepts(ignoredConcepts,prefixAlgortihm)); + + buf.append(getStandard(prefixAlgortihm)); + + buf.append(sparqlInstances(pos, neg, prefixSparql)); + + buf.append( getPosAndNeg( pos, neg)); + + + writeToFile(filename, buf.toString()); + +} + + public String sparqlInstances(SortedSet<String> pos,SortedSet<String> neg,String prefix){ + SortedSet<String> ret = new TreeSet<String>(); + ret.addAll(pos); + ret.addAll(neg); + + return getStringSet(ret, prefix, "instances"); + + } + + + public String getPosAndNeg(SortedSet<String> pos,SortedSet<String> neg){ + StringBuffer buf = new StringBuffer(); + buf.append("\n\n"); + for (String individuals : pos) { + buf.append("+\"" + individuals + "\"\n"); + + } + buf.append("\n\n"); + for (String individuals : neg) { + + buf.append("-\"" + individuals + "\"\n"); + } + + return buf.toString(); + } + + public String getIgnoredConcepts(SortedSet<String> ignoredConcepts,String prefix){ + + return getStringSet(ignoredConcepts,prefix, "ignoredConcepts"); + } + + public String getStringSet(SortedSet<String> set,String prefix, String type){ + if(set.size()==0)return "\n"; + String ret = prefix+"."+type+"={\n"; + int x=0; + for (String string : set) { + if(x>0)ret+=","; + ret+="\""+string+"\"\n"; + x++; + } + ret+="};\n"; + return ret; + } + + public String getStandard(String prefix){ + String ret = + "algorithm = "+prefix+";\n"+ + "reasoner=fastInstanceChecker;\n\n"+ + + prefix+".useAllConstructor = false;\n"+ + prefix+".useExistsConstructor = true;\n"+ + prefix+".useCardinalityRestrictions = false;\n"+ + prefix+".useNegation = false;\n"; + + return ret; + + } + + + protected void writeToFile(String filename, String content) { + // create the file we want to use + File file = new File(workingDir+filename); + + try { + file.createNewFile(); + FileOutputStream fos = new FileOutputStream(workingDir+filename, false); + // ObjectOutputStream o = new ObjectOutputStream(fos); + fos.write(content.getBytes()); + fos.flush(); + fos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + protected SortedSet<String> toString(SortedSet<Individual> set ){ + SortedSet<String> ret = new TreeSet<String>(); + for (Individual ind : set) { + ret.add(ind.toString()); + } + return ret; + } + + +} Added: trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-04-22 13:07:07 UTC (rev 806) @@ -0,0 +1,97 @@ +package org.dllearner.utilities; + +import java.util.HashSet; +import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; + +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.Individual; +import org.dllearner.kb.sparql.SparqlKnowledgeSource; +import org.dllearner.learningproblems.PosNegDefinitionLP; +import org.dllearner.learningproblems.PosNegLP; +import org.dllearner.reasoning.FastInstanceChecker; + +public class LearnSparql { + + + public void learn(SortedSet<String> posExamples,SortedSet<String> negExamples, + String uri, SortedSet<String> ignoredConcepts){ + + 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); + + SortedSet<String> instances = new TreeSet<String>(); + instances.addAll(posExamples); + instances.addAll(negExamples); + cm.applyConfigEntry(ks, "instances",instances); + cm.applyConfigEntry(ks, "url",uri); + cm.applyConfigEntry(ks, "recursionDepth",1); + cm.applyConfigEntry(ks, "predefinedFilter",1); + cm.applyConfigEntry(ks, "predefinedEndpoint",1); + //cm.applyConfigEntry(ks, "format","KB"); + + ks.init(); + sources.add(ks); + //System.out.println(ks.getNTripleURL()); + // + + ReasonerComponent r = new FastInstanceChecker(sources); + //cm.applyConfigEntry(r,"useAllConstructor",false); + //cm.applyConfigEntry(r,"useExistsConstructor",true); + r.init(); + rs = new ReasoningService(r); + + lp = new PosNegDefinitionLP(rs); + //cm.applyConfigEntry(lp, "positiveExamples",toInd(posExamples)); + ((PosNegLP) lp).setPositiveExamples(toInd(posExamples)); + ((PosNegLP) lp).setNegativeExamples(toInd(negExamples)); + //cm.applyConfigEntry(lp, "negativeExamples",toInd(negExamples)); + lp.init(); + + la = cm.learningAlgorithm(ExampleBasedROLComponent.class, lp, rs); + + cm.applyConfigEntry(la,"useAllConstructor",false); + cm.applyConfigEntry(la,"useExistsConstructor",true); + cm.applyConfigEntry(la,"useCardinalityRestrictions",false); + cm.applyConfigEntry(la,"useNegation",false); + cm.applyConfigEntry(la,"minExecutionTimeInSeconds",10); + cm.applyConfigEntry(la,"guaranteeXgoodDescriptions",10); + + //cm.applyConfigEntry(la,"quiet",false); + if(ignoredConcepts.size()>0) + cm.applyConfigEntry(la,"ignoredConcepts",ignoredConcepts); + la.init(); + + System.out.println("start learning"); + la.start(); + + //System.out.println("best"+la(20)); + ((ExampleBasedROLComponent)la).printBestSolutions(20); + + }catch (Exception e) {e.printStackTrace();} + //System.out.println( la.getBestSolution());; + } + + protected SortedSet<Individual> toInd(SortedSet<String> set ){ + SortedSet<Individual> ret = new TreeSet<Individual>(); + for (String ind : set) { + ret.add(new Individual(ind)); + } + return ret; + } + +} Added: trunk/src/dl-learner/org/dllearner/utilities/NT2RDF.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/NT2RDF.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/NT2RDF.java 2008-04-22 13:07:07 UTC (rev 806) @@ -0,0 +1,35 @@ +package org.dllearner.utilities; +import java.io.File; +import java.net.URI; + +import org.semanticweb.owl.apibinding.OWLManager; +import org.semanticweb.owl.io.RDFXMLOntologyFormat; +import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyManager; +public class NT2RDF { + + + public static void main(String[] args) { + try { + String ontopath=args[0]; + URI inputURI = new File(ontopath).toURI(); + + // outputURI + String ending = ontopath.substring(ontopath.lastIndexOf(".") + 1); + ontopath = ontopath.replace("." + ending, ".rdf" ); + URI outputURI = new File(ontopath).toURI(); + + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + OWLOntology ontology = manager.loadOntologyFromPhysicalURI(inputURI); + manager.saveOntology(ontology, new RDFXMLOntologyFormat(), outputURI); + // Remove the ontology from the manager + manager.removeOntology(ontology.getURI()); + } + catch (Exception e) { + System.out.println("The ontology could not be created: " + e.getMessage()); + } + + } + } + + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-04-22 15:19:20
|
Revision: 809 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=809&view=rev Author: kurzum Date: 2008-04-22 08:19:07 -0700 (Tue, 22 Apr 2008) Log Message: ----------- finished sparql script, some fine tuning needed Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-22 13:31:50 UTC (rev 808) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-22 15:19:07 UTC (rev 809) @@ -103,8 +103,11 @@ //extended Options private long maxExecutionTimeInSeconds; + private boolean maxExecutionTimeShown=false; private long minExecutionTimeInSeconds; + private boolean minExecutionTimeShown=false; private int guaranteeXgoodDescriptions; + private boolean guaranteeXgoodShown=false; // if set to false we do not test properness; this may seem wrong // but the disadvantage of properness testing are additional reasoner @@ -185,6 +188,7 @@ private int conceptTestsReasoner = 0; // time variables + private long runtime; private long algorithmStartTime; private long propernessCalcTimeNs = 0; private long propernessCalcReasoningTimeNs = 0; @@ -257,7 +261,7 @@ } public void start() { - + runtime=System.currentTimeMillis(); // 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) @@ -387,26 +391,37 @@ Files.appendFile(searchTreeFile, treeString); } + + if(maxExecutionTimeReached()) { stop=true;} + solutionFound = (guaranteeXgoodDescriptions() ); + solutionFound = (minExecutionTimeReached()&& solutionFound); + //logger.info(minExecutionTimeReached()+"aaaaaaa "+solutions.size()+"::"+guaranteeXgoodDescriptions); + //logger.info(solutionFound+"aaaaaaa "+stop); + + // Anzahl Schleifendurchläufe loop++; - } - if(maxExecutionTimeReached()) { stop=true;} - boolean minSolutionrequirement = (solutions.size()>guaranteeXgoodDescriptions); + }//end while + - if(solutionFound && minExecutionTimeReached() && minSolutionrequirement) { + + if(solutionFound ) { logger.info("best node " + candidatesStable.last().getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); - logger.info("\nsolutions:"); + logger.info("\nsolutions ( top 5 ):"); + int show=1; for(Description c : solutions) { - logger.info(" " + c.toString(baseURI,null) + " (length " + c.getLength() +", depth " + c.getDepth() + ")"); + logger.info(show+": " + c.toString(baseURI,null) + " (length " + c.getLength() +", depth " + c.getDepth() + ")"); //TODO remove this line maybe // watch for String.replace Quick hack - logger.info(" MANCHESTER: " + + logger.info(" MANCHESTER: " + c.toManchesterSyntaxString(baseURI, new HashMap<String,String>()). replace("\"", "")); - logger.info(" KBSyntax: " + c.toKBSyntaxString()); + logger.info(" KBSyntax: " + c.toKBSyntaxString()); + if(show>=5){break;} + show++; } } logger.debug("size of candidate set: " + candidates.size()); @@ -1029,13 +1044,31 @@ return startNode; } + private boolean guaranteeXgoodDescriptions(){ + if(guaranteeXgoodShown)return true; + if(solutions.size()>guaranteeXgoodDescriptions){ + logger.info("Minimum number of good descriptions reached, stopping now..."); + guaranteeXgoodShown=true; + return true;} + else return false; + + } + + private boolean maxExecutionTimeReached(){ if(maxExecutionTimeInSeconds==0)return false; - long needed = System.nanoTime()- this.algorithmStartTime; + if(maxExecutionTimeShown)return true; + long needed = System.currentTimeMillis()- this.runtime; //millisec /100 //seconds /1000 - long maxNanoSeconds = maxExecutionTimeInSeconds *100*1000 ; - if(maxNanoSeconds<needed)return true; + long maxMilliSeconds = maxExecutionTimeInSeconds *1000 ; + //System.out.println("max"+maxMilliSeconds); + //System.out.println(needed); + + if(maxMilliSeconds<needed){ + logger.info("Maximum time reached, stopping now..."); + maxExecutionTimeShown=true; + return true;} else return false; } @@ -1045,12 +1078,19 @@ * @return true */ private boolean minExecutionTimeReached(){ + if(minExecutionTimeShown)return true; //if(minExecutionTimeInSeconds==0)return true; - long needed = System.nanoTime()- this.algorithmStartTime; + long needed = System.currentTimeMillis()- this.runtime; //millisec /100 //seconds /1000 - long minNanoSeconds = minExecutionTimeInSeconds *100*1000 ; - if(minNanoSeconds<needed)return true; + long minMilliSeconds = minExecutionTimeInSeconds *1000 ; + //System.out.println("min"+minMilliSeconds); + //System.out.println(needed); + + if(minMilliSeconds<needed){ + logger.info("Minimum time reached, stopping when next solution is found"); + minExecutionTimeShown=true; + return true;} else return false; } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java 2008-04-22 13:31:50 UTC (rev 808) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java 2008-04-22 15:19:07 UTC (rev 809) @@ -23,6 +23,7 @@ import java.util.HashSet; import java.util.Vector; +import org.apache.log4j.Logger; import org.dllearner.kb.sparql.configuration.Configuration; import org.dllearner.kb.sparql.datastructure.ClassNode; import org.dllearner.kb.sparql.datastructure.InstanceNode; @@ -40,7 +41,8 @@ private int recursionDepth = 1; // private boolean getAllSuperClasses = true; // private boolean closeAfterRecursion = true; - private boolean print_flag = false; + private static Logger logger = Logger + .getLogger(ExtractionAlgorithm.class); public ExtractionAlgorithm(Configuration Configuration) { this.configuration = Configuration; @@ -79,7 +81,7 @@ System.out.println(n); Vector<Node> v = new Vector<Node>(); v.add(n); - p("StartVector: " + v); + logger.info("StartVector: " + v); // n.expand(tsp, this.Manipulator); // Vector<Node> second= for (int x = 1; x <= recursionDepth; x++) { @@ -87,7 +89,7 @@ Vector<Node> tmp = new Vector<Node>(); while (v.size() > 0) { Node tmpNode = v.remove(0); - p("Expanding " + tmpNode); + logger.info("Expanding " + tmpNode); // System.out.println(this.Manipulator); // these are the new not expanded nodes // the others are saved in connection with the original node @@ -97,14 +99,14 @@ tmp.addAll(tmpVec); } v = tmp; - System.out.println("Recursion counter: " + x + " with " + v.size() + logger.info("Recursion counter: " + x + " with " + v.size() + " Nodes remaining, needed: " + (System.currentTimeMillis() - time) + "ms"); time = System.currentTimeMillis(); } HashSet<String> hadAlready = new HashSet<String>(); - p("Get all superclasses"); + logger.info("Get all superclasses"); //p(configuration.toString()); // gets All Class Nodes and expands them further if (this.configuration.isGetAllSuperClasses()) { @@ -126,10 +128,10 @@ configuration); if (this.configuration.isCloseAfterRecursion()) { while (instances.size() > 0) { - p("Getting classes for remaining instances: " + logger.info("Getting classes for remaining instances: " + instances.size()); Node next = instances.remove(0); - p("Getting classes for: " + next); + logger.info("Getting classes for: " + next); classes.addAll(next.expand(tsqc, manipulator)); if (classes.size() >= manipulator.breakSuperClassRetrievalAfter) { break; @@ -139,14 +141,14 @@ Vector<Node> tmp = new Vector<Node>(); int i = 0; while (classes.size() > 0) { - p("Remaining classes: " + classes.size()); + logger.info("Remaining classes: " + classes.size()); // Iterator<Node> it=classes.iterator(); // Node next =(Node) it.next(); // classes.remove(next); Node next = classes.remove(0); if (!hadAlready.contains(next.getURI().toString())) { - p("Expanding: " + next); + logger.info("Expanding: " + next); // System.out.println(hadAlready.size()); hadAlready.add(next.getURI().toString()); tmp = next.expand(typedSparqlQuery, manipulator); @@ -172,9 +174,6 @@ } - void p(String s) { - if (print_flag) - System.out.println(s); - } + } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-04-22 13:31:50 UTC (rev 808) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-04-22 15:19:07 UTC (rev 809) @@ -67,10 +67,10 @@ public ResultSet send() { isRunning = true; ResultSet rs=null; - logger.info(queryString); + logger.trace(queryString); String service = endpoint.getURL().toString(); - logger.info(endpoint.getURL().toString()); + logger.trace(endpoint.getURL().toString()); // Jena access to SPARQL endpoint queryExecution = new QueryEngineHTTP(service, queryString); for (String dgu : endpoint.getDefaultGraphURIs()) { @@ -81,14 +81,14 @@ } logger.info("query SPARQL server"); try{ - //TODO after overnext Jena release + //TODO remove after overnext Jena release HttpQuery.urlLimit = 3*1024 ; rs = queryExecution.execSelect(); json=SparqlQuery.getAsJSON(rs); - logger.info(rs.getResultVars().toString()); + logger.trace(rs.getResultVars().toString()); } catch (Exception e){ sendException=new SparqlQueryException(e.getMessage()); - logger.info("Exception when querying Sparql Endpoint"); + logger.error("Exception when querying Sparql Endpoint"); } isRunning = false; return rs; Modified: trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java 2008-04-22 13:31:50 UTC (rev 808) +++ trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java 2008-04-22 15:19:07 UTC (rev 809) @@ -4,6 +4,12 @@ import java.util.SortedSet; import java.util.TreeSet; +import javax.sound.midi.SysexMessage; + +import org.apache.log4j.ConsoleAppender; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.apache.log4j.SimpleLayout; import org.dllearner.kb.sparql.Cache; import org.dllearner.kb.sparql.SparqlQuery; import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; @@ -19,7 +25,7 @@ static Cache c; static SparqlEndpoint se; - + private static Logger logger = Logger.getRootLogger(); /** * @param args */ @@ -27,6 +33,8 @@ init(); try { + + SimpleClock sc=new SimpleClock(); SortedSet<String> concepts = new TreeSet<String>(); //concepts.add("\"http://dbpedia.org/class/yago/Person100007846\""); @@ -52,13 +60,13 @@ negExamples.remove(string2); }; }*/ - System.out.println(negExamples.size()); + //System.out.println(negExamples.size()); negExamples.removeAll(posExamples); posExamples=shrink(posExamples,5); negExamples=shrink(negExamples,posExamples.size()); //System.out.println(posExamples.first())); - System.out.println(posExamples.size()); - System.out.println(negExamples.size()); + //System.out.println(posExamples.size()); + //System.out.println(negExamples.size()); // new ConfWriter().writeSPARQL("aaa.conf", posExamples, negExamples, url, new TreeSet<String>()); @@ -137,6 +145,14 @@ SparqlQueryDescriptionConvertVisitor.debug_flag = false; c = new Cache("cache"); se = SparqlEndpoint.dbpediaEndpoint(); + // create logger (a simple logger which outputs + // its messages to the console) + SimpleLayout layout = new SimpleLayout(); + ConsoleAppender consoleAppender = new ConsoleAppender(layout); + logger.removeAllAppenders(); + logger.addAppender(consoleAppender); + logger.setLevel(Level.DEBUG); + } Modified: trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-04-22 13:31:50 UTC (rev 808) +++ trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-04-22 15:19:07 UTC (rev 809) @@ -24,6 +24,7 @@ public void learn(SortedSet<String> posExamples,SortedSet<String> negExamples, String uri, SortedSet<String> ignoredConcepts){ + ComponentManager cm = ComponentManager.getInstance(); LearningAlgorithm la = null; ReasoningService rs = null; @@ -68,8 +69,8 @@ cm.applyConfigEntry(la,"useExistsConstructor",true); cm.applyConfigEntry(la,"useCardinalityRestrictions",false); cm.applyConfigEntry(la,"useNegation",false); - cm.applyConfigEntry(la,"minExecutionTimeInSeconds",10); - cm.applyConfigEntry(la,"guaranteeXgoodDescriptions",10); + cm.applyConfigEntry(la,"minExecutionTimeInSeconds",0); + cm.applyConfigEntry(la,"guaranteeXgoodDescriptions",20); //cm.applyConfigEntry(la,"quiet",false); if(ignoredConcepts.size()>0) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-04-22 15:23:48
|
Revision: 810 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=810&view=rev Author: kurzum Date: 2008-04-22 08:23:38 -0700 (Tue, 22 Apr 2008) Log Message: ----------- moved some classes to new package scripts, because, they are neither utitlity classes nor test classes, but scripts. Added Paths: ----------- trunk/src/dl-learner/org/dllearner/scripts/ trunk/src/dl-learner/org/dllearner/scripts/CloseOntology.java trunk/src/dl-learner/org/dllearner/scripts/CrossValidation.java trunk/src/dl-learner/org/dllearner/scripts/NT2RDF.java trunk/src/dl-learner/org/dllearner/scripts/SPARQLPreparation.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java trunk/src/dl-learner/org/dllearner/utilities/CloseOntology.java trunk/src/dl-learner/org/dllearner/utilities/CrossValidation.java trunk/src/dl-learner/org/dllearner/utilities/NT2RDF.java Copied: trunk/src/dl-learner/org/dllearner/scripts/CloseOntology.java (from rev 808, trunk/src/dl-learner/org/dllearner/utilities/CloseOntology.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/CloseOntology.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/CloseOntology.java 2008-04-22 15:23:38 UTC (rev 810) @@ -0,0 +1,66 @@ +package org.dllearner.scripts; + +import java.io.File; +import java.net.URI; +import java.util.HashSet; +import java.util.Set; + +import org.dllearner.core.KnowledgeSource; +import org.dllearner.kb.OWLFile; +import org.dllearner.reasoning.OWLAPIReasoner; +import org.dllearner.utilities.OntologyCloserOWLAPI; + +/** + * Script for closing an ontology OWLAPI produces extensive filesizes, when + * exporting output file ist named like input file, but recieves a + * "_closedConcise" at the end. + * + * Counts all roles of individuals and adds an Intersection (Concise) of + * ExactCardinalityRestriction to the ABox + * + */ +public class CloseOntology { + + /** + * @param argument0 + * simply the path to the owl ontology "examples/test.owl" + */ + public static void main(String[] args) { + String ontopath=""; + //ontopath="examples/carcinogenesis/carcinogenesis.owl"; + // inputURI + //ontopath = args[0]; + File file = new File(ontopath); + URI inputURI = file.toURI(); + + // outputURI + String ending = ontopath.substring(ontopath.lastIndexOf(".") + 1); + ontopath = ontopath.replace("." + ending, "_closedConcise." + ending); + file = new File(ontopath); + URI outputURI = file.toURI(); + + try { + // initializing reasoner + OWLFile owlFile = new OWLFile(); + owlFile.setURL(inputURI.toURL()); + Set<KnowledgeSource> ks = new HashSet<KnowledgeSource>(); + ks.add(owlFile); + OWLAPIReasoner owlapireasoner = new OWLAPIReasoner(ks); + owlapireasoner.init(); + + // close + OntologyCloserOWLAPI oc = new OntologyCloserOWLAPI(owlapireasoner); + oc.testForTransitiveProperties(true); + System.out.println("Attempting to close"); + oc.applyNumberRestrictionsConcise(); + System.out.println("Finished, preparing output"); + + // save + oc.writeOWLFile(outputURI); + + } catch (Exception e) { + e.printStackTrace(); + } + } + +} Copied: trunk/src/dl-learner/org/dllearner/scripts/CrossValidation.java (from rev 808, trunk/src/dl-learner/org/dllearner/utilities/CrossValidation.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/CrossValidation.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/CrossValidation.java 2008-04-22 15:23:38 UTC (rev 810) @@ -0,0 +1,318 @@ +/** + * 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.scripts; + +import java.io.File; +import java.text.DecimalFormat; +import java.util.Collections; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Random; +import java.util.Set; + +import org.apache.log4j.ConsoleAppender; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.apache.log4j.SimpleLayout; +import org.dllearner.cli.Start; +import org.dllearner.core.ComponentInitException; +import org.dllearner.core.ComponentManager; +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.owl.Individual; +import org.dllearner.learningproblems.PosNegLP; +import org.dllearner.learningproblems.PosOnlyLP; +import org.dllearner.utilities.Datastructures; +import org.dllearner.utilities.Helper; +import org.dllearner.utilities.Stat; + +/** + * Performs cross validation for the given problem. Supports + * k-fold cross-validation and leave-one-out cross-validation. + * + * @author Jens Lehmann + * + */ +public class CrossValidation { + + private static Logger logger = Logger.getRootLogger(); + + public static void main(String[] args) { + File file = new File(args[0]); + + boolean leaveOneOut = false; + int folds = 10; + + // use second argument as number of folds; if not specified + // leave one out cross validation is used + if(args.length > 1) + folds = Integer.parseInt(args[1]); + else + leaveOneOut = true; + + if(folds < 2) { + System.out.println("At least 2 fold needed."); + System.exit(0); + } + + // create logger (a simple logger which outputs + // its messages to the console) + SimpleLayout layout = new SimpleLayout(); + ConsoleAppender consoleAppender = new ConsoleAppender(layout); + logger.removeAllAppenders(); + logger.addAppender(consoleAppender); + logger.setLevel(Level.WARN); + // disable OWL API info output + java.util.logging.Logger.getLogger("").setLevel(java.util.logging.Level.WARNING); + + new CrossValidation(file, folds, leaveOneOut); + + } + + public CrossValidation(File file, int folds, boolean leaveOneOut) { + + DecimalFormat df = new DecimalFormat(); + ComponentManager cm = ComponentManager.getInstance(); + + // the first read of the file is used to detect the examples + // and set up the splits correctly according to our validation + // method + Start start = null; + try { + start = new Start(file); + } catch (ComponentInitException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + LearningProblem lp = start.getLearningProblem(); + ReasoningService rs = start.getReasoningService(); + + // the training and test sets used later on + List<Set<Individual>> trainingSetsPos = new LinkedList<Set<Individual>>(); + List<Set<Individual>> trainingSetsNeg = new LinkedList<Set<Individual>>(); + List<Set<Individual>> testSetsPos = new LinkedList<Set<Individual>>(); + List<Set<Individual>> testSetsNeg = new LinkedList<Set<Individual>>(); + + if(lp instanceof PosNegLP) { + + // get examples and shuffle them to + Set<Individual> posExamples = ((PosNegLP)lp).getPositiveExamples(); + List<Individual> posExamplesList = new LinkedList<Individual>(posExamples); + Collections.shuffle(posExamplesList, new Random(1)); + Set<Individual> negExamples = ((PosNegLP)lp).getNegativeExamples(); + List<Individual> negExamplesList = new LinkedList<Individual>(negExamples); + Collections.shuffle(negExamplesList, new Random(2)); + + // sanity check whether nr. of folds makes sense for this benchmark + if(!leaveOneOut && (posExamples.size()<folds && negExamples.size()<folds)) { + System.out.println("The number of folds is higher than the number of " + + "positive/negative examples. This can result in empty test sets. Exiting."); + System.exit(0); + } + + if(leaveOneOut) { + // note that leave-one-out is not identical to k-fold with + // k = nr. of examples in the current implementation, because + // with n folds and n examples there is no guarantee that a fold + // is never empty (this is an implementation issue) + int nrOfExamples = posExamples.size() + negExamples.size(); + for(int i = 0; i < nrOfExamples; i++) { + // ... + } + System.out.println("Leave-one-out not supported yet."); + System.exit(1); + } else { + // calculating where to split the sets, ; note that we split + // positive and negative examples separately such that the + // distribution of positive and negative examples remains similar + // (note that there better but more complex ways to implement this, + // which guarantee that the sum of the elements of a fold for pos + // and neg differs by at most 1 - it can differ by 2 in our implementation, + // e.g. with 3 folds, 4 pos. examples, 4 neg. examples) + int[] splitsPos = calculateSplits(posExamples.size(),folds); + int[] splitsNeg = calculateSplits(negExamples.size(),folds); + +// System.out.println(splitsPos[0]); +// System.out.println(splitsNeg[0]); + + // calculating training and test sets + for(int i=0; i<folds; i++) { + Set<Individual> testPos = getTestingSet(posExamplesList, splitsPos, i); + Set<Individual> testNeg = getTestingSet(negExamplesList, splitsNeg, i); + testSetsPos.add(i, testPos); + testSetsNeg.add(i, testNeg); + trainingSetsPos.add(i, getTrainingSet(posExamples, testPos)); + trainingSetsNeg.add(i, getTrainingSet(negExamples, testNeg)); + } + + } + + } else if(lp instanceof PosOnlyLP) { + System.out.println("Cross validation for positive only learning not supported yet."); + System.exit(0); + // Set<Individual> posExamples = ((PosOnlyLP)lp).getPositiveExamples(); + // int[] splits = calculateSplits(posExamples.size(),folds); + } else { + System.out.println("Cross validation for learning problem " + lp + " not supported."); + System.exit(0); + } + + // statistical values + Stat runtime = new Stat(); + Stat accuracy = new Stat(); + Stat length = new Stat(); + + // run the algorithm + for(int currFold=0; currFold<folds; currFold++) { + // we always perform a full initialisation to make sure that + // no objects are reused + try { + start = new Start(file); + } catch (ComponentInitException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + lp = start.getLearningProblem(); + Set<String> pos = Datastructures.individualSetToStringSet(trainingSetsPos.get(currFold)); + Set<String> neg = Datastructures.individualSetToStringSet(trainingSetsNeg.get(currFold)); + cm.applyConfigEntry(lp, "positiveExamples", pos); + cm.applyConfigEntry(lp, "negativeExamples", neg); +// System.out.println("pos: " + pos.size()); +// System.out.println("neg: " + neg.size()); +// System.exit(0); + + // es fehlt init zwischendurch + + LearningAlgorithm la = start.getLearningAlgorithm(); + // init again, because examples have changed + try { + la.init(); + } catch (ComponentInitException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + long algorithmStartTime = System.nanoTime(); + la.start(); + long algorithmDuration = System.nanoTime() - algorithmStartTime; + runtime.addNumber(algorithmDuration/(double)1000000000); + + Description concept = la.getBestSolution(); + + 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)); + + System.out.println("test set errors pos: " + tmp2); + System.out.println("test set errors neg: " + tmp3); + + // calculate training accuracies + int trainingCorrectPosClassified = getCorrectPosClassified(rs, concept, trainingSetsPos.get(currFold)); + int trainingCorrectNegClassified = getCorrectNegClassified(rs, concept, trainingSetsNeg.get(currFold)); + int trainingCorrectExamples = trainingCorrectPosClassified + trainingCorrectNegClassified; + double trainingAccuracy = 100*((double)trainingCorrectExamples/(trainingSetsPos.get(currFold).size()+ + trainingSetsNeg.get(currFold).size())); + + // calculate test accuracies + int correctPosClassified = getCorrectPosClassified(rs, concept, testSetsPos.get(currFold)); + int correctNegClassified = getCorrectNegClassified(rs, concept, testSetsNeg.get(currFold)); + int correctExamples = correctPosClassified + correctNegClassified; + double currAccuracy = 100*((double)correctExamples/(testSetsPos.get(currFold).size()+ + testSetsNeg.get(currFold).size())); + accuracy.addNumber(currAccuracy); + + length.addNumber(concept.getLength()); + + System.out.println("fold " + currFold + " (" + file + "):"); + System.out.println(" training: " + pos.size() + " positive and " + neg.size() + " negative examples"); + System.out.println(" testing: " + correctPosClassified + "/" + testSetsPos.get(currFold).size() + " correct positives, " + + correctNegClassified + "/" + testSetsNeg.get(currFold).size() + " correct negatives"); + System.out.println(" concept: " + concept); + System.out.println(" accuracy: " + df.format(currAccuracy) + "% (" + df.format(trainingAccuracy) + "% on training set)"); + System.out.println(" length: " + df.format(concept.getLength())); + System.out.println(" runtime: " + df.format(algorithmDuration/(double)1000000000) + "s"); + + // free all resources + start.getReasoningService().releaseKB(); + cm.freeAllComponents(); + } + + System.out.println(); + System.out.println("Finished " + folds + "-folds cross-validation on " + file + "."); + System.out.println("runtime: " + statOutput(df, runtime, "s")); + System.out.println("length: " + statOutput(df, length, "")); + System.out.println("accuracy: " + statOutput(df, accuracy, "%")); + + } + + private int getCorrectPosClassified(ReasoningService rs, Description concept, Set<Individual> testSetPos) { + return rs.instanceCheck(concept, testSetPos).size(); + } + + private int getCorrectNegClassified(ReasoningService rs, Description concept, Set<Individual> testSetNeg) { + return testSetNeg.size() - rs.instanceCheck(concept, testSetNeg).size(); + } + + private Set<Individual> getTestingSet(List<Individual> examples, int[] splits, int fold) { + int fromIndex; + // we either start from 0 or after the last fold ended + if(fold == 0) + fromIndex = 0; + else + fromIndex = splits[fold-1]; + // the split corresponds to the ends of the folds + int toIndex = splits[fold]; + +// System.out.println("from " + fromIndex + " to " + toIndex); + + Set<Individual> testingSet = new HashSet<Individual>(); + // +1 because 2nd element is exclusive in subList method + testingSet.addAll(examples.subList(fromIndex, toIndex)); + return testingSet; + } + + private Set<Individual> getTrainingSet(Set<Individual> examples, Set<Individual> testingSet) { + return Helper.difference(examples, testingSet); + } + + // takes nr. of examples and the nr. of folds for this examples; + // returns an array which says where each fold ends, i.e. + // splits[i] is the index of the last element of fold i in the examples + private int[] calculateSplits(int nrOfExamples, int folds) { + int[] splits = new int[folds]; + for(int i=1; i<=folds; i++) { + // we always round up to the next integer + splits[i-1] = (int)Math.ceil(i*nrOfExamples/(double)folds); + } + return splits; + } + + private 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 + "; "; + str += "max " + df.format(stat.getMax()) + unit + ")"; + return str; + } + +} Copied: trunk/src/dl-learner/org/dllearner/scripts/NT2RDF.java (from rev 808, trunk/src/dl-learner/org/dllearner/utilities/NT2RDF.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/NT2RDF.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/NT2RDF.java 2008-04-22 15:23:38 UTC (rev 810) @@ -0,0 +1,35 @@ +package org.dllearner.scripts; +import java.io.File; +import java.net.URI; + +import org.semanticweb.owl.apibinding.OWLManager; +import org.semanticweb.owl.io.RDFXMLOntologyFormat; +import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyManager; +public class NT2RDF { + + + public static void main(String[] args) { + try { + String ontopath=args[0]; + URI inputURI = new File(ontopath).toURI(); + + // outputURI + String ending = ontopath.substring(ontopath.lastIndexOf(".") + 1); + ontopath = ontopath.replace("." + ending, ".rdf" ); + URI outputURI = new File(ontopath).toURI(); + + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + OWLOntology ontology = manager.loadOntologyFromPhysicalURI(inputURI); + manager.saveOntology(ontology, new RDFXMLOntologyFormat(), outputURI); + // Remove the ontology from the manager + manager.removeOntology(ontology.getURI()); + } + catch (Exception e) { + System.out.println("The ontology could not be created: " + e.getMessage()); + } + + } + } + + Copied: trunk/src/dl-learner/org/dllearner/scripts/SPARQLPreparation.java (from rev 809, trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLPreparation.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLPreparation.java 2008-04-22 15:23:38 UTC (rev 810) @@ -0,0 +1,176 @@ +package org.dllearner.scripts; + +import java.util.Random; +import java.util.SortedSet; +import java.util.TreeSet; + +import javax.sound.midi.SysexMessage; + +import org.apache.log4j.ConsoleAppender; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.apache.log4j.SimpleLayout; +import org.dllearner.kb.sparql.Cache; +import org.dllearner.kb.sparql.SparqlQuery; +import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; +import org.dllearner.kb.sparql.configuration.SparqlEndpoint; +import org.dllearner.utilities.ConfWriter; +import org.dllearner.utilities.JenaResultSetConvenience; +import org.dllearner.utilities.LearnSparql; +import org.dllearner.utilities.SimpleClock; + +import com.hp.hpl.jena.query.ResultSet; + +public class SPARQLPreparation { + + static Cache c; + static SparqlEndpoint se; + private static Logger logger = Logger.getRootLogger(); + /** + * @param args + */ + public static void main(String[] args) { + init(); + try { + + + + SimpleClock sc=new SimpleClock(); + SortedSet<String> concepts = new TreeSet<String>(); + //concepts.add("\"http://dbpedia.org/class/yago/Person100007846\""); + concepts.add("\"http://dbpedia.org/class/yago/FieldMarshal110086821\""); + SortedSet<String> posExamples = new TreeSet<String>(); + SortedSet<String> negExamples = new TreeSet<String>(); + String url = "http://dbpedia.openlinksw.com:8890/sparql"; + //HashMap<String, ResultSet> result = new HashMap<String, ResultSet>(); + //HashMap<String, String> result2 = new HashMap<String, String>(); + + //System.out.println(concepts.first()); + posExamples = new JenaResultSetConvenience(queryConcept(concepts.first(),0)) + .getStringListForVariable("subject"); + + for (String string : posExamples) { + negExamples.addAll( getObjects(string)); + //if(neg.size()>=1)System.out.println(neg); + } + + /*for (String string2 : negExamples) { + if(posExamples.contains(string2)){ + System.out.println(string2); + negExamples.remove(string2); + }; + }*/ + //System.out.println(negExamples.size()); + negExamples.removeAll(posExamples); + posExamples=shrink(posExamples,5); + negExamples=shrink(negExamples,posExamples.size()); + //System.out.println(posExamples.first())); + //System.out.println(posExamples.size()); + //System.out.println(negExamples.size()); + + // + new ConfWriter().writeSPARQL("aaa.conf", posExamples, negExamples, url, new TreeSet<String>()); + new LearnSparql().learn(posExamples, negExamples, "http://dbpedia.openlinksw.com:8890/sparql", new TreeSet<String>()); + + sc.printAndSet("Finished"); + } catch (Exception e) { + e.printStackTrace(); + + } + + } + + /*************************************************************************** + * *********************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("************************"); } + **************************************************************************/ + + static SortedSet<String> getObjects(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" + + "}"; + //System.out.println(query); + String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); + //System.out.println(JSON); + ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); + JenaResultSetConvenience rsc = new JenaResultSetConvenience(rs); + return rsc.getStringListForVariable("o"); + } + + public static 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); + rs = SparqlQuery.JSONtoResultSet(JSON); + + } catch (Exception e) { + e.printStackTrace(); + } + + return rs; + } + + public static void init() { + SparqlQueryDescriptionConvertVisitor.debug_flag = false; + c = new Cache("cache"); + se = SparqlEndpoint.dbpediaEndpoint(); + // create logger (a simple logger which outputs + // its messages to the console) + SimpleLayout layout = new SimpleLayout(); + ConsoleAppender consoleAppender = new ConsoleAppender(layout); + logger.removeAllAppenders(); + logger.addAppender(consoleAppender); + logger.setLevel(Level.DEBUG); + + + } + + public static SortedSet<String> shrink(SortedSet<String> s, int limit) { + SortedSet<String> ret = new TreeSet<String>(); + Random r = new Random(); + double treshold = ((double)limit)/s.size(); + //System.out.println("treshold"+howmany); + //System.out.println("treshold"+allRetrieved.size()); + System.out.println("treshold"+treshold); + + for (String oneInd : s) { + if(r.nextDouble()<treshold) { + ret.add(oneInd); + + } + } + return ret; + } + +} Deleted: trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java 2008-04-22 15:19:07 UTC (rev 809) +++ trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java 2008-04-22 15:23:38 UTC (rev 810) @@ -1,176 +0,0 @@ -package org.dllearner.test; - -import java.util.Random; -import java.util.SortedSet; -import java.util.TreeSet; - -import javax.sound.midi.SysexMessage; - -import org.apache.log4j.ConsoleAppender; -import org.apache.log4j.Level; -import org.apache.log4j.Logger; -import org.apache.log4j.SimpleLayout; -import org.dllearner.kb.sparql.Cache; -import org.dllearner.kb.sparql.SparqlQuery; -import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; -import org.dllearner.kb.sparql.configuration.SparqlEndpoint; -import org.dllearner.utilities.ConfWriter; -import org.dllearner.utilities.JenaResultSetConvenience; -import org.dllearner.utilities.LearnSparql; -import org.dllearner.utilities.SimpleClock; - -import com.hp.hpl.jena.query.ResultSet; - -public class SPARQLPreparation { - - static Cache c; - static SparqlEndpoint se; - private static Logger logger = Logger.getRootLogger(); - /** - * @param args - */ - public static void main(String[] args) { - init(); - try { - - - - SimpleClock sc=new SimpleClock(); - SortedSet<String> concepts = new TreeSet<String>(); - //concepts.add("\"http://dbpedia.org/class/yago/Person100007846\""); - concepts.add("\"http://dbpedia.org/class/yago/FieldMarshal110086821\""); - SortedSet<String> posExamples = new TreeSet<String>(); - SortedSet<String> negExamples = new TreeSet<String>(); - String url = "http://dbpedia.openlinksw.com:8890/sparql"; - //HashMap<String, ResultSet> result = new HashMap<String, ResultSet>(); - //HashMap<String, String> result2 = new HashMap<String, String>(); - - //System.out.println(concepts.first()); - posExamples = new JenaResultSetConvenience(queryConcept(concepts.first(),0)) - .getStringListForVariable("subject"); - - for (String string : posExamples) { - negExamples.addAll( getObjects(string)); - //if(neg.size()>=1)System.out.println(neg); - } - - /*for (String string2 : negExamples) { - if(posExamples.contains(string2)){ - System.out.println(string2); - negExamples.remove(string2); - }; - }*/ - //System.out.println(negExamples.size()); - negExamples.removeAll(posExamples); - posExamples=shrink(posExamples,5); - negExamples=shrink(negExamples,posExamples.size()); - //System.out.println(posExamples.first())); - //System.out.println(posExamples.size()); - //System.out.println(negExamples.size()); - - // - new ConfWriter().writeSPARQL("aaa.conf", posExamples, negExamples, url, new TreeSet<String>()); - new LearnSparql().learn(posExamples, negExamples, "http://dbpedia.openlinksw.com:8890/sparql", new TreeSet<String>()); - - sc.printAndSet("Finished"); - } catch (Exception e) { - e.printStackTrace(); - - } - - } - - /*************************************************************************** - * *********************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("************************"); } - **************************************************************************/ - - static SortedSet<String> getObjects(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" - + "}"; - //System.out.println(query); - String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); - //System.out.println(JSON); - ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); - JenaResultSetConvenience rsc = new JenaResultSetConvenience(rs); - return rsc.getStringListForVariable("o"); - } - - public static 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); - rs = SparqlQuery.JSONtoResultSet(JSON); - - } catch (Exception e) { - e.printStackTrace(); - } - - return rs; - } - - public static void init() { - SparqlQueryDescriptionConvertVisitor.debug_flag = false; - c = new Cache("cache"); - se = SparqlEndpoint.dbpediaEndpoint(); - // create logger (a simple logger which outputs - // its messages to the console) - SimpleLayout layout = new SimpleLayout(); - ConsoleAppender consoleAppender = new ConsoleAppender(layout); - logger.removeAllAppenders(); - logger.addAppender(consoleAppender); - logger.setLevel(Level.DEBUG); - - - } - - public static SortedSet<String> shrink(SortedSet<String> s, int limit) { - SortedSet<String> ret = new TreeSet<String>(); - Random r = new Random(); - double treshold = ((double)limit)/s.size(); - //System.out.println("treshold"+howmany); - //System.out.println("treshold"+allRetrieved.size()); - System.out.println("treshold"+treshold); - - for (String oneInd : s) { - if(r.nextDouble()<treshold) { - ret.add(oneInd); - - } - } - return ret; - } - -} Deleted: trunk/src/dl-learner/org/dllearner/utilities/CloseOntology.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/CloseOntology.java 2008-04-22 15:19:07 UTC (rev 809) +++ trunk/src/dl-learner/org/dllearner/utilities/CloseOntology.java 2008-04-22 15:23:38 UTC (rev 810) @@ -1,65 +0,0 @@ -package org.dllearner.utilities; - -import java.io.File; -import java.net.URI; -import java.util.HashSet; -import java.util.Set; - -import org.dllearner.core.KnowledgeSource; -import org.dllearner.kb.OWLFile; -import org.dllearner.reasoning.OWLAPIReasoner; - -/** - * Script for closing an ontology OWLAPI produces extensive filesizes, when - * exporting output file ist named like input file, but recieves a - * "_closedConcise" at the end. - * - * Counts all roles of individuals and adds an Intersection (Concise) of - * ExactCardinalityRestriction to the ABox - * - */ -public class CloseOntology { - - /** - * @param argument0 - * simply the path to the owl ontology "examples/test.owl" - */ - public static void main(String[] args) { - String ontopath=""; - //ontopath="examples/carcinogenesis/carcinogenesis.owl"; - // inputURI - //ontopath = args[0]; - File file = new File(ontopath); - URI inputURI = file.toURI(); - - // outputURI - String ending = ontopath.substring(ontopath.lastIndexOf(".") + 1); - ontopath = ontopath.replace("." + ending, "_closedConcise." + ending); - file = new File(ontopath); - URI outputURI = file.toURI(); - - try { - // initializing reasoner - OWLFile owlFile = new OWLFile(); - owlFile.setURL(inputURI.toURL()); - Set<KnowledgeSource> ks = new HashSet<KnowledgeSource>(); - ks.add(owlFile); - OWLAPIReasoner owlapireasoner = new OWLAPIReasoner(ks); - owlapireasoner.init(); - - // close - OntologyCloserOWLAPI oc = new OntologyCloserOWLAPI(owlapireasoner); - oc.testForTransitiveProperties(true); - System.out.println("Attempting to close"); - oc.applyNumberRestrictionsConcise(); - System.out.println("Finished, preparing output"); - - // save - oc.writeOWLFile(outputURI); - - } catch (Exception e) { - e.printStackTrace(); - } - } - -} Deleted: trunk/src/dl-learner/org/dllearner/utilities/CrossValidation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/CrossValidation.java 2008-04-22 15:19:07 UTC (rev 809) +++ trunk/src/dl-learner/org/dllearner/utilities/CrossValidation.java 2008-04-22 15:23:38 UTC (rev 810) @@ -1,315 +0,0 @@ -/** - * 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; - -import java.io.File; -import java.text.DecimalFormat; -import java.util.Collections; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Random; -import java.util.Set; - -import org.apache.log4j.ConsoleAppender; -import org.apache.log4j.Level; -import org.apache.log4j.Logger; -import org.apache.log4j.SimpleLayout; -import org.dllearner.cli.Start; -import org.dllearner.core.ComponentInitException; -import org.dllearner.core.ComponentManager; -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.owl.Individual; -import org.dllearner.learningproblems.PosNegLP; -import org.dllearner.learningproblems.PosOnlyLP; - -/** - * Performs cross validation for the given problem. Supports - * k-fold cross-validation and leave-one-out cross-validation. - * - * @author Jens Lehmann - * - */ -public class CrossValidation { - - private static Logger logger = Logger.getRootLogger(); - - public static void main(String[] args) { - File file = new File(args[0]); - - boolean leaveOneOut = false; - int folds = 10; - - // use second argument as number of folds; if not specified - // leave one out cross validation is used - if(args.length > 1) - folds = Integer.parseInt(args[1]); - else - leaveOneOut = true; - - if(folds < 2) { - System.out.println("At least 2 fold needed."); - System.exit(0); - } - - // create logger (a simple logger which outputs - // its messages to the console) - SimpleLayout layout = new SimpleLayout(); - ConsoleAppender consoleAppender = new ConsoleAppender(layout); - logger.removeAllAppenders(); - logger.addAppender(consoleAppender); - logger.setLevel(Level.WARN); - // disable OWL API info output - java.util.logging.Logger.getLogger("").setLevel(java.util.logging.Level.WARNING); - - new CrossValidation(file, folds, leaveOneOut); - - } - - public CrossValidation(File file, int folds, boolean leaveOneOut) { - - DecimalFormat df = new DecimalFormat(); - ComponentManager cm = ComponentManager.getInstance(); - - // the first read of the file is used to detect the examples - // and set up the splits correctly according to our validation - // method - Start start = null; - try { - start = new Start(file); - } catch (ComponentInitException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - LearningProblem lp = start.getLearningProblem(); - ReasoningService rs = start.getReasoningService(); - - // the training and test sets used later on - List<Set<Individual>> trainingSetsPos = new LinkedList<Set<Individual>>(); - List<Set<Individual>> trainingSetsNeg = new LinkedList<Set<Individual>>(); - List<Set<Individual>> testSetsPos = new LinkedList<Set<Individual>>(); - List<Set<Individual>> testSetsNeg = new LinkedList<Set<Individual>>(); - - if(lp instanceof PosNegLP) { - - // get examples and shuffle them to - Set<Individual> posExamples = ((PosNegLP)lp).getPositiveExamples(); - List<Individual> posExamplesList = new LinkedList<Individual>(posExamples); - Collections.shuffle(posExamplesList, new Random(1)); - Set<Individual> negExamples = ((PosNegLP)lp).getNegativeExamples(); - List<Individual> negExamplesList = new LinkedList<Individual>(negExamples); - Collections.shuffle(negExamplesList, new Random(2)); - - // sanity check whether nr. of folds makes sense for this benchmark - if(!leaveOneOut && (posExamples.size()<folds && negExamples.size()<folds)) { - System.out.println("The number of folds is higher than the number of " - + "positive/negative examples. This can result in empty test sets. Exiting."); - System.exit(0); - } - - if(leaveOneOut) { - // note that leave-one-out is not identical to k-fold with - // k = nr. of examples in the current implementation, because - // with n folds and n examples there is no guarantee that a fold - // is never empty (this is an implementation issue) - int nrOfExamples = posExamples.size() + negExamples.size(); - for(int i = 0; i < nrOfExamples; i++) { - // ... - } - System.out.println("Leave-one-out not supported yet."); - System.exit(1); - } else { - // calculating where to split the sets, ; note that we split - // positive and negative examples separately such that the - // distribution of positive and negative examples remains similar - // (note that there better but more complex ways to implement this, - // which guarantee that the sum of the elements of a fold for pos - // and neg differs by at most 1 - it can differ by 2 in our implementation, - // e.g. with 3 folds, 4 pos. examples, 4 neg. examples) - int[] splitsPos = calculateSplits(posExamples.size(),folds); - int[] splitsNeg = calculateSplits(negExamples.size(),folds); - -// System.out.println(splitsPos[0]); -// System.out.println(splitsNeg[0]); - - // calculating training and test sets - for(int i=0; i<folds; i++) { - Set<Individual> testPos = getTestingSet(posExamplesList, splitsPos, i); - Set<Individual> testNeg = getTestingSet(negExamplesList, splitsNeg, i); - testSetsPos.add(i, testPos); - testSetsNeg.add(i, testNeg); - trainingSetsPos.add(i, getTrainingSet(posExamples, testPos)); - trainingSetsNeg.add(i, getTrainingSet(negExamples, testNeg)); - } - - } - - } else if(lp instanceof PosOnlyLP) { - System.out.println("Cross validation for positive only learning not supported yet."); - System.exit(0); - // Set<Individual> posExamples = ((PosOnlyLP)lp).getPositiveExamples(); - // int[] splits = calculateSplits(posExamples.size(),folds); - } else { - System.out.println("Cross validation for learning problem " + lp + " not supported."); - System.exit(0); - } - - // statistical values - Stat runtime = new Stat(); - Stat accuracy = new Stat(); - Stat length = new Stat(); - - // run the algorithm - for(int currFold=0; currFold<folds; currFold++) { - // we always perform a full initialisation to make sure that - // no objects are reused - try { - start = new Start(file); - } catch (ComponentInitException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - lp = start.getLearningProblem(); - Set<String> pos = Datastructures.individualSetToStringSet(trainingSetsPos.get(currFold)); - Set<String> neg = Datastructures.individualSetToStringSet(trainingSetsNeg.get(currFold)); - cm.applyConfigEntry(lp, "positiveExamples", pos); - cm.applyConfigEntry(lp, "negativeExamples", neg); -// System.out.println("pos: " + pos.size()); -// System.out.println("neg: " + neg.size()); -// System.exit(0); - - // es fehlt init zwischendurch - - LearningAlgorithm la = start.getLearningAlgorithm(); - // init again, because examples have changed - try { - la.init(); - } catch (ComponentInitException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - long algorithmStartTime = System.nanoTime(); - la.start(); - long algorithmDuration = System.nanoTime() - algorithmStartTime; - runtime.addNumber(algorithmDuration/(double)1000000000); - - Description concept = la.getBestSolution(); - - 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)); - - System.out.println("test set errors pos: " + tmp2); - System.out.println("test set errors neg: " + tmp3); - - // calculate training accuracies - int trainingCorrectPosClassified = getCorrectPosClassified(rs, concept, trainingSetsPos.get(currFold)); - int trainingCorrectNegClassified = getCorrectNegClassified(rs, concept, trainingSetsNeg.get(currFold)); - int trainingCorrectExamples = trainingCorrectPosClassified + trainingCorrectNegClassified; - double trainingAccuracy = 100*((double)trainingCorrectExamples/(trainingSetsPos.get(currFold).size()+ - trainingSetsNeg.get(currFold).size())); - - // calculate test accuracies - int correctPosClassified = getCorrectPosClassified(rs, concept, testSetsPos.get(currFold)); - int correctNegClassified = getCorrectNegClassified(rs, concept, testSetsNeg.get(currFold)); - int correctExamples = correctPosClassified + correctNegClassified; - double currAccuracy = 100*((double)correctExamples/(testSetsPos.get(currFold).size()+ - testSetsNeg.get(currFold).size())); - accuracy.addNumber(currAccuracy); - - length.addNumber(concept.getLength()); - - System.out.println("fold " + currFold + " (" + file + "):"); - System.out.println(" training: " + pos.size() + " positive and " + neg.size() + " negative examples"); - System.out.println(" testing: " + correctPosClassified + "/" + testSetsPos.get(currFold).size() + " correct positives, " - + correctNegClassified + "/" + testSetsNeg.get(currFold).size() + " correct negatives"); - System.out.println(" concept: " + concept); - System.out.println(" accuracy: " + df.format(currAccuracy) + "% (" + df.format(trainingAccuracy) + "% on training set)"); - System.out.println(" length: " + df.format(concept.getLength())); - System.out.println(" runtime: " + df.format(algorithmDuration/(double)1000000000) + "s"); - - // free all resources - start.getReasoningService().releaseKB(); - cm.freeAllComponents(); - } - - System.out.println(); - System.out.println("Finished " + folds + "-folds cross-validation on " + file + "."); - System.out.println("runtime: " + statOutput(df, runtime, "s")); - System.out.println("length: " + statOutput(df, length, "")); - System.out.println("accuracy: " + statOutput(df, accuracy, "%")); - - } - - private int getCorrectPosClassified(ReasoningService rs, Description concept, Set<Individual> testSetPos) { - return rs.instanceCheck(concept, testSetPos).size(); - } - - private int getCorrectNegClassified(ReasoningService rs, Description concept, Set<Individual> testSetNeg) { - return testSetNeg.size() - rs.instanceCheck(concept, testSetNeg).size(); - } - - private Set<Individual> getTestingSet(List<Individual> examples, int[] splits, int fold) { - int fromIndex; - // we either start from 0 or after the last fold ended - if(fold == 0) - fromIndex = 0; - else - fromIndex = splits[fold-1]; - // the split corresponds to the ends of the folds - int toIndex = splits[fold]; - -// System.out.println("from " + fromIndex + " to " + toIndex); - - Set<Individual> testingSet = new HashSet<Individual>(); - // +1 because 2nd element is exclusive in subList method - testingSet.addAll(examples.subList(fromIndex, toIndex)); - return testingSet; - } - - private Set<Individual> getTrainingSet(Set<Individual> examples, Set<Individual> testingSet) { - return Helper.difference(examples, testingSet); - } - - // takes nr. of examples and the nr. of folds for this examples; - // returns an array which says where each fold ends, i.e. - // splits[i] is the index of the last element of fold i in the examples - private int[] calculateSplits(int nrOfExamples, int folds) { - int[] splits = new int[folds]; - for(int i=1; i<=folds; i++) { - // we always round up to the next integer - splits[i-1] = (int)Math.ceil(i*nrOfExamples/(double)folds); - } - return splits; - } - - private 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 + "; "; - str += "max " + df.format(stat.getMax()) + unit + ")"; - return str; - } - -} Deleted: trunk/src/dl-learner/org/dllearner/utilities/NT2RDF.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/NT2RDF.java 2008-04-22 15:19:07 UTC (rev 809) +++ trunk/src/dl-learner/org/dllearner/utilities/NT2RDF.java 2008-04-22 15:23:38 UTC (rev 810) @@ -1,35 +0,0 @@ -package org.dllearner.utilities; -import java.io.File; -import java.net.URI; - -import org.semanticweb.owl.apibinding.OWLManager; -import org.semanticweb.owl.io.RDFXMLOntologyFormat; -import org.semanticweb.owl.model.OWLOntology; -import org.semanticweb.owl.model.OWLOntologyManager; -public class NT2RDF { - - - public static void main(String[] args) { - try { - String ontopath=args[0]; - URI inputURI = new File(ontopath).toURI(); - - // outputURI - String ending = ontopath.substring(ontopath.lastIndexOf(".") + 1); - ontopath = ontopath.replace("." + ending, ".rdf" ); - URI outputURI = new File(ontopath).toURI(); - - OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); - OWLOntology ontology = manager.loadOntologyFromPhysicalURI(inputURI); - manager.saveOntology(ontology, new RDFXMLOntologyFormat(), outputURI); - // Remove the ontology from the manager - manager.removeOntology(ontology.getURI()); - } - catch (Exception e) { - System.out.println("The ontology could not be created: " + e.getMessage()); - } - - } - } - - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-04-22 17:29:31
|
Revision: 812 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=812&view=rev Author: kurzum Date: 2008-04-22 10:29:06 -0700 (Tue, 22 Apr 2008) Log Message: ----------- Script done, validation still needed, incorporated superclasses with negative examples made an extra class AutomaticExampleFinderSPARQL for reuse in ORE tool 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/SparqlQueryDescriptionConvertVisitor.java trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java trunk/src/dl-learner/org/dllearner/utilities/SetManipulation.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/scripts/SPARQLPreparation.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-22 17:15:27 UTC (rev 811) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-22 17:29:06 UTC (rev 812) @@ -776,6 +776,7 @@ logger.debug(bestNodeString); logger.debug(startNode.getStats(nrOfPositiveExamples, nrOfNegativeExamples)); logger.debug(bestNodeStringKBSyntax); + if(bestNode.getCoveredNegatives().size()<=3)logger.debug("covered negs: "+bestNode.getCoveredNegatives()); String expandedNodeString = "next expanded node: " + candidates.last().getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI); // searchTree += expandedNodeString + "\n"; logger.debug(expandedNodeString); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-04-22 17:15:27 UTC (rev 811) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-04-22 17:29:06 UTC (rev 812) @@ -73,6 +73,13 @@ private long freshnessSeconds = 15 * 24 * 60 * 60; /** + * same ad Cache(String) default is "cache" + */ + public Cache() { + this("cache"); + } + + /** * Constructor for the cache itself. * * @param cacheDir Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-04-22 17:15:27 UTC (rev 811) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-04-22 17:29:06 UTC (rev 812) @@ -6,7 +6,9 @@ import java.util.Stack; import java.util.TreeSet; +import org.apache.log4j.Logger; import org.dllearner.algorithms.gp.ADC; +import org.dllearner.core.ComponentManager; import org.dllearner.core.owl.DatatypeExactCardinalityRestriction; import org.dllearner.core.owl.DatatypeMaxCardinalityRestriction; import org.dllearner.core.owl.DatatypeMinCardinalityRestriction; @@ -37,7 +39,8 @@ */ public class SparqlQueryDescriptionConvertVisitor implements DescriptionVisitor{ - public static boolean debug_flag=false; + private static Logger logger = Logger.getLogger(ComponentManager.class); + private Stack<String> stack = new Stack<String>(); @@ -131,42 +134,42 @@ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Negation) */ public void visit(Negation description) { - print("Negation"); + logger.trace("Negation"); } /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectAllRestriction) */ public void visit(ObjectAllRestriction description) { - print("ObjectAllRestriction"); + logger.trace("ObjectAllRestriction"); } /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectSomeRestriction) */ public void visit(ObjectSomeRestriction description) { - print("ObjectSomeRestriction"); + logger.trace("ObjectSomeRestriction"); query+="?"+stack.peek()+" <"+description.getRole()+"> ?object"+currentObject+"."; stack.push("object"+currentObject); currentObject++; description.getChild(0).accept(this); stack.pop(); - print(description.getRole().toString()); - print(description.getChild(0).toString()); + logger.trace(description.getRole().toString()); + logger.trace(description.getChild(0).toString()); } /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Nothing) */ public void visit(Nothing description) { - print("Nothing"); + logger.trace("Nothing"); } /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Thing) */ public void visit(Thing description) { - print("Thing"); + logger.trace("Thing"); } @@ -174,7 +177,7 @@ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Intersection) */ public void visit(Intersection description) { - print("Intersection"); + logger.trace("Intersection"); description.getChild(0).accept(this); query+="."; description.getChild(1).accept(this); @@ -185,7 +188,7 @@ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Union) */ public void visit(Union description) { - print("Union"); + logger.trace("Union"); query+="{"; description.getChild(0).accept(this); query+="} UNION {"; @@ -197,42 +200,42 @@ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectMinCardinalityRestriction) */ public void visit(ObjectMinCardinalityRestriction description) { - print("ObjectMinCardinalityRestriction"); + logger.trace("ObjectMinCardinalityRestriction"); } /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectExactCardinalityRestriction) */ public void visit(ObjectExactCardinalityRestriction description) { - print("ObjectExactCardinalityRestriction"); + logger.trace("ObjectExactCardinalityRestriction"); } /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectMaxCardinalityRestriction) */ public void visit(ObjectMaxCardinalityRestriction description) { - print("ObjectMaxCardinalityRestriction"); + logger.trace("ObjectMaxCardinalityRestriction"); } /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectValueRestriction) */ public void visit(ObjectValueRestriction description) { - print("ObjectValueRestriction"); + logger.trace("ObjectValueRestriction"); } /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeValueRestriction) */ public void visit(DatatypeValueRestriction description) { - print("DatatypeValueRestriction"); + logger.trace("DatatypeValueRestriction"); } /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.NamedClass) */ public void visit(NamedClass description) { - print("NamedClass"); + logger.trace("NamedClass"); query+="?"+stack.peek()+" a <"+description.getName()+">"; } @@ -240,44 +243,37 @@ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.algorithms.gp.ADC) */ public void visit(ADC description) { - print("ADC"); + logger.trace("ADC"); } /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeMinCardinalityRestriction) */ public void visit(DatatypeMinCardinalityRestriction description) { - print("DatatypeMinCardinalityRestriction"); + logger.trace("DatatypeMinCardinalityRestriction"); } /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeExactCardinalityRestriction) */ public void visit(DatatypeExactCardinalityRestriction description) { - print("DatatypeExactCardinalityRestriction"); + logger.trace("DatatypeExactCardinalityRestriction"); } /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeMaxCardinalityRestriction) */ public void visit(DatatypeMaxCardinalityRestriction description) { - print("DatatypeMaxCardinalityRestriction"); + logger.trace("DatatypeMaxCardinalityRestriction"); } /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeSomeRestriction) */ public void visit(DatatypeSomeRestriction description) { - print("DatatypeSomeRestriction"); + logger.trace("DatatypeSomeRestriction"); } - /** - * TODO should be replaced by logger.debug or sth like that - * @param str - */ - public void print(String str){ - if(debug_flag)System.out.println(str); - } } Copied: trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java (from rev 810, trunk/src/dl-learner/org/dllearner/scripts/SPARQLPreparation.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-04-22 17:29:06 UTC (rev 812) @@ -0,0 +1,118 @@ +package org.dllearner.scripts; + +import java.util.SortedSet; +import java.util.TreeSet; + +import org.apache.log4j.ConsoleAppender; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.apache.log4j.SimpleLayout; +import org.dllearner.kb.sparql.Cache; +import org.dllearner.kb.sparql.configuration.SparqlEndpoint; +import org.dllearner.utilities.AutomaticExampleFinderSPARQL; +import org.dllearner.utilities.ConfWriter; +import org.dllearner.utilities.LearnSparql; +import org.dllearner.utilities.SimpleClock; + +public class SPARQLMassLearning { + + static Cache c; + static SparqlEndpoint se; + private static Logger logger = Logger.getRootLogger(); + /** + * @param args + */ + public static void main(String[] args) { + init(); + + //vars + boolean useRelated = true; + boolean useSuperClasses = true; + int poslimit = 50; + int neglimit = 100; + + + try { + + SimpleClock sc=new SimpleClock(); + SortedSet<String> concepts = new TreeSet<String>(); + //concepts.add("\"http://dbpedia.org/class/yago/Person100007846\""); + concepts.add("\"http://dbpedia.org/class/yago/FieldMarshal110086821\""); + SortedSet<String> posExamples = new TreeSet<String>(); + SortedSet<String> negExamples = new TreeSet<String>(); + String url = "http://dbpedia.openlinksw.com:8890/sparql"; + //HashMap<String, ResultSet> result = new HashMap<String, ResultSet>(); + //HashMap<String, String> result2 = new HashMap<String, String>(); + + AutomaticExampleFinderSPARQL ae= new AutomaticExampleFinderSPARQL( se); + ae.init(concepts.first(), useRelated, useSuperClasses, poslimit, neglimit); + + posExamples = ae.getPosExamples(); + negExamples = ae.getNegExamples(); + + System.out.println(posExamples); + System.out.println(negExamples); + //System.exit(0); + + + // + new ConfWriter().writeSPARQL("aaa.conf", posExamples, negExamples, url, new TreeSet<String>()); + new LearnSparql().learn(posExamples, negExamples, "http://dbpedia.openlinksw.com:8890/sparql", new TreeSet<String>()); + + sc.printAndSet("Finished"); + } catch (Exception e) { + e.printStackTrace(); + + } + + } + + /*************************************************************************** + * *********************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("************************"); } + **************************************************************************/ + + + + + + public static void init() { + + se = SparqlEndpoint.dbpediaEndpoint(); + // create logger (a simple logger which outputs + // its messages to the console) + SimpleLayout layout = new SimpleLayout(); + ConsoleAppender consoleAppender = new ConsoleAppender(layout); + logger.removeAllAppenders(); + logger.addAppender(consoleAppender); + logger.setLevel(Level.DEBUG); + + + } + + + +} Deleted: trunk/src/dl-learner/org/dllearner/scripts/SPARQLPreparation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLPreparation.java 2008-04-22 17:15:27 UTC (rev 811) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLPreparation.java 2008-04-22 17:29:06 UTC (rev 812) @@ -1,176 +0,0 @@ -package org.dllearner.scripts; - -import java.util.Random; -import java.util.SortedSet; -import java.util.TreeSet; - -import javax.sound.midi.SysexMessage; - -import org.apache.log4j.ConsoleAppender; -import org.apache.log4j.Level; -import org.apache.log4j.Logger; -import org.apache.log4j.SimpleLayout; -import org.dllearner.kb.sparql.Cache; -import org.dllearner.kb.sparql.SparqlQuery; -import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; -import org.dllearner.kb.sparql.configuration.SparqlEndpoint; -import org.dllearner.utilities.ConfWriter; -import org.dllearner.utilities.JenaResultSetConvenience; -import org.dllearner.utilities.LearnSparql; -import org.dllearner.utilities.SimpleClock; - -import com.hp.hpl.jena.query.ResultSet; - -public class SPARQLPreparation { - - static Cache c; - static SparqlEndpoint se; - private static Logger logger = Logger.getRootLogger(); - /** - * @param args - */ - public static void main(String[] args) { - init(); - try { - - - - SimpleClock sc=new SimpleClock(); - SortedSet<String> concepts = new TreeSet<String>(); - //concepts.add("\"http://dbpedia.org/class/yago/Person100007846\""); - concepts.add("\"http://dbpedia.org/class/yago/FieldMarshal110086821\""); - SortedSet<String> posExamples = new TreeSet<String>(); - SortedSet<String> negExamples = new TreeSet<String>(); - String url = "http://dbpedia.openlinksw.com:8890/sparql"; - //HashMap<String, ResultSet> result = new HashMap<String, ResultSet>(); - //HashMap<String, String> result2 = new HashMap<String, String>(); - - //System.out.println(concepts.first()); - posExamples = new JenaResultSetConvenience(queryConcept(concepts.first(),0)) - .getStringListForVariable("subject"); - - for (String string : posExamples) { - negExamples.addAll( getObjects(string)); - //if(neg.size()>=1)System.out.println(neg); - } - - /*for (String string2 : negExamples) { - if(posExamples.contains(string2)){ - System.out.println(string2); - negExamples.remove(string2); - }; - }*/ - //System.out.println(negExamples.size()); - negExamples.removeAll(posExamples); - posExamples=shrink(posExamples,5); - negExamples=shrink(negExamples,posExamples.size()); - //System.out.println(posExamples.first())); - //System.out.println(posExamples.size()); - //System.out.println(negExamples.size()); - - // - new ConfWriter().writeSPARQL("aaa.conf", posExamples, negExamples, url, new TreeSet<String>()); - new LearnSparql().learn(posExamples, negExamples, "http://dbpedia.openlinksw.com:8890/sparql", new TreeSet<String>()); - - sc.printAndSet("Finished"); - } catch (Exception e) { - e.printStackTrace(); - - } - - } - - /*************************************************************************** - * *********************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("************************"); } - **************************************************************************/ - - static SortedSet<String> getObjects(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" - + "}"; - //System.out.println(query); - String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); - //System.out.println(JSON); - ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); - JenaResultSetConvenience rsc = new JenaResultSetConvenience(rs); - return rsc.getStringListForVariable("o"); - } - - public static 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); - rs = SparqlQuery.JSONtoResultSet(JSON); - - } catch (Exception e) { - e.printStackTrace(); - } - - return rs; - } - - public static void init() { - SparqlQueryDescriptionConvertVisitor.debug_flag = false; - c = new Cache("cache"); - se = SparqlEndpoint.dbpediaEndpoint(); - // create logger (a simple logger which outputs - // its messages to the console) - SimpleLayout layout = new SimpleLayout(); - ConsoleAppender consoleAppender = new ConsoleAppender(layout); - logger.removeAllAppenders(); - logger.addAppender(consoleAppender); - logger.setLevel(Level.DEBUG); - - - } - - public static SortedSet<String> shrink(SortedSet<String> s, int limit) { - SortedSet<String> ret = new TreeSet<String>(); - Random r = new Random(); - double treshold = ((double)limit)/s.size(); - //System.out.println("treshold"+howmany); - //System.out.println("treshold"+allRetrieved.size()); - System.out.println("treshold"+treshold); - - for (String oneInd : s) { - if(r.nextDouble()<treshold) { - ret.add(oneInd); - - } - } - return ret; - } - -} Added: trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java 2008-04-22 17:29:06 UTC (rev 812) @@ -0,0 +1,168 @@ +package org.dllearner.utilities; + +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.SparqlQuery; +import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; +import org.dllearner.kb.sparql.configuration.SparqlEndpoint; + +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 AutomaticExampleFinderSPARQL(SparqlEndpoint se){ + this.c=new Cache(); + this.se=se; + posExamples = new TreeSet<String>(); + negExamples = new TreeSet<String>(); + } + + public void init(String concept, boolean useRelated, boolean useSuperclasses, int poslimit, int neglimit) { + makePositiveExamplesFromConcept( concept); + SortedSet<String> keepForClean = new TreeSet<String>(); + keepForClean.addAll(this.posExamples); + this.posExamples = SetManipulation.fuzzyShrink(this.posExamples, poslimit); + + if(useRelated) { + dbpediaMakeNegativeExamplesFromRelatedInstances(this.posExamples); + } + if(useSuperclasses) { + dbpediaMakeNegativeExamplesFromSuperClasses(concept); + } + //clean + negExamples.removeAll(keepForClean); + this.negExamples = SetManipulation.fuzzyShrink(negExamples, neglimit); + logger.debug("Finished examples for concept :"+concept); + } + + public SortedSet<String> getPosOnly(String concept, int limit){ + makePositiveExamplesFromConcept( concept); + return SetManipulation.fuzzyShrink(this.posExamples, limit); + } + + private void makePositiveExamplesFromConcept(String concept){ + this.posExamples = new JenaResultSetConvenience(queryConcept(concept,0)) + .getStringListForVariable("subject"); + + } + + + + + + private void dbpediaMakeNegativeExamplesFromRelatedInstances(SortedSet<String> subject) { + for (String string : subject) { + dbpediaMakeNegativeExamplesFromRelatedInstances(string); + } + } + + + /** + * + * @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 dbpediaMakeNegativeExamplesFromSuperClasses(String concept) { + + SortedSet<String> superClasses = 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; + for (String oneSuperClass : superClasses) { + + rsc = new JenaResultSetConvenience(queryConcept("\""+oneSuperClass+"\"", 0)); + this.negExamples.addAll(rsc.getStringListForVariable("subject")); + } + } + + private SortedSet<String> dbpediaGetSuperClasses(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) { + //logger.debug("one"+oneSuperClass); + //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); + rs = SparqlQuery.JSONtoResultSet(JSON); + + } catch (Exception e) { + e.printStackTrace(); + } + + return rs; + } + + public SortedSet<String> getPosExamples() { + return posExamples; + } + + public SortedSet<String> getNegExamples() { + return negExamples; + } + + + +} Modified: trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-04-22 17:15:27 UTC (rev 811) +++ trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-04-22 17:29:06 UTC (rev 812) @@ -12,7 +12,6 @@ import org.dllearner.core.LearningProblem; import org.dllearner.core.ReasonerComponent; import org.dllearner.core.ReasoningService; -import org.dllearner.core.owl.Individual; import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.learningproblems.PosNegDefinitionLP; import org.dllearner.learningproblems.PosNegLP; @@ -21,6 +20,7 @@ public class LearnSparql { + public void learn(SortedSet<String> posExamples,SortedSet<String> negExamples, String uri, SortedSet<String> ignoredConcepts){ @@ -58,8 +58,8 @@ lp = new PosNegDefinitionLP(rs); //cm.applyConfigEntry(lp, "positiveExamples",toInd(posExamples)); - ((PosNegLP) lp).setPositiveExamples(toInd(posExamples)); - ((PosNegLP) lp).setNegativeExamples(toInd(negExamples)); + ((PosNegLP) lp).setPositiveExamples(SetManipulation.stringToInd(posExamples)); + ((PosNegLP) lp).setNegativeExamples(SetManipulation.stringToInd(negExamples)); //cm.applyConfigEntry(lp, "negativeExamples",toInd(negExamples)); lp.init(); @@ -69,8 +69,9 @@ cm.applyConfigEntry(la,"useExistsConstructor",true); cm.applyConfigEntry(la,"useCardinalityRestrictions",false); cm.applyConfigEntry(la,"useNegation",false); - cm.applyConfigEntry(la,"minExecutionTimeInSeconds",0); - cm.applyConfigEntry(la,"guaranteeXgoodDescriptions",20); + cm.applyConfigEntry(la,"minExecutionTimeInSeconds",100); + cm.applyConfigEntry(la,"maxExecutionTimeInSeconds",100); + cm.applyConfigEntry(la,"guaranteeXgoodDescriptions",1); //cm.applyConfigEntry(la,"quiet",false); if(ignoredConcepts.size()>0) @@ -81,18 +82,12 @@ la.start(); //System.out.println("best"+la(20)); - ((ExampleBasedROLComponent)la).printBestSolutions(20); + ((ExampleBasedROLComponent)la).printBestSolutions(200); }catch (Exception e) {e.printStackTrace();} //System.out.println( la.getBestSolution());; } - protected SortedSet<Individual> toInd(SortedSet<String> set ){ - SortedSet<Individual> ret = new TreeSet<Individual>(); - for (String ind : set) { - ret.add(new Individual(ind)); - } - return ret; - } + } Added: trunk/src/dl-learner/org/dllearner/utilities/SetManipulation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/SetManipulation.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/SetManipulation.java 2008-04-22 17:29:06 UTC (rev 812) @@ -0,0 +1,43 @@ +package org.dllearner.utilities; + +import java.util.Random; +import java.util.SortedSet; +import java.util.TreeSet; + +import org.dllearner.core.owl.Individual; + +public class SetManipulation { + + + /** + * shrinks a set to the limit + * size will be roughly the same as limit, but can be more or less a bit + * @param set + * @param limit + * @return + */ + public static SortedSet<String> fuzzyShrink(SortedSet<String> set, int limit) { + SortedSet<String> ret = new TreeSet<String>(); + Random r = new Random(); + double treshold = ((double)limit)/set.size(); + //System.out.println("treshold"+howmany); + //System.out.println("treshold"+allRetrieved.size()); + //System.out.println("treshold"+treshold); + + for (String oneInd : set) { + if(r.nextDouble()<treshold) { + ret.add(oneInd); + + } + } + return ret; + } + + public static SortedSet<Individual> stringToInd(SortedSet<String> set ){ + SortedSet<Individual> ret = new TreeSet<Individual>(); + for (String ind : set) { + ret.add(new Individual(ind)); + } + return ret; + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-04-22 17:35:02
|
Revision: 813 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=813&view=rev Author: kurzum Date: 2008-04-22 10:34:43 -0700 (Tue, 22 Apr 2008) Log Message: ----------- small changes Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-04-22 17:29:06 UTC (rev 812) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-04-22 17:34:43 UTC (rev 813) @@ -28,8 +28,8 @@ //vars boolean useRelated = true; boolean useSuperClasses = true; - int poslimit = 50; - int neglimit = 100; + int poslimit = 300; + int neglimit = 600; try { Modified: trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-04-22 17:29:06 UTC (rev 812) +++ trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-04-22 17:34:43 UTC (rev 813) @@ -69,9 +69,9 @@ cm.applyConfigEntry(la,"useExistsConstructor",true); cm.applyConfigEntry(la,"useCardinalityRestrictions",false); cm.applyConfigEntry(la,"useNegation",false); - cm.applyConfigEntry(la,"minExecutionTimeInSeconds",100); - cm.applyConfigEntry(la,"maxExecutionTimeInSeconds",100); - cm.applyConfigEntry(la,"guaranteeXgoodDescriptions",1); + cm.applyConfigEntry(la,"minExecutionTimeInSeconds",0); + cm.applyConfigEntry(la,"maxExecutionTimeInSeconds",1800); + cm.applyConfigEntry(la,"guaranteeXgoodDescriptions",999999); //cm.applyConfigEntry(la,"quiet",false); if(ignoredConcepts.size()>0) @@ -82,7 +82,7 @@ la.start(); //System.out.println("best"+la(20)); - ((ExampleBasedROLComponent)la).printBestSolutions(200); + ((ExampleBasedROLComponent)la).printBestSolutions(10000); }catch (Exception e) {e.printStackTrace();} //System.out.println( la.getBestSolution());; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-04-23 08:04:01
|
Revision: 816 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=816&view=rev Author: kurzum Date: 2008-04-23 01:03:44 -0700 (Wed, 23 Apr 2008) Log Message: ----------- new options loglevel and stopping for ROLLearner and refexamples Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/Info.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/config/CommonConfigOptions.java trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java Modified: trunk/src/dl-learner/org/dllearner/Info.java =================================================================== --- trunk/src/dl-learner/org/dllearner/Info.java 2008-04-22 18:11:28 UTC (rev 815) +++ trunk/src/dl-learner/org/dllearner/Info.java 2008-04-23 08:03:44 UTC (rev 816) @@ -3,6 +3,6 @@ package org.dllearner; public class Info { - public static final String build = "2008-03-31"; + public static final String build = "2008-04-23"; } \ No newline at end of file Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java 2008-04-22 18:11:28 UTC (rev 815) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java 2008-04-23 08:03:44 UTC (rev 816) @@ -26,6 +26,8 @@ import java.util.List; import java.util.Set; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.LearningProblem; import org.dllearner.core.ReasoningService; @@ -75,6 +77,9 @@ // actual algorithm private ExampleBasedROLearner algorithm; + private static Logger logger = Logger + .getLogger(ExampleBasedROLearner.class); + private String logLevel = CommonConfigOptions.logLevelDefault; // learning problem to solve and background knowledge private ReasoningService rs; @@ -172,6 +177,7 @@ options.add(CommonConfigOptions.maxExecutionTimeInSeconds()); options.add(CommonConfigOptions.minExecutionTimeInSeconds()); options.add(CommonConfigOptions.guaranteeXgoodDescriptions()); + options.add(CommonConfigOptions.getLogLevel()); DoubleConfigOption noisePercentage = new DoubleConfigOption("noisePercentage", "the (approximated) percentage of noise within the examples"); noisePercentage.setLowerLimit(0); noisePercentage.setUpperLimit(100); @@ -239,6 +245,8 @@ minExecutionTimeInSeconds = (Integer) entry.getValue(); }else if(name.equals("guaranteeXgoodDescriptions")) { guaranteeXgoodDescriptions = (Integer) entry.getValue(); + } else if(name.equals("logLevel")) { + logLevel = ((String)entry.getValue()).toUpperCase(); } } @@ -247,7 +255,8 @@ */ @Override public void init() { - + + logger.setLevel(Level.toLevel(logLevel,Level.toLevel(CommonConfigOptions.logLevelDefault))); if(searchTreeFile == null) searchTreeFile = new File(defaultSearchTreeFile); @@ -308,7 +317,7 @@ rs, applyAllFilter, applyExistsFilter, - useAllConstructor, + useAllConstructor, useExistsConstructor, useCardinalityRestrictions, useNegation, @@ -380,10 +389,10 @@ } - public void printBestSolutions(int nrOfSolutions){ + /*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-04-22 18:11:28 UTC (rev 815) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-23 08:03:44 UTC (rev 816) @@ -75,8 +75,9 @@ public class ExampleBasedROLearner { private static Logger logger = Logger - .getLogger(ExampleBasedROLearner.class); + .getLogger(ExampleBasedROLearner.class); + // basic setup: learning problem and reasoning service private ReasoningService rs; private PosNegLP learningProblem; @@ -221,6 +222,7 @@ int minExecutionTimeInSeconds, int guaranteeXgoodDescriptions ) { + if(learningProblem instanceof PosNegLP) { PosNegLP lp = (PosNegLP) learningProblem; this.learningProblem = lp; @@ -257,6 +259,7 @@ this.minExecutionTimeInSeconds=minExecutionTimeInSeconds; this.guaranteeXgoodDescriptions = guaranteeXgoodDescriptions; + // logger.setLevel(Level.DEBUG); } @@ -424,7 +427,9 @@ show++; } } + logger.debug("size of candidate set: " + candidates.size()); + printBestSolutions(0); printStatistics(true); if(stop) @@ -774,9 +779,9 @@ // searchTree += bestNodeString + "\n"; logger.debug(bestNodeString); - logger.debug(startNode.getStats(nrOfPositiveExamples, nrOfNegativeExamples)); + logger.trace(startNode.getStats(nrOfPositiveExamples, nrOfNegativeExamples)); logger.debug(bestNodeStringKBSyntax); - if(bestNode.getCoveredNegatives().size()<=3)logger.debug("covered negs: "+bestNode.getCoveredNegatives()); + if(bestNode.getCoveredNegatives().size()<=5)logger.trace("covered negs: "+bestNode.getCoveredNegatives()); String expandedNodeString = "next expanded node: " + candidates.last().getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI); // searchTree += expandedNodeString + "\n"; logger.debug(expandedNodeString); @@ -1023,10 +1028,10 @@ public void printBestSolutions(int nrOfSolutions){ - + if(nrOfSolutions==0)nrOfSolutions=candidatesStable.size(); int i=0; for(ExampleBasedNode n : candidatesStable.descendingSet()) { - System.out.println(n.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); + logger.trace(n.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); if(i==nrOfSolutions) return ; i++; @@ -1060,12 +1065,7 @@ if(maxExecutionTimeInSeconds==0)return false; if(maxExecutionTimeShown)return true; long needed = System.currentTimeMillis()- this.runtime; - //millisec /100 - //seconds /1000 long maxMilliSeconds = maxExecutionTimeInSeconds *1000 ; - //System.out.println("max"+maxMilliSeconds); - //System.out.println(needed); - if(maxMilliSeconds<needed){ logger.info("Maximum time reached, stopping now..."); maxExecutionTimeShown=true; @@ -1080,14 +1080,8 @@ */ private boolean minExecutionTimeReached(){ if(minExecutionTimeShown)return true; - //if(minExecutionTimeInSeconds==0)return true; long needed = System.currentTimeMillis()- this.runtime; - //millisec /100 - //seconds /1000 long minMilliSeconds = minExecutionTimeInSeconds *1000 ; - //System.out.println("min"+minMilliSeconds); - //System.out.println(needed); - if(minMilliSeconds<needed){ logger.info("Minimum time reached, stopping when next solution is found"); minExecutionTimeShown=true; Modified: trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java 2008-04-22 18:11:28 UTC (rev 815) +++ trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java 2008-04-23 08:03:44 UTC (rev 816) @@ -12,6 +12,7 @@ import java.util.SortedSet; import java.util.TreeSet; +import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.LearningProblem; @@ -25,12 +26,12 @@ import org.dllearner.core.config.DoubleConfigOption; import org.dllearner.core.config.InvalidConfigOptionValueException; import org.dllearner.core.config.StringConfigOption; -import org.dllearner.core.owl.NamedClass; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Intersection; -import org.dllearner.core.owl.Union; +import org.dllearner.core.owl.NamedClass; import org.dllearner.core.owl.ObjectProperty; import org.dllearner.core.owl.Thing; +import org.dllearner.core.owl.Union; import org.dllearner.learningproblems.PosNegLP; import org.dllearner.learningproblems.PosOnlyDefinitionLP; import org.dllearner.refinementoperators.RhoDown; @@ -44,6 +45,8 @@ private static Logger logger = Logger .getLogger(LearningAlgorithm.class); + private String logLevel = CommonConfigOptions.logLevelDefault; + public enum Heuristic { LEXICOGRAPHIC, FLEXIBLE } // configuration options @@ -71,6 +74,15 @@ private boolean useNegation = true; private boolean useBooleanDatatypes = false; + //extended Options + private int maxExecutionTimeInSeconds = CommonConfigOptions.maxExecutionTimeInSecondsDefault; + private boolean maxExecutionTimeShown=false; + private int minExecutionTimeInSeconds = CommonConfigOptions.minExecutionTimeInSecondsDefault; + private boolean minExecutionTimeShown=false; + private int guaranteeXgoodDescriptions = CommonConfigOptions.guaranteeXgoodDescriptionsDefault; + private boolean guaranteeXgoodShown=false; + + private boolean quiet = false; private boolean stop = false; @@ -151,6 +163,7 @@ private int conceptTestsReasoner = 0; // Zeitvariablen + private long runtime; private long algorithmStartTime; private long propernessCalcTimeNs = 0; private long propernessCalcReasoningTimeNs = 0; @@ -217,6 +230,10 @@ options.add(CommonConfigOptions.useExistsConstructor()); options.add(CommonConfigOptions.useNegation()); options.add(CommonConfigOptions.useBooleanDatatypes()); + options.add(CommonConfigOptions.maxExecutionTimeInSeconds()); + options.add(CommonConfigOptions.minExecutionTimeInSeconds()); + options.add(CommonConfigOptions.guaranteeXgoodDescriptions()); + options.add(CommonConfigOptions.getLogLevel()); return options; } @@ -269,6 +286,14 @@ useNegation = (Boolean) entry.getValue(); } else if(name.equals("useBooleanDatatypes")) { useBooleanDatatypes = (Boolean) entry.getValue(); + }else if(name.equals("maxExecutionTimeInSeconds")) { + maxExecutionTimeInSeconds = (Integer) entry.getValue(); + }else if(name.equals("minExecutionTimeInSeconds")) { + minExecutionTimeInSeconds = (Integer) entry.getValue(); + }else if(name.equals("guaranteeXgoodDescriptions")) { + guaranteeXgoodDescriptions = (Integer) entry.getValue(); + } else if(name.equals("logLevel")) { + logLevel = ((String)entry.getValue()).toUpperCase(); } } @@ -278,6 +303,7 @@ */ @Override public void init() { + logger.setLevel(Level.toLevel(logLevel,Level.toLevel(CommonConfigOptions.logLevelDefault))); if(searchTreeFile == null) searchTreeFile = new File(defaultSearchTreeFile); @@ -351,7 +377,7 @@ @Override @SuppressWarnings("unchecked") public void start() { - + runtime=System.currentTimeMillis(); // Suche wird mit Top-Konzept gestartet Thing top = new Thing(); Node topNode = new Node(top); @@ -490,6 +516,11 @@ } + if(maxExecutionTimeReached()) { stop=true;} + solutionFound = (guaranteeXgoodDescriptions() ); + solutionFound = (minExecutionTimeReached()&& solutionFound); + + // Suchbaum in Datei schreiben // if(writeSearchTree) // Files.createFile(searchTreeFile, searchTree); @@ -1017,5 +1048,46 @@ public Node getStartNode() { return startNode; } + + private boolean guaranteeXgoodDescriptions(){ + if(guaranteeXgoodShown)return true; + if(solutions.size()>guaranteeXgoodDescriptions){ + logger.info("Minimum number of good descriptions reached, stopping now..."); + guaranteeXgoodShown=true; + return true;} + else return false; + + } + + + private boolean maxExecutionTimeReached(){ + if(maxExecutionTimeInSeconds==0)return false; + if(maxExecutionTimeShown)return true; + long needed = System.currentTimeMillis()- this.runtime; + long maxMilliSeconds = maxExecutionTimeInSeconds *1000 ; + if(maxMilliSeconds<needed){ + logger.info("Maximum time reached, stopping now..."); + maxExecutionTimeShown=true; + return true;} + else return false; + + } + + /** + * true if minExecutionTime reached + * @return true + */ + private boolean minExecutionTimeReached(){ + if(minExecutionTimeShown)return true; + long needed = System.currentTimeMillis()- this.runtime; + long minMilliSeconds = minExecutionTimeInSeconds *1000 ; + if(minMilliSeconds<needed){ + logger.info("Minimum time reached, stopping when next solution is found"); + minExecutionTimeShown=true; + return true;} + else return false; + + } + } Modified: trunk/src/dl-learner/org/dllearner/core/config/CommonConfigOptions.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/config/CommonConfigOptions.java 2008-04-22 18:11:28 UTC (rev 815) +++ trunk/src/dl-learner/org/dllearner/core/config/CommonConfigOptions.java 2008-04-23 08:03:44 UTC (rev 816) @@ -43,6 +43,7 @@ public static int maxExecutionTimeInSecondsDefault = 0; public static int minExecutionTimeInSecondsDefault = 0; public static int guaranteeXgoodDescriptionsDefault = 1; + public static String logLevelDefault = "DEBUG"; //public static double noisePercentageDefault = 0.0; @@ -119,5 +120,9 @@ public static IntegerConfigOption guaranteeXgoodDescriptions() { return new IntegerConfigOption("guaranteeXgoodDescriptions", "algorithm will run until X good (100%) concept descritpions are found",guaranteeXgoodDescriptionsDefault); - } + } + + public static StringConfigOption getLogLevel() { + return new StringConfigOption("logLevel", "determines the logLevel for this component, can be {TRACE, DEBUG, INFO}",logLevelDefault); + } } Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-04-22 18:11:28 UTC (rev 815) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-04-23 08:03:44 UTC (rev 816) @@ -11,7 +11,6 @@ import org.dllearner.kb.sparql.configuration.SparqlEndpoint; import org.dllearner.utilities.AutomaticExampleFinderSPARQL; import org.dllearner.utilities.ConfWriter; -import org.dllearner.utilities.LearnSparql; import org.dllearner.utilities.SimpleClock; public class SPARQLMassLearning { @@ -34,6 +33,11 @@ try { + //System.out.println(logger.setLevel(TRACE)); + System.out.println(Level.DEBUG.getClass()); + System.out.println(Level.toLevel("INFO")); + System.out.println(Level.INFO); + System.exit(0); SimpleClock sc=new SimpleClock(); SortedSet<String> concepts = new TreeSet<String>(); //concepts.add("\"http://dbpedia.org/class/yago/Person100007846\""); @@ -57,7 +61,7 @@ // new ConfWriter().writeSPARQL("aaa.conf", posExamples, negExamples, url, new TreeSet<String>()); - new LearnSparql().learn(posExamples, negExamples, "http://dbpedia.openlinksw.com:8890/sparql", new TreeSet<String>()); + //new LearnSparql().learn(posExamples, negExamples, "http://dbpedia.openlinksw.com:8890/sparql", new TreeSet<String>()); sc.printAndSet("Finished"); } catch (Exception e) { Modified: trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-04-22 18:11:28 UTC (rev 815) +++ trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-04-23 08:03:44 UTC (rev 816) @@ -72,6 +72,7 @@ cm.applyConfigEntry(la,"minExecutionTimeInSeconds",0); cm.applyConfigEntry(la,"maxExecutionTimeInSeconds",900); cm.applyConfigEntry(la,"guaranteeXgoodDescriptions",999999); + cm.applyConfigEntry(la,"logLevel","TRACE"); //cm.applyConfigEntry(la,"quiet",false); if(ignoredConcepts.size()>0) @@ -82,7 +83,7 @@ la.start(); //System.out.println("best"+la(20)); - ((ExampleBasedROLComponent)la).printBestSolutions(10000); + //((ExampleBasedROLComponent)la).printBestSolutions(10000); }catch (Exception e) {e.printStackTrace();} //System.out.println( la.getBestSolution());; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-04-23 12:42:58
|
Revision: 820 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=820&view=rev Author: kurzum Date: 2008-04-23 05:42:53 -0700 (Wed, 23 Apr 2008) Log Message: ----------- output changes, logfile is now created by default in "the_log.txt" Modified Paths: -------------- 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/cli/Start.java trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java trunk/src/dl-learner/org/dllearner/kb/sparql/datastructure/Node.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-23 09:28:15 UTC (rev 819) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-23 12:42:53 UTC (rev 820) @@ -255,8 +255,8 @@ this.useOverlyGeneralList = useOverlyGeneralList; this.useShortConceptConstruction = useShortConceptConstruction; this.baseURI = rs.getBaseURI(); - this.maxExecutionTimeInSeconds=maxExecutionTimeInSeconds; - this.minExecutionTimeInSeconds=minExecutionTimeInSeconds; + this.maxExecutionTimeInSeconds = maxExecutionTimeInSeconds; + this.minExecutionTimeInSeconds = minExecutionTimeInSeconds; this.guaranteeXgoodDescriptions = guaranteeXgoodDescriptions; @@ -1037,6 +1037,10 @@ return ; i++; } + for (int j = 0; j < solutions.size(); j++) { + Description d = solutions.get(j); + logger.trace(d.toString()); + } } Modified: trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java 2008-04-23 09:28:15 UTC (rev 819) +++ trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java 2008-04-23 12:42:53 UTC (rev 820) @@ -69,11 +69,16 @@ private boolean useShortConceptConstruction = true; private double horizontalExpansionFactor = 0.6; private boolean improveSubsumptionHierarchy = true; - private boolean useAllConstructor = true; - private boolean useExistsConstructor = true; - private boolean useNegation = true; + private boolean useAllConstructor = CommonConfigOptions.useAllConstructorDefault; + private boolean useExistsConstructor = CommonConfigOptions.useExistsConstructorDefault; + //this was added so you can switch algorithm without removing everything not applicable + private boolean useCardinalityRestrictions = CommonConfigOptions.useCardinalityRestrictionsDefault; + private boolean useNegation = CommonConfigOptions.useNegationDefault; + //TODO different standard options to CommonConfigOptions private boolean useBooleanDatatypes = false; + + //extended Options private int maxExecutionTimeInSeconds = CommonConfigOptions.maxExecutionTimeInSecondsDefault; private boolean maxExecutionTimeShown=false; @@ -228,7 +233,8 @@ options.add(CommonConfigOptions.ignoredRoles()); options.add(CommonConfigOptions.useAllConstructor()); options.add(CommonConfigOptions.useExistsConstructor()); - options.add(CommonConfigOptions.useNegation()); + options.add(CommonConfigOptions.useNegation()); + options.add(CommonConfigOptions.useCardinalityRestrictions()); options.add(CommonConfigOptions.useBooleanDatatypes()); options.add(CommonConfigOptions.maxExecutionTimeInSeconds()); options.add(CommonConfigOptions.minExecutionTimeInSeconds()); @@ -282,6 +288,8 @@ useAllConstructor = (Boolean) entry.getValue(); } else if(name.equals("useExistsConstructor")) { useExistsConstructor = (Boolean) entry.getValue(); + }else if(name.equals("useCardinalityRestrictions")) { + useCardinalityRestrictions = (Boolean) entry.getValue(); } else if(name.equals("useNegation")) { useNegation = (Boolean) entry.getValue(); } else if(name.equals("useBooleanDatatypes")) { @@ -304,6 +312,7 @@ @Override public void init() { logger.setLevel(Level.toLevel(logLevel,Level.toLevel(CommonConfigOptions.logLevelDefault))); + if(searchTreeFile == null) searchTreeFile = new File(defaultSearchTreeFile); @@ -405,6 +414,11 @@ algorithmStartTime = System.nanoTime(); + //second set of lines below, sometimes doesn't go into while, see above + if(maxExecutionTimeReached()) { stop=true;} + solutionFound = (guaranteeXgoodDescriptions() ); + solutionFound = (minExecutionTimeReached()&& solutionFound); + // TODO: effizienter Traversal der Subsumption-Hierarchie // TODO: Äquivalenzen nutzen // TODO: Gibt es auch eine andere Abbruchbedingung? Es könnte sein, dass irgendwann keine @@ -506,7 +520,7 @@ Files.createFile(searchTreeFile, treeString); else Files.appendFile(searchTreeFile, treeString); - } + }//write search tree // Anzahl Schleifendurchläufe loop++; @@ -514,13 +528,15 @@ if(!quiet) logger.debug("--- loop " + loop + " finished ---"); - } + + solutionFound = (guaranteeXgoodDescriptions() ); + solutionFound = (minExecutionTimeReached()&& solutionFound); + if(maxExecutionTimeReached()) {solutionFound=true; stop=true;} + }//end while - if(maxExecutionTimeReached()) { stop=true;} - solutionFound = (guaranteeXgoodDescriptions() ); - solutionFound = (minExecutionTimeReached()&& solutionFound); + // Suchbaum in Datei schreiben // if(writeSearchTree) // Files.createFile(searchTreeFile, searchTree); @@ -542,18 +558,23 @@ if(solutionFound) { logger.info("\nsolutions:"); + int show=1; for(Description c : solutions) { - logger.info(" " + c.toString(baseURI,null) + " (length " + c.getLength() +", depth " + c.getDepth() + ")"); + logger.info(show+": " +c.toString(baseURI,null) + " (length " + c.getLength() +", depth " + c.getDepth() + ")"); //TODO remove this line maybe // watch for String.replace Quick hack - logger.info(" MANCHESTER: " + + logger.info(" MANCHESTER: " + c.toManchesterSyntaxString(baseURI, new HashMap<String,String>()). replace("\"", "")); - logger.info(" KBSyntax: " + c.toKBSyntaxString()); + logger.info(" KBSyntax: " + c.toKBSyntaxString()); + if(show>=5){break;} + show++; } } logger.info(" horizontal expansion: " + minimumHorizontalExpansion + " to " + maximumHorizontalExpansion); logger.info(" size of candidate set: " + candidates.size()); + //logger.trace("test"); + //logger.trace(solutions.size()); printBestSolutions(0); printStatistics(true); @@ -1018,13 +1039,13 @@ } public void printBestSolutions(int nrOfSolutions){ - if(!logLevel.equalsIgnoreCase("TRACE"))return; + if(!logLevel.equalsIgnoreCase("TRACE")){return;} if(nrOfSolutions==0)nrOfSolutions=solutions.size(); int i=0; - for(;i==nrOfSolutions; i++) { + for(;i<nrOfSolutions; i++) { Description d = solutions.get(i); logger.trace(" " + d.toString(baseURI,null) + " (length " + d.getLength() + " " + - ""+getSolutionScore(d) ); + "" ); } } Modified: trunk/src/dl-learner/org/dllearner/cli/Start.java =================================================================== --- trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-04-23 09:28:15 UTC (rev 819) +++ trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-04-23 12:42:53 UTC (rev 820) @@ -35,6 +35,7 @@ import java.util.TreeSet; 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; @@ -117,8 +118,13 @@ // its messages to the console) SimpleLayout layout = new SimpleLayout(); ConsoleAppender consoleAppender = new ConsoleAppender(layout); - logger.removeAllAppenders(); + FileAppender fileAppender =null; ; + try{ + fileAppender = new FileAppender(layout,"the_log.txt",false); + }catch (Exception e) {e.printStackTrace();} + logger.removeAllAppenders(); logger.addAppender(consoleAppender); + logger.addAppender(fileAppender); logger.setLevel(Level.DEBUG); Start start = null; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java 2008-04-23 09:28:15 UTC (rev 819) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java 2008-04-23 12:42:53 UTC (rev 820) @@ -128,10 +128,10 @@ configuration); if (this.configuration.isCloseAfterRecursion()) { while (instances.size() > 0) { - logger.info("Getting classes for remaining instances: " + logger.trace("Getting classes for remaining instances: " + instances.size()); Node next = instances.remove(0); - logger.info("Getting classes for: " + next); + logger.trace("Getting classes for: " + next); classes.addAll(next.expand(tsqc, manipulator)); if (classes.size() >= manipulator.breakSuperClassRetrievalAfter) { break; @@ -141,14 +141,14 @@ Vector<Node> tmp = new Vector<Node>(); int i = 0; while (classes.size() > 0) { - logger.info("Remaining classes: " + classes.size()); + logger.trace("Remaining classes: " + classes.size()); // Iterator<Node> it=classes.iterator(); // Node next =(Node) it.next(); // classes.remove(next); Node next = classes.remove(0); if (!hadAlready.contains(next.getURI().toString())) { - logger.info("Expanding: " + next); + logger.trace("Getting SuperClass for: " + next); // System.out.println(hadAlready.size()); hadAlready.add(next.getURI().toString()); tmp = next.expand(typedSparqlQuery, manipulator); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/datastructure/Node.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/datastructure/Node.java 2008-04-23 09:28:15 UTC (rev 819) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/datastructure/Node.java 2008-04-23 12:42:53 UTC (rev 820) @@ -78,7 +78,7 @@ @Override public String toString() { - return "Node: " + uri + ":" + this.getClass(); + return "Node: " + uri + ":" + this.getClass().getSimpleName(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-04-24 08:43:39
|
Revision: 821 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=821&view=rev Author: kurzum Date: 2008-04-24 01:43:22 -0700 (Thu, 24 Apr 2008) Log Message: ----------- small changes Modified Paths: -------------- 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/kb/sparql/SparqlQuery.java trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-23 12:42:53 UTC (rev 820) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-24 08:43:22 UTC (rev 821) @@ -394,10 +394,8 @@ Files.appendFile(searchTreeFile, treeString); } + handleStoppingConditions(); - if(maxExecutionTimeReached()) { stop=true;} - solutionFound = (guaranteeXgoodDescriptions() ); - solutionFound = (minExecutionTimeReached()&& solutionFound); //logger.info(minExecutionTimeReached()+"aaaaaaa "+solutions.size()+"::"+guaranteeXgoodDescriptions); //logger.info(solutionFound+"aaaaaaa "+stop); @@ -1055,10 +1053,19 @@ return startNode; } + private void handleStoppingConditions(){ + solutionFound = (guaranteeXgoodDescriptions() ); + solutionFound = (minExecutionTimeReached()&& solutionFound); + if(maxExecutionTimeReached()) { + stop(); + if(solutions.size()>0)solutionFound = true; + } + } + private boolean guaranteeXgoodDescriptions(){ if(guaranteeXgoodShown)return true; if(solutions.size()>guaranteeXgoodDescriptions){ - logger.info("Minimum number of good descriptions reached, stopping now..."); + logger.info("Minimum number ("+guaranteeXgoodDescriptions+") of good descriptions reached, stopping now..."); guaranteeXgoodShown=true; return true;} else return false; @@ -1072,7 +1079,7 @@ long needed = System.currentTimeMillis()- this.runtime; long maxMilliSeconds = maxExecutionTimeInSeconds *1000 ; if(maxMilliSeconds<needed){ - logger.info("Maximum time reached, stopping now..."); + logger.info("Maximum time ("+maxExecutionTimeInSeconds+" seconds) reached, stopping now..."); maxExecutionTimeShown=true; return true;} else return false; @@ -1088,7 +1095,7 @@ long needed = System.currentTimeMillis()- this.runtime; long minMilliSeconds = minExecutionTimeInSeconds *1000 ; if(minMilliSeconds<needed){ - logger.info("Minimum time reached, stopping when next solution is found"); + logger.info("Minimum time ("+minExecutionTimeInSeconds+" seconds) reached, stopping when next solution is found"); minExecutionTimeShown=true; return true;} else return false; Modified: trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java 2008-04-23 12:42:53 UTC (rev 820) +++ trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java 2008-04-24 08:43:22 UTC (rev 821) @@ -72,6 +72,7 @@ private boolean useAllConstructor = CommonConfigOptions.useAllConstructorDefault; private boolean useExistsConstructor = CommonConfigOptions.useExistsConstructorDefault; //this was added so you can switch algorithm without removing everything not applicable + @SuppressWarnings("unused") private boolean useCardinalityRestrictions = CommonConfigOptions.useCardinalityRestrictionsDefault; private boolean useNegation = CommonConfigOptions.useNegationDefault; //TODO different standard options to CommonConfigOptions @@ -81,11 +82,11 @@ //extended Options private int maxExecutionTimeInSeconds = CommonConfigOptions.maxExecutionTimeInSecondsDefault; - private boolean maxExecutionTimeShown=false; + private boolean maxExecutionTimeShown = false; private int minExecutionTimeInSeconds = CommonConfigOptions.minExecutionTimeInSecondsDefault; - private boolean minExecutionTimeShown=false; + private boolean minExecutionTimeShown = false; private int guaranteeXgoodDescriptions = CommonConfigOptions.guaranteeXgoodDescriptionsDefault; - private boolean guaranteeXgoodShown=false; + private boolean guaranteeXgoodShown = false; private boolean quiet = false; @@ -415,9 +416,7 @@ algorithmStartTime = System.nanoTime(); //second set of lines below, sometimes doesn't go into while, see above - if(maxExecutionTimeReached()) { stop=true;} - solutionFound = (guaranteeXgoodDescriptions() ); - solutionFound = (minExecutionTimeReached()&& solutionFound); + handleStoppingConditions(); // TODO: effizienter Traversal der Subsumption-Hierarchie // TODO: Äquivalenzen nutzen @@ -528,10 +527,8 @@ if(!quiet) logger.debug("--- loop " + loop + " finished ---"); + handleStoppingConditions(); - solutionFound = (guaranteeXgoodDescriptions() ); - solutionFound = (minExecutionTimeReached()&& solutionFound); - if(maxExecutionTimeReached()) {solutionFound=true; stop=true;} }//end while @@ -1091,11 +1088,19 @@ return startNode; } + private void handleStoppingConditions(){ + solutionFound = (guaranteeXgoodDescriptions() ); + solutionFound = (minExecutionTimeReached()&& solutionFound); + if(maxExecutionTimeReached()) { stop(); + if(solutions.size()>0)solutionFound = true; + } + } + private boolean guaranteeXgoodDescriptions(){ if(guaranteeXgoodShown)return true; if(solutions.size()>guaranteeXgoodDescriptions){ - logger.info("Minimum number of good descriptions reached, stopping now..."); + logger.info("Minimum number ("+guaranteeXgoodDescriptions+") of good descriptions reached, stopping now..."); guaranteeXgoodShown=true; return true;} else return false; @@ -1109,13 +1114,15 @@ long needed = System.currentTimeMillis()- this.runtime; long maxMilliSeconds = maxExecutionTimeInSeconds *1000 ; if(maxMilliSeconds<needed){ - logger.info("Maximum time reached, stopping now..."); + logger.info("Maximum time ("+maxExecutionTimeInSeconds+" seconds) reached, stopping now..."); maxExecutionTimeShown=true; return true;} else return false; } + + /** * true if minExecutionTime reached * @return true @@ -1125,7 +1132,7 @@ long needed = System.currentTimeMillis()- this.runtime; long minMilliSeconds = minExecutionTimeInSeconds *1000 ; if(minMilliSeconds<needed){ - logger.info("Minimum time reached, stopping when next solution is found"); + logger.info("Minimum time ("+minExecutionTimeInSeconds+" seconds) reached, stopping when next solution is found"); minExecutionTimeShown=true; return true;} else return false; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-04-23 12:42:53 UTC (rev 820) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-04-24 08:43:22 UTC (rev 821) @@ -79,12 +79,14 @@ for (String ngu : endpoint.getNamedGraphURIs()) { queryExecution.addNamedGraph(ngu); } - logger.info("query SPARQL server"); + try{ //TODO remove after overnext Jena release HttpQuery.urlLimit = 3*1024 ; rs = queryExecution.execSelect(); + 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()); Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-04-23 12:42:53 UTC (rev 820) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-04-24 08:43:22 UTC (rev 821) @@ -1,5 +1,6 @@ package org.dllearner.scripts; +import java.net.URLEncoder; import java.util.SortedSet; import java.util.TreeSet; @@ -27,21 +28,22 @@ //vars boolean useRelated = true; boolean useSuperClasses = true; - int poslimit = 300; - int neglimit = 600; + int poslimit = 10; + int neglimit = 10; try { //System.out.println(logger.setLevel(TRACE)); - System.out.println(Level.DEBUG.getClass()); + /*System.out.println(Level.DEBUG.getClass()); System.out.println(Level.toLevel("INFO")); System.out.println(Level.INFO); - System.exit(0); + System.exit(0);*/ SimpleClock sc=new SimpleClock(); SortedSet<String> concepts = new TreeSet<String>(); //concepts.add("\"http://dbpedia.org/class/yago/Person100007846\""); - concepts.add("\"http://dbpedia.org/class/yago/FieldMarshal110086821\""); + //concepts.add("\"http://dbpedia.org/class/yago/FieldMarshal110086821\""); + concepts.add("http://dbpedia.org/resource/Category:Prime_Ministers_of_the_United_Kingdom"); SortedSet<String> posExamples = new TreeSet<String>(); SortedSet<String> negExamples = new TreeSet<String>(); String url = "http://dbpedia.openlinksw.com:8890/sparql"; @@ -57,10 +59,15 @@ System.out.println(posExamples); System.out.println(negExamples); //System.exit(0); + String concept = concepts.first().replace("http://dbpedia.org/resource/Category:", ""); + concept = concept.replace("http://dbpedia.org/class/yago/", ""); + String confname = URLEncoder.encode(concept, "UTF-8")+".conf"; + // + ConfWriter cf=new ConfWriter(); + cf.addToStats("relearned concept: "+concepts.first()); - - // - new ConfWriter().writeSPARQL("aaa.conf", posExamples, negExamples, url, new TreeSet<String>()); + //"relearned concept: "; + cf.writeSPARQL(confname, posExamples, negExamples, url, new TreeSet<String>()); //new LearnSparql().learn(posExamples, negExamples, "http://dbpedia.openlinksw.com:8890/sparql", new TreeSet<String>()); sc.printAndSet("Finished"); Modified: trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java 2008-04-23 12:42:53 UTC (rev 820) +++ trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java 2008-04-24 08:43:22 UTC (rev 821) @@ -54,9 +54,13 @@ } private void makePositiveExamplesFromConcept(String 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"); - + } } @@ -154,7 +158,30 @@ return rs; } + + public ResultSet querySKOSConcept(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 SortedSet<String> getPosExamples() { return posExamples; } Modified: trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java 2008-04-23 12:42:53 UTC (rev 820) +++ trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java 2008-04-24 08:43:22 UTC (rev 821) @@ -10,130 +10,136 @@ public class ConfWriter { - - public String workingDir="examples/stest/"; - - - public void writeROLLearnerOWLFileInd(String filename,SortedSet<Individual> pos,SortedSet<Individual> neg, - String owlFile, SortedSet<String> ignoredConcepts){ - - writeROLLearnerOWLFile( filename,toString( pos),toString( neg), - owlFile, ignoredConcepts); + StringBuffer stats = new StringBuffer("/**STATS:\n"); + + public String workingDir = "examples/stest/"; + + public void writeROLLearnerOWLFileInd(String filename, SortedSet<Individual> pos, + SortedSet<Individual> neg, String owlFile, SortedSet<String> ignoredConcepts) { + + writeROLLearnerOWLFile(filename, toString(pos), toString(neg), owlFile, ignoredConcepts); } - - public void writeROLLearnerOWLFile(String filename,SortedSet<String> pos,SortedSet<String> neg, - String owlFile, SortedSet<String> ignoredConcepts){ - + + public void writeROLLearnerOWLFile(String filename, SortedSet<String> pos, + SortedSet<String> neg, String owlFile, SortedSet<String> ignoredConcepts) { + String prefix = "refexamples"; StringBuffer buf = new StringBuffer(); buf.append("import(\"" + owlFile + "\");\n\n"); - - buf.append(getIgnoredConcepts(ignoredConcepts,prefix)); - + + buf.append(getIgnoredConcepts(ignoredConcepts, prefix)); + buf.append(getStandard(prefix)); - - buf.append( getPosAndNeg( pos, neg)); - - - writeToFile(filename, buf.toString()); - + + buf.append(getPosAndNeg(pos, neg)); + + stats.append(ignoredConcepts + "\n"); + stats.append("No of positive Examples: " + pos.size() + "\n"); + stats.append("No of negative Examples: " + neg.size() + "\n"); + stats.append("\n**/\n\n"); + + writeToFile(filename, stats.toString() + buf.toString()); + } - - public void writeSPARQL(String filename,SortedSet<String> pos,SortedSet<String> neg, - String uri, SortedSet<String> ignoredConcepts){ - - String prefixAlgortihm = "refexamples"; - String prefixSparql = "sparql"; - - String standardSettings="sparql.recursionDepth = 1;\n" + - "sparql.predefinedFilter = 1;\n" + - "sparql.predefinedEndpoint = 1;\n"; - //"sparql.format = \"KB\";\n\n"; - - StringBuffer buf = new StringBuffer(); - buf.append("import(\"" + uri + "\",\"SPARQL\");\n\n"); - - buf.append(standardSettings); - - buf.append(getIgnoredConcepts(ignoredConcepts,prefixAlgortihm)); - - buf.append(getStandard(prefixAlgortihm)); - - buf.append(sparqlInstances(pos, neg, prefixSparql)); - - buf.append( getPosAndNeg( pos, neg)); - - - writeToFile(filename, buf.toString()); - -} - - public String sparqlInstances(SortedSet<String> pos,SortedSet<String> neg,String prefix){ + + public void writeSPARQL(String filename, SortedSet<String> pos, SortedSet<String> neg, + String uri, SortedSet<String> ignoredConcepts) { + + String prefixAlgortihm = "refexamples"; + String prefixSparql = "sparql"; + + String standardSettings = + "sparql.recursionDepth = 1;\n" + + "sparql.predefinedFilter = 1;\n" + + "sparql.predefinedEndpoint = 1;\n" + + "refexamples.minExecutionTimeInSeconds = 10;\n" + + "refexamples.maxExecutionTimeInSeconds = 10;\n" + + "refexamples.logLevel=\"TRACE\";\n" ; + + + // "sparql.format = \"KB\";\n\n"; + + StringBuffer buf = new StringBuffer(); + buf.append("import(\"" + uri + "\",\"SPARQL\");\n\n"); + + buf.append(standardSettings); + buf.append(getIgnoredConcepts(ignoredConcepts, prefixAlgortihm)); + buf.append(getStandard(prefixAlgortihm)); + buf.append(sparqlInstances(pos, neg, prefixSparql)); + buf.append(getPosAndNeg(pos, neg)); + + stats.append(ignoredConcepts + "\n"); + stats.append("No of positive Examples: " + pos.size() + "\n"); + stats.append("No of negative Examples: " + neg.size() + "\n"); + stats.append("\n**/\n\n"); + + writeToFile(filename, stats.toString() + buf.toString()); + + } + + public String sparqlInstances(SortedSet<String> pos, SortedSet<String> neg, String prefix) { SortedSet<String> ret = new TreeSet<String>(); ret.addAll(pos); ret.addAll(neg); - + return getStringSet(ret, prefix, "instances"); - + } - - public String getPosAndNeg(SortedSet<String> pos,SortedSet<String> neg){ - StringBuffer buf = new StringBuffer(); - buf.append("\n\n"); - for (String individuals : pos) { - buf.append("+\"" + individuals + "\"\n"); - - } - buf.append("\n\n"); - for (String individuals : neg) { - - buf.append("-\"" + individuals + "\"\n"); - } - - return buf.toString(); + public String getPosAndNeg(SortedSet<String> pos, SortedSet<String> neg) { + StringBuffer buf = new StringBuffer(); + buf.append("\n\n"); + for (String individuals : pos) { + buf.append("+\"" + individuals + "\"\n"); + + } + buf.append("\n\n"); + for (String individuals : neg) { + + buf.append("-\"" + individuals + "\"\n"); + } + + return buf.toString(); } - - public String getIgnoredConcepts(SortedSet<String> ignoredConcepts,String prefix){ - return getStringSet(ignoredConcepts,prefix, "ignoredConcepts"); + public String getIgnoredConcepts(SortedSet<String> ignoredConcepts, String prefix) { + + return getStringSet(ignoredConcepts, prefix, "ignoredConcepts"); } - - public String getStringSet(SortedSet<String> set,String prefix, String type){ - if(set.size()==0)return "\n"; - String ret = prefix+"."+type+"={\n"; - int x=0; + + public String getStringSet(SortedSet<String> set, String prefix, String type) { + if (set.size() == 0) + return "\n"; + String ret = prefix + "." + type + "={\n"; + int x = 0; for (String string : set) { - if(x>0)ret+=","; - ret+="\""+string+"\"\n"; + if (x > 0) + ret += ","; + ret += "\"" + string + "\"\n"; x++; } - ret+="};\n"; + ret += "};\n"; return ret; } - - public String getStandard(String prefix){ - String ret = - "algorithm = "+prefix+";\n"+ - "reasoner=fastInstanceChecker;\n\n"+ - - prefix+".useAllConstructor = false;\n"+ - prefix+".useExistsConstructor = true;\n"+ - prefix+".useCardinalityRestrictions = false;\n"+ - prefix+".useNegation = false;\n"; - + + public String getStandard(String prefix) { + String ret = "algorithm = " + prefix + ";\n" + "reasoner=fastInstanceChecker;\n\n" + + + prefix + ".useAllConstructor = false;\n" + prefix + ".useExistsConstructor = true;\n" + + prefix + ".useCardinalityRestrictions = false;\n" + prefix + + ".useNegation = false;\n"; + return ret; - + } - - - protected void writeToFile(String filename, String content) { + + protected void writeToFile(String filename, String content) { // create the file we want to use - File file = new File(workingDir+filename); + File file = new File(workingDir + filename); try { file.createNewFile(); - FileOutputStream fos = new FileOutputStream(workingDir+filename, false); + FileOutputStream fos = new FileOutputStream(workingDir + filename, false); // ObjectOutputStream o = new ObjectOutputStream(fos); fos.write(content.getBytes()); fos.flush(); @@ -142,14 +148,17 @@ e.printStackTrace(); } } - - protected SortedSet<String> toString(SortedSet<Individual> set ){ + + protected SortedSet<String> toString(SortedSet<Individual> set) { SortedSet<String> ret = new TreeSet<String>(); for (Individual ind : set) { ret.add(ind.toString()); } return ret; } - - + + public void addToStats(String add) { + stats.append(add); + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-04-25 09:28:13
|
Revision: 823 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=823&view=rev Author: kurzum Date: 2008-04-25 02:28:05 -0700 (Fri, 25 Apr 2008) Log Message: ----------- some changes mostly options and output 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/ExtractionAlgorithm.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/kb/sparql/SparqlQueryDescriptionConvertVisitor.java trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQueryClasses.java trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlQueryType.java trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java trunk/src/dl-learner/org/dllearner/utilities/JenaResultSetConvenience.java trunk/src/dl-learner/org/dllearner/utilities/SimpleClock.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-25 09:28:05 UTC (rev 823) @@ -777,7 +777,7 @@ // searchTree += bestNodeString + "\n"; logger.debug(bestNodeString); - logger.trace(startNode.getStats(nrOfPositiveExamples, nrOfNegativeExamples)); + logger.trace(bestNode.getStats(nrOfPositiveExamples, nrOfNegativeExamples)); logger.debug(bestNodeStringKBSyntax); if(bestNode.getCoveredNegatives().size()<=5)logger.trace("covered negs: "+bestNode.getCoveredNegatives()); String expandedNodeString = "next expanded node: " + candidates.last().getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI); @@ -1035,10 +1035,10 @@ return ; i++; } - for (int j = 0; j < solutions.size(); j++) { + /*for (int j = 0; j < solutions.size(); j++) { Description d = solutions.get(j); logger.trace(d.toString()); - } + }*/ } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-04-25 09:28:05 UTC (rev 823) @@ -220,6 +220,7 @@ public String executeSparqlQuery(SparqlQuery query) { String result = getCacheEntry(query.getQueryString()); if (result != null) { + logger.trace("got from cache"); return result; } else { query.send(); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java 2008-04-25 09:28:05 UTC (rev 823) @@ -106,10 +106,11 @@ } HashSet<String> hadAlready = new HashSet<String>(); - logger.info("Get all superclasses"); + //p(configuration.toString()); // gets All Class Nodes and expands them further if (this.configuration.isGetAllSuperClasses()) { + logger.info("Get all superclasses"); // Set<Node> classes = new TreeSet<Node>(); Vector<Node> classes = new Vector<Node>(); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-04-25 09:28:05 UTC (rev 823) @@ -60,14 +60,17 @@ */ public class SparqlKnowledgeSource extends KnowledgeSource { + //DEFAULTS + static int recursionDepthDefault = 1; + // ConfigOptions public URL url; // String host; private Set<String> instances = new HashSet<String>();; private URL dumpFile; - private int recursionDepth = 1; - private int predefinedFilter = 0; - private int predefinedEndpoint = 0; + private int recursionDepth = recursionDepthDefault; + private String predefinedFilter = null; + private String predefinedEndpoint = null; private Set<String> predList = new HashSet<String>(); private Set<String> objList = new HashSet<String>(); // private Set<String> classList; @@ -123,11 +126,11 @@ .add(new StringSetConfigOption("instances", "relevant instances e.g. positive and negative examples in a learning problem")); options.add(new IntegerConfigOption("recursionDepth", - "recursion depth of KB fragment selection", 2)); - options.add(new IntegerConfigOption("predefinedFilter", - "the mode of the SPARQL Filter")); - options.add(new IntegerConfigOption("predefinedEndpoint", - "the mode of the SPARQL Filter")); + "recursion depth of KB fragment selection", recursionDepthDefault)); + options.add(new StringConfigOption("predefinedFilter", + "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 StringSetConfigOption("predList", "list of all ignored roles")); @@ -207,9 +210,9 @@ // } else if (option.equals("classList")) { // classList = (Set<String>) entry.getValue(); } else if (option.equals("predefinedEndpoint")) { - predefinedEndpoint = (Integer) entry.getValue(); + predefinedEndpoint = ((String) entry.getValue()).toUpperCase(); } else if (option.equals("predefinedFilter")) { - predefinedFilter = (Integer) entry.getValue(); + predefinedFilter = ((String) entry.getValue()).toUpperCase(); } else if (option.equals("format")) { format = (String) entry.getValue(); } else if (option.equals("dumpToFile")) { @@ -285,8 +288,9 @@ breakSuperClassRetrievalAfter, replacePredicate, replaceObject); // get Options for endpoints - if (predefinedEndpoint >= 1) { - endpoint = SparqlEndpoint.getEndpointByNumber(predefinedEndpoint); + if (predefinedEndpoint != null) { + //endpoint = SparqlEndpoint.getEndpointByNumber(predefinedEndpoint); + endpoint = SparqlEndpoint.getEndpointByName(predefinedEndpoint); } else { // TODO this is not optimal, because not all options are used // like default-graph uri @@ -295,9 +299,9 @@ // get Options for Filters - if (predefinedFilter >= 1) { + if (predefinedFilter != null) { sparqlQueryType = SparqlQueryType - .getFilterByNumber(predefinedFilter); + .getFilterByName(predefinedFilter); } else { sparqlQueryType = new SparqlQueryType("forbid", objList, predList, Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-04-25 09:28:05 UTC (rev 823) @@ -43,6 +43,7 @@ private static Logger logger = Logger.getLogger(SparqlKnowledgeSource.class); + public String extraDebugInfo = ""; private boolean isRunning = false; private String queryString; private QueryEngineHTTP queryExecution; @@ -65,6 +66,7 @@ * Sends a SPARQL query using the Jena library. */ public ResultSet send() { + isRunning = true; ResultSet rs=null; logger.trace(queryString); @@ -84,7 +86,8 @@ //TODO remove after overnext Jena release HttpQuery.urlLimit = 3*1024 ; rs = queryExecution.execSelect(); - logger.debug("query SPARQL server, retrieved: "+rs.getResultVars()); + + logger.debug("query SPARQL server ["+extraDebugInfo+"], retrieved: "+rs.getResultVars()); json=SparqlQuery.getAsJSON(rs); logger.trace(rs.getResultVars().toString()); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-04-25 09:28:05 UTC (rev 823) @@ -38,6 +38,10 @@ * */ public class SparqlQueryDescriptionConvertVisitor implements DescriptionVisitor{ + + //private SparqlEndpoint se = null; + //private boolean RDFSReasoning = false; + private static Logger logger = Logger.getLogger(ComponentManager.class); @@ -53,6 +57,13 @@ stack.push("subject"); } + /*public SparqlQueryDescriptionConvertVisitor(SparqlEndpoint se, boolean RDFSReasoning) + { + stack.push("subject"); + this.se = se; + this.RDFSReasoning = RDFSReasoning; + }*/ + public String getSparqlQuery() { query="SELECT ?subject\nWHERE {"+query; @@ -69,6 +80,15 @@ return query; } + public static String getSparqlSubclassQuery(String description) + { String ret = "SELECT ?subject \n"; + ret+= "WHERE {\n"; + ret+=" ?subject <http://www.w3.org/2000/01/rdf-schema#subClassOf> <"+description+"> \n"; + ret+="}\n"; + + return ret; + } + public static String getSparqlQuery(String description) throws ParseException { Description d = KBParser.parseConcept(description); @@ -85,6 +105,22 @@ return visitor.getSparqlQuery(limit); } + /** + * includes subclasses, costly function, because subclasses habe to be recieved first. + * @param description + * @param limit + * @param se + * @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(); @@ -235,9 +271,12 @@ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.NamedClass) */ public void visit(NamedClass description) { + logger.trace("NamedClass"); query+="?"+stack.peek()+" a <"+description.getName()+">"; } + + /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.algorithms.gp.ADC) Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java 2008-04-25 09:28:05 UTC (rev 823) @@ -87,6 +87,7 @@ // .getSparqlEndpoint(), cache, uri.toString(), sparqlQueryString); SparqlQuery query = new SparqlQuery(sparqlQueryString, configuration.getSparqlEndpoint()); + 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/TypedSparqlQueryClasses.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQueryClasses.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQueryClasses.java 2008-04-25 09:28:05 UTC (rev 823) @@ -64,6 +64,7 @@ + "}"; SparqlQuery query = new SparqlQuery(sparqlQueryString, configuration.getSparqlEndpoint()); + 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/configuration/SparqlEndpoint.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java 2008-04-25 09:28:05 UTC (rev 823) @@ -61,7 +61,7 @@ return namedGraphURIs; } - public static SparqlEndpoint getEndpointByNumber(int i) { + /*public static SparqlEndpoint getEndpointByNumber(int i) { switch (i) { case 0:break; @@ -80,6 +80,25 @@ return worldFactBook(); } return null; + }*/ + + public static SparqlEndpoint getEndpointByName(String name) { + + + + if (name.equals("DBPEDIA")) + return dbpediaEndpoint(); + if (name.equals("LOCALJOSECKI")) + return localJoseki(); + if (name.equals("GOVTRACK")) + return govTrack(); + if (name.equals("REVYU")) + return revyu(); + if (name.equals("MYOPENLINK")) + return myopenlink(); + if (name.equals("FACTBOOK")) + return worldFactBook(); + return null; } public static SparqlEndpoint dbpediaEndpoint() { Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlQueryType.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlQueryType.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlQueryType.java 2008-04-25 09:28:05 UTC (rev 823) @@ -65,22 +65,20 @@ //System.out.println("added filter: "+filter); } - public static SparqlQueryType getFilterByNumber(int i) { - - switch (i) { - case 0:break; - //should not be filled - case 1: + public static SparqlQueryType getFilterByName(String name) { + + + if (name.equals("YAGO")) return YagoFilter(); - case 2: + if (name.equals("SKOS")) return SKOS(); - case 3: + if (name.equals("YAGOSKOS")) return YAGOSKOS(); - case 4: + if (name.equals("YAGOSPECIALHIERARCHY")) return YagoSpecialHierarchy(); - case 5: + if (name.equals("TEST")) return test(); - } + return null; } Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-04-25 09:28:05 UTC (rev 823) @@ -9,6 +9,8 @@ import org.apache.log4j.Logger; import org.apache.log4j.SimpleLayout; import org.dllearner.kb.sparql.Cache; +import org.dllearner.kb.sparql.SparqlKnowledgeSource; +import org.dllearner.kb.sparql.SparqlQuery; import org.dllearner.kb.sparql.configuration.SparqlEndpoint; import org.dllearner.utilities.AutomaticExampleFinderSPARQL; import org.dllearner.utilities.ConfWriter; @@ -26,32 +28,47 @@ init(); //vars - boolean useRelated = true; - boolean useSuperClasses = true; - int poslimit = 10; - int neglimit = 10; + boolean useRelated = false; + boolean useSuperClasses = false; + boolean useParallelClasses = true; + int poslimit = 15; + int neglimit = 200; + try { - - //System.out.println(logger.setLevel(TRACE)); + //logger.setLevel(Level.TRACE); + Logger.getLogger(SparqlKnowledgeSource.class).setLevel(Level.TRACE); + System.out.println(Logger.getLogger(SparqlQuery.class).getLevel()); + /*System.out.println(Level.DEBUG.getClass()); System.out.println(Level.toLevel("INFO")); - System.out.println(Level.INFO); - System.exit(0);*/ + System.out.println(Level.INFO);*/ + //System.exit(0); SimpleClock sc=new SimpleClock(); + //concepts.add("(EXISTS \"monarch\".TOP AND EXISTS \"predecessor\".(\"Knight\" OR \"Secretary\"))"); + SortedSet<String> concepts = new TreeSet<String>(); + //concepts.add("(\"http://dbpedia.org/class/yago/HeadOfState110164747\" AND (\"http://dbpedia.org/class/yago/Negotiator110351874\" AND \"http://dbpedia.org/class/yago/Representative110522035\"))"); //concepts.add("\"http://dbpedia.org/class/yago/Person100007846\""); - //concepts.add("\"http://dbpedia.org/class/yago/FieldMarshal110086821\""); - concepts.add("http://dbpedia.org/resource/Category:Prime_Ministers_of_the_United_Kingdom"); + concepts.add("\"http://dbpedia.org/class/yago/FieldMarshal110086821\""); + //concepts.add("http://dbpedia.org/resource/Category:Prime_Ministers_of_the_United_Kingdom"); + //concepts.add("http://dbpedia.org/resource/Category:Grammy_Award_winners"); + SortedSet<String> posExamples = new TreeSet<String>(); SortedSet<String> negExamples = new TreeSet<String>(); String url = "http://dbpedia.openlinksw.com:8890/sparql"; //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); + AutomaticExampleFinderSPARQL ae= new AutomaticExampleFinderSPARQL( se); + //System.out.println(new JenaResultSetConvenience(ae.queryConcept(concepts.first(), 0)).getStringListForVariable("?subject") );; + //System.out.println(new JenaResultSetConvenience(ae.queryConcept(concepts.first(), 0)).getStringListForVariable("?subject").size() );; + //ae.getSubClasses(concepts.first()); + //System.exit(0); - AutomaticExampleFinderSPARQL ae= new AutomaticExampleFinderSPARQL( se); - ae.init(concepts.first(), useRelated, useSuperClasses, poslimit, neglimit); + ae.init(concepts.first(), useRelated, useSuperClasses,useParallelClasses, poslimit, neglimit); posExamples = ae.getPosExamples(); negExamples = ae.getNegExamples(); @@ -59,13 +76,14 @@ System.out.println(posExamples); System.out.println(negExamples); //System.exit(0); - String concept = concepts.first().replace("http://dbpedia.org/resource/Category:", ""); - concept = concept.replace("http://dbpedia.org/class/yago/", ""); - String confname = URLEncoder.encode(concept, "UTF-8")+".conf"; + String tmp = concepts.first().replace("http://dbpedia.org/resource/Category:", "").replace("\"",""); + tmp = tmp.replace("http://dbpedia.org/class/yago/", ""); + String confname = URLEncoder.encode(tmp, "UTF-8")+".conf"; // ConfWriter cf=new ConfWriter(); cf.addToStats("relearned concept: "+concepts.first()); + //System.exit(0); //"relearned concept: "; cf.writeSPARQL(confname, posExamples, negExamples, url, new TreeSet<String>()); //new LearnSparql().learn(posExamples, negExamples, "http://dbpedia.openlinksw.com:8890/sparql", new TreeSet<String>()); Added: trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java 2008-04-25 09:28:05 UTC (rev 823) @@ -0,0 +1,85 @@ +package org.dllearner.test; + +import java.util.HashSet; +import java.util.Set; + +import org.apache.log4j.ConsoleAppender; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.apache.log4j.SimpleLayout; +import org.dllearner.kb.sparql.SparqlKnowledgeSource; +import org.dllearner.kb.sparql.SparqlQuery; +import org.dllearner.kb.sparql.configuration.SparqlEndpoint; +import org.dllearner.utilities.JenaResultSetConvenience; +import org.dllearner.utilities.SimpleClock; + +import com.hp.hpl.jena.query.ResultSet; + +public class SparqlEndpointTest { + private static Logger logger = Logger.getRootLogger(); + static Set<String> working = new HashSet<String>(); + static Set<String> notworking = new HashSet<String>(); + + public static void main(String[] args) { + SimpleLayout layout = new SimpleLayout(); + ConsoleAppender consoleAppender = new ConsoleAppender(layout); + logger.removeAllAppenders(); + logger.addAppender(consoleAppender); + logger.setLevel(Level.DEBUG); + Logger.getLogger(SparqlKnowledgeSource.class).setLevel(Level.INFO); + + + + Set<SparqlEndpoint> set = new HashSet<SparqlEndpoint>(); + set.add(SparqlEndpoint.dbpediaEndpoint()); + set.add(SparqlEndpoint.govTrack()); + set.add(SparqlEndpoint.localJoseki()); + set.add(SparqlEndpoint.myopenlink()); + set.add(SparqlEndpoint.worldFactBook()); + set.add(SparqlEndpoint.revyu()); + + + int i=1; + for (SparqlEndpoint sparqlEndpoint : set) { + testEndPoint(sparqlEndpoint); + logger.info("finished "+i+" of "+set.size()); + i++; + } + logger.info("**************"); + for (String str : working) { + logger.info(str); + } + for (String str : notworking) { + logger.info(str); + + } + //set.add(SparqlEndpoint.); + + } + + + public static void testEndPoint(SparqlEndpoint se) { + SimpleClock sc = new SimpleClock(); + try{ + + String query ="" + + "SELECT DISTINCT ?c " + + "WHERE {[] a ?c }" + + "LIMIT 100"; + + query ="SELECT DISTINCT ?c WHERE {[] a ?c }LIMIT 100"; + + SparqlQuery s = new SparqlQuery(query,se); + + 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()));} + } + +} Modified: trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-04-25 09:28:05 UTC (rev 823) @@ -49,7 +49,7 @@ URI u2 = new URI("http://dbpedia.org/resource/Angela_Merkel"); m.useConfiguration( - SparqlQueryType.getFilterByNumber(1),SparqlEndpoint.getEndpointByNumber(1), + SparqlQueryType.getFilterByName("DBPEDIA"),SparqlEndpoint.getEndpointByName("YAGO"), new Manipulator("",200,new LinkedList<StringTuple>(),new LinkedList<StringTuple>()), 1,true,true); //, , Modified: trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java 2008-04-25 09:28:05 UTC (rev 823) @@ -30,11 +30,12 @@ negExamples = new TreeSet<String>(); } - public void init(String concept, boolean useRelated, boolean useSuperclasses, int poslimit, int neglimit) { + public void init(String concept, 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) { dbpediaMakeNegativeExamplesFromRelatedInstances(this.posExamples); @@ -42,10 +43,16 @@ if(useSuperclasses) { dbpediaMakeNegativeExamplesFromSuperClasses(concept); } + if(useParallelClasses) { + dbpediaMakeNegativeExamplesFromClassesOfInstances(); + } //clean negExamples.removeAll(keepForClean); + logger.trace("neg Example size after cleaning: "+negExamples.size()); this.negExamples = SetManipulation.fuzzyShrink(negExamples, neglimit); - logger.debug("Finished examples for concept :"+concept); + 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> getPosOnly(String concept, int limit){ @@ -54,6 +61,7 @@ } 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"); @@ -61,6 +69,7 @@ this.posExamples = new JenaResultSetConvenience(queryConcept(concept,0)) .getStringListForVariable("subject"); } + logger.debug(" pos Example size: "+posExamples.size()); } @@ -68,9 +77,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()); } @@ -92,6 +103,7 @@ JenaResultSetConvenience rsc = new JenaResultSetConvenience(rs); this.negExamples.addAll(rsc.getStringListForVariable("o")); + } @@ -101,14 +113,42 @@ superClasses.add(concept.replace("\"", "")); //logger.debug("before"+superClasses); superClasses = dbpediaGetSuperClasses( superClasses, 4); - logger.debug("getting negExamples from "+superClasses.size()+" superclasses"); + logger.debug("making neg Examples from "+superClasses.size()+" superclasses"); JenaResultSetConvenience rsc; for (String oneSuperClass : superClasses) { rsc = new JenaResultSetConvenience(queryConcept("\""+oneSuperClass+"\"", 0)); this.negExamples.addAll(rsc.getStringListForVariable("subject")); } + logger.debug(" neg Example size: "+negExamples.size()); } + + private void dbpediaMakeNegativeExamplesFromClassesOfInstances() { + 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) { + + rsc = new JenaResultSetConvenience(queryConcept("\""+oneClass+"\"",0)); + this.negExamples.addAll(rsc.getStringListForVariable("subject")); + } + logger.debug("neg Example size: "+negExamples.size()); + + } private SortedSet<String> dbpediaGetSuperClasses(SortedSet<String> superClasses, int depth) { SortedSet<String> ret = new TreeSet<String>(); @@ -181,7 +221,30 @@ return rs; } + + public ResultSet getClassesForInstance(String instance) { + ResultSet rs = null; + try { + + String query = "SELECT ?subject WHERE { \n " + + "<" + instance + ">"+ + " a " + + "?subject " + + "\n" + + "}"; + 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; } @@ -191,5 +254,41 @@ } + /** + * 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/ConfWriter.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java 2008-04-25 09:28:05 UTC (rev 823) @@ -50,11 +50,15 @@ String standardSettings = "sparql.recursionDepth = 1;\n" + - "sparql.predefinedFilter = 1;\n" + - "sparql.predefinedEndpoint = 1;\n" + - "refexamples.minExecutionTimeInSeconds = 10;\n" + - "refexamples.maxExecutionTimeInSeconds = 10;\n" + - "refexamples.logLevel=\"TRACE\";\n" ; + "sparql.predefinedFilter = \"YAGO\";\n" + + "sparql.predefinedEndpoint = \"DBPEDIA\";\n" + + "refexamples.minExecutionTimeInSeconds = 30;\n" + + "refexamples.maxExecutionTimeInSeconds = 30;\n" + + "refexamples.logLevel=\"TRACE\";\n" + + "refexamples.noisePercentage = 0.10;\n" + + "refexamples.writeSearchTree = true;\n" + + "refexamples.searchTreeFile = \"searchTree.txt\";\n"+ + "refexamples.replaceSearchTree = true;\n\n" ; // "sparql.format = \"KB\";\n\n"; Modified: trunk/src/dl-learner/org/dllearner/utilities/JenaResultSetConvenience.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/JenaResultSetConvenience.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/utilities/JenaResultSetConvenience.java 2008-04-25 09:28:05 UTC (rev 823) @@ -20,6 +20,7 @@ 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) { Modified: trunk/src/dl-learner/org/dllearner/utilities/SimpleClock.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/SimpleClock.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/utilities/SimpleClock.java 2008-04-25 09:28:05 UTC (rev 823) @@ -37,7 +37,15 @@ time=now; } + public String getAndSet(String s) { + long now=System.currentTimeMillis(); + String ret = s+" needed "+(now-time)+" ms"; + time=now; + return ret; + + } + /** * prints time needed * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-04-25 14:34:12
|
Revision: 827 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=827&view=rev Author: kurzum Date: 2008-04-25 07:33:54 -0700 (Fri, 25 Apr 2008) Log Message: ----------- intermediate commit Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-25 10:48:36 UTC (rev 826) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-25 14:33:54 UTC (rev 827) @@ -413,17 +413,17 @@ logger.info("best node " + candidatesStable.last().getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); logger.info("\nsolutions ( top 5 ):"); int show=1; + String manchester="MANCHESTER:\n"; + String KBSyntax="KBSyntax:\n"; for(Description c : solutions) { logger.info(show+": " + c.toString(baseURI,null) + " (length " + c.getLength() +", depth " + c.getDepth() + ")"); - //TODO remove this line maybe // watch for String.replace Quick hack - logger.info(" MANCHESTER: " + - c.toManchesterSyntaxString(baseURI, new HashMap<String,String>()). - replace("\"", "")); - logger.info(" KBSyntax: " + c.toKBSyntaxString()); - if(show>=5){break;} - show++; + manchester+=show+": "+c.toManchesterSyntaxString(baseURI, new HashMap<String,String>()).replace("\"", "")+"\n"; + KBSyntax+=show+": " + c.toKBSyntaxString()+"\n"; + if(show>=5){break;} show++; } + logger.debug(manchester); + logger.debug(KBSyntax); } logger.debug("size of candidate set: " + candidates.size()); Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-04-25 10:48:36 UTC (rev 826) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-04-25 14:33:54 UTC (rev 827) @@ -31,15 +31,15 @@ boolean useRelated = false; boolean useSuperClasses = false; boolean useParallelClasses = true; - int poslimit = 15; - int neglimit = 200; + int poslimit = 10; + int neglimit = 20; try { //logger.setLevel(Level.TRACE); - Logger.getLogger(SparqlKnowledgeSource.class).setLevel(Level.TRACE); - System.out.println(Logger.getLogger(SparqlQuery.class).getLevel()); + Logger.getLogger(SparqlKnowledgeSource.class).setLevel(Level.INFO); + //System.out.println(Logger.getLogger(SparqlQuery.class).getLevel()); /*System.out.println(Level.DEBUG.getClass()); System.out.println(Level.toLevel("INFO")); @@ -49,11 +49,12 @@ //concepts.add("(EXISTS \"monarch\".TOP AND EXISTS \"predecessor\".(\"Knight\" OR \"Secretary\"))"); SortedSet<String> concepts = new TreeSet<String>(); - //concepts.add("(\"http://dbpedia.org/class/yago/HeadOfState110164747\" AND (\"http://dbpedia.org/class/yago/Negotiator110351874\" AND \"http://dbpedia.org/class/yago/Representative110522035\"))"); + concepts.add("(\"http://dbpedia.org/class/yago/HeadOfState110164747\" AND (\"http://dbpedia.org/class/yago/Negotiator110351874\" AND \"http://dbpedia.org/class/yago/Representative110522035\"))"); //concepts.add("\"http://dbpedia.org/class/yago/Person100007846\""); - concepts.add("\"http://dbpedia.org/class/yago/FieldMarshal110086821\""); + //concepts.add("\"http://dbpedia.org/class/yago/FieldMarshal110086821\""); //concepts.add("http://dbpedia.org/resource/Category:Prime_Ministers_of_the_United_Kingdom"); //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>(); @@ -78,6 +79,7 @@ //System.exit(0); String tmp = concepts.first().replace("http://dbpedia.org/resource/Category:", "").replace("\"",""); tmp = tmp.replace("http://dbpedia.org/class/yago/", ""); + tmp = tmp.replace("http://dbpedia.org/property/", ""); String confname = URLEncoder.encode(tmp, "UTF-8")+".conf"; // ConfWriter cf=new ConfWriter(); Modified: trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java 2008-04-25 10:48:36 UTC (rev 826) +++ trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java 2008-04-25 14:33:54 UTC (rev 827) @@ -189,7 +189,7 @@ SparqlQuery sq = new SparqlQuery(query, se); String JSON = c.executeSparqlQuery(sq); - //System.out.println(JSON); + //System.out.println("JSON:\n"+JSON); rs = SparqlQuery.JSONtoResultSet(JSON); } catch (Exception e) { Modified: trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java 2008-04-25 10:48:36 UTC (rev 826) +++ trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java 2008-04-25 14:33:54 UTC (rev 827) @@ -54,6 +54,7 @@ "sparql.predefinedEndpoint = \"DBPEDIA\";\n" + "refexamples.minExecutionTimeInSeconds = 30;\n" + "refexamples.maxExecutionTimeInSeconds = 30;\n" + + "//refexamples.guaranteeXgoodDescriptions = 10;\n" + "refexamples.logLevel=\"TRACE\";\n" + "refexamples.noisePercentage = 0.10;\n" + "refexamples.writeSearchTree = true;\n" + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-04-28 09:43:46
|
Revision: 828 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=828&view=rev Author: kurzum Date: 2008-04-28 02:43:43 -0700 (Mon, 28 Apr 2008) Log Message: ----------- fixed IS TRUE bug, changed query output to logger Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/cli/Start.java trunk/src/dl-learner/org/dllearner/core/owl/BooleanValueRestriction.java Modified: trunk/src/dl-learner/org/dllearner/cli/Start.java =================================================================== --- trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-04-25 14:33:54 UTC (rev 827) +++ trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-04-28 09:43:43 UTC (rev 828) @@ -633,23 +633,24 @@ // performs a query - used for debugging learning examples private static void processQueryMode(LearningProblem lp, ReasoningService rs) { - System.out.println("Entering query mode. Enter a concept for performing " + logger.info("Entering query mode. Enter a concept for performing " + "retrieval or q to quit. Use brackets for complex expresssions," + "e.g. (a AND b)."); String queryStr = ""; do { - System.out.print("enter query: "); + logger.info("enter query: "); // read input string BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); try { queryStr = input.readLine(); + logger.debug(queryStr); } catch (IOException e) { e.printStackTrace(); } - if (!queryStr.equals("q")) { + if (!(queryStr.equalsIgnoreCase("q") ||queryStr.equalsIgnoreCase("quit"))) { // parse concept Description concept = null; @@ -694,12 +695,11 @@ boolean nonExistingConstructs = false; if (occurringConcepts.size() != 0 || occurringRoles.size() != 0) { - System.out - .println("You used non-existing atomic concepts or roles. Please correct your query."); + logger.debug("You used non-existing atomic concepts or roles. Please correct your query."); if (occurringConcepts.size() > 0) - System.out.println("non-existing concepts: " + occurringConcepts); + logger.debug("non-existing concepts: " + occurringConcepts); if (occurringRoles.size() > 0) - System.out.println("non-existing roles: " + occurringRoles); + logger.debug("non-existing roles: " + occurringRoles); nonExistingConstructs = true; } @@ -707,26 +707,25 @@ if (!queryStr.startsWith("(") && (queryStr.contains("AND") || queryStr.contains("OR"))) { - System.out - .println("Make sure you did not forget to use outer brackets."); + logger.info("Make sure you did not forget to use outer brackets."); } - System.out.println("The query is: " + concept + "."); + logger.info("The query is: " + concept.toKBSyntaxString() + "."); // pose retrieval query Set<Individual> result = null; result = rs.retrieval(concept); - System.out.println("retrieval result ("+result.size()+"): " + result); + logger.info("retrieval result ("+result.size()+"): " + result); Score score = lp.computeScore(concept); - System.out.println(score); + logger.info(score); } } - } + }//end if - } while (!queryStr.equals("q")); + } while (!(queryStr.equalsIgnoreCase("q")||queryStr.equalsIgnoreCase("quit"))); } Modified: trunk/src/dl-learner/org/dllearner/core/owl/BooleanValueRestriction.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/BooleanValueRestriction.java 2008-04-25 14:33:54 UTC (rev 827) +++ trunk/src/dl-learner/org/dllearner/core/owl/BooleanValueRestriction.java 2008-04-28 09:43:43 UTC (rev 828) @@ -19,7 +19,9 @@ */ package org.dllearner.core.owl; +import java.util.Map; + /** * Convenience class for boolean value restrictions. * @@ -60,9 +62,10 @@ return 2; } - /*@Override + @Override public String toKBSyntaxString(String baseURI, Map<String,String> prefixes) { - throw new Error("BooleanValueRestriction: not implemented"); + String ret= "("+restrictedPropertyExpression.toKBSyntaxString(baseURI, prefixes) + " IS " + ((String)value.toKBSyntaxString(baseURI, prefixes)).toUpperCase()+")"; + return ret; - }*/ + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-05-06 15:03:02
|
Revision: 829 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=829&view=rev Author: kurzum Date: 2008-05-06 08:02:50 -0700 (Tue, 06 May 2008) Log Message: ----------- more predefined sparqlendpoints Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java trunk/src/dl-learner/org/dllearner/test/JenaQueryToResultSpeedTest.java trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java 2008-04-28 09:43:43 UTC (rev 828) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java 2008-05-06 15:02:50 UTC (rev 829) @@ -87,21 +87,43 @@ if (name.equals("DBPEDIA")) - return dbpediaEndpoint(); + return EndpointDBpedia(); if (name.equals("LOCALJOSECKI")) - return localJoseki(); + return EndpointlocalJoseki(); if (name.equals("GOVTRACK")) - return govTrack(); + return EndpointGovTrack(); if (name.equals("REVYU")) - return revyu(); + return EndpointRevyu(); if (name.equals("MYOPENLINK")) - return myopenlink(); + return EndpointMyOpenlink(); if (name.equals("FACTBOOK")) - return worldFactBook(); + return EndpointWorldFactBook(); + if (name.equals("DBLP")) + return EndpointDBLP(); return null; } - public static SparqlEndpoint dbpediaEndpoint() { + + public static LinkedList<SparqlEndpoint> listEndpoints() { + LinkedList<SparqlEndpoint> ll =new LinkedList<SparqlEndpoint>(); + ll.add(EndpointDBLP()); + ll.add(EndpointDBpedia()); + ll.add(EndpointDOAPspace()); + ll.add(EndpointGovTrack()); + ll.add(EndpointJamendo()); + ll.add(EndpointJohnPeel()); + ll.add(EndpointlocalJoseki()); + ll.add(EndpointMagnaTune()); + ll.add(EndpointMusicbrainz()); + ll.add(EndpointMyOpenlink()); + ll.add(EndpointRevyu()); + ll.add(EndpointSWConference()); + ll.add(EndpointUSCensus()); + ll.add(EndpointWorldFactBook()); + return ll; + } + + public static SparqlEndpoint EndpointDBpedia() { URL u = null; try { u = new URL("http://dbpedia.openlinksw.com:8890/sparql"); @@ -113,7 +135,7 @@ return new SparqlEndpoint(u, defaultGraphURIs, new LinkedList<String>()); } - public static SparqlEndpoint localJoseki() { + public static SparqlEndpoint EndpointlocalJoseki() { URL u = null; try { u = new URL("http://localhost:2020/books"); @@ -123,7 +145,7 @@ return new SparqlEndpoint(u, new LinkedList<String>(), new LinkedList<String>()); } - public static SparqlEndpoint worldFactBook() { + public static SparqlEndpoint EndpointWorldFactBook() { URL u = null; try { u = new URL("http://www4.wiwiss.fu-berlin.de/factbook/sparql"); @@ -134,7 +156,7 @@ } - public static SparqlEndpoint govTrack() { + public static SparqlEndpoint EndpointGovTrack() { URL u = null; try { u = new URL("http://www.rdfabout.com/sparql"); @@ -144,7 +166,7 @@ return new SparqlEndpoint(u, new LinkedList<String>(), new LinkedList<String>()); } - public static SparqlEndpoint revyu() { + public static SparqlEndpoint EndpointRevyu() { URL u = null; try { u = new URL("http://revyu.com/sparql"); @@ -154,7 +176,7 @@ return new SparqlEndpoint(u, new LinkedList<String>(), new LinkedList<String>()); } - public static SparqlEndpoint myopenlink() { + public static SparqlEndpoint EndpointMyOpenlink() { URL u = null; try { u = new URL("http://myopenlink.net:8890/sparql/"); @@ -167,9 +189,46 @@ } + public static SparqlEndpoint EndpointDOAPspace() { + URL u = null; + try { + u = new URL("http://doapspace.org/sparql"); + } catch (Exception e) { + e.printStackTrace(); + } + + return new SparqlEndpoint(u); + + } + public static SparqlEndpoint EndpointJohnPeel() { + URL u = null; + try { + u = new URL("http://dbtune.org:3030/sparql/"); + } catch (Exception e) { + e.printStackTrace(); + } + + return new SparqlEndpoint(u); + + } + + + + public static SparqlEndpoint EndpointSWConference() { + URL u = null; + try { + u = new URL("http://data.semanticweb.org:8080/openrdf-sesame/repositories/SWC"); + } catch (Exception e) { + e.printStackTrace(); + } + + return new SparqlEndpoint(u); + + } // returns strange xml - /*public static SpecificSparqlEndpoint dbtune() { + /* + public static SpecificSparqlEndpoint dbtune() { URL u = null; HashMap<String, String> m = new HashMap<String, String>(); // m.put("default-graph-uri", "http://dbpedia.org"); @@ -191,25 +250,69 @@ return new SpecificSparqlEndpoint(u, "dbtune.org", m); }*/ + public static SparqlEndpoint EndpointJamendo() { + URL u = null; + try { + u = new URL("http://dbtune.org:2105/sparql/"); + } catch (Exception e) { + e.printStackTrace(); + } + return new SparqlEndpoint(u); + } + + + public static SparqlEndpoint EndpointMagnaTune() { + URL u = null; + try { + u = new URL("http://dbtune.org:2020/sparql/"); + } catch (Exception e) { + e.printStackTrace(); + } + return new SparqlEndpoint(u); + } + + public static SparqlEndpoint EndpointMusicbrainz() { + URL u = null; + try { + u = new URL(" http://dbtune.org/musicbrainz/sparql"); + } catch (Exception e) { + e.printStackTrace(); + } + return new SparqlEndpoint(u); + } + + public static SparqlEndpoint EndpointUSCensus() { + URL u = null; + try { + u = new URL(" http://www.rdfabout.com/sparql"); + } catch (Exception e) { + e.printStackTrace(); + } + return new SparqlEndpoint(u); + } + + + + /* * it only has 4 classes - public static SpecificSparqlEndpoint dblp() { + */ + public static SparqlEndpoint EndpointDBLP() { URL u = null; - HashMap<String, String> m = new HashMap<String, String>(); - // m.put("default-graph-uri", "http://dbpedia.org"); - // m.put("format", "application/sparql-results.xml"); - try { + try { u = new URL("http://www4.wiwiss.fu-berlin.de/dblp/sparql"); } catch (Exception e) { e.printStackTrace(); } - return new SpecificSparqlEndpoint(u, "www4.wiwiss.fu-berlin.de", m); + return new SparqlEndpoint(u); } - */ + + + } Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-04-28 09:43:43 UTC (rev 828) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-05-06 15:02:50 UTC (rev 829) @@ -10,7 +10,6 @@ import org.apache.log4j.SimpleLayout; import org.dllearner.kb.sparql.Cache; import org.dllearner.kb.sparql.SparqlKnowledgeSource; -import org.dllearner.kb.sparql.SparqlQuery; import org.dllearner.kb.sparql.configuration.SparqlEndpoint; import org.dllearner.utilities.AutomaticExampleFinderSPARQL; import org.dllearner.utilities.ConfWriter; @@ -132,7 +131,7 @@ public static void init() { - se = SparqlEndpoint.dbpediaEndpoint(); + se = SparqlEndpoint.EndpointDBpedia(); // create logger (a simple logger which outputs // its messages to the console) SimpleLayout layout = new SimpleLayout(); Modified: trunk/src/dl-learner/org/dllearner/test/JenaQueryToResultSpeedTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/JenaQueryToResultSpeedTest.java 2008-04-28 09:43:43 UTC (rev 828) +++ trunk/src/dl-learner/org/dllearner/test/JenaQueryToResultSpeedTest.java 2008-05-06 15:02:50 UTC (rev 829) @@ -51,7 +51,7 @@ public static void testJenaAsXML(int howOften, String queryString){ - SparqlEndpoint sse = SparqlEndpoint.dbpediaEndpoint(); + SparqlEndpoint sse = SparqlEndpoint.EndpointDBpedia(); SparqlQuery sqJena = new SparqlQuery(queryString, sse); // first query is not counted ResultSet rs = sqJena.send(); @@ -73,7 +73,7 @@ } public static void testJenaAsList(int howOften, String queryString){ - SparqlEndpoint sse = SparqlEndpoint.dbpediaEndpoint(); + SparqlEndpoint sse = SparqlEndpoint.EndpointDBpedia(); SparqlQuery sqJena = new SparqlQuery(queryString, sse); // first query is not counted //sqJena.getAsList(); @@ -97,7 +97,7 @@ } public static void testJenaAsJSON(int howOften, String queryString){ - SparqlEndpoint sse = SparqlEndpoint.dbpediaEndpoint(); + SparqlEndpoint sse = SparqlEndpoint.EndpointDBpedia(); SparqlQuery sqJena = new SparqlQuery(queryString, sse); // first query is not counted ResultSet rs = sqJena.send(); @@ -120,7 +120,7 @@ } public static void testJenaAsJSONandBack(int howOften, String queryString){ - SparqlEndpoint sse = SparqlEndpoint.dbpediaEndpoint(); + SparqlEndpoint sse = SparqlEndpoint.EndpointDBpedia(); SparqlQuery sqJena = new SparqlQuery(queryString, sse); // first query is not counted ResultSet rs = sqJena.send(); @@ -146,7 +146,7 @@ public static void compareResults(String queryString) { - SparqlEndpoint sse = SparqlEndpoint.dbpediaEndpoint(); + SparqlEndpoint sse = SparqlEndpoint.EndpointDBpedia(); SparqlQuery sqJena = new SparqlQuery(queryString, sse); // SparqlQueryConventional sqConv=new SparqlQueryConventional(sse); Modified: trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java 2008-04-28 09:43:43 UTC (rev 828) +++ trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java 2008-05-06 15:02:50 UTC (rev 829) @@ -1,6 +1,7 @@ package org.dllearner.test; import java.util.HashSet; +import java.util.LinkedList; import java.util.Set; import org.apache.log4j.ConsoleAppender; @@ -30,19 +31,15 @@ - Set<SparqlEndpoint> set = new HashSet<SparqlEndpoint>(); - set.add(SparqlEndpoint.dbpediaEndpoint()); - set.add(SparqlEndpoint.govTrack()); - set.add(SparqlEndpoint.localJoseki()); - set.add(SparqlEndpoint.myopenlink()); - set.add(SparqlEndpoint.worldFactBook()); - set.add(SparqlEndpoint.revyu()); + LinkedList<SparqlEndpoint> ll = SparqlEndpoint.listEndpoints(); + int i=1; - for (SparqlEndpoint sparqlEndpoint : set) { - testEndPoint(sparqlEndpoint); - logger.info("finished "+i+" of "+set.size()); + for (int j = 0; j < ll.size(); j++) { + + testEndPoint(ll.get(j)); + logger.info("finished "+i+" of "+ll.size()); i++; } logger.info("**************"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-05-06 18:16:31
|
Revision: 830 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=830&view=rev Author: kurzum Date: 2008-05-06 11:16:26 -0700 (Tue, 06 May 2008) Log Message: ----------- script for learning roles automatically, conf files are created in a folder examples/stest, which must exist Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.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/ConfWriter.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderRolesSPARQL.java trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java 2008-05-06 15:02:50 UTC (rev 829) +++ trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java 2008-05-06 18:16:26 UTC (rev 830) @@ -567,9 +567,11 @@ if(show>=5){break;} show++; } + } logger.info(" horizontal expansion: " + minimumHorizontalExpansion + " to " + maximumHorizontalExpansion); logger.info(" size of candidate set: " + candidates.size()); + //logger.trace("test"); //logger.trace(solutions.size()); printBestSolutions(0); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java 2008-05-06 15:02:50 UTC (rev 829) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java 2008-05-06 18:16:26 UTC (rev 830) @@ -291,7 +291,9 @@ } catch (Exception e) { e.printStackTrace(); } - return new SparqlEndpoint(u); + LinkedList<String> defaultGraphURIs=new LinkedList<String>(); + defaultGraphURIs.add("http://www.rdfabout.com/rdf/schema/census/"); + return new SparqlEndpoint(u, defaultGraphURIs, new LinkedList<String>()); } Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-05-06 15:02:50 UTC (rev 829) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-05-06 18:16:26 UTC (rev 830) @@ -11,6 +11,7 @@ import org.dllearner.kb.sparql.Cache; import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.kb.sparql.configuration.SparqlEndpoint; +import org.dllearner.utilities.AutomaticExampleFinderRolesSPARQL; import org.dllearner.utilities.AutomaticExampleFinderSPARQL; import org.dllearner.utilities.ConfWriter; import org.dllearner.utilities.SimpleClock; @@ -20,82 +21,168 @@ static Cache c; 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; + static boolean useParallelClasses = true; + static int poslimit = 10; + static int neglimit = 20; + /** * @param args */ public static void main(String[] args) { init(); + //logger.setLevel(Level.TRACE); + Logger.getLogger(SparqlKnowledgeSource.class).setLevel(Level.INFO); + //System.out.println(Logger.getLogger(SparqlQuery.class).getLevel()); + SimpleClock sc=new SimpleClock(); - //vars - boolean useRelated = false; - boolean useSuperClasses = false; - boolean useParallelClasses = true; - int poslimit = 10; - int neglimit = 20; + standardSettings=standardSettingsRefexamples+standardDBpedia; + standardSettings=standardSettingsRefinement+standardDBpedia; + //DBpedia(); + //algorithm="refinement"; + roles(); - - try { - //logger.setLevel(Level.TRACE); - Logger.getLogger(SparqlKnowledgeSource.class).setLevel(Level.INFO); - //System.out.println(Logger.getLogger(SparqlQuery.class).getLevel()); - - /*System.out.println(Level.DEBUG.getClass()); + /*System.out.println(Level.DEBUG.getClass()); System.out.println(Level.toLevel("INFO")); System.out.println(Level.INFO);*/ //System.exit(0); - SimpleClock sc=new SimpleClock(); - //concepts.add("(EXISTS \"monarch\".TOP AND EXISTS \"predecessor\".(\"Knight\" OR \"Secretary\"))"); - - SortedSet<String> concepts = new TreeSet<String>(); - concepts.add("(\"http://dbpedia.org/class/yago/HeadOfState110164747\" AND (\"http://dbpedia.org/class/yago/Negotiator110351874\" AND \"http://dbpedia.org/class/yago/Representative110522035\"))"); - //concepts.add("\"http://dbpedia.org/class/yago/Person100007846\""); - //concepts.add("\"http://dbpedia.org/class/yago/FieldMarshal110086821\""); - //concepts.add("http://dbpedia.org/resource/Category:Prime_Ministers_of_the_United_Kingdom"); - //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>(); - String url = "http://dbpedia.openlinksw.com:8890/sparql"; - //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); - AutomaticExampleFinderSPARQL ae= new AutomaticExampleFinderSPARQL( se); - //System.out.println(new JenaResultSetConvenience(ae.queryConcept(concepts.first(), 0)).getStringListForVariable("?subject") );; - //System.out.println(new JenaResultSetConvenience(ae.queryConcept(concepts.first(), 0)).getStringListForVariable("?subject").size() );; - //ae.getSubClasses(concepts.first()); - //System.exit(0); - - ae.init(concepts.first(), useRelated, useSuperClasses,useParallelClasses, poslimit, neglimit); + - posExamples = ae.getPosExamples(); - negExamples = ae.getNegExamples(); - - System.out.println(posExamples); - System.out.println(negExamples); - //System.exit(0); - String tmp = concepts.first().replace("http://dbpedia.org/resource/Category:", "").replace("\"",""); - tmp = tmp.replace("http://dbpedia.org/class/yago/", ""); - tmp = tmp.replace("http://dbpedia.org/property/", ""); - String confname = URLEncoder.encode(tmp, "UTF-8")+".conf"; - // - ConfWriter cf=new ConfWriter(); - cf.addToStats("relearned concept: "+concepts.first()); - - //System.exit(0); - //"relearned concept: "; - cf.writeSPARQL(confname, posExamples, negExamples, url, new TreeSet<String>()); - //new LearnSparql().learn(posExamples, negExamples, "http://dbpedia.openlinksw.com:8890/sparql", new TreeSet<String>()); - sc.printAndSet("Finished"); - } catch (Exception e) { - e.printStackTrace(); - } - } + + static void DBpedia(){ + se = SparqlEndpoint.EndpointDBpedia(); + //concepts.add("(EXISTS \"monarch\".TOP AND EXISTS \"predecessor\".(\"Knight\" OR \"Secretary\"))"); + + SortedSet<String> concepts = new TreeSet<String>(); + concepts.add("(\"http://dbpedia.org/class/yago/HeadOfState110164747\" AND (\"http://dbpedia.org/class/yago/Negotiator110351874\" AND \"http://dbpedia.org/class/yago/Representative110522035\"))"); + //concepts.add("\"http://dbpedia.org/class/yago/Person100007846\""); + //concepts.add("\"http://dbpedia.org/class/yago/FieldMarshal110086821\""); + //concepts.add("http://dbpedia.org/resource/Category:Prime_Ministers_of_the_United_Kingdom"); + //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>(); + String url = "http://dbpedia.openlinksw.com:8890/sparql"; + //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); + AutomaticExampleFinderSPARQL ae= new AutomaticExampleFinderSPARQL( se); + //System.out.println(new JenaResultSetConvenience(ae.queryConcept(concepts.first(), 0)).getStringListForVariable("?subject") );; + //System.out.println(new JenaResultSetConvenience(ae.queryConcept(concepts.first(), 0)).getStringListForVariable("?subject").size() );; + //ae.getSubClasses(concepts.first()); + //System.exit(0); + + ae.initDBpedia(concepts.first(), useRelated, useSuperClasses,useParallelClasses, poslimit, neglimit); + + posExamples = ae.getPosExamples(); + negExamples = ae.getNegExamples(); + + System.out.println(posExamples); + System.out.println(negExamples); + //System.exit(0); + String tmp = concepts.first().replace("http://dbpedia.org/resource/Category:", "").replace("\"",""); + tmp = tmp.replace("http://dbpedia.org/class/yago/", ""); + tmp = tmp.replace("http://dbpedia.org/property/", ""); + String confname = ""; + try{ + confname = URLEncoder.encode(tmp, "UTF-8")+".conf"; + }catch (Exception e) {e.printStackTrace();} + // + ConfWriter cf=new ConfWriter(); + cf.addToStats("relearned concept: "+concepts.first()); + + //System.exit(0); + //"relearned concept: "; + cf.writeSPARQL(confname, posExamples, negExamples, url, new TreeSet<String>(),standardSettings,algorithm); + //new LearnSparql().learn(posExamples, negExamples, "http://dbpedia.openlinksw.com:8890/sparql", new TreeSet<String>()); + + + } + + + + static void roles(){ + + se = SparqlEndpoint.EndpointDBpedia(); + //se = SparqlEndpoint.EndpointUSCensus(); + SortedSet<String> roles = new TreeSet<String>(); + roles.add("http://dbpedia.org/property/birthPlace"); + //roles.add("http://www.rdfabout.com/rdf/schema/census/landArea"); + standardSettings+=algorithm+".ignoredRoles = {\""+roles.first()+"\"};\n"; + + SortedSet<String> posExamples = new TreeSet<String>(); + SortedSet<String> negExamples = new TreeSet<String>(); + String url = "http://dbpedia.openlinksw.com:8890/sparql"; + //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); + AutomaticExampleFinderRolesSPARQL ae= new AutomaticExampleFinderRolesSPARQL( se); + + ae.initDomainRange(roles.first(), poslimit, neglimit); + + posExamples = ae.getPosExamples(); + negExamples = ae.getNegExamples(); + + System.out.println(posExamples); + System.out.println(negExamples); + //System.exit(0); + String tmp = roles.first().replace("http://dbpedia.org/property/", "").replace("\"",""); + String confname = ""; + try{ + confname = URLEncoder.encode(tmp, "UTF-8")+".conf"; + }catch (Exception e) {e.printStackTrace();} + // + ConfWriter cf=new ConfWriter(); + cf.addToStats("relearned role: "+roles.first()); + + //System.exit(0); + //"relearned concept: "; + cf.writeSPARQL(confname, posExamples, negExamples, url, new TreeSet<String>(),standardSettings,algorithm); + //new LearnSparql().learn(posExamples, negExamples, "http://dbpedia.openlinksw.com:8890/sparql", new TreeSet<String>()); + + + } /*************************************************************************** * *********************OLDCODE String @@ -131,7 +218,7 @@ public static void init() { - se = SparqlEndpoint.EndpointDBpedia(); + // create logger (a simple logger which outputs // its messages to the console) SimpleLayout layout = new SimpleLayout(); Modified: trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java 2008-05-06 15:02:50 UTC (rev 829) +++ trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java 2008-05-06 18:16:26 UTC (rev 830) @@ -5,6 +5,7 @@ import java.util.Set; 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; @@ -24,7 +25,12 @@ public static void main(String[] args) { SimpleLayout layout = new SimpleLayout(); ConsoleAppender consoleAppender = new ConsoleAppender(layout); + FileAppender fileAppender =null; ; + try{ + fileAppender = new FileAppender(layout,"endpoints.txt",false); + }catch (Exception e) {e.printStackTrace();} logger.removeAllAppenders(); + logger.addAppender(fileAppender); logger.addAppender(consoleAppender); logger.setLevel(Level.DEBUG); Logger.getLogger(SparqlKnowledgeSource.class).setLevel(Level.INFO); Added: trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderRolesSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderRolesSPARQL.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderRolesSPARQL.java 2008-05-06 18:16:26 UTC (rev 830) @@ -0,0 +1,123 @@ +package org.dllearner.utilities; + +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.SparqlQuery; +import org.dllearner.kb.sparql.configuration.SparqlEndpoint; + +import com.hp.hpl.jena.query.ResultSet; + +public class AutomaticExampleFinderRolesSPARQL { + + 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; + + + public AutomaticExampleFinderRolesSPARQL(SparqlEndpoint se){ + this.c=new Cache(); + this.se=se; + posExamples = new TreeSet<String>(); + negExamples = new TreeSet<String>(); + } + + public void initDomainRange(String role, int poslimit, int neglimit) { + makePositiveExamplesAsDomain( role); + 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()); + + makeNegativeExamplesAsRange( role); + + + //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 role: "+role); + } + + + + + private void makePositiveExamplesAsDomain(String role){ + logger.debug("making Positive Examples from Role as Domain: "+role); + this.posExamples.addAll(getDomain( role, roleLimit)); + logger.debug(" pos Example size: "+posExamples.size()); + } + + private void makeNegativeExamplesAsRange(String role){ + logger.debug("making Negative Examples from Role as Range: "+role); + this.negExamples.addAll(getRange( role, roleLimit)); + logger.debug(" neg Example size: "+negExamples.size()); + } + + private SortedSet<String> getDomain(String role,int limit){ + + String query = "" + + "SELECT DISTINCT ?domain " + + "WHERE { \n" + + "?domain <" + role + "> " + " ?o. \n" + + "?domain a []\n." + + "FILTER (!isLiteral(?domain))." + + "}\n" + + "LIMIT "+limit; + + + String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); + ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); + JenaResultSetConvenience rsc = new JenaResultSetConvenience(rs); + return rsc.getStringListForVariable("domain"); + + } + + private SortedSet<String> getRange(String role,int limit){ + + String query = "" + + "SELECT DISTINCT ?range " + + "WHERE { \n" + + "?s <" + role + "> " + " ?range. \n" + + "?range a [].\n" + + "FILTER (!isLiteral(?range))." + + "}\n" + + "LIMIT "+limit; + + + String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); + ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); + JenaResultSetConvenience rsc = new JenaResultSetConvenience(rs); + return rsc.getStringListForVariable("range"); + + } + + + + + + + public SortedSet<String> getPosExamples() { + return posExamples; + } + + public SortedSet<String> getNegExamples() { + return negExamples; + } + + + + + + +} Deleted: trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java 2008-05-06 15:02:50 UTC (rev 829) +++ trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java 2008-05-06 18:16:26 UTC (rev 830) @@ -1,294 +0,0 @@ -package org.dllearner.utilities; - -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.SparqlQuery; -import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; -import org.dllearner.kb.sparql.configuration.SparqlEndpoint; - -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 AutomaticExampleFinderSPARQL(SparqlEndpoint se){ - this.c=new Cache(); - this.se=se; - posExamples = new TreeSet<String>(); - negExamples = new TreeSet<String>(); - } - - public void init(String concept, 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) { - dbpediaMakeNegativeExamplesFromRelatedInstances(this.posExamples); - } - if(useSuperclasses) { - dbpediaMakeNegativeExamplesFromSuperClasses(concept); - } - if(useParallelClasses) { - dbpediaMakeNegativeExamplesFromClassesOfInstances(); - } - //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> getPosOnly(String concept, int limit){ - makePositiveExamplesFromConcept( concept); - return SetManipulation.fuzzyShrink(this.posExamples, limit); - } - - 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()); - } - - - /** - * - * @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 dbpediaMakeNegativeExamplesFromSuperClasses(String concept) { - - SortedSet<String> superClasses = new TreeSet<String>(); - superClasses.add(concept.replace("\"", "")); - //logger.debug("before"+superClasses); - superClasses = dbpediaGetSuperClasses( superClasses, 4); - logger.debug("making neg Examples from "+superClasses.size()+" superclasses"); - JenaResultSetConvenience rsc; - for (String oneSuperClass : superClasses) { - - rsc = new JenaResultSetConvenience(queryConcept("\""+oneSuperClass+"\"", 0)); - this.negExamples.addAll(rsc.getStringListForVariable("subject")); - } - logger.debug(" neg Example size: "+negExamples.size()); - } - - private void dbpediaMakeNegativeExamplesFromClassesOfInstances() { - 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) { - - rsc = new JenaResultSetConvenience(queryConcept("\""+oneClass+"\"",0)); - this.negExamples.addAll(rsc.getStringListForVariable("subject")); - } - logger.debug("neg Example size: "+negExamples.size()); - - } - - private SortedSet<String> dbpediaGetSuperClasses(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) { - //logger.debug("one"+oneSuperClass); - //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 querySKOSConcept(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" + - "}"; - 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; - } - - - /** - * 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(); - } - - } - - - -} Added: trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java 2008-05-06 18:16:26 UTC (rev 830) @@ -0,0 +1,374 @@ +package org.dllearner.utilities; + +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.SparqlQuery; +import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; +import org.dllearner.kb.sparql.configuration.SparqlEndpoint; + +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 AutomaticExampleFinderSPARQL(SparqlEndpoint se){ + this.c=new Cache(); + 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,0)) + .getStringListForVariable("subject"); + }else { + 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); + 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) { + + rsc = new JenaResultSetConvenience(queryConcept("\""+oneSuperClass+"\"", 0)); + 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) { + + rsc = new JenaResultSetConvenience(queryConcept("\""+oneClass+"\"",0)); + 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) { + //logger.debug("one"+oneSuperClass); + //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" + + "}"; + 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; + } + + + /** + * 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/ConfWriter.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java 2008-05-06 15:02:50 UTC (rev 829) +++ trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java 2008-05-06 18:16:26 UTC (rev 830) @@ -43,23 +43,12 @@ } public void writeSPARQL(String filename, SortedSet<String> pos, SortedSet<String> neg, - String uri, SortedSet<String> ignoredConcepts) { + String uri, SortedSet<String> ignoredConcepts, String standardSettings, String prefixAlgortihm) { - String prefixAlgortihm = "refexamples"; + String prefixSparql = "sparql"; - String standardSettings = - "sparql.recursionDepth = 1;\n" + - "sparql.predefinedFilter = \"YAGO\";\n" + - "sparql.predefinedEndpoint = \"DBPEDIA\";\n" + - "refexamples.minExecutionTimeInSeconds = 30;\n" + - "refexamples.maxExecutionTimeInSeconds = 30;\n" + - "//refexamples.guaranteeXgoodDescriptions = 10;\n" + - "refexamples.logLevel=\"TRACE\";\n" + - "refexamples.noisePercentage = 0.10;\n" + - "refexamples.writeSearchTree = true;\n" + - "refexamples.searchTreeFile = \"searchTree.txt\";\n"+ - "refexamples.replaceSearchTree = true;\n\n" ; + // "sparql.format = \"KB\";\n\n"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Jen...@us...> - 2008-05-13 11:11:13
|
Revision: 832 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=832&view=rev Author: JensLehmann Date: 2008-05-13 04:11:07 -0700 (Tue, 13 May 2008) Log Message: ----------- started posonly learning for refexamples algorithm 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/cli/Start.java trunk/src/dl-learner/org/dllearner/tools/protege/ButtonList.java trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java trunk/src/dl-learner/org/dllearner/tools/protege/SuggestEquivalentClassView.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java 2008-05-06 18:27:11 UTC (rev 831) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java 2008-05-13 11:11:07 UTC (rev 832) @@ -45,6 +45,7 @@ import org.dllearner.core.owl.ObjectProperty; import org.dllearner.learningproblems.PosNegLP; import org.dllearner.learningproblems.PosOnlyDefinitionLP; +import org.dllearner.learningproblems.PosOnlyLP; import org.dllearner.refinementoperators.RhoDRDown; import org.dllearner.utilities.Files; import org.dllearner.utilities.Helper; @@ -274,10 +275,12 @@ } algHeuristic = new FlexibleHeuristic(((PosNegLP)learningProblem).getNegativeExamples().size(), ((PosNegLP)learningProblem).getPercentPerLengthUnit()); } else { - if(learningProblem instanceof PosOnlyDefinitionLP) { - throw new RuntimeException("does not work with positive examples only yet"); - } - algHeuristic = new MultiHeuristic(((PosNegLP)learningProblem).getPositiveExamples().size(),((PosNegLP)learningProblem).getNegativeExamples().size()); + if(learningProblem instanceof PosOnlyLP) { +// throw new RuntimeException("does not work with positive examples only yet"); + algHeuristic = new MultiHeuristic(((PosOnlyLP)learningProblem).getPositiveExamples().size(),0); + } else { + algHeuristic = new MultiHeuristic(((PosNegLP)learningProblem).getPositiveExamples().size(),((PosNegLP)learningProblem).getNegativeExamples().size()); + } } // compute used concepts/roles from allowed/ignored Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-05-06 18:27:11 UTC (rev 831) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-05-13 11:11:07 UTC (rev 832) @@ -80,13 +80,17 @@ // basic setup: learning problem and reasoning service private ReasoningService rs; + // often the learning problems needn't be accessed directly; instead + // use the example sets below and the posonly variable private PosNegLP learningProblem; private PosOnlyDefinitionLP posOnlyLearningProblem; private Description startDescription; private boolean posOnly = false; private int nrOfExamples; private int nrOfPositiveExamples; + private Set<Individual> positiveExamples; private int nrOfNegativeExamples; + private Set<Individual> negativeExamples; // noise regulates how many positives can be misclassified and when the algorithm terminates private double noise = 0.0; @@ -199,7 +203,6 @@ private long evaluateSetCreationTimeNs = 0; private long improperConceptsRemovalTimeNs = 0; - // prefixes private String baseURI; @@ -227,8 +230,10 @@ PosNegLP lp = (PosNegLP) learningProblem; this.learningProblem = lp; posOnly = false; - nrOfPositiveExamples = lp.getPositiveExamples().size(); - nrOfNegativeExamples = lp.getNegativeExamples().size(); + positiveExamples = lp.getPositiveExamples(); + negativeExamples = lp.getNegativeExamples(); + nrOfPositiveExamples = positiveExamples.size(); + nrOfNegativeExamples = negativeExamples.size(); // System.out.println(nrOfPositiveExamples); // System.out.println(nrOfNegativeExamples); @@ -238,8 +243,11 @@ PosOnlyDefinitionLP lp = (PosOnlyDefinitionLP) learningProblem; this.posOnlyLearningProblem = lp; posOnly = true; + positiveExamples = lp.getPositiveExamples(); + negativeExamples = new TreeSet<Individual>(); nrOfPositiveExamples = lp.getPositiveExamples().size(); - nrOfNegativeExamples = lp.getPseudoNegatives().size(); +// nrOfNegativeExamples = lp.getPseudoNegatives().size(); + nrOfNegativeExamples = 0; } nrOfExamples = nrOfPositiveExamples + nrOfNegativeExamples; this.rs = rs; @@ -312,11 +320,11 @@ // start search with start class if(startDescription == null) { startNode = new ExampleBasedNode(Thing.instance); - startNode.setCoveredExamples(learningProblem.getPositiveExamples(), learningProblem.getNegativeExamples()); + startNode.setCoveredExamples(positiveExamples, negativeExamples); } else { startNode = new ExampleBasedNode(startDescription); - Set<Individual> coveredNegatives = rs.instanceCheck(startDescription, learningProblem.getNegativeExamples()); - Set<Individual> coveredPositives = rs.instanceCheck(startDescription, learningProblem.getPositiveExamples()); + Set<Individual> coveredNegatives = rs.instanceCheck(startDescription, negativeExamples); + Set<Individual> coveredPositives = rs.instanceCheck(startDescription, positiveExamples); startNode.setCoveredExamples(coveredPositives, coveredNegatives); } @@ -635,10 +643,11 @@ if(useOverlyGeneralList && refinement instanceof Union) { if(containsOverlyGeneralElement((Union)refinement)) { conceptTestsOverlyGeneralList++; - quality = getNumberOfNegatives(); +// quality = getNumberOfNegatives(); + quality = nrOfNegativeExamples; qualityKnown = true; newNode.setQualityEvaluationMethod(ExampleBasedNode.QualityEvaluationMethod.OVERLY_GENERAL_LIST); - newNode.setCoveredExamples(learningProblem.getPositiveExamples(), learningProblem.getNegativeExamples()); + newNode.setCoveredExamples(positiveExamples, negativeExamples); } } @@ -717,7 +726,7 @@ // we need to make sure that all positives are covered // before adding something to the overly general list - if((newNode.getCoveredPositives().size() == nrOfPositiveExamples) && quality == getNumberOfNegatives()) + if((newNode.getCoveredPositives().size() == nrOfPositiveExamples) && quality == nrOfNegativeExamples) overlyGeneralList.add(refinement); } @@ -833,20 +842,20 @@ + conceptTestsTooWeakList + "/" + conceptTestsOverlyGeneralList + "/" + redundantConcepts); } - @SuppressWarnings({"unused"}) - private int coveredNegativesOrTooWeak(Description concept) { - if(posOnly) - return posOnlyLearningProblem.coveredPseudoNegativeExamplesOrTooWeak(concept); - else - return learningProblem.coveredNegativeExamplesOrTooWeak(concept); - } +// @SuppressWarnings({"unused"}) +// private int coveredNegativesOrTooWeak(Description concept) { +// if(posOnly) +// return posOnlyLearningProblem.coveredPseudoNegativeExamplesOrTooWeak(concept); +// else +// return learningProblem.coveredNegativeExamplesOrTooWeak(concept); +// } - private int getNumberOfNegatives() { - if(posOnly) - return posOnlyLearningProblem.getPseudoNegatives().size(); - else - return learningProblem.getNegativeExamples().size(); - } +// private int getNumberOfNegatives() { +// if(posOnly) +// return posOnlyLearningProblem.getPseudoNegatives().size(); +// else +// return learningProblem.getNegativeExamples().size(); +// } private boolean containsTooWeakElement(Intersection mc) { for(Description child : mc.getChildren()) { @@ -1047,7 +1056,7 @@ return posOnlyLearningProblem.computeScore(getBestSolution()); else return learningProblem.computeScore(getBestSolution()); - } + } public ExampleBasedNode getStartNode() { return startNode; Modified: trunk/src/dl-learner/org/dllearner/cli/Start.java =================================================================== --- trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-05-06 18:27:11 UTC (rev 831) +++ trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-05-13 11:11:07 UTC (rev 832) @@ -787,11 +787,11 @@ */ public static Class<? extends LearningProblem> getLearningProblemClass(ConfFileOption problemOption) { Class<? extends LearningProblem> lpClass = null; - if (problemOption == null || problemOption.getStringValue().equals("posNegDefinition")) + if (problemOption == null || problemOption.getStringValue().equals("posNegDefinitionLP")) lpClass = PosNegDefinitionLP.class; - else if (problemOption.getStringValue().equals("posNegInclusion")) + else if (problemOption.getStringValue().equals("posNegInclusionLP")) lpClass = PosNegInclusionLP.class; - else if (problemOption.getStringValue().equals("posOnlyDefinition")) + else if (problemOption.getStringValue().equals("posOnlyDefinitionLP")) lpClass = PosOnlyDefinitionLP.class; else handleError("Unknown value " + problemOption.getValue() + " for option \"problem\"."); Modified: trunk/src/dl-learner/org/dllearner/tools/protege/ButtonList.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/ButtonList.java 2008-05-06 18:27:11 UTC (rev 831) +++ trunk/src/dl-learner/org/dllearner/tools/protege/ButtonList.java 2008-05-13 11:11:07 UTC (rev 832) @@ -4,7 +4,6 @@ import org.protege.editor.owl.ui.frame.InheritedAnonymousClassesFrameSection; import org.protege.editor.owl.ui.frame.OWLClassAssertionAxiomIndividualSection; import org.protege.editor.owl.ui.frame.OWLDisjointClassesAxiomFrameSection; -import org.protege.editor.owl.ui.frame.OWLEquivalentClassesAxiomFrameSection; import org.protege.editor.owl.ui.frame.OWLSubClassAxiomFrameSection; import org.semanticweb.owl.model.OWLClass; import org.protege.editor.owl.OWLEditorKit; Modified: trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java 2008-05-06 18:27:11 UTC (rev 831) +++ trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java 2008-05-13 11:11:07 UTC (rev 832) @@ -19,7 +19,6 @@ import org.semanticweb.owl.apibinding.OWLManager; import org.semanticweb.owl.model.AddAxiom; import org.semanticweb.owl.model.OWLAxiom; -import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLDataFactory; import org.semanticweb.owl.model.OWLDescription; import org.semanticweb.owl.model.OWLOntology; Modified: trunk/src/dl-learner/org/dllearner/tools/protege/SuggestEquivalentClassView.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/SuggestEquivalentClassView.java 2008-05-06 18:27:11 UTC (rev 831) +++ trunk/src/dl-learner/org/dllearner/tools/protege/SuggestEquivalentClassView.java 2008-05-13 11:11:07 UTC (rev 832) @@ -5,7 +5,6 @@ import java.awt.GridLayout; import java.util.*; -import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; import org.protege.editor.owl.ui.frame.OWLFrame; import javax.swing.JButton; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Jen...@us...> - 2008-05-13 14:17:49
|
Revision: 835 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=835&view=rev Author: JensLehmann Date: 2008-05-13 07:17:32 -0700 (Tue, 13 May 2008) Log Message: ----------- fixed cardinality restriction bugs in fast instance checker Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-05-13 13:45:10 UTC (rev 834) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-05-13 14:17:32 UTC (rev 835) @@ -1069,8 +1069,11 @@ public void printBestSolutions(int nrOfSolutions){ - if(!logger.getLevel().toString().equalsIgnoreCase("TRACE"))return; - if(nrOfSolutions==0)nrOfSolutions=candidatesStable.size(); + if(!logger.isTraceEnabled()) + return; +// if(!logger.getLevel().toString().equalsIgnoreCase("TRACE"))return; + if(nrOfSolutions==0) + nrOfSolutions=candidatesStable.size(); int i=0; for(ExampleBasedNode n : candidatesStable.descendingSet()) { logger.trace(n.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); Modified: trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2008-05-13 13:45:10 UTC (rev 834) +++ trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2008-05-13 14:17:32 UTC (rev 835) @@ -337,6 +337,9 @@ int nrOfFillers = 0; SortedSet<Individual> roleFillers = opPos.get(op).get(individual); + // special case: there are always at least zero fillers + if(number == 0) + return true; // return false if there are none or not enough role fillers if (roleFillers == null || roleFillers.size() < number) return false; @@ -372,19 +375,21 @@ } int number = ((ObjectCardinalityRestriction) description).getNumber(); - int nrOfFillers = 0; + int nrOfFillers = 0; SortedSet<Individual> roleFillers = opPos.get(op).get(individual); - // return false if there are none or not enough role fillers - if (roleFillers == null || roleFillers.size() > number) + // return true if there are none or not enough role fillers + if (roleFillers == null || roleFillers.size() < number) return true; +// System.out.println(description + " " + individual); + int index = 0; for (Individual roleFiller : roleFillers) { index++; if (instanceCheck(child, roleFiller)) { nrOfFillers++; - if(nrOfFillers == number) + if(nrOfFillers > number) return false; // earyl abort: e.g. <= 5 hasStructure.Methyl; // if there are 6 fillers and 2 are not Methyl, the result is true This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-05-13 15:58:34
|
Revision: 836 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=836&view=rev Author: kurzum Date: 2008-05-13 08:55:28 -0700 (Tue, 13 May 2008) Log Message: ----------- moved most special comparator to function printbestsolutions Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-05-13 14:17:32 UTC (rev 835) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-05-13 15:55:28 UTC (rev 836) @@ -456,16 +456,7 @@ logger.debug(manchester); logger.debug(KBSyntax); - boolean showOrderedSolutions = true; - if(showOrderedSolutions) { - System.out.println("ordered by generality (most special solutions first):"); - SubsumptionComparator sc = new SubsumptionComparator(rs); - TreeSet<Description> solutionsOrderedBySubsumption = new TreeSet<Description>(sc); - solutionsOrderedBySubsumption.addAll(solutions); - for(Description d : solutionsOrderedBySubsumption) - System.out.println(d); - } } logger.debug("size of candidate set: " + candidates.size()); @@ -1076,11 +1067,22 @@ nrOfSolutions=candidatesStable.size(); int i=0; for(ExampleBasedNode n : candidatesStable.descendingSet()) { - logger.trace(n.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); + logger.trace("best: "+n.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); if(i==nrOfSolutions) return ; i++; } + + boolean showOrderedSolutions = true; + + if(showOrderedSolutions) { + logger.trace("ordered by generality (most special solutions first):"); + SubsumptionComparator sc = new SubsumptionComparator(rs); + TreeSet<Description> solutionsOrderedBySubsumption = new TreeSet<Description>(sc); + solutionsOrderedBySubsumption.addAll(solutions); + for(Description d : solutionsOrderedBySubsumption) + logger.trace("special: "+d); + } /*for (int j = 0; j < solutions.size(); j++) { Description d = solutions.get(j); logger.trace(d.toString()); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java 2008-05-13 14:17:32 UTC (rev 835) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java 2008-05-13 15:55:28 UTC (rev 836) @@ -276,7 +276,7 @@ public static SparqlEndpoint EndpointMusicbrainz() { URL u = null; try { - u = new URL(" http://dbtune.org/musicbrainz/sparql"); + u = new URL("http://dbtune.org/musicbrainz/sparql"); } catch (Exception e) { e.printStackTrace(); } @@ -287,7 +287,7 @@ public static SparqlEndpoint EndpointUSCensus() { URL u = null; try { - u = new URL(" http://www.rdfabout.com/sparql"); + u = new URL("http://www.rdfabout.com/sparql"); } 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-13 23:55:29
|
Revision: 837 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=837&view=rev Author: kurzum Date: 2008-05-13 16:55:24 -0700 (Tue, 13 May 2008) Log Message: ----------- more endpoints, started to implement experiment Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.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/AutomaticExampleFinderSPARQL.java trunk/src/dl-learner/org/dllearner/utilities/SetManipulation.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java 2008-05-13 15:55:28 UTC (rev 836) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java 2008-05-13 23:55:24 UTC (rev 837) @@ -120,6 +120,10 @@ ll.add(EndpointSWConference()); ll.add(EndpointUSCensus()); ll.add(EndpointWorldFactBook()); + ll.add(EndpointRiese()); + ll.add(EndpointTalisBlogs()); + ll.add(EndpointSWSchool()); + ll.add(EndpointSparqlette()); return ll; } @@ -282,6 +286,16 @@ } return new SparqlEndpoint(u); } + + public static SparqlEndpoint EndpointRiese() { + URL u = null; + try { + u = new URL("http://riese.joanneum.at:3020/"); + } catch (Exception e) { + e.printStackTrace(); + } + return new SparqlEndpoint(u); + } public static SparqlEndpoint EndpointUSCensus() { @@ -312,9 +326,41 @@ return new SparqlEndpoint(u); } + + public static SparqlEndpoint EndpointTalisBlogs() { + URL u = null; + try { + u = new URL("http://api.talis.com/stores/talisians/services/sparql"); + } catch (Exception e) { + e.printStackTrace(); + } + return new SparqlEndpoint(u); + } + + public static SparqlEndpoint EndpointSparqlette() { + URL u = null; + try { + u = new URL("http://www.wasab.dk/morten/2005/04/sparqlette/"); + } catch (Exception e) { + e.printStackTrace(); + } + return new SparqlEndpoint(u); + } + + + + public static SparqlEndpoint EndpointSWSchool() { + URL u = null; + try { + u = new URL("http://sparql.semantic-web.at/snorql/"); + } catch (Exception e) { + e.printStackTrace(); + } + return new SparqlEndpoint(u); + } + - } Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-05-13 15:55:28 UTC (rev 836) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-05-13 23:55:24 UTC (rev 837) @@ -10,12 +10,17 @@ import org.apache.log4j.SimpleLayout; import org.dllearner.kb.sparql.Cache; import org.dllearner.kb.sparql.SparqlKnowledgeSource; +import org.dllearner.kb.sparql.SparqlQuery; import org.dllearner.kb.sparql.configuration.SparqlEndpoint; import org.dllearner.utilities.AutomaticExampleFinderRolesSPARQL; import org.dllearner.utilities.AutomaticExampleFinderSPARQL; import org.dllearner.utilities.ConfWriter; +import org.dllearner.utilities.JenaResultSetConvenience; +import org.dllearner.utilities.SetManipulation; import org.dllearner.utilities.SimpleClock; +import com.hp.hpl.jena.query.ResultSet; + public class SPARQLMassLearning { static Cache c; @@ -72,9 +77,9 @@ standardSettings=standardSettingsRefexamples+standardDBpedia; //standardSettings=standardSettingsRefinement+standardDBpedia; - //DBpedia(); + DBpedia(); //algorithm="refinement"; - roles(); + //roles(); /*System.out.println(Level.DEBUG.getClass()); System.out.println(Level.toLevel("INFO")); @@ -142,7 +147,13 @@ //concepts.add("(EXISTS \"monarch\".TOP AND EXISTS \"predecessor\".(\"Knight\" OR \"Secretary\"))"); SortedSet<String> concepts = new TreeSet<String>(); - concepts.add("(\"http://dbpedia.org/class/yago/HeadOfState110164747\" AND (\"http://dbpedia.org/class/yago/Negotiator110351874\" AND \"http://dbpedia.org/class/yago/Representative110522035\"))"); + SortedSet<String> tmpSet=selectDBpediaConcepts(20); + System.out.println(concepts.size()); + for (String string : tmpSet) { + concepts.add("\""+string+"\""); + } + + //concepts.add("(\"http://dbpedia.org/class/yago/HeadOfState110164747\" AND (\"http://dbpedia.org/class/yago/Negotiator110351874\" AND \"http://dbpedia.org/class/yago/Representative110522035\"))"); //concepts.add("\"http://dbpedia.org/class/yago/Person100007846\""); //concepts.add("\"http://dbpedia.org/class/yago/FieldMarshal110086821\""); //concepts.add("http://dbpedia.org/resource/Category:Prime_Ministers_of_the_United_Kingdom"); @@ -232,10 +243,21 @@ logger.removeAllAppenders(); logger.addAppender(consoleAppender); logger.setLevel(Level.DEBUG); + c = new Cache(); } + public static SortedSet<String> selectDBpediaConcepts(int number){ + String query = "SELECT DISTINCT ?concept WHERE { \n" + + "[] a ?concept }\n"; + + 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); + } + } Modified: trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java 2008-05-13 15:55:28 UTC (rev 836) +++ trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java 2008-05-13 23:55:24 UTC (rev 837) @@ -34,9 +34,9 @@ logger.addAppender(consoleAppender); logger.setLevel(Level.DEBUG); Logger.getLogger(SparqlKnowledgeSource.class).setLevel(Level.INFO); + //SELECT DISTINCT ?c WHERE {[] a ?c }LIMIT 100 - LinkedList<SparqlEndpoint> ll = SparqlEndpoint.listEndpoints(); Modified: trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java 2008-05-13 15:55:28 UTC (rev 836) +++ trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java 2008-05-13 23:55:24 UTC (rev 837) @@ -34,7 +34,10 @@ 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) { Modified: trunk/src/dl-learner/org/dllearner/utilities/SetManipulation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/SetManipulation.java 2008-05-13 15:55:28 UTC (rev 836) +++ trunk/src/dl-learner/org/dllearner/utilities/SetManipulation.java 2008-05-13 23:55:24 UTC (rev 837) @@ -24,10 +24,12 @@ //System.out.println("treshold"+allRetrieved.size()); //System.out.println("treshold"+treshold); - for (String oneInd : set) { - if(r.nextDouble()<treshold) { - ret.add(oneInd); - + while(ret.size()< limit){ + for (String oneInd : set) { + if(r.nextDouble()<treshold) { + ret.add(oneInd); + if(ret.size()>= limit)break; + } } } return ret; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-05-14 14:26:40
|
Revision: 840 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=840&view=rev Author: kurzum Date: 2008-05-14 07:26:34 -0700 (Wed, 14 May 2008) Log Message: ----------- quick hack Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java trunk/src/dl-learner/org/dllearner/core/owl/SubsumptionHierarchy.java trunk/src/dl-learner/org/dllearner/kb/sparql/datastructure/InstanceNode.java trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-05-14 12:15:26 UTC (rev 839) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-05-14 14:26:34 UTC (rev 840) @@ -1067,9 +1067,10 @@ nrOfSolutions=candidatesStable.size(); int i=0; for(ExampleBasedNode n : candidatesStable.descendingSet()) { + if (n.getAccuracy(nrOfPositiveExamples, nrOfNegativeExamples)<1)break; logger.trace("best: "+n.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); if(i==nrOfSolutions) - return ; + break ; i++; } Modified: trunk/src/dl-learner/org/dllearner/core/owl/SubsumptionHierarchy.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/SubsumptionHierarchy.java 2008-05-14 12:15:26 UTC (rev 839) +++ trunk/src/dl-learner/org/dllearner/core/owl/SubsumptionHierarchy.java 2008-05-14 14:26:34 UTC (rev 840) @@ -74,7 +74,9 @@ for(Description c : allowedConceptsInSubsumptionHierarchy) { // schauen, ob es mehrere allgemeinere Nachbarn gibt SortedSet<Description> moreGeneral = subsumptionHierarchyUp.get(c); - if(moreGeneral != null) { + //RBC + if(moreGeneral != null && moreGeneral.size()>0) { + System.out.println(moreGeneral); Description chosenParent = moreGeneral.first(); hierarchyDownNew.get(chosenParent).add(c); } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/datastructure/InstanceNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/datastructure/InstanceNode.java 2008-05-14 12:15:26 UTC (rev 839) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/datastructure/InstanceNode.java 2008-05-14 14:26:34 UTC (rev 840) @@ -60,6 +60,9 @@ Iterator<StringTuple> it = s.iterator(); while (it.hasNext()) { StringTuple t = (StringTuple) it.next(); + //RBC + if(!t.b.startsWith("http:"))continue; + // basically : if p is rdf:type then o is a class // else it is an instance try { Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-05-14 12:15:26 UTC (rev 839) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-05-14 14:26:34 UTC (rev 840) @@ -1,6 +1,7 @@ package org.dllearner.scripts; import java.net.URLEncoder; +import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; @@ -16,6 +17,7 @@ import org.dllearner.utilities.AutomaticExampleFinderSPARQL; import org.dllearner.utilities.ConfWriter; import org.dllearner.utilities.JenaResultSetConvenience; +import org.dllearner.utilities.LearnSparql; import org.dllearner.utilities.SetManipulation; import org.dllearner.utilities.SimpleClock; @@ -152,7 +154,8 @@ for (String string : tmpSet) { concepts.add("\""+string+"\""); } - + concepts.remove(concepts.first()); + concepts.remove(concepts.first()); //concepts.add("(\"http://dbpedia.org/class/yago/HeadOfState110164747\" AND (\"http://dbpedia.org/class/yago/Negotiator110351874\" AND \"http://dbpedia.org/class/yago/Representative110522035\"))"); //concepts.add("\"http://dbpedia.org/class/yago/Person100007846\""); //concepts.add("\"http://dbpedia.org/class/yago/FieldMarshal110086821\""); @@ -167,37 +170,46 @@ //HashMap<String, String> result2 = new HashMap<String, String>(); //System.out.println(concepts.first()); //logger.setLevel(Level.TRACE); - AutomaticExampleFinderSPARQL ae= new AutomaticExampleFinderSPARQL( se); - //System.out.println(new JenaResultSetConvenience(ae.queryConcept(concepts.first(), 0)).getStringListForVariable("?subject") );; - //System.out.println(new JenaResultSetConvenience(ae.queryConcept(concepts.first(), 0)).getStringListForVariable("?subject").size() );; - //ae.getSubClasses(concepts.first()); - //System.exit(0); - - ae.initDBpedia(concepts.first(), useRelated, useSuperClasses,useParallelClasses, poslimit, neglimit); + int i=0; + for (String oneConcept : concepts) { + if(i>=2)break; + i++; + AutomaticExampleFinderSPARQL ae= new AutomaticExampleFinderSPARQL( se); + useRelated = false; + useSuperClasses=true; + useParallelClasses=false; + poslimit=2; + neglimit=2; + ae.initDBpedia(concepts.first(), useRelated, useSuperClasses,useParallelClasses, poslimit, neglimit); + posExamples = ae.getPosExamples(); + negExamples = ae.getNegExamples(); + + // System.out.println(posExamples); + // System.out.println(negExamples); + + String tmp = concepts.first().replace("http://dbpedia.org/resource/Category:", "").replace("\"",""); + tmp = tmp.replace("http://dbpedia.org/class/yago/", ""); + tmp = tmp.replace("http://dbpedia.org/property/", ""); + String confname = ""; + try{ + confname = URLEncoder.encode(tmp, "UTF-8")+".conf"; + }catch (Exception e) {e.printStackTrace();} + // + //ConfWriter cf=new ConfWriter(); + //cf.addToStats("relearned concept: "+concepts.first()); + System.out.println(confname); + LearnSparql ls = new LearnSparql(); + TreeSet<String> igno = new TreeSet<String>(); + System.out.println(oneConcept); + //igno.add(oneConcept.replaceAll("\"", "")); + ls.learnDBpedia(posExamples, negExamples, "http://dbpedia.openlinksw.com:8890/sparql",igno,1); + System.out.println("AAAAAAAA"); + //System.exit(0); + //"relearned concept: "; + //cf.writeSPARQL(confname, posExamples, negExamples, url, new TreeSet<String>(),standardSettings,algorithm); + // - posExamples = ae.getPosExamples(); - negExamples = ae.getNegExamples(); - - System.out.println(posExamples); - System.out.println(negExamples); - //System.exit(0); - String tmp = concepts.first().replace("http://dbpedia.org/resource/Category:", "").replace("\"",""); - tmp = tmp.replace("http://dbpedia.org/class/yago/", ""); - tmp = tmp.replace("http://dbpedia.org/property/", ""); - String confname = ""; - try{ - confname = URLEncoder.encode(tmp, "UTF-8")+".conf"; - }catch (Exception e) {e.printStackTrace();} - // - ConfWriter cf=new ConfWriter(); - cf.addToStats("relearned concept: "+concepts.first()); - - //System.exit(0); - //"relearned concept: "; - cf.writeSPARQL(confname, posExamples, negExamples, url, new TreeSet<String>(),standardSettings,algorithm); - //new LearnSparql().learn(posExamples, negExamples, "http://dbpedia.openlinksw.com:8890/sparql", new TreeSet<String>()); - - + } } @@ -250,7 +262,8 @@ public static SortedSet<String> selectDBpediaConcepts(int number){ String query = "SELECT DISTINCT ?concept WHERE { \n" + - "[] a ?concept }\n"; + "[] a ?concept .FILTER (regex(str(?concept),'yago'))" + + " \n} LIMIT "+number+" \n"; String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); Modified: trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-05-14 12:15:26 UTC (rev 839) +++ trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-05-14 14:26:34 UTC (rev 840) @@ -21,8 +21,8 @@ - public void learn(SortedSet<String> posExamples,SortedSet<String> negExamples, - String uri, SortedSet<String> ignoredConcepts){ + public void learnDBpedia(SortedSet<String> posExamples,SortedSet<String> negExamples, + String uri, SortedSet<String> ignoredConcepts, int recursiondepth){ ComponentManager cm = ComponentManager.getInstance(); @@ -40,9 +40,9 @@ instances.addAll(negExamples); cm.applyConfigEntry(ks, "instances",instances); cm.applyConfigEntry(ks, "url",uri); - cm.applyConfigEntry(ks, "recursionDepth",1); - cm.applyConfigEntry(ks, "predefinedFilter",1); - cm.applyConfigEntry(ks, "predefinedEndpoint",1); + cm.applyConfigEntry(ks, "recursionDepth",recursiondepth); + cm.applyConfigEntry(ks, "predefinedFilter","YAGOSKOS"); + cm.applyConfigEntry(ks, "predefinedEndpoint","DBPEDIA"); //cm.applyConfigEntry(ks, "format","KB"); ks.init(); @@ -70,11 +70,12 @@ cm.applyConfigEntry(la,"useCardinalityRestrictions",false); cm.applyConfigEntry(la,"useNegation",false); cm.applyConfigEntry(la,"minExecutionTimeInSeconds",0); - cm.applyConfigEntry(la,"maxExecutionTimeInSeconds",900); - cm.applyConfigEntry(la,"guaranteeXgoodDescriptions",999999); + cm.applyConfigEntry(la,"maxExecutionTimeInSeconds",10); + //cm.applyConfigEntry(la,"guaranteeXgoodDescriptions",999999); cm.applyConfigEntry(la,"logLevel","TRACE"); //cm.applyConfigEntry(la,"quiet",false); + //System.out.println(ignoredConcepts.first());; if(ignoredConcepts.size()>0) cm.applyConfigEntry(la,"ignoredConcepts",ignoredConcepts); la.init(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-05-14 16:09:12
|
Revision: 845 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=845&view=rev Author: kurzum Date: 2008-05-14 09:07:24 -0700 (Wed, 14 May 2008) Log Message: ----------- added local SPARQL endpoint Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/cli/Start.java trunk/src/dl-learner/org/dllearner/core/owl/SubsumptionHierarchy.java trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java Modified: trunk/src/dl-learner/org/dllearner/cli/Start.java =================================================================== --- trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-05-14 15:18:05 UTC (rev 844) +++ trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-05-14 16:07:24 UTC (rev 845) @@ -125,7 +125,8 @@ logger.removeAllAppenders(); logger.addAppender(consoleAppender); logger.addAppender(fileAppender); - logger.setLevel(Level.DEBUG); + logger.setLevel(Level.TRACE); + //Logger.getLogger(KnowledgeSource.class).setLevel(Level.TRACE); Start start = null; start = new Start(file); Modified: trunk/src/dl-learner/org/dllearner/core/owl/SubsumptionHierarchy.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/SubsumptionHierarchy.java 2008-05-14 15:18:05 UTC (rev 844) +++ trunk/src/dl-learner/org/dllearner/core/owl/SubsumptionHierarchy.java 2008-05-14 16:07:24 UTC (rev 845) @@ -76,7 +76,7 @@ SortedSet<Description> moreGeneral = subsumptionHierarchyUp.get(c); //RBC if(moreGeneral != null && moreGeneral.size()>0) { - System.out.println(moreGeneral); + //System.out.println(moreGeneral); Description chosenParent = moreGeneral.first(); hierarchyDownNew.get(chosenParent).add(c); } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java 2008-05-14 15:18:05 UTC (rev 844) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java 2008-05-14 16:07:24 UTC (rev 845) @@ -88,6 +88,8 @@ if (name.equals("DBPEDIA")) return EndpointDBpedia(); + if (name.equals("LOCALDBPEDIA")) + return EndpointLOCALDBpedia(); if (name.equals("LOCALJOSECKI")) return EndpointlocalJoseki(); if (name.equals("GOVTRACK")) @@ -104,6 +106,8 @@ return EndpointWorldFactBook(); if (name.equals("DBLP")) return EndpointDBLP(); + if (name.equals("MUSICBRAINZ")) + return EndpointMusicbrainz(); return null; } @@ -142,6 +146,18 @@ defaultGraphURIs.add("http://dbpedia.org"); return new SparqlEndpoint(u, defaultGraphURIs, new LinkedList<String>()); } + + public static SparqlEndpoint EndpointLOCALDBpedia() { + URL u = null; + try { + u = new URL("http://139.18.2.37:8890/sparql"); + } catch (Exception e) { + e.printStackTrace(); + } + LinkedList<String> defaultGraphURIs=new LinkedList<String>(); + defaultGraphURIs.add("http://dbpedia.org"); + return new SparqlEndpoint(u, defaultGraphURIs, new LinkedList<String>()); + } public static SparqlEndpoint EndpointlocalJoseki() { URL u = null; Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-05-14 15:18:05 UTC (rev 844) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-05-14 16:07:24 UTC (rev 845) @@ -6,6 +6,7 @@ import java.util.TreeSet; 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; @@ -145,7 +146,7 @@ } static void DBpedia(){ - se = SparqlEndpoint.EndpointDBpedia(); + se = SparqlEndpoint.EndpointLOCALDBpedia(); //concepts.add("(EXISTS \"monarch\".TOP AND EXISTS \"predecessor\".(\"Knight\" OR \"Secretary\"))"); SortedSet<String> concepts = new TreeSet<String>(); @@ -156,6 +157,8 @@ } concepts.remove(concepts.first()); concepts.remove(concepts.first()); + concepts.remove(concepts.first()); + concepts.remove(concepts.first()); //concepts.add("(\"http://dbpedia.org/class/yago/HeadOfState110164747\" AND (\"http://dbpedia.org/class/yago/Negotiator110351874\" AND \"http://dbpedia.org/class/yago/Representative110522035\"))"); //concepts.add("\"http://dbpedia.org/class/yago/Person100007846\""); //concepts.add("\"http://dbpedia.org/class/yago/FieldMarshal110086821\""); @@ -166,21 +169,22 @@ SortedSet<String> posExamples = new TreeSet<String>(); SortedSet<String> negExamples = new TreeSet<String>(); String url = "http://dbpedia.openlinksw.com:8890/sparql"; + url = "http://139.18.2.37:8890/sparql"; //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); int i=0; for (String oneConcept : concepts) { - if(i>=2)break; + if(i>=3)break; i++; AutomaticExampleFinderSPARQL ae= new AutomaticExampleFinderSPARQL( se); - useRelated = false; - useSuperClasses=true; - useParallelClasses=false; + useRelated = true; + useSuperClasses = true; + useParallelClasses = true; poslimit=2; neglimit=2; - ae.initDBpedia(concepts.first(), useRelated, useSuperClasses,useParallelClasses, poslimit, neglimit); + ae.initDBpedia(oneConcept, useRelated, useSuperClasses,useParallelClasses, poslimit, neglimit); posExamples = ae.getPosExamples(); negExamples = ae.getNegExamples(); @@ -202,7 +206,7 @@ TreeSet<String> igno = new TreeSet<String>(); System.out.println(oneConcept); //igno.add(oneConcept.replaceAll("\"", "")); - ls.learnDBpedia(posExamples, negExamples, "http://dbpedia.openlinksw.com:8890/sparql",igno,1); + ls.learnDBpedia(posExamples, negExamples, url,igno,1); System.out.println("AAAAAAAA"); //System.exit(0); //"relearned concept: "; @@ -247,13 +251,18 @@ public static void init() { - + SimpleLayout layout = new SimpleLayout(); // create logger (a simple logger which outputs // its messages to the console) - SimpleLayout layout = new SimpleLayout(); + FileAppender fileAppender =null; ; + try{ + fileAppender = new FileAppender(layout,"the_log.txt",false); + }catch (Exception e) {e.printStackTrace();} + ConsoleAppender consoleAppender = new ConsoleAppender(layout); logger.removeAllAppenders(); logger.addAppender(consoleAppender); + logger.addAppender(fileAppender); logger.setLevel(Level.DEBUG); c = new Cache(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-05-15 00:23:32
|
Revision: 848 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=848&view=rev Author: kurzum Date: 2008-05-14 17:23:29 -0700 (Wed, 14 May 2008) Log Message: ----------- evaluation Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/Configuration.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/utilities/AutomaticExampleFinderSPARQL.java trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java trunk/src/dl-learner/org/dllearner/utilities/SetManipulation.java trunk/src/dl-learner/org/dllearner/utilities/SimpleClock.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/scripts/SPARQLExtractionEvaluation.java trunk/src/dl-learner/org/dllearner/utilities/Statistics.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.java 2008-05-14 16:15:43 UTC (rev 847) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.java 2008-05-15 00:23:29 UTC (rev 848) @@ -28,6 +28,7 @@ import org.dllearner.kb.sparql.configuration.SparqlEndpoint; import org.dllearner.kb.sparql.configuration.SparqlQueryType; import org.dllearner.kb.sparql.datastructure.Node; +import org.dllearner.utilities.Statistics; /** * An object of this class encapsulates everything. @@ -40,7 +41,8 @@ private Configuration configuration; private TypedSparqlQuery typedSparqlQuery; private ExtractionAlgorithm extractionAlgorithm; - + + public void useConfiguration(SparqlQueryType SparqlQueryType, SparqlEndpoint SparqlEndpoint, Manipulator manipulator, int recursiondepth, boolean getAllSuperClasses, @@ -98,6 +100,7 @@ * ret.remove(tmp); System.out.println(ret.size()); } /*for (String str : * ret) { nt += str + "\n"; } */ + Statistics.addTriples(ret.size()); return nt.toString(); } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-05-14 16:15:43 UTC (rev 847) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-05-15 00:23:29 UTC (rev 848) @@ -49,6 +49,7 @@ import org.dllearner.parser.KBParser; import org.dllearner.reasoning.DIGConverter; import org.dllearner.reasoning.JenaOWLDIGConverter; +import org.dllearner.utilities.SimpleClock; import org.dllearner.utilities.StringTuple; /** @@ -60,6 +61,9 @@ */ public class SparqlKnowledgeSource extends KnowledgeSource { + //statistic + public int numberOfTriples=0; + //DEFAULTS static int recursionDepthDefault = 1; @@ -268,6 +272,7 @@ @Override public void init() { logger.info("SparqlModul: Collecting Ontology"); + SimpleClock sc=new SimpleClock(); /* * TODO remove when Jena works SparqlOntologyCollector oc= // new * SparqlOntologyCollector(Datastructures.setToArray(instances), // @@ -316,6 +321,7 @@ String ont = ""; // the actual extraction is started here ont = m.extract(instances); + logger.info("Number of cached SPARQL queries: " + m.getConfiguration().numberOfCachedSparqlQueries); logger.info("Number of uncached SPARQL queries: " @@ -352,7 +358,7 @@ } catch (Exception e) { e.printStackTrace(); } - logger.info("SparqlModul: ****Finished"); + logger.info("SparqlModul: ****Finished " + sc.getAndSet("") ); } /* Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/Configuration.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/Configuration.java 2008-05-14 16:15:43 UTC (rev 847) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/Configuration.java 2008-05-15 00:23:29 UTC (rev 848) @@ -34,7 +34,7 @@ private Manipulator manipulator; // the following needs to be moved to // class extraction algorithm or manipulator - private int recursiondepth = 2; + private int recursiondepth; private boolean getAllSuperClasses = true; private boolean closeAfterRecursion = true; public int numberOfUncachedSparqlQueries = 0; Added: trunk/src/dl-learner/org/dllearner/scripts/SPARQLExtractionEvaluation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLExtractionEvaluation.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLExtractionEvaluation.java 2008-05-15 00:23:29 UTC (rev 848) @@ -0,0 +1,144 @@ +package org.dllearner.scripts; + +import java.net.URLEncoder; +import java.util.SortedSet; +import java.util.TreeSet; + +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; +import org.dllearner.kb.sparql.Cache; +import org.dllearner.kb.sparql.SparqlKnowledgeSource; +import org.dllearner.kb.sparql.SparqlQuery; +import org.dllearner.kb.sparql.configuration.SparqlEndpoint; +import org.dllearner.utilities.AutomaticExampleFinderRolesSPARQL; +import org.dllearner.utilities.AutomaticExampleFinderSPARQL; +import org.dllearner.utilities.ConfWriter; +import org.dllearner.utilities.JenaResultSetConvenience; +import org.dllearner.utilities.LearnSparql; +import org.dllearner.utilities.SetManipulation; +import org.dllearner.utilities.SimpleClock; +import org.dllearner.utilities.Statistics; + +import com.hp.hpl.jena.query.ResultSet; + +public class SPARQLExtractionEvaluation { + + static Cache c; + static SparqlEndpoint se; + private static Logger logger = Logger.getRootLogger(); + + //static String standardSettings=""; + //static String algorithm="refexamples"; + + //vars + static boolean useRelated = true; + static boolean useSuperClasses = true; + static boolean useParallelClasses = true; + static int poslimit = 10; + static int neglimit = 10; + + /** + * @param args + */ + public static void main(String[] args) { + init(); + //logger.setLevel(Level.TRACE); + logger.setLevel(Level.WARN); + Logger.getLogger(SparqlKnowledgeSource.class).setLevel(Level.WARN); + //System.out.println(Logger.getLogger(SparqlQuery.class).getLevel()); + SimpleClock sc=new SimpleClock(); + LocalDBpediaEvaluation(); + + sc.printAndSet("Finished"); + + } + + + static void LocalDBpediaEvaluation(){ + se = SparqlEndpoint.EndpointLOCALDBpedia(); + int number=1; + SortedSet<String> concepts = new TreeSet<String>(); + SortedSet<String> tmpSet=selectDBpediaConcepts(number); + + for (String string : tmpSet) { + concepts.add("\""+string+"\""); + } + + SortedSet<String> posExamples = new TreeSet<String>(); + SortedSet<String> negExamples = new TreeSet<String>(); + + String url = "http://139.18.2.37:8890/sparql"; + int recursiondepth=0; + boolean closeAfterRecursion=false; + + for(int i=0;i<8;i++) { + if(i==0){;} + else if(closeAfterRecursion) { + closeAfterRecursion=false; + recursiondepth++; + } + else { + closeAfterRecursion=true; + } + Statistics.setCurrentLabel(recursiondepth+""+((closeAfterRecursion)?"+":"")); + + + for (String oneConcept : concepts) { + AutomaticExampleFinderSPARQL ae= new AutomaticExampleFinderSPARQL( se); + + ae.initDBpedia(oneConcept, useRelated, useSuperClasses,useParallelClasses, poslimit, neglimit); + posExamples = ae.getPosExamples(); + negExamples = ae.getNegExamples(); + + + LearnSparql ls = new LearnSparql(); + TreeSet<String> igno = new TreeSet<String>(); + System.out.println(oneConcept); + + ls.learnDBpedia(posExamples, negExamples, url,igno,recursiondepth, closeAfterRecursion); + + + } + } + Statistics.print(number); + } + + + + public static void init() { + + SimpleLayout layout = new SimpleLayout(); + // create logger (a simple logger which outputs + // its messages to the console) + FileAppender fileAppender =null; ; + try{ + fileAppender = new FileAppender(layout,"the_log.txt",false); + }catch (Exception e) {e.printStackTrace();} + + ConsoleAppender consoleAppender = new ConsoleAppender(layout); + logger.removeAllAppenders(); + logger.addAppender(consoleAppender); + logger.addAppender(fileAppender); + + c = new Cache(); + + + } + + public static SortedSet<String> selectDBpediaConcepts(int number){ + String query = "SELECT DISTINCT ?concept WHERE { \n" + + "[] a ?concept .FILTER (regex(str(?concept),'yago'))" + + " \n} LIMIT "+1000+" \n"; // + + 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); + } + + + +} Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-05-14 16:15:43 UTC (rev 847) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-05-15 00:23:29 UTC (rev 848) @@ -1,7 +1,6 @@ package org.dllearner.scripts; import java.net.URLEncoder; -import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; @@ -21,6 +20,7 @@ import org.dllearner.utilities.LearnSparql; import org.dllearner.utilities.SetManipulation; import org.dllearner.utilities.SimpleClock; +import org.dllearner.utilities.Statistics; import com.hp.hpl.jena.query.ResultSet; @@ -159,6 +159,10 @@ concepts.remove(concepts.first()); concepts.remove(concepts.first()); concepts.remove(concepts.first()); + concepts.remove(concepts.first()); + concepts.remove(concepts.first()); + concepts.remove(concepts.first()); + //concepts.remove(concepts.first()); //concepts.add("(\"http://dbpedia.org/class/yago/HeadOfState110164747\" AND (\"http://dbpedia.org/class/yago/Negotiator110351874\" AND \"http://dbpedia.org/class/yago/Representative110522035\"))"); //concepts.add("\"http://dbpedia.org/class/yago/Person100007846\""); //concepts.add("\"http://dbpedia.org/class/yago/FieldMarshal110086821\""); @@ -174,46 +178,51 @@ //HashMap<String, String> result2 = new HashMap<String, String>(); //System.out.println(concepts.first()); //logger.setLevel(Level.TRACE); + String concept=concepts.first(); int i=0; + Statistics.setCurrentLabel("0"); + int recursiondepth=0; + boolean closeAfterRecursion=false; + int numberOfTriples = 0; for (String oneConcept : concepts) { - if(i>=3)break; - i++; - AutomaticExampleFinderSPARQL ae= new AutomaticExampleFinderSPARQL( se); + AutomaticExampleFinderSPARQL ae= new AutomaticExampleFinderSPARQL( se); useRelated = true; useSuperClasses = true; - useParallelClasses = true; - poslimit=2; - neglimit=2; - ae.initDBpedia(oneConcept, useRelated, useSuperClasses,useParallelClasses, poslimit, neglimit); + useParallelClasses = false; + + poslimit=10; + neglimit=10; + ae.initDBpedia(concept, useRelated, useSuperClasses,useParallelClasses, poslimit, neglimit); posExamples = ae.getPosExamples(); negExamples = ae.getNegExamples(); + - // System.out.println(posExamples); - // System.out.println(negExamples); - - String tmp = concepts.first().replace("http://dbpedia.org/resource/Category:", "").replace("\"",""); + /*String tmp = concepts.first().replace("http://dbpedia.org/resource/Category:", "").replace("\"",""); tmp = tmp.replace("http://dbpedia.org/class/yago/", ""); tmp = tmp.replace("http://dbpedia.org/property/", ""); String confname = ""; try{ confname = URLEncoder.encode(tmp, "UTF-8")+".conf"; - }catch (Exception e) {e.printStackTrace();} + }catch (Exception e) {e.printStackTrace();}*/ // //ConfWriter cf=new ConfWriter(); //cf.addToStats("relearned concept: "+concepts.first()); - System.out.println(confname); + //System.out.println(confname); LearnSparql ls = new LearnSparql(); TreeSet<String> igno = new TreeSet<String>(); System.out.println(oneConcept); //igno.add(oneConcept.replaceAll("\"", "")); - ls.learnDBpedia(posExamples, negExamples, url,igno,1); - System.out.println("AAAAAAAA"); + + ls.learnDBpedia(posExamples, negExamples, url,igno,recursiondepth, closeAfterRecursion); + + //System.out.println("AAAAAAAA"); //System.exit(0); //"relearned concept: "; //cf.writeSPARQL(confname, posExamples, negExamples, url, new TreeSet<String>(),standardSettings,algorithm); // } + //Statistics.print(); } @@ -272,7 +281,7 @@ public static SortedSet<String> selectDBpediaConcepts(int number){ String query = "SELECT DISTINCT ?concept WHERE { \n" + "[] a ?concept .FILTER (regex(str(?concept),'yago'))" + - " \n} LIMIT "+number+" \n"; + " \n} \n"; //LIMIT "+number+" String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); Modified: trunk/src/dl-learner/org/dllearner/test/JenaHTTPTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/JenaHTTPTest.java 2008-05-14 16:15:43 UTC (rev 847) +++ trunk/src/dl-learner/org/dllearner/test/JenaHTTPTest.java 2008-05-15 00:23:29 UTC (rev 848) @@ -17,26 +17,34 @@ "WHERE { <http://dbpedia.org/resource/Leipzig> <http://www.w3.org/2000/01/rdf-schema#label> ?object}\n"; double time=0; - for (int i=0; i<101; i++) + /*for (int i=0; i<101; i++) { if (i!=0) time+=JenaHTTPTest.httpQuery(query); } time=time/100; System.out.println("Durchschnittliche Zeit f�r eine Anfrage per Http-Methode: "+time); - + */ time=0; for (int i=0; i<101; i++) { if (i!=0) time+=JenaHTTPTest.jenaQuery(query); } time=time/100; - System.out.println("Durchschnittliche Zeit f�r eine Anfrage per Jena-Methode: "+time); + System.out.println("Durchschnittliche Zeit f�r eine Anfrage DBpedia: "+time); + + time=0; + for (int i=0; i<101; i++) + { + if (i!=0) time+=JenaHTTPTest.jenaLocalQuery(query); + } + time=time/100; + System.out.println("Durchschnittliche Zeit f�r eine Anfrage per DBpedia LOCAL: "+time); } private static double jenaQuery(String query) { double start=System.currentTimeMillis(); - QueryEngineHTTP queryExecution=new QueryEngineHTTP("http://localhost:8890/sparql",query); + QueryEngineHTTP queryExecution=new QueryEngineHTTP("http://dbpedia.openlinksw.com:8890/sparql",query); queryExecution.addDefaultGraph("http://dbpedia.org"); // Jena access to DBpedia SPARQL endpoint // ResultSet rs = @@ -45,6 +53,18 @@ return ((end-start)/1000); } + private static double jenaLocalQuery(String query) + { + double start=System.currentTimeMillis(); + QueryEngineHTTP queryExecution=new QueryEngineHTTP("http://139.18.2.37:8890/sparql",query); + queryExecution.addDefaultGraph("http://dbpedia.org"); + // Jena access to DBpedia SPARQL endpoint + // ResultSet rs = + queryExecution.execSelect(); + double end=System.currentTimeMillis(); + return ((end-start)/1000); + } + private static double httpQuery(String query) throws Exception { char value[]={13,10}; Modified: trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java 2008-05-14 16:15:43 UTC (rev 847) +++ trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java 2008-05-15 00:23:29 UTC (rev 848) @@ -21,6 +21,7 @@ private SparqlEndpoint se; private SortedSet<String> posExamples; private SortedSet<String> negExamples; + private int limit=2000; public AutomaticExampleFinderSPARQL(SparqlEndpoint se){ @@ -98,10 +99,10 @@ 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,0)) + this.posExamples = new JenaResultSetConvenience(dbpediaQuerySKOSConcept(concept,limit)) .getStringListForVariable("subject"); }else { - this.posExamples = new JenaResultSetConvenience(queryConcept(concept,0)) + this.posExamples = new JenaResultSetConvenience(queryConcept(concept,limit)) .getStringListForVariable("subject"); } logger.debug(" pos Example size: "+posExamples.size()); @@ -195,8 +196,8 @@ logger.debug("making neg Examples from "+superClasses.size()+" superclasses"); JenaResultSetConvenience rsc; for (String oneSuperClass : superClasses) { - - rsc = new JenaResultSetConvenience(queryConcept("\""+oneSuperClass+"\"", 0)); + logger.debug(oneSuperClass); + rsc = new JenaResultSetConvenience(queryConcept("\""+oneSuperClass+"\"", limit)); this.negExamples.addAll(rsc.getStringListForVariable("subject")); } logger.debug(" neg Example size: "+negExamples.size()); @@ -223,8 +224,8 @@ } logger.debug("getting negExamples from "+classes.size()+" parallel classes"); for (String oneClass : classes) { - - rsc = new JenaResultSetConvenience(queryConcept("\""+oneClass+"\"",0)); + logger.debug(oneClass); + rsc = new JenaResultSetConvenience(queryConcept("\""+oneClass+"\"",limit)); this.negExamples.addAll(rsc.getStringListForVariable("subject")); } logger.debug("neg Example size: "+negExamples.size()); @@ -241,15 +242,17 @@ String query = ""; for (; depth != 0 ; depth--) { for (String oneSuperClass : superClasses) { - //logger.debug("one"+oneSuperClass); + //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); Modified: trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-05-14 16:15:43 UTC (rev 847) +++ trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-05-15 00:23:29 UTC (rev 848) @@ -18,11 +18,13 @@ import org.dllearner.reasoning.FastInstanceChecker; public class LearnSparql { - + public SimpleClock sc= new SimpleClock(); + + public void learnDBpedia(SortedSet<String> posExamples,SortedSet<String> negExamples, - String uri, SortedSet<String> ignoredConcepts, int recursiondepth){ + String uri, SortedSet<String> ignoredConcepts, int recursiondepth, boolean closeAfterRecursion){ ComponentManager cm = ComponentManager.getInstance(); @@ -41,12 +43,16 @@ cm.applyConfigEntry(ks, "instances",instances); cm.applyConfigEntry(ks, "url",uri); cm.applyConfigEntry(ks, "recursionDepth",recursiondepth); + cm.applyConfigEntry(ks, "closeAfterRecursion",closeAfterRecursion); cm.applyConfigEntry(ks, "predefinedFilter","YAGOSKOS"); cm.applyConfigEntry(ks, "predefinedEndpoint","DBPEDIA"); //cm.applyConfigEntry(ks, "format","KB"); + sc.setTime(); ks.init(); + Statistics.addTimeCollecting(sc.getTime()); sources.add(ks); + if (true)return; //System.out.println(ks.getNTripleURL()); // @@ -83,6 +89,7 @@ System.out.println("start learning"); la.start(); + //System.out.println("best"+la(20)); //((ExampleBasedROLComponent)la).printBestSolutions(10000); Modified: trunk/src/dl-learner/org/dllearner/utilities/SetManipulation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/SetManipulation.java 2008-05-14 16:15:43 UTC (rev 847) +++ trunk/src/dl-learner/org/dllearner/utilities/SetManipulation.java 2008-05-15 00:23:29 UTC (rev 848) @@ -17,6 +17,7 @@ * @return */ public static SortedSet<String> fuzzyShrink(SortedSet<String> set, int limit) { + if (set.size()<=limit)return set; SortedSet<String> ret = new TreeSet<String>(); Random r = new Random(); double treshold = ((double)limit)/set.size(); @@ -24,6 +25,7 @@ //System.out.println("treshold"+allRetrieved.size()); //System.out.println("treshold"+treshold); + while(ret.size()< limit){ for (String oneInd : set) { if(r.nextDouble()<treshold) { Modified: trunk/src/dl-learner/org/dllearner/utilities/SimpleClock.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/SimpleClock.java 2008-05-14 16:15:43 UTC (rev 847) +++ trunk/src/dl-learner/org/dllearner/utilities/SimpleClock.java 2008-05-15 00:23:29 UTC (rev 848) @@ -20,9 +20,9 @@ * and resets the clock */ public void printAndSet() { - long now=System.currentTimeMillis(); - System.out.println("needed "+(now-time)+" ms"); - time=now; + + System.out.println("needed "+getTime()+" ms"); + setTime(); } @@ -32,15 +32,15 @@ * @param s String for printing */ public void printAndSet(String s) { - long now=System.currentTimeMillis(); - System.out.println(s+" needed "+(now-time)+" ms"); - time=now; + + System.out.println(s+" needed "+getTime()+" ms"); + setTime(); } public String getAndSet(String s) { - long now=System.currentTimeMillis(); - String ret = s+" needed "+(now-time)+" ms"; - time=now; + + String ret = s+" needed "+getTime()+" ms"; + setTime(); return ret; } @@ -52,13 +52,17 @@ * @param s String for printing */ public void print(String s) { - long now=System.currentTimeMillis(); - System.out.println(s+" needed "+(now-time)+" ms"); + System.out.println(s+" needed "+getTime()+" ms"); + } public void setTime() { time=System.currentTimeMillis(); } + public long getTime() { + long now=System.currentTimeMillis(); + return now-time; + } } Added: trunk/src/dl-learner/org/dllearner/utilities/Statistics.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/Statistics.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/Statistics.java 2008-05-15 00:23:29 UTC (rev 848) @@ -0,0 +1,68 @@ +package org.dllearner.utilities; + + +import java.util.HashMap; +import java.util.TreeSet; + + +public class Statistics { + + private static String currentLabel=""; + private static HashMap<String, Integer> numberOfTriples = new HashMap<String, Integer>(); + private static HashMap<String, Long> timeCollecting = new HashMap<String, Long>(); + + + public static void addTriples(int value) { + Integer current = numberOfTriples.get(currentLabel); + if(current==null) + numberOfTriples.put(currentLabel, new Integer(0)); + else { + numberOfTriples.put(currentLabel, new Integer(current.intValue()+value)); + } + + } + + public static void addTimeCollecting(long value) { + Long current = timeCollecting.get(currentLabel); + if(current==null) + timeCollecting.put(currentLabel, new Long(0)); + else { + timeCollecting.put(currentLabel, new Long(current.longValue()+value)); + } + } + + public static void print(int number){ + System.out.println(numberOfTriples); + TreeSet<String> s=new TreeSet<String>(); + for (String label : numberOfTriples.keySet()) { + s.add(label+"|"+numberOfTriples.get(label)); + System.out.println(label+"|"+numberOfTriples.get(label)); + System.out.println(label+"|"+ (numberOfTriples.get(label).intValue()/number)); + + } + System.out.println(s); + + System.out.println("*****************TIME"); + for (String label : timeCollecting.keySet()) { + System.out.println(label+"|"+timeCollecting.get(label)); + System.out.println(label+"|"+ (timeCollecting.get(label).intValue()/number)); + } + + + } + + public static void setCurrentLabel(String label) { + currentLabel=label; + } + + + //stats + + + + + + + + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-05-15 14:04:54
|
Revision: 849 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=849&view=rev Author: kurzum Date: 2008-05-15 07:04:50 -0700 (Thu, 15 May 2008) Log Message: ----------- intermediate Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/Info.java trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.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/kb/sparql/TypedSparqlQuery.java trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/Configuration.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/SparqlExtractionTest.java trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderRolesSPARQL.java trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java trunk/src/dl-learner/org/dllearner/utilities/Statistics.java Modified: trunk/src/dl-learner/org/dllearner/Info.java =================================================================== --- trunk/src/dl-learner/org/dllearner/Info.java 2008-05-15 00:23:29 UTC (rev 848) +++ trunk/src/dl-learner/org/dllearner/Info.java 2008-05-15 14:04:50 UTC (rev 849) @@ -3,6 +3,6 @@ package org.dllearner; public class Info { - public static final String build = "2008-04-23"; + public static final String build = "2008-05-15"; } \ No newline at end of file Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-05-15 00:23:29 UTC (rev 848) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-05-15 14:04:50 UTC (rev 849) @@ -31,6 +31,8 @@ import java.util.LinkedList; import org.apache.log4j.Logger; +import org.dllearner.utilities.SimpleClock; +import org.dllearner.utilities.Statistics; /** * SPARQL query cache to avoid possibly expensive multiple queries. The queries @@ -75,9 +77,9 @@ /** * same ad Cache(String) default is "cache" */ - public Cache() { + /*public Cache() { this("cache"); - } + } */ /** * Constructor for the cache itself. @@ -86,6 +88,7 @@ * Where the base path to the cache is . */ public Cache(String cacheDir) { + this.cacheDir = cacheDir + File.separator; if (!new File(cacheDir).exists()) { logger @@ -218,12 +221,18 @@ * @return Jena result set. */ public String executeSparqlQuery(SparqlQuery query) { + + Statistics.increaseQuery(); String result = getCacheEntry(query.getQueryString()); if (result != null) { logger.trace("got from cache"); + + Statistics.increaseCachedQuery(); return result; } else { + //SimpleClock sc = new SimpleClock(); query.send(); + //sc.printAndSet("query"); String json = query.getResult(); if (json!=null){ addToCache(query.getQueryString(), json); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.java 2008-05-15 00:23:29 UTC (rev 848) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Manager.java 2008-05-15 14:04:50 UTC (rev 849) @@ -46,11 +46,11 @@ public void useConfiguration(SparqlQueryType SparqlQueryType, SparqlEndpoint SparqlEndpoint, Manipulator manipulator, int recursiondepth, boolean getAllSuperClasses, - boolean closeAfterRecursion) { + boolean closeAfterRecursion, String cacheDir) { this.configuration = new Configuration(SparqlEndpoint, SparqlQueryType, manipulator, recursiondepth, getAllSuperClasses, - closeAfterRecursion); + closeAfterRecursion, cacheDir); //System.out.println(this.configuration); this.typedSparqlQuery = new TypedSparqlQuery(configuration); this.extractionAlgorithm = new ExtractionAlgorithm(configuration); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-05-15 00:23:29 UTC (rev 848) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-05-15 14:04:50 UTC (rev 849) @@ -61,8 +61,6 @@ */ public class SparqlKnowledgeSource extends KnowledgeSource { - //statistic - public int numberOfTriples=0; //DEFAULTS static int recursionDepthDefault = 1; @@ -85,6 +83,7 @@ private boolean closeAfterRecursion = true; private int breakSuperClassRetrievalAfter = 200; private String blankNodeIdentifier = "bnode"; + private String cacheDir = "cache"; // private boolean learnDomain = false; // private boolean learnRange = false; // private int numberOfInstancesUsedForRoleLearning = 40; @@ -124,6 +123,8 @@ public static Collection<ConfigOption<?>> createConfigOptions() { Collection<ConfigOption<?>> options = new LinkedList<ConfigOption<?>>(); options.add(new StringConfigOption("url", "URL of SPARQL Endpoint")); + options.add(new StringConfigOption("cacheDir", "dir of cache")); + // options.add(new StringConfigOption("host", "host of SPARQL // Endpoint")); options @@ -205,6 +206,8 @@ // host = (String) entry.getValue(); } else if (option.equals("instances")) { instances = (Set<String>) entry.getValue(); + }else if (option.equals("cacheDir")) { + cacheDir = (String) entry.getValue(); } else if (option.equals("recursionDepth")) { recursionDepth = (Integer) entry.getValue(); } else if (option.equals("predList")) { @@ -315,18 +318,21 @@ } // give everything to the manager m.useConfiguration(sparqlQueryType, endpoint, manipulator, - recursionDepth, getAllSuperClasses, closeAfterRecursion); + recursionDepth, getAllSuperClasses, closeAfterRecursion, cacheDir); + try { String ont = ""; // the actual extraction is started here + SimpleClock sc2=new SimpleClock(); + sc2.setTime(); ont = m.extract(instances); - - logger.info("Number of cached SPARQL queries: " + sc2.printAndSet("extraction needed"); + /*logger.info("Number of cached SPARQL queries: " + m.getConfiguration().numberOfCachedSparqlQueries); logger.info("Number of uncached SPARQL queries: " + m.getConfiguration().numberOfUncachedSparqlQueries); - +*/ logger.info("Finished collecting Fragment"); if (dumpToFile) { @@ -404,7 +410,8 @@ } public SparqlQueryThreaded sparqlQueryThreaded(String query){ - return new SparqlQueryThreaded(new Cache("cache"),this.sparqlQuery(query)); + //RBC + return new SparqlQueryThreaded(new Cache("cachet2"),this.sparqlQuery(query)); } /* (non-Javadoc) Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-05-15 00:23:29 UTC (rev 848) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-05-15 14:04:50 UTC (rev 849) @@ -25,6 +25,7 @@ import org.apache.log4j.Logger; import org.dllearner.kb.sparql.configuration.SparqlEndpoint; +import org.dllearner.utilities.SimpleClock; import com.hp.hpl.jena.query.ResultSet; import com.hp.hpl.jena.query.ResultSetFactory; @@ -85,8 +86,9 @@ try{ //TODO remove after overnext Jena release HttpQuery.urlLimit = 3*1024 ; + //SimpleClock sc=new SimpleClock(); rs = queryExecution.execSelect(); - + //sc.printAndSet("rs to list"); logger.debug("query SPARQL server ["+extraDebugInfo+"], retrieved: "+rs.getResultVars()); json=SparqlQuery.getAsJSON(rs); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java 2008-05-15 00:23:29 UTC (rev 848) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java 2008-05-15 14:04:50 UTC (rev 849) @@ -25,6 +25,7 @@ import java.util.Set; import org.dllearner.kb.sparql.configuration.Configuration; +import org.dllearner.utilities.SimpleClock; import org.dllearner.utilities.StringTuple; import com.hp.hpl.jena.query.ResultSet; @@ -52,7 +53,8 @@ this.configuration = Configuration; this.sparqlQueryMaker = new SparqlQueryMaker(Configuration .getSparqlQueryType()); - this.cache = new Cache("cache"); + + this.cache = new Cache(configuration.cacheDir); // this.sparqlQuery=new SparqlQuery(configuration.getSparqlEndpoint()); // this.cachedSparqlQuery=new // CachedSparqlQuery(this.sparqlQuery,this.cache); @@ -88,9 +90,12 @@ SparqlQuery query = new SparqlQuery(sparqlQueryString, configuration.getSparqlEndpoint()); query.extraDebugInfo=uri.toString(); - ResultSet rs = SparqlQuery.JSONtoResultSet(cache.executeSparqlQuery(query)); + String JSON = cache.executeSparqlQuery(query); + ResultSet rs = SparqlQuery.JSONtoResultSet(JSON); + List<ResultBinding> l = ResultSetFormatter.toList(rs); + p(l.toString()); for (ResultBinding resultBinding : l) { Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/Configuration.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/Configuration.java 2008-05-15 00:23:29 UTC (rev 848) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/Configuration.java 2008-05-15 14:04:50 UTC (rev 849) @@ -39,17 +39,19 @@ private boolean closeAfterRecursion = true; public int numberOfUncachedSparqlQueries = 0; public int numberOfCachedSparqlQueries = 0; + public String cacheDir="cache"; public Configuration(SparqlEndpoint specificSparqlEndpoint, SparqlQueryType sparqlQueryType, Manipulator manipulator, int recursiondepth, boolean getAllSuperClasses, - boolean closeAfterRecursion) { + boolean closeAfterRecursion, String cacheDir) { this.endpoint = specificSparqlEndpoint; this.sparqlQueryType = sparqlQueryType; this.manipulator = manipulator; this.recursiondepth = recursiondepth; this.getAllSuperClasses = getAllSuperClasses; this.closeAfterRecursion = closeAfterRecursion; + this.cacheDir=cacheDir; } @@ -57,7 +59,7 @@ // TODO must clone here return new Configuration(this.endpoint, sqt, this.manipulator, this.recursiondepth, this.getAllSuperClasses, - this.closeAfterRecursion); + this.closeAfterRecursion, this.cacheDir); } Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLExtractionEvaluation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLExtractionEvaluation.java 2008-05-15 00:23:29 UTC (rev 848) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLExtractionEvaluation.java 2008-05-15 14:04:50 UTC (rev 849) @@ -1,6 +1,5 @@ package org.dllearner.scripts; -import java.net.URLEncoder; import java.util.SortedSet; import java.util.TreeSet; @@ -13,9 +12,7 @@ import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.kb.sparql.SparqlQuery; import org.dllearner.kb.sparql.configuration.SparqlEndpoint; -import org.dllearner.utilities.AutomaticExampleFinderRolesSPARQL; import org.dllearner.utilities.AutomaticExampleFinderSPARQL; -import org.dllearner.utilities.ConfWriter; import org.dllearner.utilities.JenaResultSetConvenience; import org.dllearner.utilities.LearnSparql; import org.dllearner.utilities.SetManipulation; @@ -37,14 +34,16 @@ static boolean useRelated = true; static boolean useSuperClasses = true; static boolean useParallelClasses = true; - static int poslimit = 10; - static int neglimit = 10; + static int poslimit = 5; + static int neglimit = 5; + static boolean randomizeCache = false; /** * @param args */ public static void main(String[] args) { init(); + System.out.println("Start"); //logger.setLevel(Level.TRACE); logger.setLevel(Level.WARN); Logger.getLogger(SparqlKnowledgeSource.class).setLevel(Level.WARN); @@ -58,49 +57,71 @@ static void LocalDBpediaEvaluation(){ - se = SparqlEndpoint.EndpointLOCALDBpedia(); - int number=1; + boolean local=true; + String url=""; + if(local){ + se = SparqlEndpoint.EndpointLOCALDBpedia(); + + url = "http://139.18.2.37:8890/sparql"; + + }else{ + se = SparqlEndpoint.EndpointDBpedia(); + url= "http://dbpedia.openlinksw.com:8890/sparql"; + } + + SortedSet<String> concepts = new TreeSet<String>(); - SortedSet<String> tmpSet=selectDBpediaConcepts(number); - + SortedSet<String> tmpSet = new TreeSet<String>(); + //selectDBpediaConcepts(number); + tmpSet=initConcepts(); + int number=tmpSet.size(); + //concepts.add("\"http://dbpedia.org/class/yago/Flamethrower103356559\""); for (String string : tmpSet) { + //System.out.println("\""+string+"\","); concepts.add("\""+string+"\""); } + + SortedSet<String> posExamples = new TreeSet<String>(); SortedSet<String> negExamples = new TreeSet<String>(); - String url = "http://139.18.2.37:8890/sparql"; - int recursiondepth=0; - boolean closeAfterRecursion=false; - for(int i=0;i<8;i++) { - if(i==0){;} - else if(closeAfterRecursion) { - closeAfterRecursion=false; - recursiondepth++; - } - else { - closeAfterRecursion=true; - } - Statistics.setCurrentLabel(recursiondepth+""+((closeAfterRecursion)?"+":"")); + + for (String oneConcept : concepts) { + int recursiondepth=0; + boolean closeAfterRecursion=false; + System.out.println(oneConcept); + AutomaticExampleFinderSPARQL ae= new AutomaticExampleFinderSPARQL( se); - for (String oneConcept : concepts) { - AutomaticExampleFinderSPARQL ae= new AutomaticExampleFinderSPARQL( se); - - ae.initDBpedia(oneConcept, useRelated, useSuperClasses,useParallelClasses, poslimit, neglimit); - posExamples = ae.getPosExamples(); - negExamples = ae.getNegExamples(); + ae.initDBpedia(oneConcept, useRelated, useSuperClasses,useParallelClasses, poslimit, neglimit); + posExamples = ae.getPosExamples(); + negExamples = ae.getNegExamples(); + + for(int i=0;i<3;i++) { + if(i==0){;} + else if(closeAfterRecursion) { + closeAfterRecursion=false; + recursiondepth++; + } + else { + closeAfterRecursion=true; + } + Statistics.setCurrentLabel(recursiondepth+""+((closeAfterRecursion)?"+":"")); + Statistics.print(number); + + System.out.println("currently at label "+Statistics.getCurrentLabel()+"||i: "+i); + LearnSparql ls = new LearnSparql(); TreeSet<String> igno = new TreeSet<String>(); System.out.println(oneConcept); + + ls.learnDBpedia(posExamples, negExamples, url,igno,recursiondepth, closeAfterRecursion,randomizeCache); + - ls.learnDBpedia(posExamples, negExamples, url,igno,recursiondepth, closeAfterRecursion); - - } } Statistics.print(number); @@ -115,7 +136,7 @@ // its messages to the console) FileAppender fileAppender =null; ; try{ - fileAppender = new FileAppender(layout,"the_log.txt",false); + fileAppender = new FileAppender(layout,"log/sparqleval.txt",false); }catch (Exception e) {e.printStackTrace();} ConsoleAppender consoleAppender = new ConsoleAppender(layout); @@ -123,7 +144,7 @@ logger.addAppender(consoleAppender); logger.addAppender(fileAppender); - c = new Cache(); + c = new Cache("cachetemp"); } @@ -131,7 +152,7 @@ public static SortedSet<String> selectDBpediaConcepts(int number){ String query = "SELECT DISTINCT ?concept WHERE { \n" + "[] a ?concept .FILTER (regex(str(?concept),'yago'))" + - " \n} LIMIT "+1000+" \n"; // + " \n} LIMIT "+4000+" \n "; // String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); @@ -139,6 +160,32 @@ return SetManipulation.fuzzyShrink(rsc.getStringListForVariable("concept"),number); } + public static SortedSet<String> initConcepts(){ + SortedSet<String> concepts = new TreeSet<String>(); + concepts.add("http://dbpedia.org/class/yago/AirLane108492546"); + concepts.add("http://dbpedia.org/class/yago/AlphaBlocker102698769"); + //concepts.add("http://dbpedia.org/class/yago/Articulation107131854"); + /*concepts.add("http://dbpedia.org/class/yago/Caliphate108550766"); + concepts.add("http://dbpedia.org/class/yago/Ceremony107450842"); + concepts.add("http://dbpedia.org/class/yago/CookingOil107673145"); + concepts.add("http://dbpedia.org/class/yago/Corticosteroid114751417"); + concepts.add("http://dbpedia.org/class/yago/Curlew102033561"); + concepts.add("http://dbpedia.org/class/yago/DataStructure105728493"); + concepts.add("http://dbpedia.org/class/yago/Disappearance100053609"); + concepts.add("http://dbpedia.org/class/yago/Flintstone114871268"); + concepts.add("http://dbpedia.org/class/yago/Form105930736"); + concepts.add("http://dbpedia.org/class/yago/Hypochondriac110195487"); + concepts.add("http://dbpedia.org/class/yago/Industrialist110204177"); + concepts.add("http://dbpedia.org/class/yago/Lifeboat103662601"); + concepts.add("http://dbpedia.org/class/yago/Particulate114839439"); + concepts.add("http://dbpedia.org/class/yago/Reservation108587174"); + concepts.add("http://dbpedia.org/class/yago/Schoolteacher110560352"); + concepts.add("http://dbpedia.org/class/yago/Singer110599806"); + concepts.add("http://dbpedia.org/class/yago/SupremeCourt108336188"); + concepts.add("http://dbpedia.org/class/yago/AirLane108492546");*/ + return concepts; + } + } Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-05-15 00:23:29 UTC (rev 848) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-05-15 14:04:50 UTC (rev 849) @@ -213,7 +213,7 @@ System.out.println(oneConcept); //igno.add(oneConcept.replaceAll("\"", "")); - ls.learnDBpedia(posExamples, negExamples, url,igno,recursiondepth, closeAfterRecursion); + ls.learnDBpedia(posExamples, negExamples, url,igno,recursiondepth, closeAfterRecursion,false); //System.out.println("AAAAAAAA"); //System.exit(0); @@ -273,7 +273,7 @@ logger.addAppender(consoleAppender); logger.addAppender(fileAppender); logger.setLevel(Level.DEBUG); - c = new Cache(); + c = new Cache("cachetemp"); } Modified: trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-05-15 00:23:29 UTC (rev 848) +++ trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-05-15 14:04:50 UTC (rev 849) @@ -51,7 +51,7 @@ m.useConfiguration( SparqlQueryType.getFilterByName("DBPEDIA"),SparqlEndpoint.getEndpointByName("YAGO"), new Manipulator("",200,new LinkedList<StringTuple>(),new LinkedList<StringTuple>()), - 1,true,true); + 1,true,true,"cache"); //, , //manipulator, recursiondepth, getAllSuperClasses, closeAfterRecursion) Modified: trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderRolesSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderRolesSPARQL.java 2008-05-15 00:23:29 UTC (rev 848) +++ trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderRolesSPARQL.java 2008-05-15 14:04:50 UTC (rev 849) @@ -24,7 +24,7 @@ public AutomaticExampleFinderRolesSPARQL(SparqlEndpoint se){ - this.c=new Cache(); + this.c=new Cache("cachetemp"); this.se=se; posExamples = new TreeSet<String>(); negExamples = new TreeSet<String>(); Modified: trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java 2008-05-15 00:23:29 UTC (rev 848) +++ trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java 2008-05-15 14:04:50 UTC (rev 849) @@ -25,7 +25,7 @@ public AutomaticExampleFinderSPARQL(SparqlEndpoint se){ - this.c=new Cache(); + this.c=new Cache("cachetemp"); this.se=se; posExamples = new TreeSet<String>(); negExamples = new TreeSet<String>(); Modified: trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-05-15 00:23:29 UTC (rev 848) +++ trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-05-15 14:04:50 UTC (rev 849) @@ -24,7 +24,8 @@ public void learnDBpedia(SortedSet<String> posExamples,SortedSet<String> negExamples, - String uri, SortedSet<String> ignoredConcepts, int recursiondepth, boolean closeAfterRecursion){ + String uri, SortedSet<String> ignoredConcepts, int recursiondepth, + boolean closeAfterRecursion, boolean randomizeCache){ ComponentManager cm = ComponentManager.getInstance(); @@ -44,8 +45,11 @@ cm.applyConfigEntry(ks, "url",uri); cm.applyConfigEntry(ks, "recursionDepth",recursiondepth); cm.applyConfigEntry(ks, "closeAfterRecursion",closeAfterRecursion); - cm.applyConfigEntry(ks, "predefinedFilter","YAGOSKOS"); + cm.applyConfigEntry(ks, "predefinedFilter","YAGO"); cm.applyConfigEntry(ks, "predefinedEndpoint","DBPEDIA"); + if(randomizeCache) + cm.applyConfigEntry(ks, "cacheDir","cache/"+System.currentTimeMillis()+""); + else {} //cm.applyConfigEntry(ks, "format","KB"); sc.setTime(); Modified: trunk/src/dl-learner/org/dllearner/utilities/Statistics.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/Statistics.java 2008-05-15 00:23:29 UTC (rev 848) +++ trunk/src/dl-learner/org/dllearner/utilities/Statistics.java 2008-05-15 14:04:50 UTC (rev 849) @@ -2,60 +2,132 @@ import java.util.HashMap; -import java.util.TreeSet; +import java.util.LinkedList; public class Statistics { private static String currentLabel=""; + private static LinkedList<String> order = new LinkedList<String>(); private static HashMap<String, Integer> numberOfTriples = new HashMap<String, Integer>(); private static HashMap<String, Long> timeCollecting = new HashMap<String, Long>(); + private static HashMap<String, Integer> numberOfSparqlQueries = new HashMap<String, Integer>(); + private static HashMap<String, Integer> numberOfCachedSparqlQueries = new HashMap<String, Integer>(); public static void addTriples(int value) { + Integer current = numberOfTriples.get(currentLabel); if(current==null) - numberOfTriples.put(currentLabel, new Integer(0)); + numberOfTriples.put(currentLabel, new Integer(value)); else { - numberOfTriples.put(currentLabel, new Integer(current.intValue()+value)); + numberOfTriples.put(currentLabel, new Integer(current.intValue()+value)); } + + } public static void addTimeCollecting(long value) { Long current = timeCollecting.get(currentLabel); if(current==null) - timeCollecting.put(currentLabel, new Long(0)); + timeCollecting.put(currentLabel, new Long(value)); else { timeCollecting.put(currentLabel, new Long(current.longValue()+value)); } } + public static void increaseCachedQuery() { + Integer current = numberOfCachedSparqlQueries.get(currentLabel); + if(current==null) + numberOfCachedSparqlQueries.put(currentLabel, new Integer(1)); + else { + numberOfCachedSparqlQueries.put(currentLabel, new Integer(current.intValue()+1)); + } + } + + public static void increaseQuery() { + Integer current = numberOfSparqlQueries.get(currentLabel); + if(current==null) + numberOfSparqlQueries.put(currentLabel, new Integer(1)); + else { + numberOfSparqlQueries.put(currentLabel, new Integer(current.intValue()+1)); + } + } + + public static void print(int number){ - System.out.println(numberOfTriples); - TreeSet<String> s=new TreeSet<String>(); - for (String label : numberOfTriples.keySet()) { - s.add(label+"|"+numberOfTriples.get(label)); - System.out.println(label+"|"+numberOfTriples.get(label)); - System.out.println(label+"|"+ (numberOfTriples.get(label).intValue()/number)); - } - System.out.println(s); - + printInt(numberOfTriples,"triples"); + printIntAVG(numberOfTriples,number,"triples avg"); + System.out.println("*****************TIME"); - for (String label : timeCollecting.keySet()) { - System.out.println(label+"|"+timeCollecting.get(label)); - System.out.println(label+"|"+ (timeCollecting.get(label).intValue()/number)); - } + printLong(timeCollecting); + printLongAVG(timeCollecting,number); + System.out.println("*****************Queries"); + printInt(numberOfCachedSparqlQueries,"cached queries"); + printInt(numberOfSparqlQueries,"total queries"); + + + + + + + + + + } + public static void printIntAVG(HashMap<String, Integer> hm, int number, String str){ + for (int i = 0; i < order.size(); i++) { + String label=order.get(i); + try { + System.out.println(str+" "+label+"|"+ (hm.get(label).intValue()/number)); + } catch (Exception e) { } + } + } + + public static void printInt(HashMap<String, Integer> hm, String str){ + for (int i = 0; i < order.size(); i++) { + String label=order.get(i); + try { + System.out.println(str+" "+label+"|"+hm.get(label)); + } catch (Exception e) { } + } + } + + public static void printLongAVG(HashMap<String, Long> hm, int number){ + for (int i = 0; i < order.size(); i++) { + String label=order.get(i); + try { + System.out.println("timeCollect avg "+label+"|"+ (hm.get(label).intValue()/number)); + } catch (Exception e) { } + } + } + + public static void printLong(HashMap<String, Long> hm){ + for (int i = 0; i < order.size(); i++) { + String label=order.get(i); + try { + System.out.println("timeCollect "+label+"|"+hm.get(label)); + } catch (Exception e) { } + } + } + + public static void setCurrentLabel(String label) { currentLabel=label; + if (!order.contains(label))order.add(label); } + public static String getCurrentLabel() { + return currentLabel; + } + //stats This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-05-15 16:32:53
|
Revision: 851 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=851&view=rev Author: kurzum Date: 2008-05-15 09:32:46 -0700 (Thu, 15 May 2008) Log Message: ----------- Modified Paths: -------------- 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/utilities/LearnSparql.java trunk/src/dl-learner/org/dllearner/utilities/Statistics.java Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLExtractionEvaluation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLExtractionEvaluation.java 2008-05-15 15:12:35 UTC (rev 850) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLExtractionEvaluation.java 2008-05-15 16:32:46 UTC (rev 851) @@ -1,5 +1,8 @@ package org.dllearner.scripts; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; import java.util.SortedSet; import java.util.TreeSet; @@ -31,12 +34,12 @@ //static String algorithm="refexamples"; //vars - static boolean useRelated = true; + static boolean useRelated = false; static boolean useSuperClasses = true; static boolean useParallelClasses = true; - static int poslimit = 5; - static int neglimit = 5; - static boolean randomizeCache = false; + static int poslimit = 0; + static int neglimit = 0; + static boolean randomizeCache = true; /** * @param args @@ -86,11 +89,14 @@ SortedSet<String> posExamples = new TreeSet<String>(); SortedSet<String> negExamples = new TreeSet<String>(); + for (int a = 0; a < 3; a++) { + + poslimit+=5; + neglimit+=5; - for (String oneConcept : concepts) { int recursiondepth=0; - boolean closeAfterRecursion=false; + boolean closeAfterRecursion=true; System.out.println(oneConcept); AutomaticExampleFinderSPARQL ae= new AutomaticExampleFinderSPARQL( se); @@ -101,16 +107,18 @@ negExamples = ae.getNegExamples(); for(int i=0;i<3;i++) { - if(i==0){;} + /*if(i==0){;} else if(closeAfterRecursion) { closeAfterRecursion=false; recursiondepth++; } else { closeAfterRecursion=true; - } - Statistics.setCurrentLabel(recursiondepth+""+((closeAfterRecursion)?"+":"")); + }*/ + //Statistics.setCurrentLabel(recursiondepth+""+((closeAfterRecursion)?"+":"")); + Statistics.setCurrentLabel(recursiondepth+""+((closeAfterRecursion)?"":"")); + Statistics.print(number); System.out.println("currently at label "+Statistics.getCurrentLabel()+"||i: "+i); @@ -125,6 +133,19 @@ } } Statistics.print(number); + String pre="log/gnu_"; + String comment1="# "+poslimit+neglimit+"examples\n"; + String f1=pre+"1avgtrip_"+poslimit+neglimit+"example"+concepts.size()+"classes"; + writeToFile(f1, comment1+Statistics.getAVGTriplesForRecursionDepth(number)); + String comment2="# "+poslimit+neglimit+"examples\n"; + String f2=pre+"2avgTimeExtraction_"+poslimit+neglimit+"example"+concepts.size()+"classes"; + writeToFile(f2, comment2+Statistics.getAVGTimeCollecting(number)); + String comment3="# "+poslimit+neglimit+"examples\n"; + String f3=pre+"2avgTimeLearning_"+poslimit+neglimit+"example"+concepts.size()+"classes"; + writeToFile(f3, comment3+Statistics.getAVGTimeLearning(number)); + + + }//outer } @@ -164,8 +185,8 @@ SortedSet<String> concepts = new TreeSet<String>(); concepts.add("http://dbpedia.org/class/yago/AirLane108492546"); concepts.add("http://dbpedia.org/class/yago/AlphaBlocker102698769"); - //concepts.add("http://dbpedia.org/class/yago/Articulation107131854"); - /*concepts.add("http://dbpedia.org/class/yago/Caliphate108550766"); + concepts.add("http://dbpedia.org/class/yago/Articulation107131854"); + concepts.add("http://dbpedia.org/class/yago/Caliphate108550766"); concepts.add("http://dbpedia.org/class/yago/Ceremony107450842"); concepts.add("http://dbpedia.org/class/yago/CookingOil107673145"); concepts.add("http://dbpedia.org/class/yago/Corticosteroid114751417"); @@ -182,10 +203,25 @@ concepts.add("http://dbpedia.org/class/yago/Schoolteacher110560352"); concepts.add("http://dbpedia.org/class/yago/Singer110599806"); concepts.add("http://dbpedia.org/class/yago/SupremeCourt108336188"); - concepts.add("http://dbpedia.org/class/yago/AirLane108492546");*/ + concepts.add("http://dbpedia.org/class/yago/AirLane108492546"); return concepts; } + protected static void writeToFile(String filename, String content) { + // create the file we want to use + File file = new File( filename); + + try { + file.createNewFile(); + FileOutputStream fos = new FileOutputStream(filename, false); + // ObjectOutputStream o = new ObjectOutputStream(fos); + fos.write(content.getBytes()); + fos.flush(); + fos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } } Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-05-15 15:12:35 UTC (rev 850) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-05-15 16:32:46 UTC (rev 851) @@ -282,6 +282,7 @@ String query = "SELECT DISTINCT ?concept WHERE { \n" + "[] a ?concept .FILTER (regex(str(?concept),'yago'))" + " \n} \n"; //LIMIT "+number+" + String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); Modified: trunk/src/dl-learner/org/dllearner/test/JenaHTTPTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/JenaHTTPTest.java 2008-05-15 15:12:35 UTC (rev 850) +++ trunk/src/dl-learner/org/dllearner/test/JenaHTTPTest.java 2008-05-15 16:32:46 UTC (rev 851) @@ -10,12 +10,39 @@ import com.hp.hpl.jena.sparql.engine.http.QueryEngineHTTP; public class JenaHTTPTest { + + static String query1="SELECT DISTINCT ?object\n"+ + "FROM <http://dbpedia.org>\n"+ + "WHERE { <http://dbpedia.org/resource/Leipzig> <http://www.w3.org/2000/01/rdf-schema#label> ?object}\n"; + + + static String query2 = "SELECT * WHERE { \n"+ + "<http://dbpedia.org/resource/County_Route_G7_%28California%29> ?predicate ?object. \n"+ + " FILTER( \n"+ + " (!isLiteral(?object))\n"+ + " &&( !regex(str(?predicate), 'http://dbpedia.org/property/relatedInstance') )\n"+ + " &&( !regex(str(?predicate), 'http://dbpedia.org/property/website') )\n"+ + " &&( !regex(str(?predicate), 'http://dbpedia.org/property/owner') )\n"+ + " &&( !regex(str(?predicate), 'http://dbpedia.org/property/wikiPageUsesTemplate') )\n"+ + " &&( !regex(str(?predicate), 'http://www.w3.org/2002/07/owl#sameAs') )\n"+ + " &&( !regex(str(?predicate), 'http://xmlns.com/foaf/0.1/') )\n"+ + " &&( !regex(str(?predicate), 'http://dbpedia.org/property/standard') )\n"+ + " &&( !regex(str(?predicate), 'http://dbpedia.org/property/wikipage') )\n"+ + " &&( !regex(str(?predicate), 'http://dbpedia.org/property/reference') )\n"+ + " &&( !regex(str(?predicate), 'http://www.w3.org/2004/02/skos/core') )\n"+ + " &&( !regex(str(?object), 'http://xmlns.com/foaf/0.1/') )\n"+ + " &&( !regex(str(?object), 'http://upload.wikimedia.org/wikipedia') )\n"+ + " &&( !regex(str(?object), 'http://www4.wiwiss.fu-berlin.de/flickrwrappr') )\n"+ + " &&( !regex(str(?object), 'http://dbpedia.org/resource/Template') )\n"+ + " &&( !regex(str(?object), 'http://upload.wikimedia.org/wikipedia/commons') )\n"+ + " &&( !regex(str(?object), 'http://www.w3.org/2006/03/wn/wn20/instances/synset') )\n"+ + " &&( !regex(str(?object), 'http://dbpedia.org/resource/Category:') )\n"+ + " &&( !regex(str(?object), 'http://www.w3.org/2004/02/skos/core') )\n"+ + " &&( !regex(str(?object), 'http://www.geonames.org') )).}\n"; + public static void main(String[] args) throws Exception{ - String query="SELECT DISTINCT ?object\n"+ - "FROM <http://dbpedia.org>\n"+ - "WHERE { <http://dbpedia.org/resource/Leipzig> <http://www.w3.org/2000/01/rdf-schema#label> ?object}\n"; - + String query=query2; double time=0; /*for (int i=0; i<101; i++) { @@ -27,6 +54,7 @@ time=0; for (int i=0; i<101; i++) { + if (i%20 ==0)System.out.println(i); if (i!=0) time+=JenaHTTPTest.jenaQuery(query); } time=time/100; @@ -35,10 +63,20 @@ time=0; for (int i=0; i<101; i++) { + if (i%20 ==0)System.out.println(i); if (i!=0) time+=JenaHTTPTest.jenaLocalQuery(query); } time=time/100; System.out.println("Durchschnittliche Zeit f�r eine Anfrage per DBpedia LOCAL: "+time); + + time=0; + for (int i=0; i<101; i++) + { + if (i%20 ==0)System.out.println(i); + if (i!=0) time+=JenaHTTPTest.jenaQuery(query); + } + time=time/100; + System.out.println("Durchschnittliche Zeit f�r eine Anfrage DBpedia: "+time); } private static double jenaQuery(String query) Modified: trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-05-15 15:12:35 UTC (rev 850) +++ trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-05-15 16:32:46 UTC (rev 851) @@ -56,7 +56,7 @@ ks.init(); Statistics.addTimeCollecting(sc.getTime()); sources.add(ks); - if (true)return; + //if (true)return; //System.out.println(ks.getNTripleURL()); // @@ -80,7 +80,8 @@ cm.applyConfigEntry(la,"useCardinalityRestrictions",false); cm.applyConfigEntry(la,"useNegation",false); cm.applyConfigEntry(la,"minExecutionTimeInSeconds",0); - cm.applyConfigEntry(la,"maxExecutionTimeInSeconds",10); + cm.applyConfigEntry(la,"maxExecutionTimeInSeconds",20); + //cm.applyConfigEntry(la,"guaranteeXgoodDescriptions",999999); cm.applyConfigEntry(la,"logLevel","TRACE"); @@ -91,9 +92,10 @@ la.init(); System.out.println("start learning"); + sc.setTime(); la.start(); + Statistics.addTimeLearning(sc.getTime()); - //System.out.println("best"+la(20)); //((ExampleBasedROLComponent)la).printBestSolutions(10000); Modified: trunk/src/dl-learner/org/dllearner/utilities/Statistics.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/Statistics.java 2008-05-15 15:12:35 UTC (rev 850) +++ trunk/src/dl-learner/org/dllearner/utilities/Statistics.java 2008-05-15 16:32:46 UTC (rev 851) @@ -11,6 +11,8 @@ private static LinkedList<String> order = new LinkedList<String>(); private static HashMap<String, Integer> numberOfTriples = new HashMap<String, Integer>(); private static HashMap<String, Long> timeCollecting = new HashMap<String, Long>(); + private static HashMap<String, Long> timeLearning = new HashMap<String, Long>(); + private static HashMap<String, Integer> numberOfSparqlQueries = new HashMap<String, Integer>(); private static HashMap<String, Integer> numberOfCachedSparqlQueries = new HashMap<String, Integer>(); @@ -37,6 +39,15 @@ } } + public static void addTimeLearning(long value) { + Long current = timeLearning.get(currentLabel); + if(current==null) + timeLearning.put(currentLabel, new Long(value)); + else { + timeLearning.put(currentLabel, new Long(current.longValue()+value)); + } + } + public static void increaseCachedQuery() { Integer current = numberOfCachedSparqlQueries.get(currentLabel); if(current==null) @@ -58,19 +69,23 @@ public static void print(int number){ - printInt(numberOfTriples,"triples"); - printIntAVG(numberOfTriples,number,"triples avg"); + System.out.println("*****************TRIPLES"); + printInt(numberOfTriples,"triples\t"); + printIntAVG(numberOfTriples,number,"triples avg\t"); System.out.println("*****************TIME"); - printLong(timeCollecting); - printLongAVG(timeCollecting,number); + printLong(timeCollecting, "collecting\t"); + printLongAVG(timeCollecting,number,"collecting avg\t"); + printLong(timeLearning, "collecting\t"); + printLongAVG(timeLearning,number,"collecting avg\t"); System.out.println("*****************Queries"); - printInt(numberOfCachedSparqlQueries,"cached queries"); - printInt(numberOfSparqlQueries,"total queries"); + printInt(numberOfCachedSparqlQueries,"cached queries\t"); + printInt(numberOfSparqlQueries,"total queries\t"); + //printIntAVG(numberOfTriples,number,"triples avg\t"); @@ -78,14 +93,50 @@ + } + + + public static String getAVGTriplesForRecursionDepth(int number){ + + String ret="#Label, i.e. rec depth \t avg number of triples\n"; + for (int i = 0; i < order.size(); i++) { + String label=order.get(i); + try { + ret+=label+"\t"+ (numberOfTriples.get(label).intValue()/number)+"\n"; + } catch (Exception e) { } + } + return ret; + } + + public static String getAVGTimeLearning(int number){ + String ret="#Label, i.e. rec depth \t avg time for learning including reasoning\n"; + for (int i = 0; i < order.size(); i++) { + String label=order.get(i); + try { + ret+=label+"\t"+ (timeLearning.get(label).longValue()/number)+"\n"; + } catch (Exception e) { } + } + return ret; +} + + public static String getAVGTimeCollecting(int number){ + + String ret="#Label, i.e. rec depth \t avg time for extraction\n"; + for (int i = 0; i < order.size(); i++) { + String label=order.get(i); + try { + ret+=label+"\t"+ (timeCollecting.get(label).longValue()/number)+"\n"; + } catch (Exception e) { } + } + return ret; } public static void printIntAVG(HashMap<String, Integer> hm, int number, String str){ for (int i = 0; i < order.size(); i++) { String label=order.get(i); try { - System.out.println(str+" "+label+"|"+ (hm.get(label).intValue()/number)); + System.out.println(str+""+label+" "+ (hm.get(label).intValue()/number)); } catch (Exception e) { } } } @@ -94,25 +145,25 @@ for (int i = 0; i < order.size(); i++) { String label=order.get(i); try { - System.out.println(str+" "+label+"|"+hm.get(label)); + System.out.println(str+""+label+" "+hm.get(label)); } catch (Exception e) { } } } - public static void printLongAVG(HashMap<String, Long> hm, int number){ + public static void printLongAVG(HashMap<String, Long> hm, int number, String str){ for (int i = 0; i < order.size(); i++) { String label=order.get(i); try { - System.out.println("timeCollect avg "+label+"|"+ (hm.get(label).intValue()/number)); + System.out.println(str+label+" "+ (hm.get(label).intValue()/number)); } catch (Exception e) { } } } - public static void printLong(HashMap<String, Long> hm){ + public static void printLong(HashMap<String, Long> hm,String str){ for (int i = 0; i < order.size(); i++) { String label=order.get(i); try { - System.out.println("timeCollect "+label+"|"+hm.get(label)); + System.out.println(str+label+"|"+hm.get(label)); } catch (Exception e) { } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |