|
From: <ku...@us...> - 2008-08-14 14:18:47
|
Revision: 1073
http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1073&view=rev
Author: kurzum
Date: 2008-08-14 14:18:37 +0000 (Thu, 14 Aug 2008)
Log Message:
-----------
intermediate commit
Modified Paths:
--------------
trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java
trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java
trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java
trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java
trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java
trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java
trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java
trunk/src/dl-learner/org/dllearner/test/FilterTest.java
Added Paths:
-----------
trunk/src/dl-learner/org/dllearner/kb/aquisitors/
trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorClasses.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/TypedSparqlQuery.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/TypedSparqlQueryClasses.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/TypedSparqlQueryInterface.java
trunk/src/dl-learner/org/dllearner/test/TripleTypeTest.java
trunk/src/dl-learner/org/dllearner/utilities/datastructures/RDFNodeTuple.java
Removed Paths:
-------------
trunk/src/dl-learner/org/dllearner/kb/extraction/SparqlTupelAquisitor.java
trunk/src/dl-learner/org/dllearner/kb/extraction/TupelAquisitor.java
trunk/src/dl-learner/org/dllearner/kb/extraction/TypedSparqlQuery.java
trunk/src/dl-learner/org/dllearner/kb/extraction/TypedSparqlQueryClasses.java
trunk/src/dl-learner/org/dllearner/kb/extraction/TypedSparqlQueryInterface.java
Added: trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java 2008-08-14 14:18:37 UTC (rev 1073)
@@ -0,0 +1,71 @@
+/**
+ * Copyright (C) 2007-2008, Jens Lehmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.aquisitors;
+
+import java.net.URI;
+import java.util.SortedSet;
+
+import org.apache.log4j.Logger;
+import org.dllearner.kb.extraction.Configuration;
+import org.dllearner.kb.sparql.SPARQLTasks;
+import org.dllearner.kb.sparql.SparqlQueryMaker;
+import org.dllearner.utilities.datastructures.RDFNodeTuple;
+
+/**
+ * Can execute different queries.
+ *
+ * @author Sebastian Hellmann
+ *
+ */
+public class LinkedDataTupelAquisitor extends TupelAquisitor {
+
+ @SuppressWarnings("unused")
+ private static Logger logger = Logger.getLogger(LinkedDataTupelAquisitor.class);
+
+ private Configuration configuration;
+ protected SparqlQueryMaker sparqlQueryMaker;
+ protected SPARQLTasks sparqlTasks;
+
+ public LinkedDataTupelAquisitor(Configuration Configuration) {
+ this.configuration = Configuration;
+ this.sparqlQueryMaker = configuration.getSparqlQueryMaker();
+ this.sparqlTasks = configuration.sparqlTasks;
+ }
+
+ // standard query get a tupels (p,o) for subject s
+ @Override
+ public SortedSet<RDFNodeTuple> getTupelForResource(URI uri) {
+
+
+ String pred = "predicate";
+ String obj = "object";
+ // getQuery
+ String sparqlQueryString = sparqlQueryMaker
+ .makeSubjectQueryUsingFilters(uri.toString());
+
+ return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, pred, obj);
+
+ }
+
+
+
+
+
+}
Copied: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java (from rev 1072, trunk/src/dl-learner/org/dllearner/kb/extraction/SparqlTupelAquisitor.java)
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java 2008-08-14 14:18:37 UTC (rev 1073)
@@ -0,0 +1,71 @@
+/**
+ * Copyright (C) 2007-2008, Jens Lehmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.aquisitors;
+
+import java.net.URI;
+import java.util.SortedSet;
+
+import org.apache.log4j.Logger;
+import org.dllearner.kb.extraction.Configuration;
+import org.dllearner.kb.sparql.SPARQLTasks;
+import org.dllearner.kb.sparql.SparqlQueryMaker;
+import org.dllearner.utilities.datastructures.RDFNodeTuple;
+
+/**
+ * Can execute different queries.
+ *
+ * @author Sebastian Hellmann
+ *
+ */
+public class SparqlTupelAquisitor extends TupelAquisitor {
+
+ @SuppressWarnings("unused")
+ private static Logger logger = Logger.getLogger(SparqlTupelAquisitor.class);
+
+ private Configuration configuration;
+ protected SparqlQueryMaker sparqlQueryMaker;
+ protected SPARQLTasks sparqlTasks;
+
+ public SparqlTupelAquisitor(Configuration Configuration) {
+ this.configuration = Configuration;
+ this.sparqlQueryMaker = configuration.getSparqlQueryMaker();
+ this.sparqlTasks = configuration.sparqlTasks;
+ }
+
+ // standard query get a tupels (p,o) for subject s
+ @Override
+ public SortedSet<RDFNodeTuple> getTupelForResource(URI uri) {
+
+
+ String pred = "predicate";
+ String obj = "object";
+ // getQuery
+ String sparqlQueryString = sparqlQueryMaker
+ .makeSubjectQueryUsingFilters(uri.toString());
+
+ return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, pred, obj);
+
+ }
+
+
+
+
+
+}
Property changes on: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java
___________________________________________________________________
Added: svn:mergeinfo
+
Added: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorClasses.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorClasses.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorClasses.java 2008-08-14 14:18:37 UTC (rev 1073)
@@ -0,0 +1,61 @@
+/**
+ * Copyright (C) 2007-2008, Jens Lehmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.aquisitors;
+
+import java.net.URI;
+import java.util.SortedSet;
+
+import org.apache.log4j.Logger;
+import org.dllearner.kb.extraction.Configuration;
+import org.dllearner.utilities.datastructures.RDFNodeTuple;
+
+/**
+ * Can execute different queries.
+ *
+ * @author Sebastian Hellmann
+ *
+ */
+public class SparqlTupelAquisitorClasses extends SparqlTupelAquisitor {
+
+ @SuppressWarnings("unused")
+ private static Logger logger = Logger.getLogger(SparqlTupelAquisitor.class);
+
+ public SparqlTupelAquisitorClasses(Configuration configuration) {
+ super(configuration);
+ }
+
+ /*
+ * Special TypedSparqlQuery which returns superclasses of classes
+ * (non-Javadoc)
+ *
+ * @see org.dllearner.kb.sparql.TypedSparqlQuery#getTupelForResource(java.net.URI)
+ */
+ @Override
+ @SuppressWarnings({"unchecked"})
+ public SortedSet<RDFNodeTuple> getTupelForResource(URI uri) {
+ //Set<RDFNodeTuple> s = new TreeSet<RDFNodeTuple>();
+ String pred = "predicate";
+ String obj = "object";
+ // getQuery
+ String sparqlQueryString = sparqlQueryMaker.makeClassQueryUsingFilters(uri.toString());
+ return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, pred, obj);
+ }
+
+}
Property changes on: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorClasses.java
___________________________________________________________________
Added: svn:mergeinfo
+
Added: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java 2008-08-14 14:18:37 UTC (rev 1073)
@@ -0,0 +1,71 @@
+/**
+ * Copyright (C) 2007-2008, Jens Lehmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.aquisitors;
+
+import java.net.URI;
+import java.util.SortedSet;
+
+import org.apache.log4j.Logger;
+import org.dllearner.kb.extraction.Configuration;
+import org.dllearner.kb.sparql.SPARQLTasks;
+import org.dllearner.kb.sparql.SparqlQueryMaker;
+import org.dllearner.utilities.datastructures.RDFNodeTuple;
+
+/**
+ * Can execute different queries.
+ *
+ * @author Sebastian Hellmann
+ *
+ */
+public class SparqlTupelAquisitorImproved extends TupelAquisitor {
+
+ @SuppressWarnings("unused")
+ private static Logger logger = Logger.getLogger(SparqlTupelAquisitorImproved.class);
+
+ private Configuration configuration;
+ protected SparqlQueryMaker sparqlQueryMaker;
+ protected SPARQLTasks sparqlTasks;
+
+ public SparqlTupelAquisitorImproved(Configuration Configuration) {
+ this.configuration = Configuration;
+ this.sparqlQueryMaker = configuration.getSparqlQueryMaker();
+ this.sparqlTasks = configuration.sparqlTasks;
+ }
+
+ // standard query get a tupels (p,o) for subject s
+ @Override
+ public SortedSet<RDFNodeTuple> getTupelForResource(URI uri) {
+
+
+ String pred = "predicate";
+ String obj = "object";
+ // getQuery
+ String sparqlQueryString = sparqlQueryMaker
+ .makeSubjectQueryUsingFilters(uri.toString());
+
+ return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, pred, obj);
+
+ }
+
+
+
+
+
+}
Copied: trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java (from rev 1072, trunk/src/dl-learner/org/dllearner/kb/extraction/TupelAquisitor.java)
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java 2008-08-14 14:18:37 UTC (rev 1073)
@@ -0,0 +1,41 @@
+/**
+ * Copyright (C) 2007-2008, Jens Lehmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.aquisitors;
+
+import java.net.URI;
+import java.util.SortedSet;
+
+import org.dllearner.utilities.datastructures.RDFNodeTuple;
+
+/**
+ *
+ * Typed SPARQL query interface. The typing means that they all have the same
+ * input and the same output: They are fn: resource -> ( a | b ) where a
+ * normally is a predicate and b an object
+ *
+ * @author Sebastian Hellmann
+ *
+ */
+public abstract class TupelAquisitor {
+
+ public abstract SortedSet<RDFNodeTuple> getTupelForResource(URI u);
+}
+
+
Property changes on: trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java
___________________________________________________________________
Added: svn:mergeinfo
+
Copied: trunk/src/dl-learner/org/dllearner/kb/aquisitors/TypedSparqlQuery.java (from rev 1072, trunk/src/dl-learner/org/dllearner/kb/extraction/TypedSparqlQuery.java)
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/TypedSparqlQuery.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/TypedSparqlQuery.java 2008-08-14 14:18:37 UTC (rev 1073)
@@ -0,0 +1,124 @@
+/**
+ * Copyright (C) 2007, Sebastian Hellmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.aquisitors;
+
+import java.net.URI;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+import org.dllearner.core.KnowledgeSource;
+import org.dllearner.kb.extraction.Configuration;
+import org.dllearner.kb.sparql.Cache;
+import org.dllearner.kb.sparql.SparqlQuery;
+import org.dllearner.kb.sparql.SparqlQueryMaker;
+import org.dllearner.utilities.datastructures.StringTuple;
+
+import com.hp.hpl.jena.query.ResultSet;
+import com.hp.hpl.jena.query.ResultSetFormatter;
+import com.hp.hpl.jena.sparql.core.ResultBinding;
+
+/**
+ * Can execute different queries.
+ *
+ * @author Sebastian Hellmann
+ *
+ */
+public class TypedSparqlQuery implements TypedSparqlQueryInterface {
+
+ private static Logger logger = Logger.getLogger(KnowledgeSource.class);
+
+
+ boolean print_flag = false;
+ protected Configuration configuration;
+ private SparqlQueryMaker sparqlQueryMaker;
+ Cache cache;
+
+ // boolean debug_no_cache = false;// true means no cache is used
+ // private SparqlHTTPRequest SparqlHTTPRequest;
+ // private SparqlQuery sparqlQuery;
+ // private CachedSparqlQuery cachedSparqlQuery;
+
+ public TypedSparqlQuery(Configuration Configuration) {
+ this.configuration = Configuration;
+ this.sparqlQueryMaker =Configuration.getSparqlQueryMaker();
+
+ this.cache = new Cache(configuration.cacheDir);
+ // this.sparqlQuery=new SparqlQuery(configuration.getSparqlEndpoint());
+ // this.cachedSparqlQuery=new
+ // CachedSparqlQuery(this.sparqlQuery,this.cache);
+ }
+
+ // standard query get a tupels (p,o) for subject s
+ /**
+ * uses a cache and gets the result tuples for a resource u
+ *
+ * @param uri
+ * the resource
+ * @param sparqlQueryString
+ * @param a
+ * the name of the first bound variable for xml parsing, normally
+ * predicate
+ * @param b
+ * the name of the second bound variable for xml parsing,
+ * normally object
+ * @return
+ */
+ @SuppressWarnings({"unchecked"})
+ public Set<StringTuple> getTupelForResource(URI uri) {
+ Set<StringTuple> s = new HashSet<StringTuple>();
+
+ String a = "predicate";
+ String b = "object";
+ // getQuery
+ String sparqlQueryString = sparqlQueryMaker
+ .makeSubjectQueryUsingFilters(uri.toString());
+
+// CachedSparqlQuery csq = new CachedSparqlQuery(configuration
+// .getSparqlEndpoint(), cache, uri.toString(), sparqlQueryString);
+
+ SparqlQuery query = new SparqlQuery(sparqlQueryString, configuration.getSparqlEndpoint());
+// query.extraDebugInfo=uri.toString();
+ String JSON = cache.executeSparqlQuery(query);
+
+ ResultSet rs = SparqlQuery.convertJSONtoResultSet(JSON);
+
+ List<ResultBinding> l = ResultSetFormatter.toList(rs);
+
+ logger.trace(l.toString());
+ for (ResultBinding resultBinding : l) {
+
+ s.add(new StringTuple(resultBinding.get(a).toString(),
+ resultBinding.get(b).toString()));
+ }
+ return s;
+ }
+
+
+
+
+
+
+
+
+
+
+}
Property changes on: trunk/src/dl-learner/org/dllearner/kb/aquisitors/TypedSparqlQuery.java
___________________________________________________________________
Added: svn:mergeinfo
+
Copied: trunk/src/dl-learner/org/dllearner/kb/aquisitors/TypedSparqlQueryClasses.java (from rev 1072, trunk/src/dl-learner/org/dllearner/kb/extraction/TypedSparqlQueryClasses.java)
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/TypedSparqlQueryClasses.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/TypedSparqlQueryClasses.java 2008-08-14 14:18:37 UTC (rev 1073)
@@ -0,0 +1,80 @@
+/**
+ * Copyright (C) 2007, Sebastian Hellmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.aquisitors;
+
+import java.net.URI;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.dllearner.kb.extraction.Configuration;
+import org.dllearner.kb.sparql.SparqlQuery;
+import org.dllearner.utilities.datastructures.StringTuple;
+
+import com.hp.hpl.jena.query.ResultSet;
+import com.hp.hpl.jena.query.ResultSetFormatter;
+import com.hp.hpl.jena.sparql.core.ResultBinding;
+
+/**
+ * Can execute different queries.
+ *
+ * @author Sebastian Hellmann
+ *
+ */
+public class TypedSparqlQueryClasses extends TypedSparqlQuery implements
+ TypedSparqlQueryInterface {
+
+ public TypedSparqlQueryClasses(Configuration configuration) {
+ super(configuration);
+ }
+
+ /*
+ * Special TypedSparqlQuery which returns superclasses of classes
+ * (non-Javadoc)
+ *
+ * @see org.dllearner.kb.sparql.TypedSparqlQuery#getTupelForResource(java.net.URI)
+ */
+ @Override
+ @SuppressWarnings({"unchecked"})
+ public Set<StringTuple> getTupelForResource(URI uri) {
+ Set<StringTuple> s = new HashSet<StringTuple>();
+ String a = "predicate";
+ String b = "object";
+ // getQuery for all super classes of classes only
+ String sparqlQueryString = "SELECT ?predicate ?object " + "WHERE {"
+ + "<" + uri.toString() + "> ?predicate ?object;"
+ + "a ?object . "
+ + " FILTER (!regex(str(?object),'http://xmlns.com/foaf/0.1/'))"
+ + "}";
+
+ SparqlQuery query = new SparqlQuery(sparqlQueryString, configuration.getSparqlEndpoint());
+// query.extraDebugInfo=uri.toString();
+ ResultSet rs = SparqlQuery.convertJSONtoResultSet(cache.executeSparqlQuery(query));
+
+ List<ResultBinding> l = ResultSetFormatter.toList(rs);
+ for (ResultBinding resultBinding : l) {
+
+ s.add(new StringTuple(resultBinding.get(a).toString(),
+ resultBinding.get(b).toString()));
+ }
+ return s;
+ }
+
+}
Property changes on: trunk/src/dl-learner/org/dllearner/kb/aquisitors/TypedSparqlQueryClasses.java
___________________________________________________________________
Added: svn:mergeinfo
+
Copied: trunk/src/dl-learner/org/dllearner/kb/aquisitors/TypedSparqlQueryInterface.java (from rev 1072, trunk/src/dl-learner/org/dllearner/kb/extraction/TypedSparqlQueryInterface.java)
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/TypedSparqlQueryInterface.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/TypedSparqlQueryInterface.java 2008-08-14 14:18:37 UTC (rev 1073)
@@ -0,0 +1,39 @@
+/**
+ * Copyright (C) 2007, Sebastian Hellmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.aquisitors;
+
+import java.net.URI;
+import java.util.Set;
+
+import org.dllearner.utilities.datastructures.StringTuple;
+
+/**
+ *
+ * Typed SPARQL query interface. The typing means that they all have the same
+ * input and the same output: They are fn: resource -> ( a | b ) where a
+ * normally is a predicate and b an object
+ *
+ * @author Sebastian Hellmann
+ *
+ */
+public interface TypedSparqlQueryInterface {
+
+ public Set<StringTuple> getTupelForResource(URI u);
+}
Property changes on: trunk/src/dl-learner/org/dllearner/kb/aquisitors/TypedSparqlQueryInterface.java
___________________________________________________________________
Added: svn:mergeinfo
+
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-08-14 12:09:10 UTC (rev 1072)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-08-14 14:18:37 UTC (rev 1073)
@@ -27,6 +27,7 @@
import java.util.TreeSet;
import java.util.Vector;
+import org.dllearner.kb.aquisitors.TypedSparqlQueryInterface;
import org.dllearner.utilities.datastructures.StringTuple;
/**
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java 2008-08-14 12:09:10 UTC (rev 1072)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java 2008-08-14 14:18:37 UTC (rev 1073)
@@ -31,10 +31,11 @@
*/
public class Configuration {
- private SPARQLTasks sparqlTasks;
+ public SPARQLTasks sparqlTasks;
private SparqlEndpoint endpoint;
private SparqlQueryMaker sparqlQueryMaker;
+
private Manipulators manipulator;
// the following needs to be moved to
// class extraction algorithm or manipulator
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-14 12:09:10 UTC (rev 1072)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-14 14:18:37 UTC (rev 1073)
@@ -24,6 +24,8 @@
import java.util.Vector;
import org.apache.log4j.Logger;
+import org.dllearner.kb.aquisitors.TypedSparqlQuery;
+import org.dllearner.kb.aquisitors.TypedSparqlQueryClasses;
/**
* This class is used to extract the information .
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-08-14 12:09:10 UTC (rev 1072)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-08-14 14:18:37 UTC (rev 1073)
@@ -27,6 +27,7 @@
import java.util.TreeSet;
import java.util.Vector;
+import org.dllearner.kb.aquisitors.TypedSparqlQueryInterface;
import org.dllearner.utilities.datastructures.StringTuple;
/**
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java 2008-08-14 12:09:10 UTC (rev 1072)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java 2008-08-14 14:18:37 UTC (rev 1073)
@@ -25,6 +25,7 @@
import java.util.TreeSet;
import org.apache.log4j.Logger;
+import org.dllearner.kb.aquisitors.TypedSparqlQuery;
import org.dllearner.kb.sparql.SparqlEndpoint;
import org.dllearner.kb.sparql.SparqlQueryMaker;
import org.dllearner.utilities.statistics.Statistics;
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-08-14 12:09:10 UTC (rev 1072)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-08-14 14:18:37 UTC (rev 1073)
@@ -23,7 +23,9 @@
import java.util.SortedSet;
import java.util.Vector;
+import org.dllearner.kb.aquisitors.TypedSparqlQueryInterface;
+
/**
* Abstract class. defines functions to expand the nodes
*
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java 2008-08-14 12:09:10 UTC (rev 1072)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java 2008-08-14 14:18:37 UTC (rev 1073)
@@ -27,6 +27,7 @@
import java.util.TreeSet;
import java.util.Vector;
+import org.dllearner.kb.aquisitors.TypedSparqlQueryInterface;
import org.dllearner.utilities.datastructures.StringTuple;
/**
Deleted: trunk/src/dl-learner/org/dllearner/kb/extraction/SparqlTupelAquisitor.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/SparqlTupelAquisitor.java 2008-08-14 12:09:10 UTC (rev 1072)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/SparqlTupelAquisitor.java 2008-08-14 14:18:37 UTC (rev 1073)
@@ -1,124 +0,0 @@
-/**
- * Copyright (C) 2007, Sebastian Hellmann
- *
- * This file is part of DL-Learner.
- *
- * DL-Learner is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DL-Learner is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.dllearner.kb.extraction;
-
-import java.net.URI;
-import java.util.List;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.apache.log4j.Logger;
-import org.dllearner.kb.sparql.Cache;
-import org.dllearner.kb.sparql.SparqlQuery;
-import org.dllearner.kb.sparql.SparqlQueryMaker;
-import org.dllearner.utilities.datastructures.StringTuple;
-
-import com.hp.hpl.jena.query.ResultSet;
-import com.hp.hpl.jena.query.ResultSetFormatter;
-import com.hp.hpl.jena.sparql.core.ResultBinding;
-
-/**
- * Can execute different queries.
- *
- * @author Sebastian Hellmann
- *
- */
-public class SparqlTupelAquisitor extends TupelAquisitor {
-
- private static Logger logger = Logger.getLogger(SparqlTupelAquisitor.class);
-
-
- //boolean print_flag = false;
- private Configuration configuration;
- private SparqlQueryMaker sparqlQueryMaker;
- Cache cache;
-
- // boolean debug_no_cache = false;// true means no cache is used
- // private SparqlHTTPRequest SparqlHTTPRequest;
- // private SparqlQuery sparqlQuery;
- // private CachedSparqlQuery cachedSparqlQuery;
-
- public SparqlTupelAquisitor(Configuration Configuration) {
- this.configuration = Configuration;
- /*this.sparqlQueryMaker = new SparqlQueryMaker(Configuration
- .getSparqlQueryType());
- */
- this.cache = new Cache(configuration.cacheDir);
- // this.sparqlQuery=new SparqlQuery(configuration.getSparqlEndpoint());
- // this.cachedSparqlQuery=new
- // CachedSparqlQuery(this.sparqlQuery,this.cache);
- }
-
- // standard query get a tupels (p,o) for subject s
- /**
- * uses a cache and gets the result tuples for a resource u
- *
- * @param uri
- * the resource
- * @param sparqlQueryString
- * @param a
- * the name of the first bound variable for xml parsing, normally
- * predicate
- * @param b
- * the name of the second bound variable for xml parsing,
- * normally object
- * @return
- */
- @Override
- @SuppressWarnings({"unchecked"})
- public SortedSet<StringTuple> getTupelForResource(URI uri) {
- SortedSet<StringTuple> s = new TreeSet<StringTuple>();
-
- String a = "predicate";
- String b = "object";
- // getQuery
- String sparqlQueryString = sparqlQueryMaker
- .makeSubjectQueryUsingFilters(uri.toString());
-
-// CachedSparqlQuery csq = new CachedSparqlQuery(configuration
-// .getSparqlEndpoint(), cache, uri.toString(), sparqlQueryString);
-
- SparqlQuery query = new SparqlQuery(sparqlQueryString, configuration.getSparqlEndpoint());
-// query.extraDebugInfo=uri.toString();
- String JSON = cache.executeSparqlQuery(query);
-
- ResultSet rs = SparqlQuery.convertJSONtoResultSet(JSON);
-
- List<ResultBinding> l = ResultSetFormatter.toList(rs);
-
- logger.trace(l.toString());
- for (ResultBinding resultBinding : l) {
-
- s.add(new StringTuple(resultBinding.get(a).toString(),
- resultBinding.get(b).toString()));
- }
- return s;
- }
-
-
-
-
-
-
-
-
-
-
-}
Deleted: trunk/src/dl-learner/org/dllearner/kb/extraction/TupelAquisitor.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/TupelAquisitor.java 2008-08-14 12:09:10 UTC (rev 1072)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/TupelAquisitor.java 2008-08-14 14:18:37 UTC (rev 1073)
@@ -1,41 +0,0 @@
-/**
- * Copyright (C) 2007, Sebastian Hellmann
- *
- * This file is part of DL-Learner.
- *
- * DL-Learner is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DL-Learner is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.dllearner.kb.extraction;
-
-import java.net.URI;
-import java.util.SortedSet;
-
-import org.dllearner.utilities.datastructures.StringTuple;
-
-/**
- *
- * Typed SPARQL query interface. The typing means that they all have the same
- * input and the same output: They are fn: resource -> ( a | b ) where a
- * normally is a predicate and b an object
- *
- * @author Sebastian Hellmann
- *
- */
-public abstract class TupelAquisitor {
-
- public abstract SortedSet<StringTuple> getTupelForResource(URI u);
-}
-
-
Deleted: trunk/src/dl-learner/org/dllearner/kb/extraction/TypedSparqlQuery.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/TypedSparqlQuery.java 2008-08-14 12:09:10 UTC (rev 1072)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/TypedSparqlQuery.java 2008-08-14 14:18:37 UTC (rev 1073)
@@ -1,123 +0,0 @@
-/**
- * Copyright (C) 2007, Sebastian Hellmann
- *
- * This file is part of DL-Learner.
- *
- * DL-Learner is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DL-Learner is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.dllearner.kb.extraction;
-
-import java.net.URI;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.log4j.Logger;
-import org.dllearner.core.KnowledgeSource;
-import org.dllearner.kb.sparql.Cache;
-import org.dllearner.kb.sparql.SparqlQuery;
-import org.dllearner.kb.sparql.SparqlQueryMaker;
-import org.dllearner.utilities.datastructures.StringTuple;
-
-import com.hp.hpl.jena.query.ResultSet;
-import com.hp.hpl.jena.query.ResultSetFormatter;
-import com.hp.hpl.jena.sparql.core.ResultBinding;
-
-/**
- * Can execute different queries.
- *
- * @author Sebastian Hellmann
- *
- */
-public class TypedSparqlQuery implements TypedSparqlQueryInterface {
-
- private static Logger logger = Logger.getLogger(KnowledgeSource.class);
-
-
- boolean print_flag = false;
- protected Configuration configuration;
- private SparqlQueryMaker sparqlQueryMaker;
- Cache cache;
-
- // boolean debug_no_cache = false;// true means no cache is used
- // private SparqlHTTPRequest SparqlHTTPRequest;
- // private SparqlQuery sparqlQuery;
- // private CachedSparqlQuery cachedSparqlQuery;
-
- public TypedSparqlQuery(Configuration Configuration) {
- this.configuration = Configuration;
- this.sparqlQueryMaker =Configuration.getSparqlQueryMaker();
-
- this.cache = new Cache(configuration.cacheDir);
- // this.sparqlQuery=new SparqlQuery(configuration.getSparqlEndpoint());
- // this.cachedSparqlQuery=new
- // CachedSparqlQuery(this.sparqlQuery,this.cache);
- }
-
- // standard query get a tupels (p,o) for subject s
- /**
- * uses a cache and gets the result tuples for a resource u
- *
- * @param uri
- * the resource
- * @param sparqlQueryString
- * @param a
- * the name of the first bound variable for xml parsing, normally
- * predicate
- * @param b
- * the name of the second bound variable for xml parsing,
- * normally object
- * @return
- */
- @SuppressWarnings({"unchecked"})
- public Set<StringTuple> getTupelForResource(URI uri) {
- Set<StringTuple> s = new HashSet<StringTuple>();
-
- String a = "predicate";
- String b = "object";
- // getQuery
- String sparqlQueryString = sparqlQueryMaker
- .makeSubjectQueryUsingFilters(uri.toString());
-
-// CachedSparqlQuery csq = new CachedSparqlQuery(configuration
-// .getSparqlEndpoint(), cache, uri.toString(), sparqlQueryString);
-
- SparqlQuery query = new SparqlQuery(sparqlQueryString, configuration.getSparqlEndpoint());
-// query.extraDebugInfo=uri.toString();
- String JSON = cache.executeSparqlQuery(query);
-
- ResultSet rs = SparqlQuery.convertJSONtoResultSet(JSON);
-
- List<ResultBinding> l = ResultSetFormatter.toList(rs);
-
- logger.trace(l.toString());
- for (ResultBinding resultBinding : l) {
-
- s.add(new StringTuple(resultBinding.get(a).toString(),
- resultBinding.get(b).toString()));
- }
- return s;
- }
-
-
-
-
-
-
-
-
-
-
-}
Deleted: trunk/src/dl-learner/org/dllearner/kb/extraction/TypedSparqlQueryClasses.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/TypedSparqlQueryClasses.java 2008-08-14 12:09:10 UTC (rev 1072)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/TypedSparqlQueryClasses.java 2008-08-14 14:18:37 UTC (rev 1073)
@@ -1,79 +0,0 @@
-/**
- * Copyright (C) 2007, Sebastian Hellmann
- *
- * This file is part of DL-Learner.
- *
- * DL-Learner is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DL-Learner is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.dllearner.kb.extraction;
-
-import java.net.URI;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.dllearner.kb.sparql.SparqlQuery;
-import org.dllearner.utilities.datastructures.StringTuple;
-
-import com.hp.hpl.jena.query.ResultSet;
-import com.hp.hpl.jena.query.ResultSetFormatter;
-import com.hp.hpl.jena.sparql.core.ResultBinding;
-
-/**
- * Can execute different queries.
- *
- * @author Sebastian Hellmann
- *
- */
-public class TypedSparqlQueryClasses extends TypedSparqlQuery implements
- TypedSparqlQueryInterface {
-
- public TypedSparqlQueryClasses(Configuration configuration) {
- super(configuration);
- }
-
- /*
- * Special TypedSparqlQuery which returns superclasses of classes
- * (non-Javadoc)
- *
- * @see org.dllearner.kb.sparql.TypedSparqlQuery#getTupelForResource(java.net.URI)
- */
- @Override
- @SuppressWarnings({"unchecked"})
- public Set<StringTuple> getTupelForResource(URI uri) {
- Set<StringTuple> s = new HashSet<StringTuple>();
- String a = "predicate";
- String b = "object";
- // getQuery for all super classes of classes only
- String sparqlQueryString = "SELECT ?predicate ?object " + "WHERE {"
- + "<" + uri.toString() + "> ?predicate ?object;"
- + "a ?object . "
- + " FILTER (!regex(str(?object),'http://xmlns.com/foaf/0.1/'))"
- + "}";
-
- SparqlQuery query = new SparqlQuery(sparqlQueryString, configuration.getSparqlEndpoint());
-// query.extraDebugInfo=uri.toString();
- ResultSet rs = SparqlQuery.convertJSONtoResultSet(cache.executeSparqlQuery(query));
-
- List<ResultBinding> l = ResultSetFormatter.toList(rs);
- for (ResultBinding resultBinding : l) {
-
- s.add(new StringTuple(resultBinding.get(a).toString(),
- resultBinding.get(b).toString()));
- }
- return s;
- }
-
-}
Deleted: trunk/src/dl-learner/org/dllearner/kb/extraction/TypedSparqlQueryInterface.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/TypedSparqlQueryInterface.java 2008-08-14 12:09:10 UTC (rev 1072)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/TypedSparqlQueryInterface.java 2008-08-14 14:18:37 UTC (rev 1073)
@@ -1,39 +0,0 @@
-/**
- * Copyright (C) 2007, Sebastian Hellmann
- *
- * This file is part of DL-Learner.
- *
- * DL-Learner is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DL-Learner is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.dllearner.kb.extraction;
-
-import java.net.URI;
-import java.util.Set;
-
-import org.dllearner.utilities.datastructures.StringTuple;
-
-/**
- *
- * Typed SPARQL query interface. The typing means that they all have the same
- * input and the same output: They are fn: resource -> ( a | b ) where a
- * normally is a predicate and b an object
- *
- * @author Sebastian Hellmann
- *
- */
-public interface TypedSparqlQueryInterface {
-
- public Set<StringTuple> getTupelForResource(URI u);
-}
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java 2008-08-14 12:09:10 UTC (rev 1072)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java 2008-08-14 14:18:37 UTC (rev 1073)
@@ -24,6 +24,7 @@
import java.util.TreeSet;
import org.apache.log4j.Logger;
+import org.dllearner.utilities.datastructures.RDFNodeTuple;
import org.dllearner.utilities.datastructures.StringTuple;
import com.hp.hpl.jena.query.ResultSet;
@@ -383,7 +384,7 @@
return queryAsSet(sparqlQueryString, variable);
}
-
+ @Deprecated
public SortedSet<StringTuple> queryAsTuple(String subject, boolean filterLiterals) {
ResultSetRewindable rs = null;
String p = "predicate";
@@ -405,6 +406,47 @@
return getTuplesFromResultSet(rs, p, o);
}
+ @Deprecated
+ public SortedSet<StringTuple> queryAsTuple(String sparqlQueryString, String var1, String var2) {
+ ResultSetRewindable rs = null;
+ try {
+ String jsonString = query(sparqlQueryString);
+ rs = SparqlQuery.convertJSONtoResultSet(jsonString);
+
+ } catch (Exception e) {
+ logger.warn(e.getMessage());
+ }
+
+ //SimpleClock sc = new SimpleClock();
+ //rw = ResultSetFactory.makeRewindable(rs);
+ //sc.printAndSet("rewindable");
+ return getTuplesFromResultSet(rs, var1, var2);
+ }
+
+ @SuppressWarnings("unchecked")
+ public SortedSet<RDFNodeTuple> queryAsRDFNodeTuple(String sparqlQueryString, String var1, String var2) {
+ ResultSetRewindable rsw = null;
+ SortedSet<RDFNodeTuple> returnSet = new TreeSet<RDFNodeTuple>();
+
+ try {
+ String jsonString = query(sparqlQueryString);
+ rsw = SparqlQuery.convertJSONtoResultSet(jsonString);
+
+ } catch (Exception e) {
+ logger.warn(e.getMessage());
+ }
+
+ List<ResultBinding> l = ResultSetFormatter.toList(rsw);
+ for (ResultBinding resultBinding : l) {
+ returnSet.add(new RDFNodeTuple(resultBinding.get(var1),resultBinding.get(var2)));
+ }
+
+ rsw.reset();
+
+ return returnSet;
+ }
+
+
/**
* little higher level, executes query ,returns all resources for a
* variable.
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2008-08-14 12:09:10 UTC (rev 1072)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2008-08-14 14:18:37 UTC (rev 1073)
@@ -96,7 +96,23 @@
return returnString;
}
+
+ public String makeClassQueryUsingFilters(String subject) {
+ // String filter = internalFilterAssemblySubject();
+ String tmpFilter = internalFilterAssemblySubject("predicate", "object");
+ tmpFilter = (tmpFilter.length() > 0) ? "FILTER( " + lineend + tmpFilter
+ + "). " : " ";
+
+ String returnString = "SELECT * WHERE {" +lineend +
+ "<" + subject + "> ?predicate ?object;" +
+ "a ?object . "+lineend+
+ tmpFilter + "}";
+
+
+ return returnString;
+ }
+
public String makeSubjectQueryLevel(String subject, int level) {
// String filter = internalFilterAssemblySubject();
Modified: trunk/src/dl-learner/org/dllearner/test/FilterTest.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/test/FilterTest.java 2008-08-14 12:09:10 UTC (rev 1072)
+++ trunk/src/dl-learner/org/dllearner/test/FilterTest.java 2008-08-14 14:18:37 UTC (rev 1073)
@@ -36,6 +36,7 @@
/**
* @param args
*/
+ @SuppressWarnings("deprecation")
public static void main(String[] args) {
// System.out.println(qextralong);
@@ -78,6 +79,7 @@
}
+ @SuppressWarnings("deprecation")
static void testShort(){
SortedSet<StringTuple> tupleset = new TreeSet<StringTuple>();
sc.reset();
@@ -116,6 +118,7 @@
sc.printAndSet("qextrashort ");
}
+ @SuppressWarnings("deprecation")
static void testShortWithFilter(){
SortedSet<StringTuple> tupleset = new TreeSet<StringTuple>();
SortedSet<StringTuple> afterfilter= new TreeSet<StringTuple>();
Added: trunk/src/dl-learner/org/dllearner/test/TripleTypeTest.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/test/TripleTypeTest.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/test/TripleTypeTest.java 2008-08-14 14:18:37 UTC (rev 1073)
@@ -0,0 +1,44 @@
+package org.dllearner.test;
+
+import java.util.List;
+
+import org.dllearner.kb.sparql.Cache;
+import org.dllearner.kb.sparql.SPARQLTasks;
+import org.dllearner.kb.sparql.SparqlEndpoint;
+
+import com.hp.hpl.jena.query.ResultSetFormatter;
+import com.hp.hpl.jena.query.ResultSetRewindable;
+import com.hp.hpl.jena.rdf.model.Literal;
+import com.hp.hpl.jena.rdf.model.RDFNode;
+import com.hp.hpl.jena.sparql.core.ResultBinding;
+
+public class TripleTypeTest {
+
+
+ public static void main(String[] args) {
+ String sparqlQueryString ="SELECT * WHERE { <http://dbpedia.org/resource/Angela_Merkel> ?predicate ?object. FILTER (isLiteral(?object))}";
+ //sparqlQueryString ="SELECT * WHERE { <http://dbpedia.org/resource/Angela_Merkel> <http://dbpedia.org/property/hasPhotoCollection> ?object }";
+ System.out.println(sparqlQueryString);
+
+ SPARQLTasks st = new SPARQLTasks (Cache.getDefaultCache(), SparqlEndpoint.getEndpointDBpedia());
+
+ ResultSetRewindable rsw = st.queryAsResultSet(sparqlQueryString);
+ List<ResultBinding> l = ResultSetFormatter.toList(rsw);
+
+ for (ResultBinding binding : l) {
+ //RDFNode pred = binding.get("predicate");
+ RDFNode obj = binding.get("object");
+ //System.out.println(pred.toString());
+ //System.out.println(obj.toString());
+ System.out.println(obj.isLiteral());
+ System.out.println(obj.isAnon());
+ System.out.println(obj.isResource());
+ System.out.println(obj.isURIResource());
+ Literal lit =(Literal) obj;
+ System.out.println(lit.toString());
+ System.out.println(lit.getLanguage());
+ }
+
+
+ }
+}
Added: trunk/src/dl-learner/org/dllearner/utilities/datastructures/RDFNodeTuple.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/utilities/datastructures/RDFNodeTuple.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/utilities/datastructures/RDFNodeTuple.java 2008-08-14 14:18:37 UTC (rev 1073)
@@ -0,0 +1,55 @@
+/**
+ * Copyright (C) 2007, Jens Lehmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.utilities.datastructures;
+
+import com.hp.hpl.jena.rdf.model.RDFNode;
+
+/**
+ * A container which can hold two Strings, mainly used as a helper.
+ * Also used as pre form, if you want to create triple, that have the same subject
+ * @author Sebastian Hellmann
+ */
+public class RDFNodeTuple implements Comparable<RDFNodeTuple>{
+
+ public RDFNode a;
+ public RDFNode b;
+
+ public RDFNodeTuple(RDFNode a, RDFNode b) {
+ this.a = a;
+ this.b = b;
+ }
+
+ @Override
+ public String toString() {
+ return "<" + a.toString() + "|" + b.toString() + ">";
+ }
+
+ public boolean equals(RDFNodeTuple t) {
+ return ((b.toString().equals(t.b.toString())) && (a.toString().equals(t.a)));
+ }
+
+ public int compareTo(RDFNodeTuple t){
+ int comp = a.toString().compareTo(t.a.toString());
+ if( comp == 0 ){
+ return b.toString().compareTo(t.b.toString());
+ }else return comp;
+ }
+
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ku...@us...> - 2008-08-14 16:43:48
|
Revision: 1074
http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1074&view=rev
Author: kurzum
Date: 2008-08-14 16:43:42 +0000 (Thu, 14 Aug 2008)
Log Message:
-----------
intermediate commit
Modified Paths:
--------------
trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java
trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java
trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java
trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java
trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java
trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java
trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java
trunk/src/dl-learner/org/dllearner/test/FilterTest.java
trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java
trunk/src/dl-learner/org/dllearner/utilities/datastructures/RDFNodeTuple.java
trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java
Added Paths:
-----------
trunk/src/dl-learner/org/dllearner/kb/manipulator/
trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorCityLocator.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorManipulator.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/ManipulatorType.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulators.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/OldManipulator.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/Rule.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java
Removed Paths:
-------------
trunk/src/dl-learner/org/dllearner/kb/extraction/DBpediaNavigatorCityLocator.java
trunk/src/dl-learner/org/dllearner/kb/extraction/DBpediaNavigatorManipulator.java
trunk/src/dl-learner/org/dllearner/kb/extraction/Manipulator.java
trunk/src/dl-learner/org/dllearner/kb/extraction/ManipulatorType.java
trunk/src/dl-learner/org/dllearner/kb/extraction/Manipulators.java
trunk/src/dl-learner/org/dllearner/test/rules/
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-08-14 14:18:37 UTC (rev 1073)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-08-14 16:43:42 UTC (rev 1074)
@@ -28,6 +28,7 @@
import java.util.Vector;
import org.dllearner.kb.aquisitors.TypedSparqlQueryInterface;
+import org.dllearner.kb.manipulator.Manipulators;
import org.dllearner.utilities.datastructures.StringTuple;
/**
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java 2008-08-14 14:18:37 UTC (rev 1073)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java 2008-08-14 16:43:42 UTC (rev 1074)
@@ -19,6 +19,7 @@
*/
package org.dllearner.kb.extraction;
+import org.dllearner.kb.manipulator.Manipulators;
import org.dllearner.kb.sparql.SPARQLTasks;
import org.dllearner.kb.sparql.SparqlEndpoint;
import org.dllearner.kb.sparql.SparqlQueryMaker;
Deleted: trunk/src/dl-learner/org/dllearner/kb/extraction/DBpediaNavigatorCityLocator.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/DBpediaNavigatorCityLocator.java 2008-08-14 14:18:37 UTC (rev 1073)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/DBpediaNavigatorCityLocator.java 2008-08-14 16:43:42 UTC (rev 1074)
@@ -1,58 +0,0 @@
-package org.dllearner.kb.extraction;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.dllearner.utilities.datastructures.StringTuple;
-
-public class DBpediaNavigatorCityLocator {
-
- public static String getTypeToCoordinates(float lat, float lng){
- if (lat<71.08&&lat>33.39&&lng>-24.01&&lng<50.8){
- if (lat>50&&lat<52&&lng>12&&lng<13){
- return "http://dbpedia.org/class/custom/City_in_Saxony";
- }
- else return "http://dbpedia.org/class/custom/City_in_Europe";
- }
- else if (lng>-17.5&&lng<52.04&&lat>-36&&lat<36.6){
- if (lat>21.45&&lat<31.51&&lng>24.7&&lng<37.26){
- return "http://dbpedia.org/class/custom/City_in_Egypt";
- }
- else return "http://dbpedia.org/class/custom/City_in_Africa";
- }
- else if (((lng>27.4&&lng<180)||(lng<-168.75))&&lat>-11.2){
- return "http://dbpedia.org/class/custom/City_in_Asia";
- }
- else if (lng>113.9&&lng<179.65&&lat<-10.8&&lat>-47.04){
- return "http://dbpedia.org/class/custom/City_in_Australia";
- }
- else if (lng>-168.4&&lng<-19.7&&lat>6.6){
- return "http://dbpedia.org/class/custom/City_in_North_America";
- }
- else if (lng>-81.56&&lng<-34.1&&lat<6.6){
- return "http://dbpedia.org/class/custom/City_in_South_America";
- }
- else return "http://dbpedia.org/class/custom/City_in_World";
- }
-
- public static Set<StringTuple> getTuplesToAdd(String uri){
- String subClass="http://www.w3.org/2000/01/rdf-schema#subClassOf";
-
- HashMap<String,String> map=new HashMap<String,String>();
- map.put("http://dbpedia.org/class/custom/City_in_Saxony", "http://dbpedia.org/class/custom/City_in_Europe");
- map.put("http://dbpedia.org/class/custom/City_in_Egypt", "http://dbpedia.org/class/custom/City_in_Africa");
- map.put("http://dbpedia.org/class/custom/City_in_Europe", "http://dbpedia.org/class/yago/City108524735");
- map.put("http://dbpedia.org/class/custom/City_in_Asia", "http://dbpedia.org/class/yago/City108524735");
- map.put("http://dbpedia.org/class/custom/City_in_Australia", "http://dbpedia.org/class/yago/City108524735");
- map.put("http://dbpedia.org/class/custom/City_in_North_America", "http://dbpedia.org/class/yago/City108524735");
- map.put("http://dbpedia.org/class/custom/City_in_South_America", "http://dbpedia.org/class/yago/City108524735");
- map.put("http://dbpedia.org/class/custom/City_in_Africa", "http://dbpedia.org/class/yago/City108524735");
- map.put("http://dbpedia.org/class/custom/City_in_World", "http://dbpedia.org/class/yago/City108524735");
- Set<StringTuple> toAdd = new HashSet<StringTuple>();
- if (map.containsKey(uri)){
- toAdd.add(new StringTuple(subClass,map.get(uri)));
- }
- return toAdd;
- }
-}
Deleted: trunk/src/dl-learner/org/dllearner/kb/extraction/DBpediaNavigatorManipulator.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/DBpediaNavigatorManipulator.java 2008-08-14 14:18:37 UTC (rev 1073)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/DBpediaNavigatorManipulator.java 2008-08-14 16:43:42 UTC (rev 1074)
@@ -1,139 +0,0 @@
-/**
- * Copyright (C) 2007, Sebastian Hellmann
- *
- * This file is part of DL-Learner.
- *
- * DL-Learner is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DL-Learner is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.dllearner.kb.extraction;
-
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.Set;
-
-import org.dllearner.utilities.datastructures.StringTuple;
-
-/**
- * Used to manipulate retrieved tupels, identify blanknodes, etc.
- *
- * @author Sebastian Hellmann
- *
- */
-public class DBpediaNavigatorManipulator implements Manipulators{
- public final String subclass = "http://www.w3.org/2000/01/rdf-schema#subClassOf";
- public final String type = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
- final String objectProperty = "http://www.w3.org/2002/07/owl#ObjectProperty";
- final String classns = "http://www.w3.org/2002/07/owl#Class";
- final String thing = "http://www.w3.org/2002/07/owl#Thing";
-
- public String blankNodeIdentifier = "bnode";
- public int breakSuperClassRetrievalAfter = 200;
- public LinkedList<StringTuple> replacePredicate;
- public LinkedList<StringTuple> replaceObject;
-
- // Set<String> classproperties;
-
- public DBpediaNavigatorManipulator(String blankNodeIdentifier,
- int breakSuperClassRetrievalAfter,
- LinkedList<StringTuple> replacePredicate,
- LinkedList<StringTuple> replaceObject) {
- this.blankNodeIdentifier = blankNodeIdentifier;
- this.replaceObject = replaceObject;
- this.replacePredicate = replacePredicate;
- this.breakSuperClassRetrievalAfter = breakSuperClassRetrievalAfter;
- // Set<String> classproperties = new HashSet<String>();
- // classproperties.add(subclass);
-
- }
-
- /**
- * this checks for consistency and manipulates the tuples, before they get
- * triple
- *
- * @param tuples
- * tuples for the node
- * @param node
- * @return
- */
- public Set<StringTuple> check(Set<StringTuple> tuples, Node node) {
- //Set<StringTuple> toRemove = new HashSet<StringTuple>();
- Iterator<StringTuple> it = tuples.iterator();
- float lat=0;
- float lng=0;
- String clas="";
- StringTuple typeTupel=null;
- tuples.addAll(DBpediaNavigatorCityLocator.getTuplesToAdd(node.uri.toString()));
- while (it.hasNext()) {
- StringTuple t = (StringTuple) it.next();
-
- if (t.a.equals("http://www.w3.org/1999/02/22-rdf-syntax-ns#type")){
- clas=t.b;
- typeTupel=t;
- }
-
- if (t.a.equals("http://www.w3.org/2003/01/geo/wgs84_pos#lat"))
- lat=Float.parseFloat(t.b.substring(0,t.b.indexOf("^^")));
- if (t.a.equals("http://www.w3.org/2003/01/geo/wgs84_pos#long"))
- lng=Float.parseFloat(t.b.substring(0,t.b.indexOf("^^")));
-
- /*replacePredicate(t);
- replaceObject(t);
-
-
- // remove <rdf:type, owl:class>
- // this is done to avoid transformation to owl:subclassof
- if (t.a.equals(type) && t.b.equals(classns)
- && node instanceof ClassNode) {
- toRemove.add(t);
- }
-
- // all with type class
- if (t.b.equals(classns) && node instanceof ClassNode) {
- toRemove.add(t);
- }
-
- // remove all instances with owl:type thing
- if (t.a.equals(type) && t.b.equals(thing)
- && node instanceof InstanceNode) {
- toRemove.add(t);
- }*/
-
- }
- if (clas.equals("http://dbpedia.org/class/yago/City108524735")){
- String newType=DBpediaNavigatorCityLocator.getTypeToCoordinates(lat, lng);
- tuples.add(new StringTuple("http://www.w3.org/1999/02/22-rdf-syntax-ns#type",newType));
- tuples.remove(typeTupel);
- }
- //tuples.removeAll(toRemove);
-
- return tuples;
- }
-
- /*private void replacePredicate(StringTuple t) {
- for (StringTuple rep : replacePredicate) {
- if (rep.a.equals(t.a)) {
- t.a = rep.b;
- }
- }
- }
-
- private void replaceObject(StringTuple t) {
- for (StringTuple rep : replaceObject) {
- if (rep.a.equals(t.a)) {
- t.a = rep.b;
- }
- }
- }*/
-}
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-14 14:18:37 UTC (rev 1073)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-14 16:43:42 UTC (rev 1074)
@@ -26,6 +26,7 @@
import org.apache.log4j.Logger;
import org.dllearner.kb.aquisitors.TypedSparqlQuery;
import org.dllearner.kb.aquisitors.TypedSparqlQueryClasses;
+import org.dllearner.kb.manipulator.Manipulators;
/**
* This class is used to extract the information .
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-08-14 14:18:37 UTC (rev 1073)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-08-14 16:43:42 UTC (rev 1074)
@@ -28,6 +28,7 @@
import java.util.Vector;
import org.dllearner.kb.aquisitors.TypedSparqlQueryInterface;
+import org.dllearner.kb.manipulator.Manipulators;
import org.dllearner.utilities.datastructures.StringTuple;
/**
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java 2008-08-14 14:18:37 UTC (rev 1073)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java 2008-08-14 16:43:42 UTC (rev 1074)
@@ -26,6 +26,7 @@
import org.apache.log4j.Logger;
import org.dllearner.kb.aquisitors.TypedSparqlQuery;
+import org.dllearner.kb.manipulator.Manipulators;
import org.dllearner.kb.sparql.SparqlEndpoint;
import org.dllearner.kb.sparql.SparqlQueryMaker;
import org.dllearner.utilities.statistics.Statistics;
Deleted: trunk/src/dl-learner/org/dllearner/kb/extraction/Manipulator.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Manipulator.java 2008-08-14 14:18:37 UTC (rev 1073)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Manipulator.java 2008-08-14 16:43:42 UTC (rev 1074)
@@ -1,157 +0,0 @@
-/**
- * Copyright (C) 2007, Sebastian Hellmann
- *
- * This file is part of DL-Learner.
- *
- * DL-Learner is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DL-Learner is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.dllearner.kb.extraction;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.Set;
-
-import org.dllearner.utilities.datastructures.StringTuple;
-
-/**
- * Used to manipulate retrieved tupels, identify blanknodes, etc.
- *
- * @author Sebastian Hellmann
- *
- */
-public class Manipulator implements Manipulators{
- public final String subclass = "http://www.w3.org/2000/01/rdf-schema#subClassOf";
- public final String type = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
- final String objectProperty = "http://www.w3.org/2002/07/owl#ObjectProperty";
- final String classns = "http://www.w3.org/2002/07/owl#Class";
- final String thing = "http://www.w3.org/2002/07/owl#Thing";
-
- public String blankNodeIdentifier = "bnode";
- public int breakSuperClassRetrievalAfter = 200;
- public LinkedList<StringTuple> replacePredicate;
- public LinkedList<StringTuple> replaceObject;
-
- // Set<String> classproperties;
-
- public Manipulator(String blankNodeIdentifier,
- int breakSuperClassRetrievalAfter,
- LinkedList<StringTuple> replacePredicate,
- LinkedList<StringTuple> replaceObject) {
- this.blankNodeIdentifier = blankNodeIdentifier;
- this.replaceObject = replaceObject;
- this.replacePredicate = replacePredicate;
- this.breakSuperClassRetrievalAfter = breakSuperClassRetrievalAfter;
- // Set<String> classproperties = new HashSet<String>();
- // classproperties.add(subclass);
-
- }
-
- /**
- * this checks for consistency and manipulates the tuples, before they get
- * triple
- *
- * @param tuples
- * tuples for the node
- * @param node
- * @return
- */
- public Set<StringTuple> check(Set<StringTuple> tuples, Node node) {
- Set<StringTuple> toRemove = new HashSet<StringTuple>();
- Iterator<StringTuple> it = tuples.iterator();
- while (it.hasNext()) {
- StringTuple t = (StringTuple) it.next();
-
- //HACK
-// if(t.a.equals("http://www.holygoat.co.uk/owl/redwood/0.1/tags/taggedWithTag")) {
-// //hackGetLabel(t.b);
-//
-// }
-
- // GovTrack hack
- // => we convert a string literal to a URI
- // => TODO: introduce an option for converting literals for certain
- // properties into URIs
-// String sp = "http://purl.org/dc/elements/1.1/subject";
-// if(t.a.equals(sp)) {
-// System.out.println(t);
-// System.exit(0);
-// }
-
- replacePredicate(t);
- replaceObject(t);
-
-
- // remove <rdf:type, owl:class>
- // this is done to avoid transformation to owl:subclassof
- if (t.a.equals(type) && t.b.equals(classns)
- && node instanceof ClassNode) {
- toRemove.add(t);
- }
-
- // all with type class
- if (t.b.equals(classns) && node instanceof ClassNode) {
- toRemove.add(t);
- }
-
- // remove all instances with owl:type thing
- if (t.a.equals(type) && t.b.equals(thing)
- && node instanceof InstanceNode) {
- toRemove.add(t);
- }
-
- }
- tuples.removeAll(toRemove);
-
- return tuples;
- }
-
- private void replacePredicate(StringTuple t) {
- for (StringTuple rep : replacePredicate) {
- if (rep.a.equals(t.a)) {
- t.a = rep.b;
- }
- }
- }
-
- private void replaceObject(StringTuple t) {
- for (StringTuple rep : replaceObject) {
- if (rep.a.equals(t.a)) {
- t.a = rep.b;
- }
- }
- }
-
-
- /*private String hackGetLabel(String resname){
- String query="" +
- "SELECT ?o \n" +
- "WHERE { \n" +
- "<"+resname+"> "+ " <http://www.holygoat.co.uk/owl/redwood/0.1/tags/tagName> ?o " +
- "}";
-
- System.out.println(query);
- //http://dbtune.org/musicbrainz/sparql?query=
- //SELECT ?o WHERE { <http://dbtune.org/musicbrainz/resource/tag/1391> <http://www.holygoat.co.uk/owl/redwood/0.1/tags/tagName> ?o }
- SparqlQuery s=new SparqlQuery(query,SparqlEndpoint.EndpointMusicbrainz());
- ResultSet rs=s.send();
- while (rs.hasNext()){
- rs.nextBinding();
- }
- //System.out.println("AAA"+s.getAsXMLString(s.send()) );
- return "";
- }*/
-
-}
Deleted: trunk/src/dl-learner/org/dllearner/kb/extraction/ManipulatorType.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/ManipulatorType.java 2008-08-14 14:18:37 UTC (rev 1073)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/ManipulatorType.java 2008-08-14 16:43:42 UTC (rev 1074)
@@ -1,23 +0,0 @@
-package org.dllearner.kb.extraction;
-
-import java.util.LinkedList;
-
-import org.dllearner.utilities.datastructures.StringTuple;
-
-
-/**
- * Used to get the right manipulator
- *
- * @author Sebastian Knappe
- *
- */
-public class ManipulatorType {
-
- public static Manipulators getManipulatorByName(String predefinedManipulator,String blankNodeIdentifier, int breakSuperClassRetrievalAfter, LinkedList<StringTuple> replacePredicate,LinkedList<StringTuple> replaceObject)
- {
- if (predefinedManipulator.equals("DBPEDIA-NAVIGATOR")) return new DBpediaNavigatorManipulator(blankNodeIdentifier,
- breakSuperClassRetrievalAfter, replacePredicate, replaceObject);
- else return new Manipulator(blankNodeIdentifier,
- breakSuperClassRetrievalAfter, replacePredicate, replaceObject);
- }
-}
Deleted: trunk/src/dl-learner/org/dllearner/kb/extraction/Manipulators.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Manipulators.java 2008-08-14 14:18:37 UTC (rev 1073)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Manipulators.java 2008-08-14 16:43:42 UTC (rev 1074)
@@ -1,15 +0,0 @@
-package org.dllearner.kb.extraction;
-
-import java.util.Set;
-
-import org.dllearner.utilities.datastructures.StringTuple;
-
-public interface Manipulators {
-
- public int breakSuperClassRetrievalAfter = 200;
- public final String subclass = "http://www.w3.org/2000/01/rdf-schema#subClassOf";
- public final String type = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
- public String blankNodeIdentifier = "bnode";
-
- public Set<StringTuple> check(Set<StringTuple> tuples, Node node);
-}
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-08-14 14:18:37 UTC (rev 1073)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-08-14 16:43:42 UTC (rev 1074)
@@ -24,6 +24,7 @@
import java.util.Vector;
import org.dllearner.kb.aquisitors.TypedSparqlQueryInterface;
+import org.dllearner.kb.manipulator.Manipulators;
/**
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java 2008-08-14 14:18:37 UTC (rev 1073)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java 2008-08-14 16:43:42 UTC (rev 1074)
@@ -28,6 +28,7 @@
import java.util.Vector;
import org.dllearner.kb.aquisitors.TypedSparqlQueryInterface;
+import org.dllearner.kb.manipulator.Manipulators;
import org.dllearner.utilities.datastructures.StringTuple;
/**
Copied: trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorCityLocator.java (from rev 1072, trunk/src/dl-learner/org/dllearner/kb/extraction/DBpediaNavigatorCityLocator.java)
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorCityLocator.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorCityLocator.java 2008-08-14 16:43:42 UTC (rev 1074)
@@ -0,0 +1,58 @@
+package org.dllearner.kb.manipulator;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.dllearner.utilities.datastructures.StringTuple;
+
+public class DBpediaNavigatorCityLocator {
+
+ public static String getTypeToCoordinates(float lat, float lng){
+ if (lat<71.08&&lat>33.39&&lng>-24.01&&lng<50.8){
+ if (lat>50&&lat<52&&lng>12&&lng<13){
+ return "http://dbpedia.org/class/custom/City_in_Saxony";
+ }
+ else return "http://dbpedia.org/class/custom/City_in_Europe";
+ }
+ else if (lng>-17.5&&lng<52.04&&lat>-36&&lat<36.6){
+ if (lat>21.45&&lat<31.51&&lng>24.7&&lng<37.26){
+ return "http://dbpedia.org/class/custom/City_in_Egypt";
+ }
+ else return "http://dbpedia.org/class/custom/City_in_Africa";
+ }
+ else if (((lng>27.4&&lng<180)||(lng<-168.75))&&lat>-11.2){
+ return "http://dbpedia.org/class/custom/City_in_Asia";
+ }
+ else if (lng>113.9&&lng<179.65&&lat<-10.8&&lat>-47.04){
+ return "http://dbpedia.org/class/custom/City_in_Australia";
+ }
+ else if (lng>-168.4&&lng<-19.7&&lat>6.6){
+ return "http://dbpedia.org/class/custom/City_in_North_America";
+ }
+ else if (lng>-81.56&&lng<-34.1&&lat<6.6){
+ return "http://dbpedia.org/class/custom/City_in_South_America";
+ }
+ else return "http://dbpedia.org/class/custom/City_in_World";
+ }
+
+ public static Set<StringTuple> getTuplesToAdd(String uri){
+ String subClass="http://www.w3.org/2000/01/rdf-schema#subClassOf";
+
+ HashMap<String,String> map=new HashMap<String,String>();
+ map.put("http://dbpedia.org/class/custom/City_in_Saxony", "http://dbpedia.org/class/custom/City_in_Europe");
+ map.put("http://dbpedia.org/class/custom/City_in_Egypt", "http://dbpedia.org/class/custom/City_in_Africa");
+ map.put("http://dbpedia.org/class/custom/City_in_Europe", "http://dbpedia.org/class/yago/City108524735");
+ map.put("http://dbpedia.org/class/custom/City_in_Asia", "http://dbpedia.org/class/yago/City108524735");
+ map.put("http://dbpedia.org/class/custom/City_in_Australia", "http://dbpedia.org/class/yago/City108524735");
+ map.put("http://dbpedia.org/class/custom/City_in_North_America", "http://dbpedia.org/class/yago/City108524735");
+ map.put("http://dbpedia.org/class/custom/City_in_South_America", "http://dbpedia.org/class/yago/City108524735");
+ map.put("http://dbpedia.org/class/custom/City_in_Africa", "http://dbpedia.org/class/yago/City108524735");
+ map.put("http://dbpedia.org/class/custom/City_in_World", "http://dbpedia.org/class/yago/City108524735");
+ Set<StringTuple> toAdd = new HashSet<StringTuple>();
+ if (map.containsKey(uri)){
+ toAdd.add(new StringTuple(subClass,map.get(uri)));
+ }
+ return toAdd;
+ }
+}
Property changes on: trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorCityLocator.java
___________________________________________________________________
Added: svn:mergeinfo
+
Copied: trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorManipulator.java (from rev 1072, trunk/src/dl-learner/org/dllearner/kb/extraction/DBpediaNavigatorManipulator.java)
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorManipulator.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorManipulator.java 2008-08-14 16:43:42 UTC (rev 1074)
@@ -0,0 +1,140 @@
+/**
+ * Copyright (C) 2007, Sebastian Hellmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.manipulator;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.Set;
+
+import org.dllearner.kb.extraction.Node;
+import org.dllearner.utilities.datastructures.StringTuple;
+
+/**
+ * Used to manipulate retrieved tupels, identify blanknodes, etc.
+ *
+ * @author Sebastian Hellmann
+ *
+ */
+public class DBpediaNavigatorManipulator implements Manipulators{
+ public final String subclass = "http://www.w3.org/2000/01/rdf-schema#subClassOf";
+ public final String type = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
+ final String objectProperty = "http://www.w3.org/2002/07/owl#ObjectProperty";
+ final String classns = "http://www.w3.org/2002/07/owl#Class";
+ final String thing = "http://www.w3.org/2002/07/owl#Thing";
+
+ public String blankNodeIdentifier = "bnode";
+ public int breakSuperClassRetrievalAfter = 200;
+ public LinkedList<StringTuple> replacePredicate;
+ public LinkedList<StringTuple> replaceObject;
+
+ // Set<String> classproperties;
+
+ public DBpediaNavigatorManipulator(String blankNodeIdentifier,
+ int breakSuperClassRetrievalAfter,
+ LinkedList<StringTuple> replacePredicate,
+ LinkedList<StringTuple> replaceObject) {
+ this.blankNodeIdentifier = blankNodeIdentifier;
+ this.replaceObject = replaceObject;
+ this.replacePredicate = replacePredicate;
+ this.breakSuperClassRetrievalAfter = breakSuperClassRetrievalAfter;
+ // Set<String> classproperties = new HashSet<String>();
+ // classproperties.add(subclass);
+
+ }
+
+ /**
+ * this checks for consistency and manipulates the tuples, before they get
+ * triple
+ *
+ * @param tuples
+ * tuples for the node
+ * @param node
+ * @return
+ */
+ public Set<StringTuple> check(Set<StringTuple> tuples, Node node) {
+ //Set<StringTuple> toRemove = new HashSet<StringTuple>();
+ Iterator<StringTuple> it = tuples.iterator();
+ float lat=0;
+ float lng=0;
+ String clas="";
+ StringTuple typeTupel=null;
+ tuples.addAll(DBpediaNavigatorCityLocator.getTuplesToAdd(node.getURI().toString()));
+ while (it.hasNext()) {
+ StringTuple t = (StringTuple) it.next();
+
+ if (t.a.equals("http://www.w3.org/1999/02/22-rdf-syntax-ns#type")){
+ clas=t.b;
+ typeTupel=t;
+ }
+
+ if (t.a.equals("http://www.w3.org/2003/01/geo/wgs84_pos#lat"))
+ lat=Float.parseFloat(t.b.substring(0,t.b.indexOf("^^")));
+ if (t.a.equals("http://www.w3.org/2003/01/geo/wgs84_pos#long"))
+ lng=Float.parseFloat(t.b.substring(0,t.b.indexOf("^^")));
+
+ /*replacePredicate(t);
+ replaceObject(t);
+
+
+ // remove <rdf:type, owl:class>
+ // this is done to avoid transformation to owl:subclassof
+ if (t.a.equals(type) && t.b.equals(classns)
+ && node instanceof ClassNode) {
+ toRemove.add(t);
+ }
+
+ // all with type class
+ if (t.b.equals(classns) && node instanceof ClassNode) {
+ toRemove.add(t);
+ }
+
+ // remove all instances with owl:type thing
+ if (t.a.equals(type) && t.b.equals(thing)
+ && node instanceof InstanceNode) {
+ toRemove.add(t);
+ }*/
+
+ }
+ if (clas.equals("http://dbpedia.org/class/yago/City108524735")){
+ String newType=DBpediaNavigatorCityLocator.getTypeToCoordinates(lat, lng);
+ tuples.add(new StringTuple("http://www.w3.org/1999/02/22-rdf-syntax-ns#type",newType));
+ tuples.remove(typeTupel);
+ }
+ //tuples.removeAll(toRemove);
+
+ return tuples;
+ }
+
+ /*private void replacePredicate(StringTuple t) {
+ for (StringTuple rep : replacePredicate) {
+ if (rep.a.equals(t.a)) {
+ t.a = rep.b;
+ }
+ }
+ }
+
+ private void replaceObject(StringTuple t) {
+ for (StringTuple rep : replaceObject) {
+ if (rep.a.equals(t.a)) {
+ t.a = rep.b;
+ }
+ }
+ }*/
+}
Property changes on: trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorManipulator.java
___________________________________________________________________
Added: svn:mergeinfo
+
Added: trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-08-14 16:43:42 UTC (rev 1074)
@@ -0,0 +1,218 @@
+/**
+ * Copyright (C) 2007, Sebastian Hellmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.manipulator;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.SortedSet;
+
+import org.dllearner.kb.extraction.ClassNode;
+import org.dllearner.kb.extraction.InstanceNode;
+import org.dllearner.kb.extraction.Node;
+import org.dllearner.kb.manipulator.Rule.Months;
+import org.dllearner.utilities.datastructures.RDFNodeTuple;
+import org.dllearner.utilities.owl.OWLVocabulary;
+
+/**
+ * Used to manipulate retrieved tupels, identify blanknodes, etc.
+ *
+ * @author Sebastian Hellmann
+ *
+ */
+public class Manipulator {
+
+ List<Rule> rules = new ArrayList<Rule>();
+ //List<ReplacementRule> replacementRules = new ArrayList<ReplacementRule>();
+
+
+ //public int breakSuperClassRetrievalAfter = 200;
+ //public LinkedList<StringTuple> replacePredicate;
+ //public LinkedList<StringTuple> replaceObject;
+
+ // Set<String> classproperties;
+
+ private Manipulator() {
+
+ //this.replaceObject = replaceObject;
+ //this.replacePredicate = replacePredicate;
+ //this.breakSuperClassRetrievalAfter = breakSuperClassRetrievalAfter;
+ // Set<String> classproperties = new HashSet<String>();
+ // classproperties.add(subclass);
+
+ }
+
+ /**
+ * this checks for consistency and manipulates the tuples, before they get
+ * triple
+ */
+ public SortedSet<RDFNodeTuple> manipulate( Node node, SortedSet<RDFNodeTuple> tuples) {
+
+ for (Months month : Rule.MONTHS) {
+ tuples = applyRulesOfTheMonth(month, node, tuples);
+ }
+ return tuples;
+ /*SortedSet<RDFNodeTuple> keep = new TreeSet<RDFNodeTuple>();
+
+ for (RDFNodeTuple currentTuple : tuples) {
+ currentTuple = manipulateTuple(node.getURI().toString(), currentTuple);
+ if(keepTuple(node, currentTuple)) {
+ keep.add(currentTuple);
+ }
+
+ }
+ return keep;*/
+ }
+
+ public SortedSet<RDFNodeTuple> applyRulesOfTheMonth(Months month, Node subject, SortedSet<RDFNodeTuple> tuples){
+ for (Rule rule : rules) {
+ if(rule.month.equals(month)) {
+ tuples = rule.applyRule(subject, tuples);
+ }
+ }
+ return tuples;
+ }
+
+ public static Manipulator getManipulatorByName(String predefinedManipulator)
+ {
+ if (predefinedManipulator.equalsIgnoreCase("DBPEDIA-NAVIGATOR")) {
+ return getDBpediaNavigatorManipulator();
+// return new DBpediaNavigatorManipulator(blankNodeIdentifier,
+ //breakSuperClassRetrievalAfter, replacePredicate, replaceObject);
+
+ } else if(predefinedManipulator.equalsIgnoreCase("DEFAULT")){
+ return getDefaultManipulator();
+ }
+ else {
+ //QUALITY maybe not the best, should be Default
+ return new Manipulator();
+ }
+ }
+
+ public static Manipulator getDBpediaNavigatorManipulator(){
+ Manipulator m = new Manipulator();
+ return m;
+ }
+
+ public static Manipulator getDefaultManipulator(){
+ Manipulator m = new Manipulator();
+ m.addDefaultRules();
+ return m;
+ }
+
+ //HACK
+// if(t.a.equals("http://www.holygoat.co.uk/owl/redwood/0.1/tags/taggedWithTag")) {
+// //hackGetLabel(t.b);
+//
+// }
+
+ // GovTrack hack
+ // => we convert a string literal to a URI
+ // => TODO: introduce an option for converting literals for certain
+ // properties into URIs
+// String sp = "http://purl.org/dc/elements/1.1/subject";
+// if(t.a.equals(sp)) {
+// System.out.println(t);
+// System.exit(0);
+// }
+
+
+ private void addDefaultRules(){
+
+ rules.add(new TypeFilterRule(Months.DECEMBER, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_CLASS,ClassNode.class.getCanonicalName() )) ;
+ rules.add(new TypeFilterRule(Months.DECEMBER,OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_THING,InstanceNode.class.getCanonicalName() )) ;
+ rules.add(new TypeFilterRule(Months.DECEMBER,"", OWLVocabulary.OWL_CLASS, ClassNode.class.getCanonicalName()) ) ;
+ }
+
+
+
+ /*
+ private RDFNodeTuple manipulateTuple(String subject, RDFNodeTuple tuple) {
+
+ for (int i = 0; i < replacementRules.size(); i++) {
+ ReplacementRule replace = replacementRules.get(i);
+ tuple = replace.applyRule(subject, tuple);
+ }
+ return tuple;
+ }*/
+
+ /*private String hackGetLabel(String resname){
+ String query="" +
+ "SELECT ?o \n" +
+ "WHERE { \n" +
+ "<"+resname+"> "+ " <http://www.holygoat.co.uk/owl/redwood/0.1/tags/tagName> ?o " +
+ "}";
+
+ System.out.println(query);
+ //http://dbtune.org/musicbrainz/sparql?query=
+ //SELECT ?o WHERE { <http://dbtune.org/musicbrainz/resource/tag/1391> <http://www.holygoat.co.uk/owl/redwood/0.1/tags/tagName> ?o }
+ SparqlQuery s=new SparqlQuery(query,SparqlEndpoint.EndpointMusicbrainz());
+ ResultSet rs=s.send();
+ while (rs.hasNext()){
+ rs.nextBinding();
+ }
+ //System.out.println("AAA"+s.getAsXMLString(s.send()) );
+ return "";
+ }*/
+
+ /*private void replacePredicate(StringTuple t) {
+ for (StringTuple rep : replacePredicate) {
+ if (rep.a.equals(t.a)) {
+ t.a = rep.b;
+ }
+ }
+}
+
+private void replaceObject(StringTuple t) {
+ for (StringTuple rep : replaceObject) {
+ if (rep.a.equals(t.a)) {
+ t.a = rep.b;
+ }
+ }
+}*/
+
+
+
+ /*
+ // remove <rdf:type, owl:class>
+ // this is done to avoid transformation to owl:subclassof
+ if (t.a.equals(type) && t.b.equals(classns)
+ && node instanceof ClassNode) {
+ toRemove.add(t);
+ }
+
+ // all with type class
+ if (t.b.equals(classns) && node instanceof ClassNode) {
+ toRemove.add(t);
+ }
+
+ // remove all instances with owl:type thing
+ if (t.a.equals(type) && t.b.equals(thing)
+ && node instanceof InstanceNode) {
+ toRemove.add(t);
+ }
+
+ }
+ tuples.removeAll(toRemove);
+
+ return tuples;
+}
+*/
+
+}
Copied: trunk/src/dl-learner/org/dllearner/kb/manipulator/ManipulatorType.java (from rev 1072, trunk/src/dl-learner/org/dllearner/kb/extraction/ManipulatorType.java)
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/ManipulatorType.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/ManipulatorType.java 2008-08-14 16:43:42 UTC (rev 1074)
@@ -0,0 +1,23 @@
+package org.dllearner.kb.manipulator;
+
+import java.util.LinkedList;
+
+import org.dllearner.utilities.datastructures.StringTuple;
+
+
+/**
+ * Used to get the right manipulator
+ *
+ * @author Sebastian Knappe
+ *
+ */
+public class ManipulatorType {
+
+ public static Manipulators getManipulatorByName(String predefinedManipulator,String blankNodeIdentifier, int breakSuperClassRetrievalAfter, LinkedList<StringTuple> replacePredicate,LinkedList<StringTuple> replaceObject)
+ {
+ if (predefinedManipulator.equals("DBPEDIA-NAVIGATOR")) return new DBpediaNavigatorManipulator(blankNodeIdentifier,
+ breakSuperClassRetrievalAfter, replacePredicate, replaceObject);
+ else return new OldManipulator(blankNodeIdentifier,
+ breakSuperClassRetrievalAfter, replacePredicate, replaceObject);
+ }
+}
Property changes on: trunk/src/dl-learner/org/dllearner/kb/manipulator/ManipulatorType.java
___________________________________________________________________
Added: svn:mergeinfo
+
Copied: trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulators.java (from rev 1072, trunk/src/dl-learner/org/dllearner/kb/extraction/Manipulators.java)
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulators.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulators.java 2008-08-14 16:43:42 UTC (rev 1074)
@@ -0,0 +1,16 @@
+package org.dllearner.kb.manipulator;
+
+import java.util.Set;
+
+import org.dllearner.kb.extraction.Node;
+import org.dllearner.utilities.datastructures.StringTuple;
+
+public interface Manipulators {
+
+ public int breakSuperClassRetrievalAfter = 200;
+ public final String subclass = "http://www.w3.org/2000/01/rdf-schema#subClassOf";
+ public final String type = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
+ public String blankNodeIdentifier = "bnode";
+
+ public Set<StringTuple> check(Set<StringTuple> tuples, Node node);
+}
Property changes on: trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulators.java
___________________________________________________________________
Added: svn:mergeinfo
+
Copied: trunk/src/dl-learner/org/dllearner/kb/manipulator/OldManipulator.java (from rev 1072, trunk/src/dl-learner/org/dllearner/kb/extraction/Manipulator.java)
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/OldManipulator.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/OldManipulator.java 2008-08-14 16:43:42 UTC (rev 1074)
@@ -0,0 +1,160 @@
+/**
+ * Copyright (C) 2007, Sebastian Hellmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.manipulator;
+
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.Set;
+
+import org.dllearner.kb.extraction.ClassNode;
+import org.dllearner.kb.extraction.InstanceNode;
+import org.dllearner.kb.extraction.Node;
+import org.dllearner.utilities.datastructures.StringTuple;
+
+/**
+ * Used to manipulate retrieved tupels, identify blanknodes, etc.
+ *
+ * @author Sebastian Hellmann
+ *
+ */
+public class OldManipulator implements Manipulators{
+ public final String subclass = "http://www.w3.org/2000/01/rdf-schema#subClassOf";
+ public final String type = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
+ final String objectProperty = "http://www.w3.org/2002/07/owl#ObjectProperty";
+ final String classns = "http://www.w3.org/2002/07/owl#Class";
+ final String thing = "http://www.w3.org/2002/07/owl#Thing";
+
+ public String blankNodeIdentifier = "bnode";
+ public int breakSuperClassRetrievalAfter = 200;
+ public LinkedList<StringTuple> replacePredicate;
+ public LinkedList<StringTuple> replaceObject;
+
+ // Set<String> classproperties;
+
+ public OldManipulator(String blankNodeIdentifier,
+ int breakSuperClassRetrievalAfter,
+ LinkedList<StringTuple> replacePredicate,
+ LinkedList<StringTuple> replaceObject) {
+ this.blankNodeIdentifier = blankNodeIdentifier;
+ this.replaceObject = replaceObject;
+ this.replacePredicate = replacePredicate;
+ this.breakSuperClassRetrievalAfter = breakSuperClassRetrievalAfter;
+ // Set<String> classproperties = new HashSet<String>();
+ // classproperties.add(subclass);
+
+ }
+
+ /**
+ * this checks for consistency and manipulates the tuples, before they get
+ * triple
+ *
+ * @param tuples
+ * tuples for the node
+ * @param node
+ * @return
+ */
+ public Set<StringTuple> check(Set<StringTuple> tuples, Node node) {
+ Set<StringTuple> toRemove = new HashSet<StringTuple>();
+ Iterator<StringTuple> it = tuples.iterator();
+ while (it.hasNext()) {
+ StringTuple t = (StringTuple) it.next();
+
+ //HACK
+// if(t.a.equals("http://www.holygoat.co.uk/owl/redwood/0.1/tags/taggedWithTag")) {
+// //hackGetLabel(t.b);
+//
+// }
+
+ // GovTrack hack
+ // => we convert a string literal to a URI
+ // => TODO: introduce an option for converting literals for certain
+ // properties into URIs
+// String sp = "http://purl.org/dc/elements/1.1/subject";
+// if(t.a.equals(sp)) {
+// System.out.println(t);
+// System.exit(0);
+// }
+
+ replacePredicate(t);
+ replaceObject(t);
+
+
+ // remove <rdf:type, owl:class>
+ // this is done to avoid transformation to owl:subclassof
+ if (t.a.equals(type) && t.b.equals(classns)
+ && node instanceof ClassNode) {
+ toRemove.add(t);
+ }
+
+ // all with type class
+ if (t.b.equals(classns) && node instanceof ClassNode) {
+ toRemove.add(t);
+ }
+
+ // remove all instances with owl:type thing
+ if (t.a.equals(type) && t.b.equals(thing)
+ && node instanceof InstanceNode) {
+ toRemove.add(t);
+ }
+
+ }
+ tuples.removeAll(toRemove);
+
+ return tuples;
+ }
+
+ private void replacePredicate(StringTuple t) {
+ for (StringTuple rep : replacePredicate) {
+ if (rep.a.equals(t.a)) {
+ t.a = rep.b;
+ }
+ }
+ }
+
+ private void replaceObject(StringTuple t) {
+ for (StringTuple rep : replaceObject) {
+ if (rep.a.equals(t.a)) {
+ t.a = rep.b;
+ }
+ }
+ }
+
+
+ /*private String hackGetLabel(String resname){
+ String query="" +
+ "SELECT ?o \n" +
+ "WHERE { \n" +
+ "<"+resname+"> "+ " <http://www.holygoat.co.uk/owl/redwood/0.1/tags/tagName> ?o " +
+ "}";
+
+ System.out.println(query);
+ //http://dbtune.org/musicbrainz/sparql?query=
+ //SELECT ?o WHERE { <http://dbtune.org/musicbrainz/resource/tag/1391> <http://www.holygoat.co.uk/owl/redwood/0.1/tags/tagName> ?o }
+ SparqlQuery s=new SparqlQuery(query,SparqlEndpoint.EndpointMusicbrainz());
+ ResultSet rs=s.send();
+ while (rs.hasNext()){
+ rs.nextBinding();
+ }
+ //System.out.println("AAA"+s.getAsXMLString(s.send()) );
+ return "";
+ }*/
+
+}
Property changes on: trunk/src/dl-learner/org/dllearner/kb/manipulator/OldManipulator.java
___________________________________________________________________
Added: svn:mergeinfo
+
Copied: trunk/src/dl-learner/org/dllearner/kb/manipulator/Rule.java (from rev 1072, trunk/src/dl-learner/org/dllearner/test/rules/FilterRule.java)
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/Rule.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/Rule.java 2008-08-14 16:43:42 UTC (rev 1074)
@@ -0,0 +1,43 @@
+package org.dllearner.kb.manipulator;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.SortedSet;
+
+import org.dllearner.kb.extraction.Node;
+import org.dllearner.utilities.datastructures.RDFNodeTuple;
+
+public abstract class Rule {
+
+
+ public static final List<Months> MONTHS = new ArrayList<Months>(Arrays.asList(Months.values()));
+
+ public enum Months {
+ JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY,
+ AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER;
+ }
+
+ Months month;
+
+
+
+
+ public Rule(Months month) {
+ this.month = month;
+
+ }
+
+
+ public abstract SortedSet<RDFNodeTuple> applyRule(Node subject, SortedSet<RDFNodeTuple> tuples);
+
+
+ public static void main(String[] args) {
+ System.out.println();
+ for (int i = 0; i < Months.values().length; i++) {
+ System.out.println(Months.values()[i]);
+
+ }
+ System.out.println(Months.values());
+ }
+}
Property changes on: trunk/src/dl-learner/org/dllearner/kb/manipulator/Rule.java
___________________________________________________________________
Added: svn:mergeinfo
+
Copied: trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java (from rev 1072, trunk/src/dl-learner/org/dllearner/test/rules/SimpleObjectFilterRule.java)
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java 2008-08-14 16:43:42 UTC (rev 1074)
@@ -0,0 +1,44 @@
+package org.dllearner.kb.manipulator;
+
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import org.dllearner.kb.extraction.Node;
+import org.dllearner.utilities.datastructures.RDFNodeTuple;
+
+public class SimpleObjectFilterRule extends Rule{
+
+ String objectFilter;
+
+ public SimpleObjectFilterRule(Months month, String objectFilter) {
+ super(month);
+ this.objectFilter = objectFilter;
+ }
+
+
+ @Override
+ public SortedSet<RDFNodeTuple> applyRule(Node subject, SortedSet<RDFNodeTuple> tuples){
+ SortedSet<RDFNodeTuple> keep = new TreeSet<RDFNodeTuple>();
+ for (RDFNodeTuple tuple : tuples) {
+ if(!tuple.bPartContains(objectFilter)){
+ keep.add(tuple);
+ }
+ }
+ return keep;
+ }
+
+ /*
+ private boolean keepTuple(Node subject, RDFNodeTuple tuple) {
+
+ for (int i = 0; i < filterRules.size(); i++) {
+ Rule fr = filterRules.get(i);
+ if (!(fr.keepTuple(subject, tuple))) {
+ return false;
+ }
+ }
+ return true;
+ }*/
+
+
+
+}
Property changes on: trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java
___________________________________________________________________
Added: svn:mergeinfo
+
Copied: trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java (from rev 1072, trunk/src/dl-learner/org/dllearner/test/rules/SimplePredicateFilterRule.java)
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java 2008-08-14 16:43:42 UTC (rev 1074)
@@ -0,0 +1,34 @@
+package org.dllearner.kb.manipulator;
+
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import org.dllearner.kb.extraction.Node;
+import org.dllearner.utilities.datastructures.RDFNodeTuple;
+
+public class SimplePredicateFilterRule extends Rule{
+
+ String predicateFilter;
+
+
+ public SimplePredicateFilterRule(Months month, String predicateFilter) {
+ super(month);
+ this.predicateFilter = predicateFilter;
+ }
+
+
+ @Override
+ public SortedSet<RDFNodeTuple> applyRule(Node subject, SortedSet<RDFNodeTuple> tuples){
+ SortedSet<RDFNodeTuple> keep = new TreeSet<RDFNodeTuple>();
+ for (RDFNodeTuple tuple : tuples) {
+ if(!tuple.aPartContains(predicateFilter)){
+ keep.add(tuple);
+ }
+ }
+ return keep;
+ }
+
+
+
+
+}
Property changes on: trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java
___________________________________________________________________
Added: svn:mergeinfo
+
Added: trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-08-14 16:43:42 UTC (rev 1074)
@@ -0,0 +1,58 @@
+package org.dllearner.kb.manipulator;
+
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import org.dllearner.kb.extraction.Node;
+import org.dllearner.utilities.datastructures.RDFNodeTuple;
+
+public class TypeFilterRule extends Rule{
+
+ String predicateFilter;
+ String objectFilter;
+ String canonicalClassName;
+
+
+ public TypeFilterRule(Months month, String predicateFilter, String objectFilter, String canonicalClassName) {
+ super(month);
+ this.predicateFilter = predicateFilter;
+ this.objectFilter = objectFilter;
+ this.canonicalClassName = canonicalClassName;
+ }
+
+
+
+ @Override
+ public SortedSet<RDFNodeTuple> applyRule(Node subject, SortedSet<RDFNodeTuple> tuples){
+ SortedSet<RDFNodeTuple> keep = new TreeSet<RDFNodeTuple>();
+ for (RDFNodeTuple tuple : tuples) {
+ boolean remove = (tuple.aPartContains(predicateFilter) &&
+ tuple.bPartContains(objectFilter) &&
+ subject.getClass().getCanonicalName().equals(canonicalClassName));
+ if(!remove){
+ keep.add(tuple);
+ }
+ }
+ return keep;
+ }
+
+
+ /*
+ if (t.a.equals(type) && t.b.equals(classns)
+ && node instanceof ClassNode) {
+ toRemove.add(t);
+ }
+
+ // all with type class
+ if (t.b.equals(classns) && node instanceof ClassNode) {
+ toRemove.add(t);
+ }
+
+ // remove all instances with owl:type thing
+ if (t.a.equals(type) && t.b.equals(thing)
+ && node instanceof InstanceNode) {
+ toRemove.add(t);
+ }
+ */
+
+}
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-08-14 14:18:37 UTC (rev 1073)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-08-14 16:43:42 UTC (rev 1074)
@@ -47,8 +47,8 @@
import org.dllearner.core.config.StringTupleListConfigOption;
import org.dllearner.core.owl.KB;
import org.dllearner.kb.extraction.Manager;
-import org.dllearner.kb.extraction.ManipulatorType;
-import org.dllearner.kb.extraction.Manipulators;
+import org.dllearner.kb.manipulator.ManipulatorType;
+import org.dllearner.kb.manipulator.Manipulators;
import org.dllearner.parser.KBParser;
import org.dllearner.reasoning.DIGConverter;
import org.dllearner.reasoning.JenaOWLDIGConverter;
Modified: trunk/src/dl-learner/org/dllearner/test/FilterTest.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/test/FilterTest.java 2008-08-14 14:18:37 UTC (rev 1073)
+++ trunk/src/dl-learner/org/dllearner/test/FilterTest.java 2008-08-14 16:43:42 UTC (rev 1074)
@@ -5,9 +5,6 @@
import org.dllearner.kb.sparql.SPARQLTasks;
import org.dllearner.kb.sparql.SparqlEndpoint;
-import org.dllearner.test.rules.RuleExecutor;
-import org.dllearner.test.rules.SimpleObjectFilterRule;
-import org.dllearner.test.rules.SimplePredicateFilterRule;
import org.dllearner.utilities.datastructures.SetManipulation;
import org.dllearner.utilities.datastructures.StringTuple;
import org.dllearner.utilities.statistics.SimpleClock;
@@ -122,7 +119,7 @@
static void testShortWithFilter(){
SortedSet<StringTuple> tupleset = new TreeSet<StringTuple>();
SortedSet<StringTuple> afterfilter= new TreeSet<StringTuple>();
- RuleExecutor re = new RuleExecutor();
+ /*RuleExecutor re = new RuleExecutor();
re.addFilterRule(new SimplePredicateFilterRule( "http://dbpedia.org/property/relatedInstance" ));
@@ -145,13 +142,13 @@
re.addFilterRule(new SimpleObjectFilterRule( "http://www.w3.org/2004/02/skos/core" ));
re.addFilterRule(new SimpleObjectFilterRule("http://www.geonames.org"));
+ */
-
sc.reset();
for (int i = 0; i < howmany; i++) {
tupleset = st.queryAsTuple(subject, true);
- afterfilter = re.filterTuples(subject,tupleset);
+ //afterfilter = re.filterTuples(subject,tupleset);
}
sc.printAndSet("SHORT with filter");
SetManipulation.printSet("before", tupleset);
Modified: trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-08-14 14:18:37 UTC (rev 1073)
+++ trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-08-14 16:43:42 UTC (rev 1074)
@@ -25,7 +25,7 @@
import java.util.LinkedList;
import org.dllearner.kb.extraction.Manager;
-import org.dllearner.kb.extraction.Manipulator;
+import org.dllearner.kb.manipulator.OldManipulator;
import org.dllearner.kb.sparql.SparqlEndpoint;
import org.dllearner.kb.sparql.SparqlQueryMaker;
import org.dllearner.utilities.datastructures.StringTuple;
@@ -49,7 +49,7 @@
URI u2 = new URI("http://dbpedia.org/resource/Angela_Merkel");
m.useConfiguration(SparqlQueryMaker.getSparqlQueryMakerByName("DBPEDIA"),SparqlEndpoint.getEndpointByName("YAGO"),
- new Manipulator("",200,new LinkedList<StringTuple>(),new LinkedList<StringTuple>()),
+ new OldManipulator("",200,new LinkedList<StringTuple>(),new LinkedList<StringTuple>()),
1,true,true,"cache");
//, ,
//manipulator, recursiondepth, getAllSuperClasses, closeAfterRecursion)
Modified: trunk/src/dl-learner/org/dllearner/utilities/datastructures/RDFNodeTuple.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/utilities/datastructures/RDFNodeTuple.java 2008-08-14 14:18:37 UTC (rev 1073)
+++ trunk/src/dl-learner/org/dllearner/utilities/datastructures/RDFNodeTuple.java 2008-08-14 16:43:42 UTC (rev 1074)
@@ -51,5 +51,13 @@
return b.toString().compareTo(t.b.toString());
}else return comp;
}
+
+ public boolean aPartContains(String partOf) {
+ return !(a.toString().contains(partOf));
+ }
+
+ public boolean bPartContains(String partOf) {
+ return (b.toString().contains(partOf));
+ }
}
Modified: trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java 2008-08-14 14:18:37 UTC (rev 1073)
+++ trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java 2008-08-14 16:43:42 UTC (rev 1074)
@@ -8,6 +8,10 @@
public static final String OWL_SAME_AS = "http://www.w3.org/2002/07/owl#sameAs";
+ public static final String OWL_OBJECTPROPERTY = "http://www.w3.org/2002/07/owl#ObjectProperty";
+ public static final String OWL_CLASS = "http://www.w3.org/2002/07/owl#Class";
+ public static final String OWL_THING = "http://www.w3.org/2002/07/owl#Thing";
+
// public static final String RDF_TYPE = "";
// public static final String RDF_TYPE = "";
// public static final String RDF_TYPE = "";
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ku...@us...> - 2008-08-14 17:33:29
|
Revision: 1075
http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1075&view=rev
Author: kurzum
Date: 2008-08-14 17:33:24 +0000 (Thu, 14 Aug 2008)
Log Message:
-----------
intermediate commit
Modified Paths:
--------------
trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java
trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java
trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java
trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java
trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java
trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java
trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java
Added Paths:
-----------
trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/DBPediaNavigatorCityLocatorRule.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java
trunk/src/dl-learner/org/dllearner/kb/old/
trunk/src/dl-learner/org/dllearner/kb/old/DBpediaNavigatorCityLocator.java
trunk/src/dl-learner/org/dllearner/kb/old/DBpediaNavigatorManipulator.java
trunk/src/dl-learner/org/dllearner/kb/old/ManipulatorType.java
trunk/src/dl-learner/org/dllearner/kb/old/Manipulators.java
trunk/src/dl-learner/org/dllearner/kb/old/OldManipulator.java
trunk/src/dl-learner/org/dllearner/kb/old/Scrap.java
trunk/src/dl-learner/org/dllearner/kb/old/TypedSparqlQuery.java
trunk/src/dl-learner/org/dllearner/kb/old/TypedSparqlQueryClasses.java
trunk/src/dl-learner/org/dllearner/kb/old/TypedSparqlQueryInterface.java
Removed Paths:
-------------
trunk/src/dl-learner/org/dllearner/kb/aquisitors/TypedSparqlQuery.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/TypedSparqlQueryClasses.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/TypedSparqlQueryInterface.java
trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java
trunk/src/dl-learner/org/dllearner/kb/extraction/Scrap.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorCityLocator.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorManipulator.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/ManipulatorType.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulators.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/OldManipulator.java
Deleted: trunk/src/dl-learner/org/dllearner/kb/aquisitors/TypedSparqlQuery.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/TypedSparqlQuery.java 2008-08-14 16:43:42 UTC (rev 1074)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/TypedSparqlQuery.java 2008-08-14 17:33:24 UTC (rev 1075)
@@ -1,124 +0,0 @@
-/**
- * Copyright (C) 2007, Sebastian Hellmann
- *
- * This file is part of DL-Learner.
- *
- * DL-Learner is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DL-Learner is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.dllearner.kb.aquisitors;
-
-import java.net.URI;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.log4j.Logger;
-import org.dllearner.core.KnowledgeSource;
-import org.dllearner.kb.extraction.Configuration;
-import org.dllearner.kb.sparql.Cache;
-import org.dllearner.kb.sparql.SparqlQuery;
-import org.dllearner.kb.sparql.SparqlQueryMaker;
-import org.dllearner.utilities.datastructures.StringTuple;
-
-import com.hp.hpl.jena.query.ResultSet;
-import com.hp.hpl.jena.query.ResultSetFormatter;
-import com.hp.hpl.jena.sparql.core.ResultBinding;
-
-/**
- * Can execute different queries.
- *
- * @author Sebastian Hellmann
- *
- */
-public class TypedSparqlQuery implements TypedSparqlQueryInterface {
-
- private static Logger logger = Logger.getLogger(KnowledgeSource.class);
-
-
- boolean print_flag = false;
- protected Configuration configuration;
- private SparqlQueryMaker sparqlQueryMaker;
- Cache cache;
-
- // boolean debug_no_cache = false;// true means no cache is used
- // private SparqlHTTPRequest SparqlHTTPRequest;
- // private SparqlQuery sparqlQuery;
- // private CachedSparqlQuery cachedSparqlQuery;
-
- public TypedSparqlQuery(Configuration Configuration) {
- this.configuration = Configuration;
- this.sparqlQueryMaker =Configuration.getSparqlQueryMaker();
-
- this.cache = new Cache(configuration.cacheDir);
- // this.sparqlQuery=new SparqlQuery(configuration.getSparqlEndpoint());
- // this.cachedSparqlQuery=new
- // CachedSparqlQuery(this.sparqlQuery,this.cache);
- }
-
- // standard query get a tupels (p,o) for subject s
- /**
- * uses a cache and gets the result tuples for a resource u
- *
- * @param uri
- * the resource
- * @param sparqlQueryString
- * @param a
- * the name of the first bound variable for xml parsing, normally
- * predicate
- * @param b
- * the name of the second bound variable for xml parsing,
- * normally object
- * @return
- */
- @SuppressWarnings({"unchecked"})
- public Set<StringTuple> getTupelForResource(URI uri) {
- Set<StringTuple> s = new HashSet<StringTuple>();
-
- String a = "predicate";
- String b = "object";
- // getQuery
- String sparqlQueryString = sparqlQueryMaker
- .makeSubjectQueryUsingFilters(uri.toString());
-
-// CachedSparqlQuery csq = new CachedSparqlQuery(configuration
-// .getSparqlEndpoint(), cache, uri.toString(), sparqlQueryString);
-
- SparqlQuery query = new SparqlQuery(sparqlQueryString, configuration.getSparqlEndpoint());
-// query.extraDebugInfo=uri.toString();
- String JSON = cache.executeSparqlQuery(query);
-
- ResultSet rs = SparqlQuery.convertJSONtoResultSet(JSON);
-
- List<ResultBinding> l = ResultSetFormatter.toList(rs);
-
- logger.trace(l.toString());
- for (ResultBinding resultBinding : l) {
-
- s.add(new StringTuple(resultBinding.get(a).toString(),
- resultBinding.get(b).toString()));
- }
- return s;
- }
-
-
-
-
-
-
-
-
-
-
-}
Deleted: trunk/src/dl-learner/org/dllearner/kb/aquisitors/TypedSparqlQueryClasses.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/TypedSparqlQueryClasses.java 2008-08-14 16:43:42 UTC (rev 1074)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/TypedSparqlQueryClasses.java 2008-08-14 17:33:24 UTC (rev 1075)
@@ -1,80 +0,0 @@
-/**
- * Copyright (C) 2007, Sebastian Hellmann
- *
- * This file is part of DL-Learner.
- *
- * DL-Learner is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DL-Learner is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.dllearner.kb.aquisitors;
-
-import java.net.URI;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.dllearner.kb.extraction.Configuration;
-import org.dllearner.kb.sparql.SparqlQuery;
-import org.dllearner.utilities.datastructures.StringTuple;
-
-import com.hp.hpl.jena.query.ResultSet;
-import com.hp.hpl.jena.query.ResultSetFormatter;
-import com.hp.hpl.jena.sparql.core.ResultBinding;
-
-/**
- * Can execute different queries.
- *
- * @author Sebastian Hellmann
- *
- */
-public class TypedSparqlQueryClasses extends TypedSparqlQuery implements
- TypedSparqlQueryInterface {
-
- public TypedSparqlQueryClasses(Configuration configuration) {
- super(configuration);
- }
-
- /*
- * Special TypedSparqlQuery which returns superclasses of classes
- * (non-Javadoc)
- *
- * @see org.dllearner.kb.sparql.TypedSparqlQuery#getTupelForResource(java.net.URI)
- */
- @Override
- @SuppressWarnings({"unchecked"})
- public Set<StringTuple> getTupelForResource(URI uri) {
- Set<StringTuple> s = new HashSet<StringTuple>();
- String a = "predicate";
- String b = "object";
- // getQuery for all super classes of classes only
- String sparqlQueryString = "SELECT ?predicate ?object " + "WHERE {"
- + "<" + uri.toString() + "> ?predicate ?object;"
- + "a ?object . "
- + " FILTER (!regex(str(?object),'http://xmlns.com/foaf/0.1/'))"
- + "}";
-
- SparqlQuery query = new SparqlQuery(sparqlQueryString, configuration.getSparqlEndpoint());
-// query.extraDebugInfo=uri.toString();
- ResultSet rs = SparqlQuery.convertJSONtoResultSet(cache.executeSparqlQuery(query));
-
- List<ResultBinding> l = ResultSetFormatter.toList(rs);
- for (ResultBinding resultBinding : l) {
-
- s.add(new StringTuple(resultBinding.get(a).toString(),
- resultBinding.get(b).toString()));
- }
- return s;
- }
-
-}
Deleted: trunk/src/dl-learner/org/dllearner/kb/aquisitors/TypedSparqlQueryInterface.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/TypedSparqlQueryInterface.java 2008-08-14 16:43:42 UTC (rev 1074)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/TypedSparqlQueryInterface.java 2008-08-14 17:33:24 UTC (rev 1075)
@@ -1,39 +0,0 @@
-/**
- * Copyright (C) 2007, Sebastian Hellmann
- *
- * This file is part of DL-Learner.
- *
- * DL-Learner is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DL-Learner is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.dllearner.kb.aquisitors;
-
-import java.net.URI;
-import java.util.Set;
-
-import org.dllearner.utilities.datastructures.StringTuple;
-
-/**
- *
- * Typed SPARQL query interface. The typing means that they all have the same
- * input and the same output: They are fn: resource -> ( a | b ) where a
- * normally is a predicate and b an object
- *
- * @author Sebastian Hellmann
- *
- */
-public interface TypedSparqlQueryInterface {
-
- public Set<StringTuple> getTupelForResource(URI u);
-}
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-08-14 16:43:42 UTC (rev 1074)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-08-14 17:33:24 UTC (rev 1075)
@@ -27,8 +27,8 @@
import java.util.TreeSet;
import java.util.Vector;
-import org.dllearner.kb.aquisitors.TypedSparqlQueryInterface;
-import org.dllearner.kb.manipulator.Manipulators;
+import org.dllearner.kb.old.Manipulators;
+import org.dllearner.kb.old.TypedSparqlQueryInterface;
import org.dllearner.utilities.datastructures.StringTuple;
/**
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java 2008-08-14 16:43:42 UTC (rev 1074)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java 2008-08-14 17:33:24 UTC (rev 1075)
@@ -19,7 +19,7 @@
*/
package org.dllearner.kb.extraction;
-import org.dllearner.kb.manipulator.Manipulators;
+import org.dllearner.kb.old.Manipulators;
import org.dllearner.kb.sparql.SPARQLTasks;
import org.dllearner.kb.sparql.SparqlEndpoint;
import org.dllearner.kb.sparql.SparqlQueryMaker;
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-14 16:43:42 UTC (rev 1074)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-14 17:33:24 UTC (rev 1075)
@@ -24,9 +24,9 @@
import java.util.Vector;
import org.apache.log4j.Logger;
-import org.dllearner.kb.aquisitors.TypedSparqlQuery;
-import org.dllearner.kb.aquisitors.TypedSparqlQueryClasses;
-import org.dllearner.kb.manipulator.Manipulators;
+import org.dllearner.kb.old.Manipulators;
+import org.dllearner.kb.old.TypedSparqlQuery;
+import org.dllearner.kb.old.TypedSparqlQueryClasses;
/**
* This class is used to extract the information .
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-08-14 16:43:42 UTC (rev 1074)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-08-14 17:33:24 UTC (rev 1075)
@@ -27,8 +27,8 @@
import java.util.TreeSet;
import java.util.Vector;
-import org.dllearner.kb.aquisitors.TypedSparqlQueryInterface;
-import org.dllearner.kb.manipulator.Manipulators;
+import org.dllearner.kb.old.Manipulators;
+import org.dllearner.kb.old.TypedSparqlQueryInterface;
import org.dllearner.utilities.datastructures.StringTuple;
/**
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java 2008-08-14 16:43:42 UTC (rev 1074)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java 2008-08-14 17:33:24 UTC (rev 1075)
@@ -25,8 +25,8 @@
import java.util.TreeSet;
import org.apache.log4j.Logger;
-import org.dllearner.kb.aquisitors.TypedSparqlQuery;
-import org.dllearner.kb.manipulator.Manipulators;
+import org.dllearner.kb.old.Manipulators;
+import org.dllearner.kb.old.TypedSparqlQuery;
import org.dllearner.kb.sparql.SparqlEndpoint;
import org.dllearner.kb.sparql.SparqlQueryMaker;
import org.dllearner.utilities.statistics.Statistics;
Deleted: trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-08-14 16:43:42 UTC (rev 1074)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-08-14 17:33:24 UTC (rev 1075)
@@ -1,101 +0,0 @@
-/**
- * Copyright (C) 2007, Sebastian Hellmann
- *
- * This file is part of DL-Learner.
- *
- * DL-Learner is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DL-Learner is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.dllearner.kb.extraction;
-
-import java.net.URI;
-import java.util.SortedSet;
-import java.util.Vector;
-
-import org.dllearner.kb.aquisitors.TypedSparqlQueryInterface;
-import org.dllearner.kb.manipulator.Manipulators;
-
-
-/**
- * Abstract class. defines functions to expand the nodes
- *
- * @author Sebastian Hellmann
- *
- */
-public abstract class Node implements Comparable<Node> {
-
- final String subclass = "http://www.w3.org/2000/01/rdf-schema#subClassOf";
- final String rdftype = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
- final String objectProperty = "http://www.w3.org/2002/07/owl#ObjectProperty";
- final String classns = "http://www.w3.org/2002/07/owl#Class";
- final String thing = "http://www.w3.org/2002/07/owl#Thing";
-
- URI uri;
- // protected String type;
- protected boolean expanded = false;
-
- public Node(URI u) {
- this.uri = u;
- }
-
- /**
- * Nodes are expanded with a certain context, given by the typedSparqlQuery
- * and the manipulator
- *
- * @param typedSparqlQuery
- * @param manipulator
- * @return Vector<Node> all Nodes that are new because of expansion
- */
- public abstract Vector<Node> expand(
- TypedSparqlQueryInterface typedSparqlQuery, Manipulators manipulator);
-
- /**
- * gets type defs for properties like rdf:type SymmetricProperties
- *
- * @param typedSparqlQuery
- * @param manipulator
- * @return Vector<Node>
- */
- public abstract void expandProperties(
- TypedSparqlQueryInterface typedSparqlQuery, Manipulators manipulator);
-
- /**
- * output
- *
- * @return a set of n-triple
- */
- public abstract SortedSet<String> toNTriple();
-
- @Override
- public String toString() {
- return "Node: " + uri + ":" + this.getClass().getSimpleName();
-
- }
-
- public URI getURI() {
- return uri;
- }
-
- public boolean equals(Node n) {
- if (this.uri.equals(n.uri))
- return true;
- else
- return false;
- }
-
- public int compareTo(Node n) {
- return this.uri.toString().compareTo(n.uri.toString());
- }
-
-}
Copied: trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java (from rev 1074, trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java)
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-08-14 17:33:24 UTC (rev 1075)
@@ -0,0 +1,101 @@
+/**
+ * Copyright (C) 2007, Sebastian Hellmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.extraction;
+
+import java.net.URI;
+import java.util.SortedSet;
+import java.util.Vector;
+
+import org.dllearner.kb.old.Manipulators;
+import org.dllearner.kb.old.TypedSparqlQueryInterface;
+
+
+/**
+ * Abstract class. defines functions to expand the nodes
+ *
+ * @author Sebastian Hellmann
+ *
+ */
+public abstract class Node implements Comparable<Node> {
+
+ final String subclass = "http://www.w3.org/2000/01/rdf-schema#subClassOf";
+ final String rdftype = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
+ final String objectProperty = "http://www.w3.org/2002/07/owl#ObjectProperty";
+ final String classns = "http://www.w3.org/2002/07/owl#Class";
+ final String thing = "http://www.w3.org/2002/07/owl#Thing";
+
+ URI uri;
+ // protected String type;
+ protected boolean expanded = false;
+
+ public Node(URI u) {
+ this.uri = u;
+ }
+
+ /**
+ * Nodes are expanded with a certain context, given by the typedSparqlQuery
+ * and the manipulator
+ *
+ * @param typedSparqlQuery
+ * @param manipulator
+ * @return Vector<Node> all Nodes that are new because of expansion
+ */
+ public abstract Vector<Node> expand(
+ TypedSparqlQueryInterface typedSparqlQuery, Manipulators manipulator);
+
+ /**
+ * gets type defs for properties like rdf:type SymmetricProperties
+ *
+ * @param typedSparqlQuery
+ * @param manipulator
+ * @return Vector<Node>
+ */
+ public abstract void expandProperties(
+ TypedSparqlQueryInterface typedSparqlQuery, Manipulators manipulator);
+
+ /**
+ * output
+ *
+ * @return a set of n-triple
+ */
+ public abstract SortedSet<String> toNTriple();
+
+ @Override
+ public String toString() {
+ return "Node: " + uri + ":" + this.getClass().getSimpleName();
+
+ }
+
+ public URI getURI() {
+ return uri;
+ }
+
+ public boolean equals(Node n) {
+ if (this.uri.equals(n.uri))
+ return true;
+ else
+ return false;
+ }
+
+ public int compareTo(Node n) {
+ return this.uri.toString().compareTo(n.uri.toString());
+ }
+
+}
Property changes on: trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java
___________________________________________________________________
Added: svn:mergeinfo
+
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java 2008-08-14 16:43:42 UTC (rev 1074)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java 2008-08-14 17:33:24 UTC (rev 1075)
@@ -27,8 +27,8 @@
import java.util.TreeSet;
import java.util.Vector;
-import org.dllearner.kb.aquisitors.TypedSparqlQueryInterface;
-import org.dllearner.kb.manipulator.Manipulators;
+import org.dllearner.kb.old.Manipulators;
+import org.dllearner.kb.old.TypedSparqlQueryInterface;
import org.dllearner.utilities.datastructures.StringTuple;
/**
Deleted: trunk/src/dl-learner/org/dllearner/kb/extraction/Scrap.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Scrap.java 2008-08-14 16:43:42 UTC (rev 1074)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Scrap.java 2008-08-14 17:33:24 UTC (rev 1075)
@@ -1,112 +0,0 @@
-package org.dllearner.kb.extraction;
-
-/**
- * this class collects old source code and will be removed after refactoring
- * @author Sebastian Hellmann
- *
- */
-public class Scrap {
-
- /*
- public String makeRoleQueryUsingFilters(String role) {
-
- String Filter = internalFilterAssemblyRole();
- String ret = "SELECT * WHERE { " + lineend + " ?subject <" + role
- + "> ?object. " + lineend + "FILTER( " + lineend + "(" + Filter
- + ").}";
- // System.out.println(ret);
-
- return ret;
- }
- */
-
- /*
- public String makeRoleQueryUsingFilters(String role, boolean domain) {
-
- String Filter = internalFilterAssemblyRole();
- String ret = "";
- if (domain) {
- ret = "SELECT * WHERE { " + lineend + "?subject <" + role
- + "> ?object; a []. " + lineend + "FILTER( " + lineend
- + "(" + Filter + ").}";
- // "ORDER BY ?subject";
- // System.out.println(ret);
- } else {
- ret = "SELECT * WHERE { " + lineend + "?object a [] . "
- + "?subject <" + role + "> ?object . " + lineend
- + "FILTER( " + lineend + "(" + Filter + ").}";
- // "ORDER BY ?object";
-
- }
- // System.out.println(ret);
-
- return ret;
- }*/
-
-
- /*
- *
- private String internalFilterAssemblyRole() {
-
- String Filter = "";
- if (!this.sparqlQueryType.isLiterals())
- Filter += "!isLiteral(?object))";
- for (String s : sparqlQueryType.getObjectfilterlist()) {
- Filter += lineend + filterSubject(s);
- }
- for (String o : sparqlQueryType.getObjectfilterlist()) {
- Filter += lineend + filterObject(o);
- }
- return Filter;
- }*/
-
-
- /*
- * creates a query with the specified filters for all triples with subject
- *
- * @param subject
- * the searched subject
- * @param sf
- * special object encapsulating all options
- * @return sparql query
-
- /*
- * public static String makeQueryFilter(String subject, oldSparqlFilter sf) {
- *
- * String Filter = ""; if (!sf.useLiterals) Filter += "!isLiteral(?object)";
- * for (String p : sf.getPredFilter()) { Filter += "\n" +
- * filterPredicate(p); } for (String o : sf.getObjFilter()) { Filter += "\n" +
- * filterObject(o); }
- *
- * String ret = "SELECT * WHERE { \n" + "<" + subject + "> ?predicate
- * ?object.\n"; if (!(Filter.length() == 0)) ret += "FILTER( \n" + "(" +
- * Filter + "))."; ret += "}"; // System.out.println(ret); return ret; }
- */
-
- /*
- * moved to SparqlQuery remove here creates a query for subjects with
- * the specified label @param label a phrase that is part of the label of a
- * subject @param limit this limits the amount of results @return
- *
- * @Deprecated public static String makeLabelQuery(String label,int limit){
- * // maybe use http://xmlns:com/foaf/0.1/page return
- * "SELECT DISTINCT ?subject\n"+ "WHERE { ?subject
- * <http://www.w3.org/2000/01/rdf-schema#label> ?object.?object
- * bif:contains '\""+label+"\"'@en}\n"+ "LIMIT "+limit; }
- *
- *
- * creates a query for all subjects that are of the type concept @param
- * concept the type that subjects are searched for @return
- *
- *
- * moved to SparqlQuery remove here
- * @Deprecated public static String makeConceptQuery(String concept){ return
- * "SELECT DISTINCT ?subject\n"+ "WHERE { ?subject a
- * <"+concept+">}\n"; } moved to SparqlQuery remove here
- * @Deprecated public static String makeArticleQuery(String subject){ return
- * "SELECT ?predicate,?object\n"+ "WHERE { <"+subject+">
- * ?predicate ?object}\n"; }
- */
-
-
-}
Added: trunk/src/dl-learner/org/dllearner/kb/manipulator/DBPediaNavigatorCityLocatorRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/DBPediaNavigatorCityLocatorRule.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/DBPediaNavigatorCityLocatorRule.java 2008-08-14 17:33:24 UTC (rev 1075)
@@ -0,0 +1,51 @@
+package org.dllearner.kb.manipulator;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.SortedSet;
+
+import org.dllearner.kb.extraction.Node;
+import org.dllearner.utilities.datastructures.RDFNodeTuple;
+import org.dllearner.utilities.owl.OWLVocabulary;
+
+import com.hp.hpl.jena.rdf.model.impl.ResourceImpl;
+
+public class DBPediaNavigatorCityLocatorRule extends Rule{
+
+ Map<String,String> map=new HashMap<String,String>();
+
+
+ public DBPediaNavigatorCityLocatorRule(Months month){
+ super(month);
+ map.put("http://dbpedia.org/class/custom/City_in_Saxony", "http://dbpedia.org/class/custom/City_in_Europe");
+ map.put("http://dbpedia.org/class/custom/City_in_Egypt", "http://dbpedia.org/class/custom/City_in_Africa");
+ map.put("http://dbpedia.org/class/custom/City_in_Europe", "http://dbpedia.org/class/yago/City108524735");
+ map.put("http://dbpedia.org/class/custom/City_in_Asia", "http://dbpedia.org/class/yago/City108524735");
+ map.put("http://dbpedia.org/class/custom/City_in_Australia", "http://dbpedia.org/class/yago/City108524735");
+ map.put("http://dbpedia.org/class/custom/City_in_North_America", "http://dbpedia.org/class/yago/City108524735");
+ map.put("http://dbpedia.org/class/custom/City_in_South_America", "http://dbpedia.org/class/yago/City108524735");
+ map.put("http://dbpedia.org/class/custom/City_in_Africa", "http://dbpedia.org/class/yago/City108524735");
+ map.put("http://dbpedia.org/class/custom/City_in_World", "http://dbpedia.org/class/yago/City108524735");
+ }
+
+
+
+ @Override
+ public SortedSet<RDFNodeTuple> applyRule(Node subject, SortedSet<RDFNodeTuple> tuples){
+
+ String uri;
+ if(( uri = map.get(subject.getURI().toString()) ) == null) {
+ return tuples;
+ }else {
+ tuples.add(new RDFNodeTuple(new ResourceImpl(OWLVocabulary.RDFS_SUBCLASS_OF), new ResourceImpl(uri)));
+ return tuples;
+ }
+
+
+ }
+
+
+
+
+
+}
Deleted: trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorCityLocator.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorCityLocator.java 2008-08-14 16:43:42 UTC (rev 1074)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorCityLocator.java 2008-08-14 17:33:24 UTC (rev 1075)
@@ -1,58 +0,0 @@
-package org.dllearner.kb.manipulator;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.dllearner.utilities.datastructures.StringTuple;
-
-public class DBpediaNavigatorCityLocator {
-
- public static String getTypeToCoordinates(float lat, float lng){
- if (lat<71.08&&lat>33.39&&lng>-24.01&&lng<50.8){
- if (lat>50&&lat<52&&lng>12&&lng<13){
- return "http://dbpedia.org/class/custom/City_in_Saxony";
- }
- else return "http://dbpedia.org/class/custom/City_in_Europe";
- }
- else if (lng>-17.5&&lng<52.04&&lat>-36&&lat<36.6){
- if (lat>21.45&&lat<31.51&&lng>24.7&&lng<37.26){
- return "http://dbpedia.org/class/custom/City_in_Egypt";
- }
- else return "http://dbpedia.org/class/custom/City_in_Africa";
- }
- else if (((lng>27.4&&lng<180)||(lng<-168.75))&&lat>-11.2){
- return "http://dbpedia.org/class/custom/City_in_Asia";
- }
- else if (lng>113.9&&lng<179.65&&lat<-10.8&&lat>-47.04){
- return "http://dbpedia.org/class/custom/City_in_Australia";
- }
- else if (lng>-168.4&&lng<-19.7&&lat>6.6){
- return "http://dbpedia.org/class/custom/City_in_North_America";
- }
- else if (lng>-81.56&&lng<-34.1&&lat<6.6){
- return "http://dbpedia.org/class/custom/City_in_South_America";
- }
- else return "http://dbpedia.org/class/custom/City_in_World";
- }
-
- public static Set<StringTuple> getTuplesToAdd(String uri){
- String subClass="http://www.w3.org/2000/01/rdf-schema#subClassOf";
-
- HashMap<String,String> map=new HashMap<String,String>();
- map.put("http://dbpedia.org/class/custom/City_in_Saxony", "http://dbpedia.org/class/custom/City_in_Europe");
- map.put("http://dbpedia.org/class/custom/City_in_Egypt", "http://dbpedia.org/class/custom/City_in_Africa");
- map.put("http://dbpedia.org/class/custom/City_in_Europe", "http://dbpedia.org/class/yago/City108524735");
- map.put("http://dbpedia.org/class/custom/City_in_Asia", "http://dbpedia.org/class/yago/City108524735");
- map.put("http://dbpedia.org/class/custom/City_in_Australia", "http://dbpedia.org/class/yago/City108524735");
- map.put("http://dbpedia.org/class/custom/City_in_North_America", "http://dbpedia.org/class/yago/City108524735");
- map.put("http://dbpedia.org/class/custom/City_in_South_America", "http://dbpedia.org/class/yago/City108524735");
- map.put("http://dbpedia.org/class/custom/City_in_Africa", "http://dbpedia.org/class/yago/City108524735");
- map.put("http://dbpedia.org/class/custom/City_in_World", "http://dbpedia.org/class/yago/City108524735");
- Set<StringTuple> toAdd = new HashSet<StringTuple>();
- if (map.containsKey(uri)){
- toAdd.add(new StringTuple(subClass,map.get(uri)));
- }
- return toAdd;
- }
-}
Deleted: trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorManipulator.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorManipulator.java 2008-08-14 16:43:42 UTC (rev 1074)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorManipulator.java 2008-08-14 17:33:24 UTC (rev 1075)
@@ -1,140 +0,0 @@
-/**
- * Copyright (C) 2007, Sebastian Hellmann
- *
- * This file is part of DL-Learner.
- *
- * DL-Learner is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DL-Learner is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.dllearner.kb.manipulator;
-
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.Set;
-
-import org.dllearner.kb.extraction.Node;
-import org.dllearner.utilities.datastructures.StringTuple;
-
-/**
- * Used to manipulate retrieved tupels, identify blanknodes, etc.
- *
- * @author Sebastian Hellmann
- *
- */
-public class DBpediaNavigatorManipulator implements Manipulators{
- public final String subclass = "http://www.w3.org/2000/01/rdf-schema#subClassOf";
- public final String type = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
- final String objectProperty = "http://www.w3.org/2002/07/owl#ObjectProperty";
- final String classns = "http://www.w3.org/2002/07/owl#Class";
- final String thing = "http://www.w3.org/2002/07/owl#Thing";
-
- public String blankNodeIdentifier = "bnode";
- public int breakSuperClassRetrievalAfter = 200;
- public LinkedList<StringTuple> replacePredicate;
- public LinkedList<StringTuple> replaceObject;
-
- // Set<String> classproperties;
-
- public DBpediaNavigatorManipulator(String blankNodeIdentifier,
- int breakSuperClassRetrievalAfter,
- LinkedList<StringTuple> replacePredicate,
- LinkedList<StringTuple> replaceObject) {
- this.blankNodeIdentifier = blankNodeIdentifier;
- this.replaceObject = replaceObject;
- this.replacePredicate = replacePredicate;
- this.breakSuperClassRetrievalAfter = breakSuperClassRetrievalAfter;
- // Set<String> classproperties = new HashSet<String>();
- // classproperties.add(subclass);
-
- }
-
- /**
- * this checks for consistency and manipulates the tuples, before they get
- * triple
- *
- * @param tuples
- * tuples for the node
- * @param node
- * @return
- */
- public Set<StringTuple> check(Set<StringTuple> tuples, Node node) {
- //Set<StringTuple> toRemove = new HashSet<StringTuple>();
- Iterator<StringTuple> it = tuples.iterator();
- float lat=0;
- float lng=0;
- String clas="";
- StringTuple typeTupel=null;
- tuples.addAll(DBpediaNavigatorCityLocator.getTuplesToAdd(node.getURI().toString()));
- while (it.hasNext()) {
- StringTuple t = (StringTuple) it.next();
-
- if (t.a.equals("http://www.w3.org/1999/02/22-rdf-syntax-ns#type")){
- clas=t.b;
- typeTupel=t;
- }
-
- if (t.a.equals("http://www.w3.org/2003/01/geo/wgs84_pos#lat"))
- lat=Float.parseFloat(t.b.substring(0,t.b.indexOf("^^")));
- if (t.a.equals("http://www.w3.org/2003/01/geo/wgs84_pos#long"))
- lng=Float.parseFloat(t.b.substring(0,t.b.indexOf("^^")));
-
- /*replacePredicate(t);
- replaceObject(t);
-
-
- // remove <rdf:type, owl:class>
- // this is done to avoid transformation to owl:subclassof
- if (t.a.equals(type) && t.b.equals(classns)
- && node instanceof ClassNode) {
- toRemove.add(t);
- }
-
- // all with type class
- if (t.b.equals(classns) && node instanceof ClassNode) {
- toRemove.add(t);
- }
-
- // remove all instances with owl:type thing
- if (t.a.equals(type) && t.b.equals(thing)
- && node instanceof InstanceNode) {
- toRemove.add(t);
- }*/
-
- }
- if (clas.equals("http://dbpedia.org/class/yago/City108524735")){
- String newType=DBpediaNavigatorCityLocator.getTypeToCoordinates(lat, lng);
- tuples.add(new StringTuple("http://www.w3.org/1999/02/22-rdf-syntax-ns#type",newType));
- tuples.remove(typeTupel);
- }
- //tuples.removeAll(toRemove);
-
- return tuples;
- }
-
- /*private void replacePredicate(StringTuple t) {
- for (StringTuple rep : replacePredicate) {
- if (rep.a.equals(t.a)) {
- t.a = rep.b;
- }
- }
- }
-
- private void replaceObject(StringTuple t) {
- for (StringTuple rep : replaceObject) {
- if (rep.a.equals(t.a)) {
- t.a = rep.b;
- }
- }
- }*/
-}
Added: trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java 2008-08-14 17:33:24 UTC (rev 1075)
@@ -0,0 +1,102 @@
+/**
+ * Copyright (C) 2007, Sebastian Hellmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.manipulator;
+
+import java.util.SortedSet;
+
+import org.dllearner.kb.extraction.Node;
+import org.dllearner.kb.old.DBpediaNavigatorCityLocator;
+import org.dllearner.utilities.datastructures.RDFNodeTuple;
+import org.dllearner.utilities.owl.OWLVocabulary;
+
+import com.hp.hpl.jena.rdf.model.RDFNode;
+import com.hp.hpl.jena.rdf.model.impl.ResourceImpl;
+
+
+public class DBpediaNavigatorOtherRule extends Rule{
+
+
+ public DBpediaNavigatorOtherRule(Months month){
+ super(month);
+ }
+ // Set<String> classproperties;
+
+ @Override
+ public SortedSet<RDFNodeTuple> applyRule(Node subject, SortedSet<RDFNodeTuple> tuples){
+ float lat=0;
+ float lng=0;
+ RDFNode clazz = null;
+ RDFNodeTuple typeTuple = null;
+ for (RDFNodeTuple tuple : tuples) {
+
+ if (tuple.a.toString().equals(OWLVocabulary.RDF_TYPE)){
+ clazz = tuple.b;
+ typeTuple = tuple;
+ }
+
+ //TODO this doesn't work, because it is unclear what toString() method returns
+
+ if (tuple.a.toString().equals("http://www.w3.org/2003/01/geo/wgs84_pos#lat")){
+ lat=Float.parseFloat(tuple.b.toString().substring(0,tuple.b.toString().indexOf("^^")));
+ }
+ if (tuple.a.toString().equals("http://www.w3.org/2003/01/geo/wgs84_pos#long")) {
+ lng=Float.parseFloat(tuple.b.toString().substring(0,tuple.b.toString().indexOf("^^")));
+ }
+
+ }
+ if (clazz.toString().equals("http://dbpedia.org/class/yago/City108524735")){
+ String newType=DBpediaNavigatorCityLocator.getTypeToCoordinates(lat, lng);
+ tuples.add(new RDFNodeTuple(new ResourceImpl(OWLVocabulary.RDF_TYPE),new ResourceImpl(newType)));
+ //tuples.add(new StringTuple("http://www.w3.org/1999/02/22-rdf-syntax-ns#type",newType));
+ tuples.remove(typeTuple);
+ }
+
+ return tuples;
+ }
+
+ public static String getTypeToCoordinates(float lat, float lng){
+ if (lat<71.08&&lat>33.39&&lng>-24.01&&lng<50.8){
+ if (lat>50&&lat<52&&lng>12&&lng<13){
+ return "http://dbpedia.org/class/custom/City_in_Saxony";
+ }
+ else return "http://dbpedia.org/class/custom/City_in_Europe";
+ }
+ else if (lng>-17.5&&lng<52.04&&lat>-36&&lat<36.6){
+ if (lat>21.45&&lat<31.51&&lng>24.7&&lng<37.26){
+ return "http://dbpedia.org/class/custom/City_in_Egypt";
+ }
+ else return "http://dbpedia.org/class/custom/City_in_Africa";
+ }
+ else if (((lng>27.4&&lng<180)||(lng<-168.75))&&lat>-11.2){
+ return "http://dbpedia.org/class/custom/City_in_Asia";
+ }
+ else if (lng>113.9&&lng<179.65&&lat<-10.8&&lat>-47.04){
+ return "http://dbpedia.org/class/custom/City_in_Australia";
+ }
+ else if (lng>-168.4&&lng<-19.7&&lat>6.6){
+ return "http://dbpedia.org/class/custom/City_in_North_America";
+ }
+ else if (lng>-81.56&&lng<-34.1&&lat<6.6){
+ return "http://dbpedia.org/class/custom/City_in_South_America";
+ }
+ else return "http://dbpedia.org/class/custom/City_in_World";
+ }
+
+}
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-08-14 16:43:42 UTC (rev 1074)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-08-14 17:33:24 UTC (rev 1075)
@@ -107,12 +107,14 @@
public static Manipulator getDBpediaNavigatorManipulator(){
Manipulator m = new Manipulator();
+ m.rules.add(new DBPediaNavigatorCityLocatorRule(Months.JANUARY));
+ m.rules.add(new DBpediaNavigatorOtherRule(Months.DECEMBER));
return m;
}
public static Manipulator getDefaultManipulator(){
Manipulator m = new Manipulator();
- m.addDefaultRules();
+ m.addDefaultRules(Months.DECEMBER);
return m;
}
@@ -133,11 +135,11 @@
// }
- private void addDefaultRules(){
+ private void addDefaultRules(Months month){
- rules.add(new TypeFilterRule(Months.DECEMBER, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_CLASS,ClassNode.class.getCanonicalName() )) ;
- rules.add(new TypeFilterRule(Months.DECEMBER,OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_THING,InstanceNode.class.getCanonicalName() )) ;
- rules.add(new TypeFilterRule(Months.DECEMBER,"", OWLVocabulary.OWL_CLASS, ClassNode.class.getCanonicalName()) ) ;
+ rules.add(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_CLASS,ClassNode.class.getCanonicalName() )) ;
+ rules.add(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_THING,InstanceNode.class.getCanonicalName() )) ;
+ rules.add(new TypeFilterRule(month, "", OWLVocabulary.OWL_CLASS, ClassNode.class.getCanonicalName()) ) ;
}
Deleted: trunk/src/dl-learner/org/dllearner/kb/manipulator/ManipulatorType.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/ManipulatorType.java 2008-08-14 16:43:42 UTC (rev 1074)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/ManipulatorType.java 2008-08-14 17:33:24 UTC (rev 1075)
@@ -1,23 +0,0 @@
-package org.dllearner.kb.manipulator;
-
-import java.util.LinkedList;
-
-import org.dllearner.utilities.datastructures.StringTuple;
-
-
-/**
- * Used to get the right manipulator
- *
- * @author Sebastian Knappe
- *
- */
-public class ManipulatorType {
-
- public static Manipulators getManipulatorByName(String predefinedManipulator,String blankNodeIdentifier, int breakSuperClassRetrievalAfter, LinkedList<StringTuple> replacePredicate,LinkedList<StringTuple> replaceObject)
- {
- if (predefinedManipulator.equals("DBPEDIA-NAVIGATOR")) return new DBpediaNavigatorManipulator(blankNodeIdentifier,
- breakSuperClassRetrievalAfter, replacePredicate, replaceObject);
- else return new OldManipulator(blankNodeIdentifier,
- breakSuperClassRetrievalAfter, replacePredicate, replaceObject);
- }
-}
Deleted: trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulators.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulators.java 2008-08-14 16:43:42 UTC (rev 1074)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulators.java 2008-08-14 17:33:24 UTC (rev 1075)
@@ -1,16 +0,0 @@
-package org.dllearner.kb.manipulator;
-
-import java.util.Set;
-
-import org.dllearner.kb.extraction.Node;
-import org.dllearner.utilities.datastructures.StringTuple;
-
-public interface Manipulators {
-
- public int breakSuperClassRetrievalAfter = 200;
- public final String subclass = "http://www.w3.org/2000/01/rdf-schema#subClassOf";
- public final String type = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
- public String blankNodeIdentifier = "bnode";
-
- public Set<StringTuple> check(Set<StringTuple> tuples, Node node);
-}
Deleted: trunk/src/dl-learner/org/dllearner/kb/manipulator/OldManipulator.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/OldManipulator.java 2008-08-14 16:43:42 UTC (rev 1074)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/OldManipulator.java 2008-08-14 17:33:24 UTC (rev 1075)
@@ -1,160 +0,0 @@
-/**
- * Copyright (C) 2007, Sebastian Hellmann
- *
- * This file is part of DL-Learner.
- *
- * DL-Learner is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DL-Learner is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.dllearner.kb.manipulator;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.Set;
-
-import org.dllearner.kb.extraction.ClassNode;
-import org.dllearner.kb.extraction.InstanceNode;
-import org.dllearner.kb.extraction.Node;
-import org.dllearner.utilities.datastructures.StringTuple;
-
-/**
- * Used to manipulate retrieved tupels, identify blanknodes, etc.
- *
- * @author Sebastian Hellmann
- *
- */
-public class OldManipulator implements Manipulators{
- public final String subclass = "http://www.w3.org/2000/01/rdf-schema#subClassOf";
- public final String type = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
- final String objectProperty = "http://www.w3.org/2002/07/owl#ObjectProperty";
- final String classns = "http://www.w3.org/2002/07/owl#Class";
- final String thing = "http://www.w3.org/2002/07/owl#Thing";
-
- public String blankNodeIdentifier = "bnode";
- public int breakSuperClassRetrievalAfter = 200;
- public LinkedList<StringTuple> replacePredicate;
- public LinkedList<StringTuple> replaceObject;
-
- // Set<String> classproperties;
-
- public OldManipulator(String blankNodeIdentifier,
- int breakSuperClassRetrievalAfter,
- LinkedList<StringTuple> replacePredicate,
- LinkedList<StringTuple> replaceObject) {
- this.blankNodeIdentifier = blankNodeIdentifier;
- this.replaceObject = replaceObject;
- this.replacePredicate = replacePredicate;
- this.breakSuperClassRetrievalAfter = breakSuperClassRetrievalAfter;
- // Set<String> classproperties = new HashSet<String>();
- // classproperties.add(subclass);
-
- }
-
- /**
- * this checks for consistency and manipulates the tuples, before they get
- * triple
- *
- * @param tuples
- * tuples for the node
- * @param node
- * @return
- */
- public Set<StringTuple> check(Set<StringTuple> tuples, Node node) {
- Set<StringTuple> toRemove = new HashSet<StringTuple>();
- Iterator<StringTuple> it = tuples.iterator();
- while (it.hasNext()) {
- StringTuple t = (StringTuple) it.next();
-
- //HACK
-// if(t.a.equals("http://www.holygoat.co.uk/owl/redwood/0.1/tags/taggedWithTag")) {
-// //hackGetLabel(t.b);
-//
-// }
-
- // GovTrack hack
- // => we convert a string literal to a URI
- // => TODO: introduce an option for converting literals for certain
- // properties into URIs
-// String sp = "http://purl.org/dc/elements/1.1/subject";
-// if(t.a.equals(sp)) {
-// System.out.println(t);
-// System.exit(0);
-// }
-
- replacePredicate(t);
- replaceObject(t);
-
-
- // remove <rdf:type, owl:class>
- // this is done to avoid transformation to owl:subclassof
- if (t.a.equals(type) && t.b.equals(classns)
- && node instanceof ClassNode) {
- toRemove.add(t);
- }
-
- // all with type class
- if (t.b.equals(classns) && node instanceof ClassNode) {
- toRemove.add(t);
- }
-
- // remove all instances with owl:type thing
- if (t.a.equals(type) && t.b.equals(thing)
- && node instanceof InstanceNode) {
- toRemove.add(t);
- }
-
- }
- tuples.removeAll(toRemove);
-
- return tuples;
- }
-
- private void replacePredicate(StringTuple t) {
- for (StringTuple rep : replacePredicate) {
- if (rep.a.equals(t.a)) {
- t.a = rep.b;
- }
- }
- }
-
- private void replaceObject(StringTuple t) {
- for (StringTuple rep : replaceObject) {
- if (rep.a.equals(t.a)) {
- t.a = rep.b;
- }
- }
- }
-
-
- /*private String hackGetLabel(String resname){
- String query="" +
- "SELECT ?o \n" +
- "WHERE { \n" +
- "<"+resname+"> "+ " <http://www.holygoat.co.uk/owl/redwood/0.1/tags/tagName> ?o " +
- "}";
-
- System.out.println(query);
- //http://dbtune.org/musicbrainz/sparql?query=
- //SELECT ?o WHERE { <http://dbtune.org/musicbrainz/resource/tag/1391> <http://www.holygoat.co.uk/owl/redwood/0.1/tags/tagName> ?o }
- SparqlQuery s=new SparqlQuery(query,SparqlEndpoint.EndpointMusicbrainz());
- ResultSet rs=s.send();
- while (rs.hasNext()){
- rs.nextBinding();
- }
- //System.out.println("AAA"+s.getAsXMLString(s.send()) );
- return "";
- }*/
-
-}
Copied: trunk/src/dl-learner/org/dllearner/kb/old/DBpediaNavigatorCityLocator.java (from rev 1074, trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorCityLocator.java)
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/old/DBpediaNavigatorCityLocator.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/old/DBpediaNavigatorCityLocator.java 2008-08-14 17:33:24 UTC (rev 1075)
@@ -0,0 +1,58 @@
+package org.dllearner.kb.old;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.dllearner.utilities.datastructures.StringTuple;
+
+public class DBpediaNavigatorCityLocator {
+
+ public static String getTypeToCoordinates(float lat, float lng){
+ if (lat<71.08&&lat>33.39&&lng>-24.01&&lng<50.8){
+ if (lat>50&&lat<52&&lng>12&&lng<13){
+ return "http://dbpedia.org/class/custom/City_in_Saxony";
+ }
+ else return "http://dbpedia.org/class/custom/City_in_Europe";
+ }
+ else if (lng>-17.5&&lng<52.04&&lat>-36&&lat<36.6){
+ if (lat>21.45&&lat<31.51&&lng>24.7&&lng<37.26){
+ return "http://dbpedia.org/class/custom/City_in_Egypt";
+ }
+ else return "http://dbpedia.org/class/custom/City_in_Africa";
+ }
+ else if (((lng>27.4&&lng<180)||(lng<-168.75))&&lat>-11.2){
+ return "http://dbpedia.org/class/custom/City_in_Asia";
+ }
+ else if (lng>113.9&&lng<179.65&&lat<-10.8&&lat>-47.04){
+ return "http://dbpedia.org/class/custom/City_in_Australia";
+ }
+ else if (lng>-168.4&&lng<-19.7&&lat>6.6){
+ return "http://dbpedia.org/class/custom/City_in_North_America";
+ }
+ else if (lng>-81.56&&lng<-34.1&&lat<6.6){
+ return "http://dbpedia.org/class/custom/City_in_South_America";
+ }
+ else return "http://dbpedia.org/class/custom/City_in_World";
+ }
+
+ public static Set<StringTuple> getTuplesToAdd(String uri){
+ String subClass="http://www.w3.org/2000/01/rdf-schema#subClassOf";
+
+ HashMap<String,String> map=new HashMap<String,String>();
+ map.put("http://dbpedia.org/class/custom/City_in_Saxony", "http://dbpedia.org/class/custom/City_in_Europe");
+ map.put("http://dbpedia.org/class/custom/City_in_Egypt", "http://dbpedia.org/class/custom/City_in_Africa");
+ map.put("http://dbpedia.org/class/custom/City_in_Europe", "http://dbpedia.org/class/yago/City108524735");
+ map.put("http://dbpedia.org/class/custom/City_in_Asia", "http://dbpedia.org/class/yago/City108524735");
+ map.put("http://dbpedia.org/class/custom/City_in_Australia", "http://dbpedia.org/class/yago/City108524735");
+ map.put("http://dbpedia.org/class/custom/City_in_North_America", "http://dbpedia.org/class/yago/City108524735");
+ map.put("http://dbpedia.org/class/custom/City_in_South_America", "http://dbpedia.org/class/yago/City108524735");
+ map.put("http://dbpedia.org/class/custom/City_in_Africa", "http://dbpedia.org/class/yago/City108524735");
+ map.put("http://dbpedia.org/class/custom/City_in_World", "http://dbpedia.org/class/yago/City108524735");
+ Set<StringTuple> toAdd = new HashSet<StringTuple>();
+ if (map.containsKey(uri)){
+ toAdd.add(new StringTuple(subClass,map.get(uri)));
+ }
+ return toAdd;
+ }
+}
Copied: trunk/src/dl-learner/org/dllearner/kb/old/DBpediaNavigatorManipulator.java (from rev 1074, trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorManipulator.java)
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/old/DBpediaNavigatorManipulator.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/old/DBpediaNavigatorManipulator.java 2008-08-14 17:33:24 UTC (rev 1075)
@@ -0,0 +1,140 @@
+/**
+ * Copyright (C) 2007, Sebastian Hellmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.old;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.Set;
+
+import org.dllearner.kb.extraction.Node;
+import org.dllearner.utilities.datastructures.StringTuple;
+
+/**
+ * Used to manipulate retrieved tupels, identify blanknodes, etc.
+ *
+ * @author Sebastian Hellmann
+ *
+ */
+public class DBpediaNavigatorManipulator implements Manipulators{
+ public final String subclass = "http://www.w3.org/2000/01/rdf-schema#subClassOf";
+ public final String type = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
+ final String objectProperty = "http://www.w3.org/2002/07/owl#ObjectProperty";
+ final String classns = "http://www.w3.org/2002/07/owl#Class";
+ final String thing = "http://www.w3.org/2002/07/owl#Thing";
+
+ public String blankNodeIdentifier = "bnode";
+ public int breakSuperClassRetrievalAfter = 200;
+ public LinkedList<StringTuple> replacePredicate;
+ public LinkedList<StringTuple> replaceObject;
+
+ // Set<String> classproperties;
+
+ public DBpediaNavigatorManipulator(String blankNodeIdentifier,
+ int breakSuperClassRetrievalAfter,
+ LinkedList<StringTuple> replacePredicate,
+ LinkedList<StringTuple> replaceObject) {
+ this.blankNodeIdentifier = blankNodeIdentifier;
+ this.replaceObject = replaceObject;
+ this.replacePredicate = replacePredicate;
+ this.breakSuperClassRetrievalAfter = breakSuperClassRetrievalAfter;
+ // Set<String> classproperties = new HashSet<String>();
+ // classproperties.add(subclass);
+
+ }
+
+ /**
+ * this checks for consistency and manipulates the tuples, before they get
+ * triple
+ *
+ * @param tuples
+ * tuples for the node
+ * @param node
+ * @return
+ */
+ public Set<StringTuple> check(Set<StringTuple> tuples, Node node) {
+ //Set<StringTuple> toRemove = new HashSet<StringTuple>();
+ Iterator<StringTuple> it = tuples.iterator();
+ float lat=0;
+ float lng=0;
+ String clas="";
+ StringTuple typeTupel=null;
+ tuples.addAll(DBpediaNavigatorCityLocator.getTuplesToAdd(node.getURI().toString()));
+ while (it.hasNext()) {
+ StringTuple t = (StringTuple) it.next();
+
+ if (t.a.equals("http://www.w3.org/1999/02/22-rdf-syntax-ns#type")){
+ clas=t.b;
+ typeTupel=t;
+ }
+
+ if (t.a.equals("http://www.w3.org/2003/01/geo/wgs84_pos#lat"))
+ lat=Float.parseFloat(t.b.substring(0,t.b.indexOf("^^")));
+ if (t.a.equals("http://www.w3.org/2003/01/geo/wgs84_pos#long"))
+ lng=Float.parseFloat(t.b.substring(0,t.b.indexOf("^^")));
+
+ /*replacePredicate(t);
+ replaceObject(t);
+
+
+ // remove <rdf:type, owl:class>
+ // this is done to avoid transformation to owl:subclassof
+ if (t.a.equals(type) && t.b.equals(classns)
+ && node instanceof ClassNode) {
+ toRemove.add(t);
+ }
+
+ // all with type class
+ if (t.b.equals(classns) && node instanceof ClassNode) {
+ toRemove.add(t);
+ }
+
+ // remove all instances with owl:type thing
+ if (t.a.equals(type) && t.b.equals(thing)
+ && node instanceof InstanceNode) {
+ toRemove.add(t);
+ }*/
+
+ }
+ if (clas.equals("http://dbpedia.org/class/yago/City108524735")){
+ String newType=DBpediaNavigatorCityLocator.getTypeToCoordinates(lat, lng);
+ tuples.add(new StringTuple("http://www.w3.org/1999/02/22-rdf-syntax-ns#type",newType));
+ tuples.remove(typeTupel);
+ }
+ //tuples.removeAll(toRemove);
+
+ return tuples;
+ }
+
+ /*private void replacePredicate(StringTuple t) {
+ for (StringTuple rep : replacePredicate) {
+ if (rep.a.equals(t.a)) {
+ t.a = rep.b;
+ }
+ }
+ }
+
+ private void replaceObject(StringTuple t) {
+ for (StringTuple rep : replaceObject) {
+ if (rep.a.equals(t.a)) {
+ t.a = rep.b;
+ }
+ }
+ }*/
+}
Copied: trunk/src/dl-learner/org/dllearner/kb/old/ManipulatorType.java (from rev 1074, trunk/src/dl-learner/org/dllearner/kb/manipulator/ManipulatorType.java)
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/old/ManipulatorType.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/old/ManipulatorType.java 2008-08-14 17:33:24 UTC (rev 1075)
@@ -0,0 +1,23 @@
+package org.dllearner.kb.old;
+
+import java.util.LinkedList;
+
+import org.dllearner.utilities.datastructures.StringTuple;
+
+
+/**
+ * Used to get the right manipulator
+ *
+ * @author Sebastian Knappe
+ *
+ */
+public class ManipulatorType {
+
+ public static Manipulators getManipulatorByName(String predefinedManipulator,String blankNodeIdentifier, int breakSuperClassRetrievalAfter, LinkedList<StringTuple> replacePredicate,LinkedList<StringTuple> replaceObject)
+ {
+ if (predefinedManipulator.equals("DBPEDIA-NAVIGATOR")) return new DBpediaNavigatorManipulator(blankNodeIdentifier,
+ breakSuperClassRetrievalAfter, replacePredicate, replaceObject);
+ else return new OldManipulator(blankNodeIdentifier,
+ breakSuperClassRetrievalAfter, replacePredicate, replaceObject);
+ }
+}
Copied: trunk/src/dl-learner/org/dllearner/kb/old/Manipulators.java (from rev 1074, trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulators.java)
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/old/Manipulators.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/old/Manipulators.java 2008-08-14 17:33:24 UTC (rev 1075)
@@ -0,0 +1,16 @@
+package org.dllearner.kb.old;
+
+import java.util.Set;
+
+import org.dllearner.kb.extraction.Node;
+import org.dllearner.utilities.datastructures.StringTuple;
+
+public interface Manipulators {
+
+ public int breakSuperClassRetrievalAfter = 200;
+ public final String subclass = "http://www.w3.org/2000/01/rdf-schema#subClassOf";
+ public final String type = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
+ public String blankNodeIdentifier = "bnode";
+
+ public Set<StringTuple> check(Set<StringTuple> tuples, Node node);
+}
Copied: trunk/src/dl-learner/org/dllearner/kb/old/OldManipulator.java (from rev 1074, trunk/src/dl-learner/org/dllearner/kb/manipulator/OldManipulator.java)
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/old/OldManipulator.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/old/OldManipulator.java 2008-08-14 17:33:24 UTC (rev 1075)
@@ -0,0 +1,161 @@
+/**
+ * Copyri...
[truncated message content] |
|
From: <ku...@us...> - 2008-08-14 18:09:25
|
Revision: 1077
http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1077&view=rev
Author: kurzum
Date: 2008-08-14 18:09:20 +0000 (Thu, 14 Aug 2008)
Log Message:
-----------
more movements
Modified Paths:
--------------
trunk/src/dl-learner/org/dllearner/kb/manipulator/DBPediaNavigatorCityLocatorRule.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/Rule.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java
trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java
Added Paths:
-----------
trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java
trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java
trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java
Added: trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-08-14 18:09:20 UTC (rev 1077)
@@ -0,0 +1,117 @@
+/**
+ * Copyright (C) 2007, Sebastian Hellmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.extraction;
+
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import org.dllearner.kb.aquisitors.TupelAquisitor;
+import org.dllearner.kb.manipulator.Manipulator;
+import org.dllearner.utilities.datastructures.RDFNodeTuple;
+import org.dllearner.utilities.owl.OWLVocabulary;
+
+/**
+ * Is a node in the graph, that is a class.
+ *
+ * @author Sebastian Hellmann
+ */
+public class ClassNode extends Node {
+ SortedSet<PropertyNode> properties = new TreeSet<PropertyNode>();
+
+ public ClassNode(URI u) {
+ super(u);
+ }
+
+ // expands all directly connected nodes
+ @Override
+ public List<Node> expand(TupelAquisitor tupelAquisitor, Manipulator manipulator) {
+
+ SortedSet<RDFNodeTuple> newTuples = tupelAquisitor.getTupelForResource(this.uri);
+ // see manipulator
+ newTuples = manipulator.manipulate(this, newTuples);
+
+ List<Node> newNodes = new ArrayList<Node>();
+ for (RDFNodeTuple tuple : newTuples) {
+ try {
+ String property = tuple.a.toString();
+ // substitute rdf:type with owl:subclassof
+ if (property.equals(OWLVocabulary.RDF_TYPE) || property.equals(OWLVocabulary.RDFS_SUBCLASS_OF)) {
+ ClassNode tmp = new ClassNode(new URI(tuple.b.toString()));
+ properties.add(new PropertyNode(new URI( OWLVocabulary.RDFS_SUBCLASS_OF), this,
+ tmp));
+ newNodes.add(tmp);
+ } else {
+ // further expansion stops here
+ // Nodes.add(tmp); is missing on purpose
+ ClassNode tmp = new ClassNode(new URI(tuple.b.toString()));
+ properties.add(new PropertyNode(new URI(tuple.a.toString()), this, tmp));
+ // System.out.println(m.blankNodeIdentifier);
+ // System.out.println("XXXXX"+t.b);
+
+ // if o is a blank node expand further
+ // TODO this needs a lot more work
+
+ // Nodes.add(tmp);
+ }
+
+
+
+
+ } catch (Exception e) {
+ System.out.println("ClassNode");
+ e.printStackTrace();
+ }
+ }
+ return newNodes;
+ }
+
+ // gets the types for properties recursively
+ @Override
+ public void expandProperties(TupelAquisitor tupelAquisitor, Manipulator manipulator) {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.dllearner.kb.sparql.datastructure.Node#toNTriple()
+ */
+ @Override
+ public SortedSet<String> toNTriple() {
+ SortedSet<String> s = new TreeSet<String>();
+ s.add("<" + this.uri + "><" + OWLVocabulary.RDF_TYPE + "><" + OWLVocabulary.OWL_CLASS + ">.");
+
+ for (PropertyNode one : properties) {
+ s.add("<" + this.uri + "><" + one.getURI() + "><"
+ + one.getB().getURI() + ">.");
+ s.addAll(one.getB().toNTriple());
+ }
+
+ return s;
+ }
+
+ @Override
+ public int compareTo(Node n) {
+ return super.compareTo(n);
+ }
+
+}
Added: trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-08-14 18:09:20 UTC (rev 1077)
@@ -0,0 +1,98 @@
+/**
+ * Copyright (C) 2007, Sebastian Hellmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.extraction;
+
+import java.net.URI;
+import java.util.List;
+import java.util.SortedSet;
+
+import org.dllearner.kb.aquisitors.TupelAquisitor;
+import org.dllearner.kb.manipulator.Manipulator;
+
+
+
+/**
+ * Abstract class. defines functions to expand the nodes
+ *
+ * @author Sebastian Hellmann
+ *
+ */
+public abstract class Node implements Comparable<Node> {
+
+
+
+ protected URI uri;
+ // protected String type;
+ protected boolean expanded = false;
+
+ public Node(URI uri) {
+ this.uri = uri;
+ }
+
+ /**
+ * Nodes are expanded with a certain context, given by the typedSparqlQuery
+ * and the manipulator
+ *
+ * @param typedSparqlQuery
+ * @param manipulator
+ * @return Vector<Node> all Nodes that are new because of expansion
+ */
+ public abstract List<Node> expand(
+ TupelAquisitor TupelAquisitor, Manipulator manipulator);
+
+ /**
+ * gets type defs for properties like rdf:type SymmetricProperties
+ *
+ * @param typedSparqlQuery
+ * @param manipulator
+ * @return Vector<Node>
+ */
+ public abstract void expandProperties(
+ TupelAquisitor TupelAquisitor, Manipulator manipulator);
+
+ /**
+ * output
+ *
+ * @return a set of n-triple
+ */
+ public abstract SortedSet<String> toNTriple();
+
+ @Override
+ public String toString() {
+ return "Node: " + uri + ":" + this.getClass().getSimpleName();
+
+ }
+
+ public URI getURI() {
+ return uri;
+ }
+
+ public boolean equals(Node n) {
+ if (this.uri.equals(n.uri))
+ return true;
+ else
+ return false;
+ }
+
+ public int compareTo(Node n) {
+ return this.uri.toString().compareTo(n.uri.toString());
+ }
+
+}
Added: trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java 2008-08-14 18:09:20 UTC (rev 1077)
@@ -0,0 +1,116 @@
+/**
+ * Copyright (C) 2007, Sebastian Hellmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.extraction;
+
+import java.net.URI;
+import java.util.List;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import org.dllearner.kb.aquisitors.TupelAquisitor;
+import org.dllearner.kb.manipulator.Manipulator;
+import org.dllearner.utilities.datastructures.RDFNodeTuple;
+import org.dllearner.utilities.owl.OWLVocabulary;
+
+/**
+ * Property node, has connection to a and b part
+ *
+ * @author Sebastian Hellmann
+ *
+ */
+
+public class PropertyNode extends Node {
+
+ // the a and b part of a property
+ private Node a;
+ private Node b;
+ // specialtypes like owl:symmetricproperty
+ private SortedSet<String> specialTypes;
+
+ public PropertyNode(URI uri, Node a, Node b) {
+ super(uri);
+ // this.type = "property";
+ this.a = a;
+ this.b = b;
+ this.specialTypes = new TreeSet<String>();
+ }
+
+ // Property Nodes are normally not expanded,
+ // this function is never called
+ @Override
+ public List<Node> expand(TupelAquisitor tupelAquisitor, Manipulator manipulator) {
+ return null;
+ }
+
+ // gets the types for properties recursively
+ @Override
+ public void expandProperties(TupelAquisitor tupelAquisitor, Manipulator manipulator) {
+ b.expandProperties(tupelAquisitor, manipulator);
+ SortedSet<RDFNodeTuple> newTypes = tupelAquisitor.getTupelForResource(uri);
+ for (RDFNodeTuple tuple : newTypes) {
+ try {
+ if (tuple.a.equals(OWLVocabulary.RDF_TYPE)) {
+ specialTypes.add(tuple.b.toString());
+ }
+ } catch (Exception e) {
+ System.out.println(tuple);
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+ public Node getA() {
+ return a;
+ }
+
+ public Node getB() {
+ return b;
+ }
+
+ @Override
+ public SortedSet<String> toNTriple() {
+ SortedSet<String> s = new TreeSet<String>();
+ s.add("<" + uri + "><" + OWLVocabulary.RDF_TYPE + "><"
+ + OWLVocabulary.OWL_OBJECTPROPERTY + ">.");
+ for (String one : specialTypes) {
+ s.add("<" + uri + "><" + OWLVocabulary.RDF_TYPE + "><"
+ + one + ">.");
+ }
+
+ return s;
+ }
+
+ //TODO check
+ @Override
+ public boolean equals(Node n) {
+ if (this.uri.equals(n.uri)) {
+ return true;
+ }else {
+ return false;
+ }
+ }
+
+ @Override
+ public int compareTo(Node n) {
+ return super.compareTo(n);
+ }
+
+}
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/DBPediaNavigatorCityLocatorRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/DBPediaNavigatorCityLocatorRule.java 2008-08-14 17:35:50 UTC (rev 1076)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/DBPediaNavigatorCityLocatorRule.java 2008-08-14 18:09:20 UTC (rev 1077)
@@ -4,7 +4,7 @@
import java.util.Map;
import java.util.SortedSet;
-import org.dllearner.kb.old.Node;
+import org.dllearner.kb.extraction.Node;
import org.dllearner.utilities.datastructures.RDFNodeTuple;
import org.dllearner.utilities.owl.OWLVocabulary;
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java 2008-08-14 17:35:50 UTC (rev 1076)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java 2008-08-14 18:09:20 UTC (rev 1077)
@@ -21,8 +21,8 @@
import java.util.SortedSet;
-import org.dllearner.kb.old.DBpediaNavigatorCityLocator;
-import org.dllearner.kb.old.Node;
+
+import org.dllearner.kb.extraction.Node;
import org.dllearner.utilities.datastructures.RDFNodeTuple;
import org.dllearner.utilities.owl.OWLVocabulary;
@@ -62,7 +62,7 @@
}
if (clazz.toString().equals("http://dbpedia.org/class/yago/City108524735")){
- String newType=DBpediaNavigatorCityLocator.getTypeToCoordinates(lat, lng);
+ String newType = getTypeToCoordinates(lat, lng);
tuples.add(new RDFNodeTuple(new ResourceImpl(OWLVocabulary.RDF_TYPE),new ResourceImpl(newType)));
//tuples.add(new StringTuple("http://www.w3.org/1999/02/22-rdf-syntax-ns#type",newType));
tuples.remove(typeTuple);
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-08-14 17:35:50 UTC (rev 1076)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-08-14 18:09:20 UTC (rev 1077)
@@ -23,10 +23,10 @@
import java.util.List;
import java.util.SortedSet;
+import org.dllearner.kb.extraction.ClassNode;
+import org.dllearner.kb.extraction.Node;
import org.dllearner.kb.manipulator.Rule.Months;
-import org.dllearner.kb.old.ClassNode;
import org.dllearner.kb.old.InstanceNode;
-import org.dllearner.kb.old.Node;
import org.dllearner.utilities.datastructures.RDFNodeTuple;
import org.dllearner.utilities.owl.OWLVocabulary;
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/Rule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/Rule.java 2008-08-14 17:35:50 UTC (rev 1076)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/Rule.java 2008-08-14 18:09:20 UTC (rev 1077)
@@ -5,7 +5,7 @@
import java.util.List;
import java.util.SortedSet;
-import org.dllearner.kb.old.Node;
+import org.dllearner.kb.extraction.Node;
import org.dllearner.utilities.datastructures.RDFNodeTuple;
public abstract class Rule {
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java 2008-08-14 17:35:50 UTC (rev 1076)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java 2008-08-14 18:09:20 UTC (rev 1077)
@@ -3,7 +3,7 @@
import java.util.SortedSet;
import java.util.TreeSet;
-import org.dllearner.kb.old.Node;
+import org.dllearner.kb.extraction.Node;
import org.dllearner.utilities.datastructures.RDFNodeTuple;
public class SimpleObjectFilterRule extends Rule{
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java 2008-08-14 17:35:50 UTC (rev 1076)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java 2008-08-14 18:09:20 UTC (rev 1077)
@@ -3,7 +3,7 @@
import java.util.SortedSet;
import java.util.TreeSet;
-import org.dllearner.kb.old.Node;
+import org.dllearner.kb.extraction.Node;
import org.dllearner.utilities.datastructures.RDFNodeTuple;
public class SimplePredicateFilterRule extends Rule{
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-08-14 17:35:50 UTC (rev 1076)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-08-14 18:09:20 UTC (rev 1077)
@@ -3,7 +3,7 @@
import java.util.SortedSet;
import java.util.TreeSet;
-import org.dllearner.kb.old.Node;
+import org.dllearner.kb.extraction.Node;
import org.dllearner.utilities.datastructures.RDFNodeTuple;
public class TypeFilterRule extends Rule{
Modified: trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java 2008-08-14 17:35:50 UTC (rev 1076)
+++ trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java 2008-08-14 18:09:20 UTC (rev 1077)
@@ -12,6 +12,7 @@
public static final String OWL_CLASS = "http://www.w3.org/2002/07/owl#Class";
public static final String OWL_THING = "http://www.w3.org/2002/07/owl#Thing";
+
// public static final String RDF_TYPE = "";
// public static final String RDF_TYPE = "";
// public static final String RDF_TYPE = "";
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jen...@us...> - 2008-08-14 19:12:52
|
Revision: 1078
http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1078&view=rev
Author: jenslehmann
Date: 2008-08-14 19:12:46 +0000 (Thu, 14 Aug 2008)
Log Message:
-----------
- more unit tests for EL refinement operator
- comparator for EL description trees
- some bug fixes
Modified Paths:
--------------
trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNode.java
trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTree.java
trunk/src/dl-learner/org/dllearner/core/owl/KB.java
trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyDomainAxiom.java
trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyRangeAxiom.java
trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java
trunk/src/dl-learner/org/dllearner/refinementoperators/ELDown.java
trunk/src/dl-learner/org/dllearner/test/junit/ELDescriptionTreeTests.java
trunk/src/dl-learner/org/dllearner/test/junit/ELDownTests.java
Added Paths:
-----------
trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNodeComparator.java
trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTreeComparator.java
Modified: trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNode.java 2008-08-14 18:09:20 UTC (rev 1077)
+++ trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNode.java 2008-08-14 19:12:46 UTC (rev 1078)
@@ -19,8 +19,10 @@
*/
package org.dllearner.algorithms.el;
+import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
+import java.util.NavigableSet;
import java.util.SortedSet;
import java.util.TreeSet;
@@ -47,12 +49,13 @@
* @author Jens Lehmann
*
*/
+@SuppressWarnings("unused")
public class ELDescriptionNode {
// the reference tree for storing values, must not be null
private ELDescriptionTree tree;
- private SortedSet<NamedClass> label;
+ private NavigableSet<NamedClass> label;
private List<ELDescriptionEdge> edges;
@@ -62,6 +65,14 @@
// null indicates that this node is a root node
private ELDescriptionNode parent = null;
+ // simulation information (list or set?)
+ private List<ELDescriptionNode> in = new ArrayList<ELDescriptionNode>();
+ private List<ELDescriptionNode> inSC1 = new ArrayList<ELDescriptionNode>();
+ private List<ELDescriptionNode> inSC2 = new ArrayList<ELDescriptionNode>();
+ private List<ELDescriptionNode> out = new ArrayList<ELDescriptionNode>();
+ private List<ELDescriptionNode> outSC1 = new ArrayList<ELDescriptionNode>();
+ private List<ELDescriptionNode> outSC2 = new ArrayList<ELDescriptionNode>();
+
/**
* Constructs an EL description tree with empty root label.
*/
@@ -73,15 +84,17 @@
* Constructs an EL description tree given its root label.
* @param label Label of the root node.
*/
- public ELDescriptionNode(ELDescriptionTree tree, SortedSet<NamedClass> label) {
+ public ELDescriptionNode(ELDescriptionTree tree, NavigableSet<NamedClass> label) {
this.label = label;
this.edges = new LinkedList<ELDescriptionEdge>();
this.tree = tree;
level = 1;
parent = null;
+ // this is the root node of the overall tree
+ tree.rootNode = this;
}
- public ELDescriptionNode(ELDescriptionNode parentNode, ObjectProperty parentProperty, SortedSet<NamedClass> label) {
+ public ELDescriptionNode(ELDescriptionNode parentNode, ObjectProperty parentProperty, NavigableSet<NamedClass> label) {
this.label = label;
this.edges = new LinkedList<ELDescriptionEdge>();
parent = parentNode;
@@ -185,11 +198,11 @@
* @return The position number of this node within the tree as described above.
*/
public int[] getCurrentPosition() {
- int[] position = new int[level];
+ int[] position = new int[level-1];
ELDescriptionNode root = this;
while(root.parent != null) {
- position[root.level-1] = getChildNumber();
- root = parent;
+ position[root.level-2] = getChildNumber();
+ root = root.parent;
}
return position;
}
@@ -229,7 +242,7 @@
* but use the provided methods instead!
* @return The label of root node of this subtree.
*/
- public SortedSet<NamedClass> getLabel() {
+ public NavigableSet<NamedClass> getLabel() {
return label;
}
@@ -243,11 +256,29 @@
}
/**
- * Gets the level (distance from root) of this node.
+ * Gets the level (distance from root) of this node. The root node
+ * has level 1.
* @return The level of the (root node of) this subtree in the overall tree.
*/
public int getLevel() {
return level;
}
+ @Override
+ public String toString() {
+ return toString(0);
+ }
+
+ private String toString(int indent) {
+ String indentString = "";
+ for(int i=0; i<indent; i++)
+ indentString += " ";
+
+ String str = indentString + label.toString() + "\n";
+ for(ELDescriptionEdge edge : edges) {
+ str += indentString + "-- " + edge.getLabel() + " -->\n";
+ str += edge.getTree().toString(indent + 2);
+ }
+ return str;
+ }
}
Added: trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNodeComparator.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNodeComparator.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNodeComparator.java 2008-08-14 19:12:46 UTC (rev 1078)
@@ -0,0 +1,94 @@
+/**
+ * Copyright (C) 2007-2008, Jens Lehmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.algorithms.el;
+
+import java.util.Comparator;
+import java.util.Iterator;
+
+import org.dllearner.core.owl.NamedClass;
+import org.dllearner.core.owl.ObjectProperty;
+
+/**
+ * Compares two EL description trees. It is a lexicographic order
+ * according to the following criteria:
+ * - number of children
+ * - size of label
+ * - string comparison for each class in the label
+ * - recursive call on each child (first compare edge label, then child node)
+ *
+ * @author Jens Lehmann
+ *
+ */
+public class ELDescriptionNodeComparator implements Comparator<ELDescriptionNode> {
+
+ /* (non-Javadoc)
+ * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
+ */
+ @Override
+ public int compare(ELDescriptionNode node1, ELDescriptionNode node2) {
+ int nrOfChildren1 = node1.getEdges().size();
+ int nrOfChildren2 = node2.getEdges().size();
+ if(nrOfChildren1 > nrOfChildren2) {
+ return 1;
+ } else if(nrOfChildren1 < nrOfChildren2) {
+ return -1;
+ } else {
+ int labelSize1 = node1.getLabel().size();
+ int labelSize2 = node2.getLabel().size();
+ if(labelSize1 > labelSize2) {
+ return 1;
+ } else if(labelSize1 < labelSize2) {
+ return -1;
+ } else {
+ // navigate through both labels
+ Iterator<NamedClass> it1 = node1.getLabel().descendingIterator();
+ Iterator<NamedClass> it2 = node2.getLabel().descendingIterator();
+ while(it1.hasNext()) {
+ NamedClass nc1 = it1.next();
+ NamedClass nc2 = it2.next();
+ int compare = nc1.getName().compareTo(nc2.getName());
+ if(compare != 0)
+ return compare;
+ }
+
+ // recursively compare all edges
+ for(int i=0; i<nrOfChildren1; i++) {
+ // compare by edge name
+ ObjectProperty op1 = node1.getEdges().get(i).getLabel();
+ ObjectProperty op2 = node2.getEdges().get(i).getLabel();
+ int compare = op1.getName().compareTo(op2.getName());
+ if(compare != 0)
+ return compare;
+
+ // compare child nodes
+ ELDescriptionNode child1 = node1.getEdges().get(i).getTree();
+ ELDescriptionNode child2 = node2.getEdges().get(i).getTree();
+ int compare2 = compare(child1, child2);
+ if(compare2 != 0)
+ return compare2;
+ }
+
+ // trees are identical
+ return 0;
+ }
+ }
+ }
+
+}
Modified: trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTree.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTree.java 2008-08-14 18:09:20 UTC (rev 1077)
+++ trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTree.java 2008-08-14 19:12:46 UTC (rev 1078)
@@ -26,7 +26,11 @@
import java.util.TreeSet;
import org.dllearner.core.owl.Description;
+import org.dllearner.core.owl.Intersection;
import org.dllearner.core.owl.NamedClass;
+import org.dllearner.core.owl.ObjectProperty;
+import org.dllearner.core.owl.ObjectSomeRestriction;
+import org.dllearner.core.owl.Thing;
import org.dllearner.core.owl.UnsupportedLanguageException;
/**
@@ -45,7 +49,7 @@
private int maxLevel = 1;
- private ELDescriptionNode rootNode;
+ protected ELDescriptionNode rootNode;
private Map<Integer,Set<ELDescriptionNode>> levelNodeMapping = new HashMap<Integer,Set<ELDescriptionNode>>();
@@ -58,11 +62,38 @@
* @param description A description
*/
public ELDescriptionTree(Description description) {
- // TODO not implemented
- // throw an exception if the description is not in EL
- throw new UnsupportedLanguageException(description.toString(), "EL");
+ // construct root node and recursively build the tree
+ rootNode = new ELDescriptionNode(this);
+ constructTree(description, rootNode);
}
+ private void constructTree(Description description, ELDescriptionNode node) {
+ if(description instanceof NamedClass) {
+ node.extendLabel((NamedClass)description);
+ } else if(description instanceof ObjectSomeRestriction) {
+ ObjectProperty op = (ObjectProperty) ((ObjectSomeRestriction)description).getRole();
+ ELDescriptionNode newNode = new ELDescriptionNode(node, op, new TreeSet<NamedClass>());
+ constructTree(description.getChild(0), newNode);
+ } else if(description instanceof Thing) {
+ // nothing needs to be done as an empty set is owl:Thing
+ } else if(description instanceof Intersection) {
+ // loop through all elements of the intersection
+ for(Description child : description.getChildren()) {
+ if(child instanceof NamedClass) {
+ node.extendLabel((NamedClass)child);
+ } else if(child instanceof ObjectSomeRestriction) {
+ ObjectProperty op = (ObjectProperty) ((ObjectSomeRestriction)child).getRole();
+ ELDescriptionNode newNode = new ELDescriptionNode(node, op, new TreeSet<NamedClass>());
+ constructTree(child, newNode);
+ } else {
+ throw new UnsupportedLanguageException(description + " specifically " + child , "EL");
+ }
+ }
+ } else {
+ throw new UnsupportedLanguageException(description.toString(), "EL");
+ }
+ }
+
/**
* Gets the nodes on a specific level of the tree.
* This information is cached here for performance
@@ -144,8 +175,14 @@
// loop through all edges and clone the subtrees
for(ELDescriptionEdge edge : node.getEdges()) {
ELDescriptionNode tmp = new ELDescriptionNode(nodeClone, edge.getLabel(), new TreeSet<NamedClass>(edge.getTree().getLabel()));
+ // TODO if we want to avoid recomputing simulation information, a special protected ELDescriptionNode
+ // constructor should be created
cloneRecursively(edge.getTree(), tmp);
}
}
+ @Override
+ public String toString() {
+ return rootNode.toString();
+ }
}
Added: trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTreeComparator.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTreeComparator.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTreeComparator.java 2008-08-14 19:12:46 UTC (rev 1078)
@@ -0,0 +1,49 @@
+/**
+ * Copyright (C) 2007-2008, Jens Lehmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.algorithms.el;
+
+import java.util.Comparator;
+
+/**
+ * Compares two EL description trees by calling {@link ELDescriptionNodeComparator}
+ * on their root nodes.
+ *
+ * @author Jens Lehmann
+ *
+ */
+public class ELDescriptionTreeComparator implements Comparator<ELDescriptionTree> {
+
+ private ELDescriptionNodeComparator nodeComp;
+
+ public ELDescriptionTreeComparator() {
+ nodeComp = new ELDescriptionNodeComparator();
+ }
+
+ /* (non-Javadoc)
+ * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
+ */
+ @Override
+ public int compare(ELDescriptionTree tree1, ELDescriptionTree tree2) {
+ ELDescriptionNode node1 = tree1.getRootNode();
+ ELDescriptionNode node2 = tree2.getRootNode();
+ return nodeComp.compare(node1, node2);
+ }
+
+}
Modified: trunk/src/dl-learner/org/dllearner/core/owl/KB.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/core/owl/KB.java 2008-08-14 18:09:20 UTC (rev 1077)
+++ trunk/src/dl-learner/org/dllearner/core/owl/KB.java 2008-08-14 19:12:46 UTC (rev 1078)
@@ -205,15 +205,15 @@
public String toKBSyntaxString(String baseURI, Map<String,String> prefixes) {
StringBuffer strbuff = new StringBuffer();
- strbuff.append("TBox["+tbox.size()+"]:\n");
+ strbuff.append("// TBox["+tbox.size()+"]:\n");
for(Axiom a : tbox)
- strbuff.append(" " + a.toString(baseURI, prefixes)+"\n");
- strbuff.append("\nRBox["+rbox.size()+"]:\n");
+ strbuff.append(" " + a.toKBSyntaxString(baseURI, prefixes)+"\n");
+ strbuff.append("\n// RBox["+rbox.size()+"]:\n");
for(Axiom a : rbox)
- strbuff.append(" " + a.toString(baseURI, prefixes)+"\n");
- strbuff.append("\nABox["+abox.size()+"]:\n");
+ strbuff.append(" " + a.toKBSyntaxString(baseURI, prefixes)+"\n");
+ strbuff.append("\n// ABox["+abox.size()+"]:\n");
for(Axiom a : abox)
- strbuff.append(" " + a.toString(baseURI, prefixes)+"\n");
+ strbuff.append(" " + a.toKBSyntaxString(baseURI, prefixes)+"\n");
return strbuff.toString();
}
Modified: trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyDomainAxiom.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyDomainAxiom.java 2008-08-14 18:09:20 UTC (rev 1077)
+++ trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyDomainAxiom.java 2008-08-14 19:12:46 UTC (rev 1078)
@@ -55,8 +55,7 @@
public String toKBSyntaxString(String baseURI, Map<String, String> prefixes) {
- // TODO Auto-generated method stub
- return null;
+ return "OPDOMAIN(" + property.toKBSyntaxString(baseURI, prefixes) + ") = " + domain.toKBSyntaxString(baseURI, prefixes);
}
@Override
Modified: trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyRangeAxiom.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyRangeAxiom.java 2008-08-14 18:09:20 UTC (rev 1077)
+++ trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyRangeAxiom.java 2008-08-14 19:12:46 UTC (rev 1078)
@@ -48,8 +48,7 @@
}
public String toKBSyntaxString(String baseURI, Map<String, String> prefixes) {
- // TODO Auto-generated method stub
- return null;
+ return "OPRANGE(" + property.toKBSyntaxString(baseURI, prefixes) + ") = " + range.toKBSyntaxString(baseURI, prefixes);
}
@Override
Modified: trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2008-08-14 18:09:20 UTC (rev 1077)
+++ trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2008-08-14 19:12:46 UTC (rev 1078)
@@ -160,12 +160,8 @@
@Override
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/refinementoperators/ELDown.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/refinementoperators/ELDown.java 2008-08-14 18:09:20 UTC (rev 1077)
+++ trunk/src/dl-learner/org/dllearner/refinementoperators/ELDown.java 2008-08-14 19:12:46 UTC (rev 1078)
@@ -84,6 +84,7 @@
private Utility utility;
public ELDown(ReasoningService rs) {
+ this.rs = rs;
utility = new Utility(rs);
subsumptionHierarchy = rs.getSubsumptionHierarchy();
opHierarchy = rs.getRoleHierarchy();
@@ -105,6 +106,7 @@
// the tree (not yet implemented)
ELDescriptionTree tree = new ELDescriptionTree(concept);
Set<ELDescriptionTree> refinementTrees = refine(tree);
+// System.out.println("Refinements finished.");
Set<Description> refinements = new HashSet<Description>();
for(ELDescriptionTree refinementTree : refinementTrees) {
refinements.add(refinementTree.transformToDescription());
@@ -129,7 +131,7 @@
Set<ELDescriptionTree> refinements = new HashSet<ELDescriptionTree>();
// the position of the node within the tree (needed for getting
// the corresponding node in a cloned tree)
- int[] position = node.getCurrentPosition();
+ int[] position = node.getCurrentPosition();
// option 1: label extension
Set<NamedClass> candidates = utility.getClassCandidates(index, node.getLabel());
@@ -191,17 +193,18 @@
}
}
}
-
+
// option 4: edge refinement
refinements.addAll(refineEdges(tree, node, position));
-
+
// option 5: child refinement
for(ELDescriptionEdge edge : node.getEdges()) {
// recursive call on child node and property range as index
Description range = rs.getRange(edge.getLabel());
+// System.out.println(tree + "\nrecurse to:\n" + edge.getTree());
refinements.addAll(refine(tree, edge.getTree(), range, minimize));
}
-
+
return refinements;
}
Modified: trunk/src/dl-learner/org/dllearner/test/junit/ELDescriptionTreeTests.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/test/junit/ELDescriptionTreeTests.java 2008-08-14 18:09:20 UTC (rev 1077)
+++ trunk/src/dl-learner/org/dllearner/test/junit/ELDescriptionTreeTests.java 2008-08-14 19:12:46 UTC (rev 1078)
@@ -25,10 +25,15 @@
import org.dllearner.algorithms.el.ELDescriptionNode;
import org.dllearner.algorithms.el.ELDescriptionTree;
+import org.dllearner.algorithms.el.ELDescriptionTreeComparator;
import org.dllearner.algorithms.el.Simulation;
import org.dllearner.algorithms.el.TreeTuple;
+import org.dllearner.core.owl.Description;
import org.dllearner.core.owl.NamedClass;
import org.dllearner.core.owl.ObjectProperty;
+import org.dllearner.parser.KBParser;
+import org.dllearner.parser.ParseException;
+import org.dllearner.utilities.owl.ConceptTransformation;
import org.junit.Test;
/**
@@ -58,4 +63,14 @@
assertTrue(tree1.getMaxLevel() == 2);
}
+ @Test
+ public void cloneTest() throws ParseException {
+ Description d = KBParser.parseConcept("(male AND (human AND EXISTS hasChild.(female AND EXISTS hasChild.male)))");
+ ConceptTransformation.cleanConcept(d);
+ ELDescriptionTree tree = new ELDescriptionTree(d);
+ ELDescriptionTree treeCloned = tree.clone();
+ ELDescriptionTreeComparator comparator = new ELDescriptionTreeComparator();
+ assertTrue(comparator.compare(tree, treeCloned) == 0);
+ }
+
}
Modified: trunk/src/dl-learner/org/dllearner/test/junit/ELDownTests.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/test/junit/ELDownTests.java 2008-08-14 18:09:20 UTC (rev 1077)
+++ trunk/src/dl-learner/org/dllearner/test/junit/ELDownTests.java 2008-08-14 19:12:46 UTC (rev 1078)
@@ -23,6 +23,7 @@
import java.util.SortedSet;
import java.util.TreeSet;
+import org.dllearner.core.ComponentInitException;
import org.dllearner.core.ComponentManager;
import org.dllearner.core.ReasonerComponent;
import org.dllearner.core.ReasoningService;
@@ -53,44 +54,52 @@
*
* @throws ParseException Thrown if concept syntax does not correspond
* to current KB syntax.
+ * @throws ComponentInitException
*/
@Test
- public void refinementTest() throws ParseException {
+ public void refinementTest() throws ParseException, ComponentInitException {
ComponentManager cm = ComponentManager.getInstance();
// background knowledge
String kbString = "";
- kbString += "OP_DOMAIN(hasChild) = human.";
- kbString += "OP_RANGE(hasChild) = human.";
- kbString += "OP_DOMAIN(hasPet) = human.";
- kbString += "OP_RANGE(hasPet) = animal.";
- kbString += "Subrole(hasChild, has).";
- kbString += "Subrole(hasPet, has).";
- kbString += "bird SUB animal.";
- kbString += "cat SUB animal.";
- kbString += "cat SUB animal.";
+ kbString += "OPDOMAIN(hasChild) = human.\n";
+ kbString += "OPRANGE(hasChild) = human.\n";
+ kbString += "OPDOMAIN(hasPet) = human.\n";
+ kbString += "OPRANGE(hasPet) = animal.\n";
+ kbString += "Subrole(hasChild, has).\n";
+ kbString += "Subrole(hasPet, has).\n";
+ kbString += "bird SUB animal.\n";
+ kbString += "cat SUB animal.\n";
+ kbString += "(human AND animal) = BOTTOM.\n";
KB kb = KBParser.parseKBFile(kbString);
// input description
- Description input = KBParser.parseConcept("human AND EXISTS has.animal");
+ Description input = KBParser.parseConcept("(human AND EXISTS has.animal)");
// create reasoner
KBFile source = new KBFile(kb);
ReasonerComponent rc = cm.reasoner(FastInstanceChecker.class, source);
ReasoningService rs = cm.reasoningService(rc);
+ source.init();
+ rc.init();
+ // TODO there shouldn't be a need to call this explicitly!
+ // (otherwise we get a NullPointerException, because the hierarchy is not created)
+ rs.prepareSubsumptionHierarchy();
+ rs.prepareRoleHierarchy();
+
ELDown operator = new ELDown(rs);
// desired refinements as strings
Set<String> desiredString = new TreeSet<String>();
- desiredString.add("human AND EXISTS hasPet.animal");
- desiredString.add("human AND EXISTS has.bird");
- desiredString.add("human AND EXISTS has.cat");
- desiredString.add("(human AND EXISTS hasPet.TOP) AND EXISTS has.animal");
- desiredString.add("(human AND EXISTS hasChild.TOP) AND EXISTS has.animal");
- desiredString.add("(human AND EXISTS hasPet.TOP) AND EXISTS has.animal");
- desiredString.add("(human AND EXISTS has.person) AND EXISTS has.animal");
- desiredString.add("(human AND EXISTS has.EXISTS has.TOP) AND EXISTS has.animal");
- desiredString.add("human AND EXISTS has.(animal AND EXISTS has.TOP)");
+ desiredString.add("(human AND EXISTS hasPet.animal)");
+ desiredString.add("(human AND EXISTS has.bird)");
+ desiredString.add("(human AND EXISTS has.cat)");
+ desiredString.add("((human AND EXISTS hasPet.TOP) AND EXISTS has.animal)");
+ desiredString.add("((human AND EXISTS hasChild.TOP) AND EXISTS has.animal)");
+ desiredString.add("((human AND EXISTS hasPet.TOP) AND EXISTS has.animal)");
+ desiredString.add("((human AND EXISTS has.person) AND EXISTS has.animal)");
+ desiredString.add("((human AND EXISTS has.EXISTS has.TOP) AND EXISTS has.animal)");
+ desiredString.add("(human AND EXISTS has.(animal AND EXISTS has.TOP))");
ConceptComparator cc = new ConceptComparator();
SortedSet<Description> desired = new TreeSet<Description>(cc);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jen...@us...> - 2008-08-15 07:56:51
|
Revision: 1079
http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1079&view=rev
Author: jenslehmann
Date: 2008-08-15 07:56:49 +0000 (Fri, 15 Aug 2008)
Log Message:
-----------
improved tree <-> concept converters in both directions
Modified Paths:
--------------
trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNode.java
trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTree.java
trunk/src/dl-learner/org/dllearner/refinementoperators/ELDown.java
trunk/src/dl-learner/org/dllearner/test/junit/ELDownTests.java
Modified: trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNode.java 2008-08-14 19:12:46 UTC (rev 1078)
+++ trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionNode.java 2008-08-15 07:56:49 UTC (rev 1079)
@@ -165,7 +165,7 @@
/**
* This method transform the tree to an EL description. The
* node labels are transformed to an {@link Intersection}
- * of {@link NamedClass}. Each edges is transformed to an
+ * of {@link NamedClass}. Each edge is transformed to an
* {@link ObjectSomeRestriction}, where the property is the edge
* label and the child description the subtree the edge points
* to. Edges are also added to the intersection. If the intersection
@@ -173,8 +173,21 @@
* @return The description corresponding to this EL description tree.
*/
public Description transformToDescription() {
- if(label.size()==0 && edges.size()==0) {
+ int nrOfElements = label.size() + edges.size();
+ // leaf labeled with \emptyset stands for owl:Thing
+ if(nrOfElements == 0) {
return new Thing();
+ // we want to avoid intersections with only 1 element, so in this
+ // case we return either the NamedClass or ObjectSomeRestriction directly
+ } else if(nrOfElements == 1) {
+ if(label.size()==1) {
+ return label.first();
+ } else {
+ ELDescriptionEdge edge = edges.get(0);
+ Description child = edge.getTree().transformToDescription();
+ return new ObjectSomeRestriction(edge.getLabel(),child);
+ }
+ // return an intersection of labels and edges
} else {
Intersection is = new Intersection();
for(NamedClass nc : label) {
Modified: trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTree.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTree.java 2008-08-14 19:12:46 UTC (rev 1078)
+++ trunk/src/dl-learner/org/dllearner/algorithms/el/ELDescriptionTree.java 2008-08-15 07:56:49 UTC (rev 1079)
@@ -34,73 +34,77 @@
import org.dllearner.core.owl.UnsupportedLanguageException;
/**
- * Represents an EL description tree. Unlike {@link ELDescriptionNode},
- * this is a tree-wide structure, i.e. it does not implement the tree
- * structure itself, but is used to store information about the tree.
+ * Represents an EL description tree. Unlike {@link ELDescriptionNode}, this is
+ * a tree-wide structure, i.e. it does not implement the tree structure itself,
+ * but is used to store information about the tree.
*
* @author Jens Lehmann
- *
+ *
*/
public class ELDescriptionTree implements Cloneable {
// to simplify equivalence checks and minimisation, we
// attach a simulation relation to the description tree
-// private Simulation simulation;
-
+ // private Simulation simulation;
+
private int maxLevel = 1;
-
- protected ELDescriptionNode rootNode;
-
- private Map<Integer,Set<ELDescriptionNode>> levelNodeMapping = new HashMap<Integer,Set<ELDescriptionNode>>();
-
+
+ protected ELDescriptionNode rootNode;
+
+ private Map<Integer, Set<ELDescriptionNode>> levelNodeMapping = new HashMap<Integer, Set<ELDescriptionNode>>();
+
public ELDescriptionTree() {
-
+
}
-
+
/**
- * Constructs an EL description tree from an EL description.
- * @param description A description
+ * Constructs an EL description tree from an EL description.
+ *
+ * @param description
+ * A description
*/
public ELDescriptionTree(Description description) {
// construct root node and recursively build the tree
rootNode = new ELDescriptionNode(this);
constructTree(description, rootNode);
- }
+ }
private void constructTree(Description description, ELDescriptionNode node) {
- if(description instanceof NamedClass) {
- node.extendLabel((NamedClass)description);
- } else if(description instanceof ObjectSomeRestriction) {
- ObjectProperty op = (ObjectProperty) ((ObjectSomeRestriction)description).getRole();
+ if (description instanceof NamedClass) {
+ node.extendLabel((NamedClass) description);
+ } else if (description instanceof ObjectSomeRestriction) {
+ ObjectProperty op = (ObjectProperty) ((ObjectSomeRestriction) description).getRole();
ELDescriptionNode newNode = new ELDescriptionNode(node, op, new TreeSet<NamedClass>());
constructTree(description.getChild(0), newNode);
- } else if(description instanceof Thing) {
+ } else if (description instanceof Thing) {
// nothing needs to be done as an empty set is owl:Thing
- } else if(description instanceof Intersection) {
+ } else if (description instanceof Intersection) {
// loop through all elements of the intersection
- for(Description child : description.getChildren()) {
- if(child instanceof NamedClass) {
- node.extendLabel((NamedClass)child);
- } else if(child instanceof ObjectSomeRestriction) {
- ObjectProperty op = (ObjectProperty) ((ObjectSomeRestriction)child).getRole();
- ELDescriptionNode newNode = new ELDescriptionNode(node, op, new TreeSet<NamedClass>());
- constructTree(child, newNode);
+ for (Description child : description.getChildren()) {
+ if (child instanceof NamedClass) {
+ node.extendLabel((NamedClass) child);
+ } else if (child instanceof ObjectSomeRestriction) {
+ ObjectProperty op = (ObjectProperty) ((ObjectSomeRestriction) child).getRole();
+ ELDescriptionNode newNode = new ELDescriptionNode(node, op,
+ new TreeSet<NamedClass>());
+ constructTree(child.getChild(0), newNode);
} else {
- throw new UnsupportedLanguageException(description + " specifically " + child , "EL");
+ throw new UnsupportedLanguageException(description + " specifically " + child,
+ "EL");
}
}
} else {
throw new UnsupportedLanguageException(description.toString(), "EL");
}
}
-
+
/**
- * Gets the nodes on a specific level of the tree.
- * This information is cached here for performance
- * reasons.
- * @param level The level (distance from root node).
- * @return The set of all nodes on the specified level within
- * this tree.
+ * Gets the nodes on a specific level of the tree. This information is
+ * cached here for performance reasons.
+ *
+ * @param level
+ * The level (distance from root node).
+ * @return The set of all nodes on the specified level within this tree.
*/
public Set<ELDescriptionNode> getNodesOnLevel(int level) {
return levelNodeMapping.get(level);
@@ -109,16 +113,19 @@
public Description transformToDescription() {
return rootNode.transformToDescription();
}
-
+
/**
- * Internal method for updating the level node mapping.
- * It is called when a new node is added to the tree.
- * @param node The new node.
- * @param level Level of the new node.
+ * Internal method for updating the level node mapping. It is called when a
+ * new node is added to the tree.
+ *
+ * @param node
+ * The new node.
+ * @param level
+ * Level of the new node.
*/
protected void addNodeToLevel(ELDescriptionNode node, int level) {
- if(level <= maxLevel) {
- levelNodeMapping.get(level).add(node);
+ if (level <= maxLevel) {
+ levelNodeMapping.get(level).add(node);
} else if (level == maxLevel + 1) {
Set<ELDescriptionNode> set = new HashSet<ELDescriptionNode>();
set.add(node);
@@ -128,7 +135,7 @@
throw new RuntimeException("Inconsistent EL description tree structure.");
}
}
-
+
/**
* @return the maxLevel
*/
@@ -142,45 +149,45 @@
public ELDescriptionNode getRootNode() {
return rootNode;
}
-
- /**
- * Gets the node at the given position. The list is processed
- * as follows: Starting with the root node, the first element i of
- * list is read and the i-th child of root node is selected. This
- * node is set as current node and the next element j of the list
- * is read and the j-th child of the i-th child of the root node
- * selected etc.
- * @return The node at the specified position.
- */
- public ELDescriptionNode getNode(int[] position) {
- ELDescriptionNode currentNode = rootNode;
- for(int i=0; i<position.length; i++) {
- currentNode = currentNode.getEdges().get(position[i]).getTree();
- }
- return currentNode;
- }
-
+
+ /**
+ * Gets the node at the given position. The list is processed as follows:
+ * Starting with the root node, the first element i of list is read and the
+ * i-th child of root node is selected. This node is set as current node and
+ * the next element j of the list is read and the j-th child of the i-th
+ * child of the root node selected etc.
+ *
+ * @return The node at the specified position.
+ */
+ public ELDescriptionNode getNode(int[] position) {
+ ELDescriptionNode currentNode = rootNode;
+ for (int i = 0; i < position.length; i++) {
+ currentNode = currentNode.getEdges().get(position[i]).getTree();
+ }
+ return currentNode;
+ }
+
@Override
public ELDescriptionTree clone() {
// create a new reference tree
ELDescriptionTree treeClone = new ELDescriptionTree();
// create a root node attached to this reference tree
- ELDescriptionNode rootNodeClone = new ELDescriptionNode(treeClone, new TreeSet<NamedClass>(rootNode.getLabel()));
+ ELDescriptionNode rootNodeClone = new ELDescriptionNode(treeClone, new TreeSet<NamedClass>(
+ rootNode.getLabel()));
cloneRecursively(rootNode, rootNodeClone);
return treeClone;
}
-
+
// we read from the original structure and write to the new structure
private void cloneRecursively(ELDescriptionNode node, ELDescriptionNode nodeClone) {
// loop through all edges and clone the subtrees
- for(ELDescriptionEdge edge : node.getEdges()) {
- ELDescriptionNode tmp = new ELDescriptionNode(nodeClone, edge.getLabel(), new TreeSet<NamedClass>(edge.getTree().getLabel()));
- // TODO if we want to avoid recomputing simulation information, a special protected ELDescriptionNode
- // constructor should be created
+ for (ELDescriptionEdge edge : node.getEdges()) {
+ ELDescriptionNode tmp = new ELDescriptionNode(nodeClone, edge.getLabel(),
+ new TreeSet<NamedClass>(edge.getTree().getLabel()));
cloneRecursively(edge.getTree(), tmp);
- }
+ }
}
-
+
@Override
public String toString() {
return rootNode.toString();
Modified: trunk/src/dl-learner/org/dllearner/refinementoperators/ELDown.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/refinementoperators/ELDown.java 2008-08-14 19:12:46 UTC (rev 1078)
+++ trunk/src/dl-learner/org/dllearner/refinementoperators/ELDown.java 2008-08-15 07:56:49 UTC (rev 1079)
@@ -143,6 +143,8 @@
clonedNode.extendLabel(nc);
refinements.add(clonedTree);
}
+
+
// option 2: label refinement
// loop through all classes in label
for(NamedClass nc : node.getLabel()) {
@@ -152,8 +154,16 @@
// clone operation
ELDescriptionTree clonedTree = tree.clone();
ELDescriptionNode clonedNode = clonedTree.getNode(position);
+
+// System.out.println("tree: " + tree);
+// System.out.println("cloned tree: " + clonedTree);
+// System.out.println("node: " + node);
+// System.out.println("cloned unmodified: " + clonedNode);
+
// create refinements by replacing class
clonedNode.replaceInLabel(nc, (NamedClass) moreSpecial);
+
+// System.out.println("cloned modified: " + clonedNode);
refinements.add(clonedTree);
}
}
@@ -205,6 +215,7 @@
refinements.addAll(refine(tree, edge.getTree(), range, minimize));
}
+
return refinements;
}
@@ -221,6 +232,9 @@
ObjectProperty op = edge.getLabel();
// find all more special properties
for(ObjectProperty op2 : rs.getMoreSpecialRoles(op)) {
+ // TODO we need to check whether the range of this property is disjoint
+ // with the current child node;
+ // not implemented, because disjointness checks can only be done on descriptions
// clone operation
ELDescriptionTree clonedTree = tree.clone();
// find cloned edge and replace its label
Modified: trunk/src/dl-learner/org/dllearner/test/junit/ELDownTests.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/test/junit/ELDownTests.java 2008-08-14 19:12:46 UTC (rev 1078)
+++ trunk/src/dl-learner/org/dllearner/test/junit/ELDownTests.java 2008-08-15 07:56:49 UTC (rev 1079)
@@ -108,6 +108,7 @@
// eliminate conjunctions nested in other conjunctions
ConceptTransformation.cleanConcept(tmp);
desired.add(tmp);
+ System.out.println("desired: " + tmp);
}
// perform refinement and compare solutions
@@ -115,9 +116,10 @@
// number of refinements has to be correct and each produced
// refinement must be in the set of desired refinements
- assertTrue(refinements.size() == desired.size());
+// assertTrue(refinements.size() == desired.size());
for(Description refinement : refinements) {
- assertTrue(desired.contains(refinement));
+ System.out.println(refinement);
+// assertTrue(desired.contains(refinement));
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ku...@us...> - 2008-08-15 12:21:08
|
Revision: 1084
http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1084&view=rev
Author: kurzum
Date: 2008-08-15 12:21:00 +0000 (Fri, 15 Aug 2008)
Log Message:
-----------
looks like the new structure is working like the old one,
next step testing, new features and code improvements
Modified Paths:
--------------
trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java
trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java
trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java
trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java
trunk/src/dl-learner/org/dllearner/scripts/NT2RDF.java
trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java
trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java
trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java
Added Paths:
-----------
trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java
Removed Paths:
-------------
trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorClasses.java
trunk/src/dl-learner/org/dllearner/kb/old/ClassNode.java
trunk/src/dl-learner/org/dllearner/kb/old/DBpediaNavigatorCityLocator.java
trunk/src/dl-learner/org/dllearner/kb/old/DBpediaNavigatorManipulator.java
trunk/src/dl-learner/org/dllearner/kb/old/InstanceNode.java
trunk/src/dl-learner/org/dllearner/kb/old/ManipulatorType.java
trunk/src/dl-learner/org/dllearner/kb/old/Manipulators.java
trunk/src/dl-learner/org/dllearner/kb/old/Node.java
trunk/src/dl-learner/org/dllearner/kb/old/OldManipulator.java
trunk/src/dl-learner/org/dllearner/kb/old/PropertyNode.java
trunk/src/dl-learner/org/dllearner/kb/old/Scrap.java
trunk/src/dl-learner/org/dllearner/kb/old/TypedSparqlQuery.java
trunk/src/dl-learner/org/dllearner/kb/old/TypedSparqlQueryClasses.java
trunk/src/dl-learner/org/dllearner/kb/old/TypedSparqlQueryInterface.java
Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java 2008-08-15 12:03:42 UTC (rev 1083)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java 2008-08-15 12:21:00 UTC (rev 1084)
@@ -24,8 +24,6 @@
import org.apache.log4j.Logger;
import org.dllearner.kb.extraction.Configuration;
-import org.dllearner.kb.sparql.SPARQLTasks;
-import org.dllearner.kb.sparql.SparqlQueryMaker;
import org.dllearner.utilities.datastructures.RDFNodeTuple;
/**
@@ -38,30 +36,21 @@
@SuppressWarnings("unused")
private static Logger logger = Logger.getLogger(LinkedDataTupelAquisitor.class);
-
+ @SuppressWarnings("unused")
private Configuration configuration;
- protected SparqlQueryMaker sparqlQueryMaker;
- protected SPARQLTasks sparqlTasks;
+
- public LinkedDataTupelAquisitor(Configuration Configuration) {
- this.configuration = Configuration;
- this.sparqlQueryMaker = configuration.getSparqlQueryMaker();
- this.sparqlTasks = configuration.sparqlTasks;
+ public LinkedDataTupelAquisitor(Configuration configuration) {
+ this.configuration = configuration;
}
// standard query get a tupels (p,o) for subject s
@Override
public SortedSet<RDFNodeTuple> getTupelForResource(URI uri) {
+ throw new RuntimeException("Not Implemented yet");
- String pred = "predicate";
- String obj = "object";
- // getQuery
- String sparqlQueryString = sparqlQueryMaker
- .makeSubjectQueryUsingFilters(uri.toString());
- return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, pred, obj);
-
}
Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java 2008-08-15 12:03:42 UTC (rev 1083)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java 2008-08-15 12:21:00 UTC (rev 1084)
@@ -23,7 +23,6 @@
import java.util.SortedSet;
import org.apache.log4j.Logger;
-import org.dllearner.kb.extraction.Configuration;
import org.dllearner.kb.sparql.SPARQLTasks;
import org.dllearner.kb.sparql.SparqlQueryMaker;
import org.dllearner.utilities.datastructures.RDFNodeTuple;
@@ -39,15 +38,17 @@
@SuppressWarnings("unused")
private static Logger logger = Logger.getLogger(SparqlTupelAquisitor.class);
- private Configuration configuration;
protected SparqlQueryMaker sparqlQueryMaker;
protected SPARQLTasks sparqlTasks;
+
+
- public SparqlTupelAquisitor(Configuration Configuration) {
- this.configuration = Configuration;
- this.sparqlQueryMaker = configuration.getSparqlQueryMaker();
- this.sparqlTasks = configuration.sparqlTasks;
+ public SparqlTupelAquisitor(SparqlQueryMaker sparqlQueryMaker, SPARQLTasks sparqlTasks) {
+
+ this.sparqlQueryMaker = sparqlQueryMaker;
+ this.sparqlTasks = sparqlTasks;
}
+
// standard query get a tupels (p,o) for subject s
@Override
@@ -56,16 +57,25 @@
String pred = "predicate";
String obj = "object";
+ String sparqlQueryString = "";
// getQuery
- String sparqlQueryString = sparqlQueryMaker
- .makeSubjectQueryUsingFilters(uri.toString());
+ if (classMode) {
+ sparqlQueryString = sparqlQueryMaker.makeClassQueryUsingFilters(uri.toString());
+ }else {
+ sparqlQueryString = sparqlQueryMaker.makeSubjectQueryUsingFilters(uri.toString());
+ }
+
return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, pred, obj);
}
+
+
+
+
}
Deleted: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorClasses.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorClasses.java 2008-08-15 12:03:42 UTC (rev 1083)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorClasses.java 2008-08-15 12:21:00 UTC (rev 1084)
@@ -1,61 +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.kb.aquisitors;
-
-import java.net.URI;
-import java.util.SortedSet;
-
-import org.apache.log4j.Logger;
-import org.dllearner.kb.extraction.Configuration;
-import org.dllearner.utilities.datastructures.RDFNodeTuple;
-
-/**
- * Can execute different queries.
- *
- * @author Sebastian Hellmann
- *
- */
-public class SparqlTupelAquisitorClasses extends SparqlTupelAquisitor {
-
- @SuppressWarnings("unused")
- private static Logger logger = Logger.getLogger(SparqlTupelAquisitor.class);
-
- public SparqlTupelAquisitorClasses(Configuration configuration) {
- super(configuration);
- }
-
- /*
- * Special TypedSparqlQuery which returns superclasses of classes
- * (non-Javadoc)
- *
- * @see org.dllearner.kb.sparql.TypedSparqlQuery#getTupelForResource(java.net.URI)
- */
- @Override
- @SuppressWarnings({"unchecked"})
- public SortedSet<RDFNodeTuple> getTupelForResource(URI uri) {
- //Set<RDFNodeTuple> s = new TreeSet<RDFNodeTuple>();
- String pred = "predicate";
- String obj = "object";
- // getQuery
- String sparqlQueryString = sparqlQueryMaker.makeClassQueryUsingFilters(uri.toString());
- return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, pred, obj);
- }
-
-}
Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java 2008-08-15 12:03:42 UTC (rev 1083)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java 2008-08-15 12:21:00 UTC (rev 1084)
@@ -23,7 +23,6 @@
import java.util.SortedSet;
import org.apache.log4j.Logger;
-import org.dllearner.kb.extraction.Configuration;
import org.dllearner.kb.sparql.SPARQLTasks;
import org.dllearner.kb.sparql.SparqlQueryMaker;
import org.dllearner.utilities.datastructures.RDFNodeTuple;
@@ -34,33 +33,22 @@
* @author Sebastian Hellmann
*
*/
-public class SparqlTupelAquisitorImproved extends TupelAquisitor {
+public class SparqlTupelAquisitorImproved extends SparqlTupelAquisitor {
@SuppressWarnings("unused")
private static Logger logger = Logger.getLogger(SparqlTupelAquisitorImproved.class);
- private Configuration configuration;
- protected SparqlQueryMaker sparqlQueryMaker;
- protected SPARQLTasks sparqlTasks;
- public SparqlTupelAquisitorImproved(Configuration Configuration) {
- this.configuration = Configuration;
- this.sparqlQueryMaker = configuration.getSparqlQueryMaker();
- this.sparqlTasks = configuration.sparqlTasks;
+ public SparqlTupelAquisitorImproved(SparqlQueryMaker sparqlQueryMaker, SPARQLTasks sparqlTasks) {
+ super(sparqlQueryMaker, sparqlTasks);
+
}
// standard query get a tupels (p,o) for subject s
@Override
public SortedSet<RDFNodeTuple> getTupelForResource(URI uri) {
-
- String pred = "predicate";
- String obj = "object";
- // getQuery
- String sparqlQueryString = sparqlQueryMaker
- .makeSubjectQueryUsingFilters(uri.toString());
-
- return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, pred, obj);
+ throw new RuntimeException("not implemented yet");
}
Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java 2008-08-15 12:03:42 UTC (rev 1083)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java 2008-08-15 12:21:00 UTC (rev 1084)
@@ -34,8 +34,18 @@
*
*/
public abstract class TupelAquisitor {
+
+ protected boolean classMode = false;
public abstract SortedSet<RDFNodeTuple> getTupelForResource(URI u);
+
+ public void setClassMode(boolean classMode) {
+ this.classMode = classMode;
+ }
+
+ public boolean isClassMode() {
+ return classMode;
+ }
}
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java 2008-08-15 12:03:42 UTC (rev 1083)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java 2008-08-15 12:21:00 UTC (rev 1084)
@@ -19,10 +19,8 @@
*/
package org.dllearner.kb.extraction;
-import org.dllearner.kb.old.Manipulators;
-import org.dllearner.kb.sparql.SPARQLTasks;
-import org.dllearner.kb.sparql.SparqlEndpoint;
-import org.dllearner.kb.sparql.SparqlQueryMaker;
+import org.dllearner.kb.aquisitors.TupelAquisitor;
+import org.dllearner.kb.manipulator.Manipulator;
/**
* Stores all configuration settings. this class collects all configuration
@@ -32,78 +30,79 @@
*/
public class Configuration {
- public SPARQLTasks sparqlTasks;
+ //public SPARQLTasks sparqlTasks;
- private SparqlEndpoint endpoint;
- private SparqlQueryMaker sparqlQueryMaker;
+ //private SparqlEndpoint endpoint;
+ //private SparqlQueryMaker sparqlQueryMaker;
+ private Manipulator manipulator;
+ private TupelAquisitor tupelAquisitor;
- private Manipulators manipulator;
// the following needs to be moved to
// class extraction algorithm or manipulator
private int recursiondepth;
private boolean getAllSuperClasses = true;
private boolean closeAfterRecursion = true;
- public int numberOfUncachedSparqlQueries = 0;
- public int numberOfCachedSparqlQueries = 0;
- public String cacheDir="cache";
+ private int breakSuperClassesAfter = 200;
- public Configuration(SparqlEndpoint specificSparqlEndpoint,
- SparqlQueryMaker sparqlQueryMaker, Manipulators manipulator,
- int recursiondepth, boolean getAllSuperClasses,
- boolean closeAfterRecursion, String cacheDir) {
- this.endpoint = specificSparqlEndpoint;
- this.sparqlQueryMaker = sparqlQueryMaker;
+
+ public Configuration(
+ TupelAquisitor tupelAquisitor,
+ Manipulator manipulator,
+ int recursiondepth,
+ boolean getAllSuperClasses,
+ boolean closeAfterRecursion,
+ int breakSuperClassesAfter) {
+
+ this.tupelAquisitor = tupelAquisitor;
this.manipulator = manipulator;
this.recursiondepth = recursiondepth;
this.getAllSuperClasses = getAllSuperClasses;
this.closeAfterRecursion = closeAfterRecursion;
- this.cacheDir=cacheDir;
+ this.breakSuperClassesAfter = breakSuperClassesAfter;
+
}
- public Configuration changeQueryType(SparqlQueryMaker sqm) {
- // TODO must clone here
- return new Configuration(this.endpoint, sqm, this.manipulator,
- this.recursiondepth, this.getAllSuperClasses,
- this.closeAfterRecursion, this.cacheDir);
+ public int getBreakSuperClassesAfter() {
+ return breakSuperClassesAfter;
}
- public Manipulators getManipulator() {
- return this.manipulator;
- }
- public SparqlEndpoint getSparqlEndpoint() {
- return endpoint;
+ public boolean isCloseAfterRecursion() {
+ return closeAfterRecursion;
}
- public SparqlQueryMaker getSparqlQueryMaker() {
- return sparqlQueryMaker;
- }
public boolean isGetAllSuperClasses() {
return getAllSuperClasses;
}
- public boolean isCloseAfterRecursion() {
- return closeAfterRecursion;
+
+ public Manipulator getManipulator() {
+ return manipulator;
}
+
public int getRecursiondepth() {
return recursiondepth;
}
-
- public SPARQLTasks getSparqlTasks() {
- return sparqlTasks;
- }
-
- /*public void increaseNumberOfuncachedSparqlQueries() {
- numberOfUncachedSparqlQueries++;
+
+ public TupelAquisitor getTupelAquisitor() {
+ return tupelAquisitor;
}
- public void increaseNumberOfCachedSparqlQueries() {
- numberOfCachedSparqlQueries++;
+ /*
+ public Configuration changeQueryType(SparqlQueryMaker sqm) {
+ // TODO must clone here
+ return new Configuration(this.endpoint, sqm, this.manipulator,
+ this.recursiondepth, this.getAllSuperClasses,
+ this.closeAfterRecursion, this.cacheDir);
+
}*/
+
+
+
}
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-15 12:03:42 UTC (rev 1083)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-15 12:21:00 UTC (rev 1084)
@@ -20,16 +20,13 @@
package org.dllearner.kb.extraction;
import java.net.URI;
-import java.util.HashSet;
-import java.util.Vector;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.SortedSet;
+import java.util.TreeSet;
import org.apache.log4j.Logger;
-import org.dllearner.kb.old.ClassNode;
-import org.dllearner.kb.old.InstanceNode;
-import org.dllearner.kb.old.Manipulators;
-import org.dllearner.kb.old.Node;
-import org.dllearner.kb.old.TypedSparqlQuery;
-import org.dllearner.kb.old.TypedSparqlQueryClasses;
+import org.dllearner.kb.aquisitors.TupelAquisitor;
/**
* This class is used to extract the information .
@@ -39,8 +36,8 @@
public class ExtractionAlgorithm {
private Configuration configuration;
- private Manipulators manipulator;
- private int recursionDepth = 1;
+ //private Manipulators manipulator;
+ //private int recursionDepth = 1;
// private boolean getAllSuperClasses = true;
// private boolean closeAfterRecursion = true;
private static Logger logger = Logger
@@ -48,8 +45,8 @@
public ExtractionAlgorithm(Configuration Configuration) {
this.configuration = Configuration;
- this.manipulator = Configuration.getManipulator();
- this.recursionDepth = Configuration.getRecursiondepth();
+ //this.manipulator = Configuration.getManipulator();
+ //this.recursionDepth = Configuration.getRecursiondepth();
// this.getAllSuperClasses = Configuration.isGetAllSuperClasses();
// this.closeAfterRecursion=Configuration.isCloseAfterRecursion();
}
@@ -58,10 +55,10 @@
return new InstanceNode(u);
}
- public Vector<Node> expandAll(URI[] u, TypedSparqlQuery tsp) {
- Vector<Node> v = new Vector<Node>();
- for (URI one : u) {
- v.add(expandNode(one, tsp));
+ public List<Node> expandAll(URI[] uris, TupelAquisitor tupelAquisitor) {
+ List<Node> v = new ArrayList<Node>();
+ for (URI oneURI : uris) {
+ v.add(expandNode(oneURI, tupelAquisitor));
}
return v;
}
@@ -75,50 +72,52 @@
* @param typedSparqlQuery
* @return
*/
- public Node expandNode(URI uri, TypedSparqlQuery typedSparqlQuery) {
+ public Node expandNode(URI uri, TupelAquisitor tupelAquisitor) {
//System.out.println(uri.toString());
//System.out.println(manipulator);
//System.out.println(this.configuration);
long time = System.currentTimeMillis();
+
Node n = getFirstNode(uri);
logger.info(n);
- Vector<Node> v = new Vector<Node>();
- v.add(n);
- logger.info("StartVector: " + v);
+ List<Node> initialNodes = new ArrayList<Node>();
+ initialNodes.add(n);
+ logger.info("StartVector: " + initialNodes);
// n.expand(tsp, this.Manipulator);
// Vector<Node> second=
- for (int x = 1; x <= recursionDepth; x++) {
+ for (int x = 1; x <= configuration.getRecursiondepth(); x++) {
- Vector<Node> tmp = new Vector<Node>();
- while (v.size() > 0) {
- Node tmpNode = v.remove(0);
+ List<Node> tmp = new ArrayList<Node>();
+ while (!initialNodes.isEmpty()) {
+ Node tmpNode = initialNodes.remove(0);
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
- Vector<Node> tmpVec = tmpNode.expand(typedSparqlQuery,
- manipulator);
+ List<Node> tmpNodeList = tmpNode.expand(tupelAquisitor,
+ configuration.getManipulator());
//System.out.println(tmpVec);
- tmp.addAll(tmpVec);
+ tmp.addAll(tmpNodeList);
}
- v = tmp;
- logger.info("Recursion counter: " + x + " with " + v.size()
+ //CAVE: possible error here
+ initialNodes = tmp;
+ logger.info("Recursion counter: " + x + " with " + initialNodes.size()
+ " Nodes remaining, needed: "
+ (System.currentTimeMillis() - time) + "ms");
time = System.currentTimeMillis();
}
- HashSet<String> hadAlready = new HashSet<String>();
+ SortedSet<String> hadAlready = new TreeSet<String>();
//p(configuration.toString());
// gets All Class Nodes and expands them further
- if (this.configuration.isGetAllSuperClasses()) {
+ if (configuration.isGetAllSuperClasses()) {
logger.info("Get all superclasses");
// Set<Node> classes = new TreeSet<Node>();
- Vector<Node> classes = new Vector<Node>();
+ List<Node> classes = new ArrayList<Node>();
+ List<Node> instances = new ArrayList<Node>();
- Vector<Node> instances = new Vector<Node>();
- for (Node one : v) {
+ for (Node one : initialNodes) {
if (one instanceof ClassNode) {
classes.add(one);
}
@@ -128,23 +127,28 @@
}
// System.out.println(instances.size());
- TypedSparqlQueryClasses tsqc = new TypedSparqlQueryClasses(
- configuration);
- if (this.configuration.isCloseAfterRecursion()) {
- while (instances.size() > 0) {
+ //TODO LinkedData incompatibility
+ //TupelAquisitor tupelAquisitorClasses = configuration.sparqlTupelAquisitorClasses;
+ //XXX this should be solved in a better way
+ tupelAquisitor.setClassMode(true);
+ if (configuration.isCloseAfterRecursion()) {
+ while (!instances.isEmpty()) {
logger.trace("Getting classes for remaining instances: "
+ instances.size());
Node next = instances.remove(0);
logger.trace("Getting classes for: " + next);
- classes.addAll(next.expand(tsqc, manipulator));
- if (classes.size() >= Manipulators.breakSuperClassRetrievalAfter) {
+ classes.addAll(next.expand(tupelAquisitor, configuration.getManipulator()));
+ if (classes.size() >= configuration.getBreakSuperClassesAfter()) {
break;
}
}
}
- Vector<Node> tmp = new Vector<Node>();
+ //XXX this should be solved in a better way
+ tupelAquisitor.setClassMode(false);
+
+ List<Node> tmp = new ArrayList<Node>();
int i = 0;
- while (classes.size() > 0) {
+ while (!classes.isEmpty()) {
logger.trace("Remaining classes: " + classes.size());
// Iterator<Node> it=classes.iterator();
// Node next =(Node) it.next();
@@ -155,13 +159,13 @@
logger.trace("Getting SuperClass for: " + next);
// System.out.println(hadAlready.size());
hadAlready.add(next.getURI().toString());
- tmp = next.expand(typedSparqlQuery, manipulator);
+ tmp = next.expand(tupelAquisitor, configuration.getManipulator());
classes.addAll(tmp);
- tmp = new Vector<Node>();
+ tmp = new ArrayList<Node>();
// if(i % 50==0)System.out.println("got "+i+" extra classes,
// max: "+manipulator.breakSuperClassRetrievalAfter);
i++;
- if (i >= Manipulators.breakSuperClassRetrievalAfter) {
+ if (i >= configuration.getBreakSuperClassesAfter()) {
break;
}
}
Added: trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-08-15 12:21:00 UTC (rev 1084)
@@ -0,0 +1,125 @@
+/**
+ * Copyright (C) 2007, Sebastian Hellmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.extraction;
+
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import org.dllearner.kb.aquisitors.TupelAquisitor;
+import org.dllearner.kb.manipulator.Manipulator;
+import org.dllearner.utilities.datastructures.RDFNodeTuple;
+import org.dllearner.utilities.owl.OWLVocabulary;
+
+/**
+ * A node in the graph that is an instance.
+ *
+ * @author Sebastian Hellmann
+ *
+ */
+public class InstanceNode extends Node {
+
+ private SortedSet<ClassNode> classes = new TreeSet<ClassNode>();
+ //SortedSet<StringTuple> datatypes = new TreeSet<StringTuple>();
+ private SortedSet<PropertyNode> properties = new TreeSet<PropertyNode>();
+
+ public InstanceNode(URI u) {
+ super(u);
+ // this.type = "instance";
+
+ }
+
+ // expands all directly connected nodes
+ @Override
+ public List<Node> expand(TupelAquisitor tupelAquisitor, Manipulator manipulator) {
+
+ SortedSet<RDFNodeTuple> newTuples = tupelAquisitor.getTupelForResource(uri);
+ // see Manipulator
+ newTuples = manipulator.manipulate(this, newTuples);
+ //s=m.check(s, this);
+ // System.out.println("fffffff"+m);
+ List<Node> newNodes = new ArrayList<Node>();
+
+ for (RDFNodeTuple tuple : newTuples) {
+ //QUALITY: needs proper handling of ressource, could be done one step lower in the onion
+ if(!tuple.b.toString().startsWith("http:"))continue;
+
+// basically : if p is rdf:type then o is a class
+ // else it is an instance
+ try {
+ if (tuple.a.toString().equals(OWLVocabulary.RDF_TYPE)) {
+ ClassNode tmp = new ClassNode(new URI(tuple.b.toString()));
+ classes.add(tmp);
+ newNodes.add(tmp);
+ } else {
+ InstanceNode tmp = new InstanceNode(new URI(tuple.b.toString()));
+ properties.add(new PropertyNode(new URI(tuple.a.toString()), this, tmp));
+ newNodes.add(tmp);
+
+ }
+ } catch (Exception e) {
+ System.out.println("Problem with: " + tuple);
+ e.printStackTrace();
+ }
+
+
+
+ }//endfor
+ expanded = true;
+ return newNodes;
+
+ }
+
+ // gets the types for properties recursively
+ @Override
+ public void expandProperties(TupelAquisitor tupelAquisitor, Manipulator manipulator) {
+ for (PropertyNode one : properties) {
+ one.expandProperties(tupelAquisitor, manipulator);
+ }
+
+ }
+
+ @Override
+ public SortedSet<String> toNTriple() {
+ SortedSet<String> returnSet = new TreeSet<String>();
+ returnSet.add("<" + uri + "><" + OWLVocabulary.RDF_TYPE + "><" + OWLVocabulary.OWL_THING + ">.");
+ for (ClassNode one : classes) {
+ returnSet.add("<" + uri + "><" + OWLVocabulary.RDF_TYPE + "><" + one.getURI() + ">.");
+ returnSet.addAll(one.toNTriple());
+ }
+ for (PropertyNode one : properties) {
+ returnSet.add("<" + uri + "><" + one.getURI() + "><" + one.getB().getURI()
+ + ">.");
+ returnSet.addAll(one.toNTriple());
+ returnSet.addAll(one.getB().toNTriple());
+ }
+
+ return returnSet;
+ }
+
+ @Override
+ public int compareTo(Node n) {
+ return super.compareTo(n);
+ //
+ }
+
+}
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java 2008-08-15 12:03:42 UTC (rev 1083)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java 2008-08-15 12:21:00 UTC (rev 1084)
@@ -25,12 +25,6 @@
import java.util.TreeSet;
import org.apache.log4j.Logger;
-import org.dllearner.kb.old.Manipulators;
-import org.dllearner.kb.old.Node;
-import org.dllearner.kb.old.TypedSparqlQuery;
-import org.dllearner.kb.sparql.SparqlEndpoint;
-import org.dllearner.kb.sparql.SparqlQueryMaker;
-import org.dllearner.utilities.statistics.Statistics;
/**
* An object of this class encapsulates everything.
@@ -41,23 +35,17 @@
public class Manager {
private Configuration configuration;
- private TypedSparqlQuery typedSparqlQuery;
private ExtractionAlgorithm extractionAlgorithm;
private static Logger logger = Logger
.getLogger(Manager.class);
- public void useConfiguration(SparqlQueryMaker sparqlQueryMaker,
- SparqlEndpoint SparqlEndpoint, Manipulators manipulator,
- int recursiondepth, boolean getAllSuperClasses,
- boolean closeAfterRecursion, String cacheDir) {
+ public void useConfiguration(Configuration configuration) {
- this.configuration = new Configuration(SparqlEndpoint, sparqlQueryMaker,
- manipulator, recursiondepth, getAllSuperClasses,
- closeAfterRecursion, cacheDir);
+ this.configuration = configuration;
//System.out.println(this.configuration);
- this.typedSparqlQuery = new TypedSparqlQuery(configuration);
+
this.extractionAlgorithm = new ExtractionAlgorithm(configuration);
}
@@ -67,20 +55,21 @@
// System.out.println(ExtractionAlgorithm.getFirstNode(uri));
System.out.println("Start extracting");
- Node n = extractionAlgorithm.expandNode(uri, typedSparqlQuery);
+ Node n = extractionAlgorithm.expandNode(uri, configuration.getTupelAquisitor());
SortedSet<String> s = n.toNTriple();
- String nt = "";
+ StringBuffer nt = new StringBuffer(33000);
for (String str : s) {
- nt += str + "\n";
+ nt.append(str + "\n");
}
- return nt;
+ System.out.println("sizeofStringBuffer"+nt.length());
+ return nt.toString();
}
public String extract(Set<String> instances) {
// this.TypedSparqlQuery.query(uri);
// System.out.println(ExtractionAlgorithm.getFirstNode(uri));
logger.info("Start extracting");
- SortedSet<String> ret = new TreeSet<String>();
+ SortedSet<String> tripleCollector = new TreeSet<String>();
int progress=0;
for (String one : instances) {
progress++;
@@ -89,15 +78,15 @@
//}
try {
Node n = extractionAlgorithm.expandNode(new URI(one),
- typedSparqlQuery);
- ret.addAll(n.toNTriple());
+ configuration.getTupelAquisitor());
+ tripleCollector.addAll(n.toNTriple());
} catch (Exception e) {
e.printStackTrace();
}
}
logger.info("Finished extracting, start conversion");
- StringBuffer nt = new StringBuffer();
- Object[] arr = ret.toArray();
+ StringBuffer nt = new StringBuffer(100000);
+ Object[] arr = tripleCollector.toArray();
for (int i = 0; i < arr.length; i++) {
nt.append((String) arr[i] + "\n");
if (i % 1000 == 0)
@@ -109,15 +98,15 @@
* ret.remove(tmp); System.out.println(ret.size()); } /*for (String str :
* ret) { nt += str + "\n"; }
*/
- Statistics.addTriples(ret.size());
+ logger.info("Ontology String size = " + nt.length());
return nt.toString();
}
- public void addPredicateFilter(String str) {
+/* public void addPredicateFilter(String str) {
this.configuration.getSparqlQueryMaker().addPredicateFilter(str);
}
-
+*/
public Configuration getConfiguration() {
return configuration;
}
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-08-15 12:03:42 UTC (rev 1083)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-08-15 12:21:00 UTC (rev 1084)
@@ -24,9 +24,9 @@
import java.util.SortedSet;
import org.dllearner.kb.extraction.ClassNode;
+import org.dllearner.kb.extraction.InstanceNode;
import org.dllearner.kb.extraction.Node;
import org.dllearner.kb.manipulator.Rule.Months;
-import org.dllearner.kb.old.InstanceNode;
import org.dllearner.utilities.datastructures.RDFNodeTuple;
import org.dllearner.utilities.owl.OWLVocabulary;
@@ -38,24 +38,15 @@
*/
public class Manipulator {
- List<Rule> rules = new ArrayList<Rule>();
- //List<ReplacementRule> replacementRules = new ArrayList<ReplacementRule>();
-
-
- //public int breakSuperClassRetrievalAfter = 200;
- //public LinkedList<StringTuple> replacePredicate;
- //public LinkedList<StringTuple> replaceObject;
-
- // Set<String> classproperties;
-
+ private List<Rule> rules = new ArrayList<Rule>();
+
private Manipulator() {
-
- //this.replaceObject = replaceObject;
- //this.replacePredicate = replacePredicate;
- //this.breakSuperClassRetrievalAfter = breakSuperClassRetrievalAfter;
- // Set<String> classproperties = new HashSet<String>();
- // classproperties.add(subclass);
+ }
+ public Manipulator(List<Rule> rules) {
+ for (Rule rule : rules) {
+ addRule(rule);
+ }
}
/**
@@ -64,51 +55,32 @@
*/
public SortedSet<RDFNodeTuple> manipulate( Node node, SortedSet<RDFNodeTuple> tuples) {
- for (Months month : Rule.MONTHS) {
- tuples = applyRulesOfTheMonth(month, node, tuples);
- }
- return tuples;
- /*SortedSet<RDFNodeTuple> keep = new TreeSet<RDFNodeTuple>();
-
- for (RDFNodeTuple currentTuple : tuples) {
- currentTuple = manipulateTuple(node.getURI().toString(), currentTuple);
- if(keepTuple(node, currentTuple)) {
- keep.add(currentTuple);
- }
-
- }
- return keep;*/
- }
-
- public SortedSet<RDFNodeTuple> applyRulesOfTheMonth(Months month, Node subject, SortedSet<RDFNodeTuple> tuples){
for (Rule rule : rules) {
- if(rule.month.equals(month)) {
- tuples = rule.applyRule(subject, tuples);
- }
+ tuples = rule.applyRule(node, tuples);
}
return tuples;
}
+
+
public static Manipulator getManipulatorByName(String predefinedManipulator)
{
if (predefinedManipulator.equalsIgnoreCase("DBPEDIA-NAVIGATOR")) {
return getDBpediaNavigatorManipulator();
-// return new DBpediaNavigatorManipulator(blankNodeIdentifier,
- //breakSuperClassRetrievalAfter, replacePredicate, replaceObject);
-
+
} else if(predefinedManipulator.equalsIgnoreCase("DEFAULT")){
return getDefaultManipulator();
}
else {
- //QUALITY maybe not the best, should be Default
- return new Manipulator();
+ //QUALITY maybe not the best,
+ return getDefaultManipulator();
}
}
public static Manipulator getDBpediaNavigatorManipulator(){
Manipulator m = new Manipulator();
- m.rules.add(new DBPediaNavigatorCityLocatorRule(Months.JANUARY));
- m.rules.add(new DBpediaNavigatorOtherRule(Months.DECEMBER));
+ m.addRule(new DBPediaNavigatorCityLocatorRule(Months.JANUARY));
+ m.addRule(new DBpediaNavigatorOtherRule(Months.DECEMBER));
return m;
}
@@ -137,13 +109,28 @@
private void addDefaultRules(Months month){
- rules.add(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_CLASS,ClassNode.class.getCanonicalName() )) ;
- rules.add(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_THING,InstanceNode.class.getCanonicalName() )) ;
- rules.add(new TypeFilterRule(month, "", OWLVocabulary.OWL_CLASS, ClassNode.class.getCanonicalName()) ) ;
+ addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_CLASS,ClassNode.class.getCanonicalName() )) ;
+ addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_THING,InstanceNode.class.getCanonicalName() )) ;
+ addRule(new TypeFilterRule(month, "", OWLVocabulary.OWL_CLASS, ClassNode.class.getCanonicalName()) ) ;
}
+ public synchronized void addRule(Rule newRule){
+ rules.add(newRule);
+ List<Rule> l = new ArrayList<Rule>();
+
+ for (Months month : Rule.MONTHS) {
+ for (Rule rule : rules) {
+ if(rule.month.equals(month)) {
+ l.add(rule);
+ }
+ }
+
+ }
+ rules = l;
+ }
+
/*
private RDFNodeTuple manipulateTuple(String subject, RDFNodeTuple tuple) {
Deleted: trunk/src/dl-learner/org/dllearner/kb/old/ClassNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/old/ClassNode.java 2008-08-15 12:03:42 UTC (rev 1083)
+++ trunk/src/dl-learner/org/dllearner/kb/old/ClassNode.java 2008-08-15 12:21:00 UTC (rev 1084)
@@ -1,117 +0,0 @@
-/**
- * Copyright (C) 2007, Sebastian Hellmann
- *
- * This file is part of DL-Learner.
- *
- * DL-Learner is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DL-Learner is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.dllearner.kb.old;
-
-import java.net.URI;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.SortedSet;
-import java.util.TreeSet;
-import java.util.Vector;
-
-import org.dllearner.utilities.datastructures.StringTuple;
-
-/**
- * Is a node in the graph, that is a class.
- *
- * @author Sebastian Hellmann
- */
-public class ClassNode extends Node {
- Set<PropertyNode> properties = new HashSet<PropertyNode>();
-
- public ClassNode(URI u) {
- super(u);
- }
-
- // expands all directly connected nodes
- @Override
- public Vector<Node> expand(TypedSparqlQueryInterface tsq, Manipulators m) {
-
- Set<StringTuple> s = tsq.getTupelForResource(this.uri);
- // see manipulator
- s = m.check(s, this);
- Vector<Node> Nodes = new Vector<Node>();
- Iterator<StringTuple> it = s.iterator();
- while (it.hasNext()) {
- StringTuple t = (StringTuple) it.next();
- try {
- // substitute rdf:type with owl:subclassof
- if (t.a.equals(Manipulators.type) || t.a.equals(Manipulators.subclass)) {
- ClassNode tmp = new ClassNode(new URI(t.b));
- properties.add(new PropertyNode(new URI(Manipulators.subclass), this,
- tmp));
- Nodes.add(tmp);
- } else {
- // further expansion stops here
- // Nodes.add(tmp); is missing on purpose
- ClassNode tmp = new ClassNode(new URI(t.b));
- properties.add(new PropertyNode(new URI(t.a), this, tmp));
- // System.out.println(m.blankNodeIdentifier);
- // System.out.println("XXXXX"+t.b);
-
- // if o is a blank node expand further
- // TODO this needs a lot more work
- if (t.b.startsWith(Manipulators.blankNodeIdentifier)) {
- tmp.expand(tsq, m);
- System.out.println(Manipulators.blankNodeIdentifier);
- System.out.println("XXXXX" + t.b);
- }
- // Nodes.add(tmp);
- }
- } catch (Exception e) {
- System.out.println(t);
- e.printStackTrace();
- }
-
- }
- return Nodes;
- }
-
- // gets the types for properties recursively
- @Override
- public void expandProperties(TypedSparqlQueryInterface tsq, Manipulators m) {
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.dllearner.kb.sparql.datastructure.Node#toNTriple()
- */
- @Override
- public SortedSet<String> toNTriple() {
- SortedSet<String> s = new TreeSet<String>();
- s.add("<" + this.uri + "><" + rdftype + "><" + classns + ">.");
-
- for (PropertyNode one : properties) {
- s.add("<" + this.uri + "><" + one.getURI() + "><"
- + one.getB().getURI() + ">.");
- s.addAll(one.getB().toNTriple());
- }
-
- return s;
- }
-
- @Override
- public int compareTo(Node n) {
- return super.compareTo(n);
- }
-
-}
Deleted: trunk/src/dl-learner/org/dllearner/kb/old/DBpediaNavigatorCityLocator.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/old/DBpediaNavigatorCityLocator.java 2008-08-15 12:03:42 UTC (rev 1083)
+++ trunk/src/dl-learner/org/dllearner/kb/old/DBpediaNavigatorCityLocator.java 2008-08-15 12:21:00 UTC (rev 1084)
@@ -1,58 +0,0 @@
-package org.dllearner.kb.old;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.dllearner.utilities.datastructures.StringTuple;
-
-public class DBpediaNavigatorCityLocator {
-
- public static String getTypeToCoordinates(float lat, float lng){
- if (lat<71.08&&lat>33.39&&lng>-24.01&&lng<50.8){
- if (lat>50&&lat<52&&lng>12&&lng<13){
- return "http://dbpedia.org/class/custom/City_in_Saxony";
- }
- else return "http://dbpedia.org/class/custom/City_in_Europe";
- }
- else if (lng>-17.5&&lng<52.04&&lat>-36&&lat<36.6){
- if (lat>21.45&&lat<31.51&&lng>24.7&&lng<37.26){
- return "http://dbpedia.org/class/custom/City_in_Egypt";
- }
- else return "http://dbpedia.org/class/custom/City_in_Africa";
- }
- else if (((lng>27.4&&lng<180)||(lng<-168.75))&&lat>-11.2){
- return "http://dbpedia.org/class/custom/City_in_Asia";
- }
- else if (lng>113.9&&lng<179.65&&lat<-10.8&&lat>-47.04){
- return "http://dbpedia.org/class/custom/City_in_Australia";
- }
- else if (lng>-168.4&&lng<-19.7&&lat>6.6){
- return "http://dbpedia.org/class/custom/City_in_North_America";
- }
- else if (lng>-81.56&&lng<-34.1&&lat<6.6){
- return "http://dbpedia.org/class/custom/City_in_South_America";
- }
- else return "http://dbpedia.org/class/custom/City_in_World";
- }
-
- public static Set<StringTuple> getTuplesToAdd(String uri){
- String subClass="http://www.w3.org/2000/01/rdf-schema#subClassOf";
-
- HashMap<String,String> map=new HashMap<String,String>();
- map.put("http://dbpedia.org/class/custom/City_in_Saxony", "http://dbpedia.org/class/custom/City_in_Europe");
- map.put("http://dbpedia.org/class/custom/City_in_Egypt", "http://dbpedia.org/class/custom/City_in_Africa");
- map.put("http://dbpedia.org/class/custom/City_in_Europe", "http://dbpedia.org/class/yago/City108524735");
- map.put("http://dbpedia.org/class/custom/City_in_Asia", "http://dbpedia.org/class/yago/City108524735");
- map.put("http://dbpedia.org/class/custom/City_in_Australia", "http://dbpedia.org/class/yago/City108524735");
- map.put("http://dbpedia.org/class/custom/City_in_North_America", "http://dbpedia.org/class/yago/City108524735");
- map.put("http://dbpedia.org/class/custom/City_in_South_America", "http://dbpedia.org/class/yago/City108524735");
- map.put("http://dbpedia.org/class/custom/City_in_Africa", "http://dbpedia.org/class/yago/City108524735");
- map.put("http://dbpedia.org/class/custom/City_in_World", "http://dbpedia.org/class/yago/City108524735");
- Set<StringTuple> toAdd = new HashSet<StringTuple>();
- if (map.containsKey(uri)){
- toAdd.add(new StringTuple(subClass,map.get(uri)));
- }
- return toAdd;
- }
-}
Deleted: trunk/src/dl-learner/org/dllearner/kb/old/DBpediaNavigatorManipulator.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/old/DBpediaNavigatorManipulator.java 2008-08-15 12:03:42 UTC (rev 1083)
+++ trunk/src/dl-learner/org/dllearner/kb/old/DBpediaNavigatorManipulator.java 2008-08-15 12:21:00 UTC (rev 1084)
@@ -1,139 +0,0 @@
-/**
- * Copyright (C) 2007, Sebastian Hellmann
- *
- * This file is part of DL-Learner.
- *
- * DL-Learner is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DL-Learner is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.dllearner.kb.old;
-
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.Set;
-
-import org.dllearner.utilities.datastructures.StringTuple;
-
-/**
- * Used to manipulate retrieved tupels, identify blanknodes, etc.
- *
- * @author Sebastian Hellmann
- *
- */
-public class DBpediaNavigatorManipulator implements Manipulators{
- public final String subclass = "http://www.w3.org/2000/01/rdf-schema#subClassOf";
- public final String type = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
- final String objectProperty = "http://www.w3.org/2002/07/owl#ObjectProperty";
- final String classns = "http://www.w3.org/2002/07/owl#Class";
- final String thing = "http://www.w3.org/2002/07/owl#Thing";
-
- public String blankNodeIdentifier = "bnode";
- public int breakSuperClassRetrievalAfter = 200;
- public LinkedList<StringTuple> replacePredicate;
- public LinkedList<StringTuple> replaceObject;
-
- // Set<String> classproperties;
-
- public DBpediaNavigatorManipulator(String blankNodeIdentifier,
- int breakSuperClassRetrievalAfter,
- LinkedList<StringTuple> replacePredicate,
- LinkedList<StringTuple> replaceObject) {
- this.blankNodeIdentifier = blankNodeIdentifier;
- this.replaceObject = replaceObject;
- this.replacePredicate = replacePredicate;
- this.breakSuperClassRetrievalAfter = breakSuperClassRetrievalAfter;
- // Set<String> classproperties = new HashSet<String>();
- // classproperties.add(subclass);
-
- }
-
- /**
- * this checks for consistency and manipulates the tuples, before they get
- * triple
- *
- * @param tuples
- * tuples for the node
- * @param node
- * @return
- */
- public Set<StringTuple> check(Set<StringTuple> tuples, Node node) {
- //Set<StringTuple> toRemove = new HashSet<StringTuple>();
- Iterator<StringTuple> it = tuples.iterator();
- float lat=0;
- float lng=0;
- String clas="";
- StringTuple typeTupel=null;
- tuples.addAll(DBpediaNavigatorCityLocator.getTuplesToAdd(node.getURI().toString()));
- while (it.hasNext()) {
- StringTuple t = (StringTuple) it.next();
-
- if (t.a.equals("http://www.w3.org/1999/02/22-rdf-syntax-ns#type")){
- clas=t.b;
- typeTupel=t;
- }
-
- if (t.a.equals("http://www.w3.org/2003/01/geo/wgs84_pos#lat"))
- lat=Float.parseFloat(t.b.substring(0,t.b.indexOf("^^")));
- if (t.a.equals("http://www.w3.org/2003/01/geo/wgs84_pos#long"))
- lng=Float.parseFloat(t.b.substring(0,t.b.indexOf("^^")));
-
- /*replacePredicate(t);
- replaceObject(t);
-
-
- // remove <rdf:type, owl:class>
- // this is done to avoid transformation to owl:subclassof
- if (t.a.equals(type) && t.b.equals(classns)
- && node instanceof ClassNode) {
- toRemove.add(t);
- }
-
- // all with type class
- if (t.b.equals(classns) && node instanceof ClassNode) {
- toRemove.add(t);
- }
-
- // remove all instances with owl:type thing
- if (t.a.equals(type) && t.b.equals(thing)
- && node instanceof InstanceNode) {
- toRemove.add(t);
- }*/
-
- }
- if (clas.equals("http://dbpedia.org/class/yago/City108524735")){
- String newType=DBpediaNavigatorCityLocator.getTypeToCoordinates(lat, lng);
- tuples.add(new StringTuple("http://www.w3.org/1999/02/22-rdf-syntax-ns#type",newType));
- tuples.remove(typeTupel);
- }
- //tuples.removeAll(toRemove);
-
- return tuples;
- }
-
- /*private void replacePredicate(StringTuple t) {
- for (StringTuple rep : replacePredicate) {
- if (rep.a.equals(t.a)) {
- t.a = rep.b;
- }
- }
- }
-
- private void replaceObject(StringTuple t) {
- for (StringTuple rep : replaceObject) {
- if (rep.a.equals(t.a)) {
- t.a = rep.b;
- }
- }
- }*/
-}
Deleted: trunk/src/dl-learner/org/dllearner/kb/old/InstanceNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/old/InstanceNode.java 2008-08-15 12:03:42 UTC (rev 1083)
+++ trunk/src/dl-learner/org/dllearner/kb/old/InstanceNode.java 2008-08-15 12:21:00 UTC (rev 1084)
@@ -1,122 +0,0 @@
-/**
- * Copyright (C) 2007, Sebastian Hellmann
- *
- * This file is part of DL-Learner.
- *
- * DL-Learner is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DL-Learner is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.dllearner.kb.old;
-
-import java.net.URI;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.SortedSet;
-import java.util.TreeSet;
-import java.util.Vector;
-
-import org.dllearner.utilities.datastructures.StringTuple;
-
-/**
- * A node in the graph that is an instance.
- *
- * @author Sebastian Hellmann
- *
- */
-public class InstanceNode extends Node {
-
- Set<ClassNode> classes = new HashSet<ClassNode>();
- Set<StringTuple> datatypes = new HashSet<StringTuple>();
- Set<PropertyNode> properties = new HashSet<PropertyNode>();
-
- public InstanceNode(URI u) {
- super(u);
- // this.type = "instance";
-
- }
-
- // expands all directly connected nodes
- @Override
- public Vector<Node> expand(TypedSparqlQueryInterface tsq, Manipulators m) {
-
- Set<StringTuple> s = tsq.getTupelForResource(uri);
- // see Manipulator
- s=m.check(s, this);
- // System.out.println("fffffff"+m);
- Vector<Node> Nodes = new Vector<Node>();
-
- Iterator<StringTuple> it = s.iterator();
- while (it.hasNext()) {
- StringTuple t = (StringTuple) it.next();
- //QUALITY: needs proper handling of ressource, could be done one step lower in the onion
- if(!t.b.startsWith("http:"))continue;
-
- // basically : if p is rdf:type then o is a class
- // else it is an instance
- try {
- if (t.a.equals(Manipulators.type)) {
- ClassNode tmp = new ClassNode(new URI(t.b));
- classes.add(tmp);
- Nodes.add(tmp);
- } else {
- InstanceNode tmp = new InstanceNode(new URI(t.b));
- properties.add(new PropertyNode(new URI(t.a), this, tmp));
- Nodes.add(tmp);
-
- }
- } catch (Exception e) {
- System.out.println("Problem with: " + t);
- e.printStackTrace();
- }
-
- }
- expanded = true;
- return Nodes;
- }
-
- // gets the types for properties recursively
- @Override
- public void expandProperties(TypedSparqlQueryInterface tsq, Manipulators m) {
- for (PropertyNode one : properties) {
- one.expandProperties(tsq, m);
- }
-
- }
-
- @Override
- public SortedSet<String> toNTriple() {
- SortedSet<String> s = new TreeSet<String>();
- s.add("<" + uri + "><" + rdftype + "><" + thing + ">.");
- for (ClassNode one : classes) {
- s.add("<" + uri + "><" + rdftype + "><" + one.getURI() + ">.");
- s.addAll(one.toNTriple());
- }
- for (PropertyNode one : properties) {
- s.add("<" + uri + "><" + one.getURI() + "><" + one.getB().getURI()
- + ">.");
- s.addAll(one.toNTriple());
- s.addAll(one.getB().toNTriple());
- }
-
- return s;
- }
-
- @Override
- public int compareTo(Node n) {
- return super.compareTo(n);
- //
- }
-
-}
Deleted: trunk/src/dl-learner/org/dllearner/kb/old/ManipulatorType.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/old/ManipulatorType.java 2008-08-15 12:03:42 UTC (rev 1083)
+++ trunk/src/dl-learner/org/dllearner/kb/old/ManipulatorType.java 2008-08-15 12:21:00 UTC (rev 1084)
@@ -1,23 +0,0 @@
-package org.dllearner.kb.old;
-
-import java.util.LinkedList;
-
-import org.dllearner.utilities.datastructures.StringTuple;
-
-
-/**
- * Used to get the right manipulator
- *
- * @author Sebastian Knappe
- *
- */
-public class ManipulatorType {
-
- public static Manipulators getManipulatorByName(String predefinedManipulator,String blankNodeIdentifier, int breakSuperClassRetrievalAfter, LinkedList<StringTuple> replacePredicate,LinkedList<StringTuple> replaceObject)
- {
- if (predefinedManipulator.equals("DBPEDIA-NAVIGATOR")) return new DBpediaNavigatorManipulator(blankNodeIdentifier,
- breakSuperClassRetrievalAfter, replacePredicate, replaceObject);
- else return new OldManipulator(blankNodeIdentifier,
- breakSuperClassRetrievalAfter, replacePredicate, replaceObject);
- }
-}
Deleted: trunk/src/dl-learner/org/dllearner/kb/old/Manipulators.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/old/Manipulators.java 2008-08-15 12:03:42 UTC (rev 1083)
+++ trunk/src/dl-learner/org/dllearner/kb/old/Manipulators.java 2008-08-15 12:21:00 UTC (rev 1084)
@@ -1,15 +0,0 @@
-package org.dllearner.kb.old;
-
-import java.util.Set;
-
-import org.dllearner.utilities.datastructures.StringTuple;
-
-public interface Manipulators {
-
- public int breakSuperClassRetrievalAfter = 200;
- public final String subclass = "http://www.w3.org/2000/01/rdf-schema#subClassOf";
- public final String type = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
- public String blankNodeIdentifier = "bnode";
-
- public Set<StringTuple> check(Set<StringTuple> tuples, Node node);
-}
Deleted: trunk/src/dl-learner/org/dllearner/kb/old/Node.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/old/Node.java 2008-08-15 12:03:42 UTC (rev 1083)
+++ trunk/src/dl-learner/org/dllearner/kb/old/Node.java 2008-08-15 12:21:00 UTC (rev 1084)
@@ -1,99 +0,0 @@
-/**
- * Copyright (C) 2007, Sebastian Hellmann
- *
- * This file is part of DL-Learner.
- *
- * DL-Learner is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DL-Learner is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.dllearner.kb.old;
-
-import java.net.URI;
-import java.util.SortedSet;
-import java.util.Vector;
-
-
-
-/**
- * Abstract class. defines functions to expand the nodes
- *
- * @author Sebastian Hellmann
- *
- */
-public abstract class Node implements Comparable<Node> {
-
- final String subclass = "http://www.w3.org/2000/01/rdf-schema#subClassOf";
- final String rdftype = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
- final String objectProperty = "http://www.w3.org/2002/07/owl#ObjectProperty";
- final String classns = "http://www.w3.org/2002/07/owl#Class";
- final String thing = "http://www.w3.org/2002/07/owl#Thing";
-
- URI uri;
- // protected String type;
- protected boolean expanded = false;
-
- public Node(URI u) {
- this.uri = u;
- }
-
- /**
- * Nodes are expanded with a certain context, given by the typedSparqlQuery
- * and the manipulator
- *
- * @param typedSparqlQuery
- * @param manipulator
- * @return Vector<Node> all Nodes that are new because of expansion
- */
- public abstract Vector<Node> expand(
- TypedSparqlQueryInterface typedSparqlQuery, Manipulators manipulator);
-
- /**
- * gets type defs for properties like rdf:type SymmetricProperties
- *
- * @param typedSparqlQuery
- * @param manipulator
- * @return Vector<Node>
- */
- public abstract void expandProperties(
- TypedSparqlQueryInterface typedSparqlQuery, Manipulators manipulator);
-
- /**
- * output
- *
- * @return a set of n-triple
- */
- public abstract SortedSet<String> toNTriple();
-
- @Override
- public String toString() {
- return "Node: " + uri + ":" + this.getClass().getSimpleName();
-
- }
-
- public URI getURI() {
- return uri;
- }
-
- public boolean equals(Node n) {
- if (this.uri.equals(n.uri))
- return true;
- else
- return false;
- }
-
- public int compareTo(Node n) {
- return this.uri.toString().compareTo(n.uri.toString());
- }
-
-}
Deleted: trunk/src/dl-learner/org/dllearner/kb/old/OldManipulator.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/old/OldManipulator.java 2008-08-15 12:03:42 UTC (rev 1083)
+++ trunk/src/dl-learner/org/dllearner/kb/old/OldManipulator.java 2008-08-15 12:21:00 UTC (rev 1084)
@@ -1,158 +0,0 @@
-/**
- * Copyright (C) 2007, Sebastian Hellmann
- *
- * This file is part of DL-Learner.
- *
- * DL-Learner is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DL-Learner is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.dllearner.kb.old;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.Set;
-
-import org.dllearner.utilities.datastructures.StringTuple;
-
-/**
- * Used to manipulate retrieved tupels, identify blanknodes, etc.
- *
- * @author Sebastian Hellmann
- *
- */
-@Deprecated
-public class OldManipulator implements Manipulators{
- public final String subclass = "http://www.w3.org/2000/01/rdf-schema#subClassOf";
- public final String type = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
- final String objectProperty = "http://www.w3.org/2002/07/owl#ObjectProperty";
- final String classns = "http://www.w3.org/2002/07/owl#Class";
- final String thing = "http://www.w3.org/2002/07/owl#Thing";
-
- public String blankNodeIdentifier = "bnode";
- public int breakSuperClassRetrievalAfter = 200;
- public LinkedList<StringTuple> replacePredicate;
- public LinkedList<StringTuple> replaceObject;
-
- // Set<String> classproperties;
-
- public OldManipulator(String blankNodeIdentifier,
- int breakSuperClassRetrievalAfter,
- LinkedList<StringTuple> replacePredicate,
- LinkedList<StringTuple> replaceObject) {
- this.blankNodeIdentifier = blankNodeIdentifier;
- this.replaceObject = replaceObject;
- this.replacePredicate = replacePredicate;
- this.breakSuperClassRetrievalAfter = breakSuperClassRetrievalAfter;
- // Set<String> classproperties = new HashSet<String>();
- // classproperties.add(subclass);
-
- }
-
- /**
- * this checks for consistency and manipulates the tuples, before they get
- * triple
- *
- * @param tuples
- * tuples for the node
- * @param node
- * @return
- */
- public Set<StringTuple> check(Set<StringTuple> tuples, Node node) {
- Set<StringTuple> toRemove = new HashSet<StringTuple>();
- Iterator<StringTuple> it = tuples.iterator();
- while (it.hasNext()) {
- StringTuple t = (StringTuple) it.next();
-
- //HACK
-// if(t.a.equals("http://www.holygoat.co.uk/owl/redwood/0.1/tags/taggedWithTag")) {
-// //hackGetLabel(t.b);
-//
-// }
-
- // GovTrack hack
- // => we convert a string literal to a URI
- // => TODO: introduce an option for converting literals for certain
- // properties into URIs
-// String sp = "http://purl.org/dc/elements/1.1/subject";
-// if(t.a.equals(sp)) {
-// System.out.println(t);
-// System.exit(0);
-// }
-
- replacePredicate(t);
- replaceObject(t);
-
-
- // remove <rdf:type, owl:class>
- // this is done to avoid transformation to owl:subclassof
- if (t.a.equals(type) && t.b.equals(classns)
- && node instanceof ClassNode) {
- toRemove.add(t);
- }
-
- // all with type class
- if (t.b.equals(classns) && node instanceof ClassNode) {
- toRemove.add(t);
- }
-
- // remove all instances with owl:type thing
- if (t.a.equals(type) && t.b.equals(thing)
- && node instanceof InstanceNode) {
- toRemove.add(t);
- }
-
- }
- tuples.removeAll(toRemove);
-
- return tuples;
- }
-
- private void replacePredicate(StringTuple t) {
- for (StringTuple rep : replacePredicate) {
- if (rep.a.equals(t.a)) {
- t.a = rep.b;
- }
- }
- }
-
- private void replaceObject(StringTuple t) {
- for (StringTuple rep : replaceObject) {
- if (rep.a.equals(t.a)) {
- t.a = rep.b;
- }
- }
- }
-
-
- /*private String hackGetLabel(String resname){
- String query="" +
- "SELECT ?o \n" +
- "WHERE { \n" +
- "<"+resname+"> "+ " <http://www.holygoat.co.uk/owl/redwood/0.1/tags/tagName> ?o " +
- "}";
-
- System.out.println(query);
- //http://dbtune.org/musicbrainz/sparql?query=
- //SELECT ?o WHERE { <http://dbtune.org/musicbrainz/resource/tag/1391> <http://www.holygoat.co.uk/owl/redwood/0.1/tags/tagName> ?o }
- SparqlQuery s=new SparqlQuery(query,SparqlEndpoint.EndpointMusicbrainz());
- ResultSet rs=s.send();
- while (rs.hasNext()){
- rs.nextBinding();
- }
- //System.out.println("AAA"+s.getAsXMLString(s.send()) );
- return "";
- }*/
-
-}
Deleted: trunk/src/dl-learner/org/dllearner/kb/old/PropertyNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/old/PropertyNode.java 2008-08-15 12:03:42 UTC (rev 1083...
[truncated message content] |
|
From: <ku...@us...> - 2008-08-15 14:51:00
|
Revision: 1092
http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1092&view=rev
Author: kurzum
Date: 2008-08-15 14:50:53 +0000 (Fri, 15 Aug 2008)
Log Message:
-----------
code improvements
Modified Paths:
--------------
trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java
trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java
trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java
trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java
trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java
trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java
trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java
trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java
Added Paths:
-----------
trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java
Removed Paths:
-------------
trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java
trunk/src/dl-learner/org/dllearner/kb/old/
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-08-15 13:53:47 UTC (rev 1091)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-08-15 14:50:53 UTC (rev 1092)
@@ -89,6 +89,16 @@
@Override
public void expandProperties(TupelAquisitor tupelAquisitor, Manipulator manipulator) {
}
+
+ @Override
+ public List<Node> getAllNodesAsList(List<Node> l){
+ l.add(this);
+ for (PropertyNode props : properties) {
+ l.addAll(props.getB().getAllNodesAsList(l));
+ }
+
+ return l;
+ }
/*
* (non-Javadoc)
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java 2008-08-15 13:53:47 UTC (rev 1091)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java 2008-08-15 14:50:53 UTC (rev 1092)
@@ -30,15 +30,13 @@
*/
public class Configuration {
- //public SPARQLTasks sparqlTasks;
- //private SparqlEndpoint endpoint;
- //private SparqlQueryMaker sparqlQueryMaker;
private Manipulator manipulator;
private TupelAquisitor tupelAquisitor;
// the following needs to be moved to
// class extraction algorithm or manipulator
+ private boolean optimizeForDLLearner = true;
private int recursiondepth;
private boolean getAllSuperClasses = true;
private boolean closeAfterRecursion = true;
@@ -93,15 +91,12 @@
return tupelAquisitor;
}
- /*
- public Configuration changeQueryType(SparqlQueryMaker sqm) {
- // TODO must clone here
- return new Configuration(this.endpoint, sqm, this.manipulator,
- this.recursiondepth, this.getAllSuperClasses,
- this.closeAfterRecursion, this.cacheDir);
- }*/
+ public boolean isOptimizeForDLLearner() {
+ return optimizeForDLLearner;
+ }
+
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-15 13:53:47 UTC (rev 1091)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-15 14:50:53 UTC (rev 1092)
@@ -27,6 +27,7 @@
import org.apache.log4j.Logger;
import org.dllearner.kb.aquisitors.TupelAquisitor;
+import org.dllearner.utilities.statistics.SimpleClock;
/**
* This class is used to extract the information .
@@ -36,19 +37,14 @@
public class ExtractionAlgorithm {
private Configuration configuration;
- //private Manipulators manipulator;
- //private int recursionDepth = 1;
- // private boolean getAllSuperClasses = true;
- // private boolean closeAfterRecursion = true;
+ private SortedSet<String> alreadyQueriedSuperClasses = new TreeSet<String>();
+
+
private static Logger logger = Logger
.getLogger(ExtractionAlgorithm.class);
public ExtractionAlgorithm(Configuration Configuration) {
this.configuration = Configuration;
- //this.manipulator = Configuration.getManipulator();
- //this.recursionDepth = Configuration.getRecursiondepth();
- // this.getAllSuperClasses = Configuration.isGetAllSuperClasses();
- // this.closeAfterRecursion=Configuration.isCloseAfterRecursion();
}
public Node getFirstNode(URI u) {
@@ -73,115 +69,106 @@
* @return
*/
public Node expandNode(URI uri, TupelAquisitor tupelAquisitor) {
- //System.out.println(uri.toString());
- //System.out.println(manipulator);
- //System.out.println(this.configuration);
- long time = System.currentTimeMillis();
+
+ SimpleClock sc = new SimpleClock();
- Node n = getFirstNode(uri);
- logger.info(n);
- List<Node> initialNodes = new ArrayList<Node>();
- initialNodes.add(n);
- logger.info("StartVector: " + initialNodes);
- // n.expand(tsp, this.Manipulator);
- // Vector<Node> second=
- for (int x = 1; x <= configuration.getRecursiondepth(); x++) {
+ Node seedNode = getFirstNode(uri);
+ List<Node> newNodes = new ArrayList<Node>();
+ List<Node> collectNodes = new ArrayList<Node>();
+ List<Node> tmp = new ArrayList<Node>();
+
+
+ logger.info(seedNode);
+ newNodes.add(seedNode);
+ logger.info("Starting Nodes: " + newNodes);
- List<Node> tmp = new ArrayList<Node>();
- while (!initialNodes.isEmpty()) {
- Node tmpNode = initialNodes.remove(0);
- logger.info("Expanding " + tmpNode);
- // System.out.println(this.Manipulator);
+
+ for (int x = 0; x < configuration.getRecursiondepth(); x++) {
+
+ sc.reset();
+ while (!newNodes.isEmpty()) {
+ Node nextNode = newNodes.remove(0);
+ logger.info("Expanding " + nextNode);
// these are the new not expanded nodes
// the others are saved in connection with the original node
- List<Node> tmpNodeList = tmpNode.expand(tupelAquisitor,
- configuration.getManipulator());
+ tmp.addAll(nextNode.expand(tupelAquisitor,
+ configuration.getManipulator()));
//System.out.println(tmpVec);
- tmp.addAll(tmpNodeList);
+
}
- //CAVE: possible error here
- initialNodes = tmp;
- logger.info("Recursion counter: " + x + " with " + initialNodes.size()
- + " Nodes remaining, needed: "
- + (System.currentTimeMillis() - time) + "ms");
- time = System.currentTimeMillis();
+ collectNodes.addAll(tmp);
+ newNodes.addAll(tmp);
+ tmp.clear();
+
+ logger.info("Recursion counter: " + x + " with " + newNodes.size()
+ + " Nodes remaining, " + sc.getAndSet(""));
}
- SortedSet<String> hadAlready = new TreeSet<String>();
-
- //p(configuration.toString());
// gets All Class Nodes and expands them further
if (configuration.isGetAllSuperClasses()) {
- logger.info("Get all superclasses");
- // Set<Node> classes = new TreeSet<Node>();
- List<Node> classes = new ArrayList<Node>();
- List<Node> instances = new ArrayList<Node>();
+ expandAllSuperClassesOfANode(collectNodes, tupelAquisitor);
+ }
+
+ return seedNode;
- for (Node one : initialNodes) {
- if (one instanceof ClassNode) {
- classes.add(one);
- }
- if (one instanceof InstanceNode) {
- instances.add(one);
- }
+ }
+
+ private void expandAllSuperClassesOfANode(List<Node> allNodes, TupelAquisitor tupelAquisitor) {
+ logger.info("Get all superclasses");
+
+
+ List<Node> classes = new ArrayList<Node>();
+ List<Node> instances = new ArrayList<Node>();
+ for (Node one : allNodes) {
+ if (one instanceof ClassNode) {
+ classes.add(one);
}
- // System.out.println(instances.size());
- //TODO LinkedData incompatibility
- //TupelAquisitor tupelAquisitorClasses = configuration.sparqlTupelAquisitorClasses;
- //XXX this should be solved in a better way
- tupelAquisitor.setClassMode(true);
- if (configuration.isCloseAfterRecursion()) {
- while (!instances.isEmpty()) {
- logger.trace("Getting classes for remaining instances: "
- + instances.size());
- Node next = instances.remove(0);
- logger.trace("Getting classes for: " + next);
- classes.addAll(next.expand(tupelAquisitor, configuration.getManipulator()));
- if (classes.size() >= configuration.getBreakSuperClassesAfter()) {
- break;
- }
- }
+ if (one instanceof InstanceNode) {
+ instances.add(one);
}
- //XXX this should be solved in a better way
- tupelAquisitor.setClassMode(false);
-
- List<Node> tmp = new ArrayList<Node>();
- int i = 0;
- while (!classes.isEmpty()) {
- 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.trace("Getting SuperClass for: " + next);
- // System.out.println(hadAlready.size());
- hadAlready.add(next.getURI().toString());
- tmp = next.expand(tupelAquisitor, configuration.getManipulator());
- classes.addAll(tmp);
- tmp = new ArrayList<Node>();
- // if(i % 50==0)System.out.println("got "+i+" extra classes,
- // max: "+manipulator.breakSuperClassRetrievalAfter);
- i++;
- if (i >= configuration.getBreakSuperClassesAfter()) {
- break;
- }
- }
- // System.out.println("Skipping");
+ }
+
+ //TODO LinkedData incompatibility
+
+ tupelAquisitor.setClassMode(true);
+ if (configuration.isCloseAfterRecursion()) {
+ while (!instances.isEmpty()) {
+ logger.trace("Getting classes for remaining instances: "
+ + instances.size());
+ Node next = instances.remove(0);
+ logger.trace("Getting classes for: " + next);
+ classes.addAll(next.expand(tupelAquisitor, configuration.getManipulator()));
+ if (classes.size() >= configuration.getBreakSuperClassesAfter()) {
+ break;
+ }//endif
+ }//endwhile
+ }//endif
+ tupelAquisitor.setClassMode(false);
+
+
+
+ int i = 0;
+ while (!classes.isEmpty()) {
+ logger.trace("Remaining classes: " + classes.size());
+ Node next = classes.remove(0);
+ if (!alreadyQueriedSuperClasses.contains(next.getURI().toString())) {
+ logger.trace("Getting Superclasses for: " + next);
+ alreadyQueriedSuperClasses.add(next.getURI().toString());
+ classes.addAll(next.expand(tupelAquisitor, configuration.getManipulator()));
+
+ if (i > configuration.getBreakSuperClassesAfter()) {
+ break;
+ }//endinnerif
+ i++;
+ }//endouterif
- // if
- // (classes.size()>=manipulator.breakSuperClassRetrievalAfter){break;}
-
- }
- // System.out.println((System.currentTimeMillis()-time)+"");
-
+ }//endwhile
+ if(!configuration.isOptimizeForDLLearner()){
+ alreadyQueriedSuperClasses.clear();
}
- return n;
}
-
-
}
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-08-15 13:53:47 UTC (rev 1091)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-08-15 14:50:53 UTC (rev 1092)
@@ -25,6 +25,7 @@
import java.util.SortedSet;
import java.util.TreeSet;
+import org.apache.log4j.Logger;
import org.dllearner.kb.aquisitors.TupelAquisitor;
import org.dllearner.kb.manipulator.Manipulator;
import org.dllearner.utilities.datastructures.RDFNodeTuple;
@@ -37,6 +38,9 @@
*
*/
public class InstanceNode extends Node {
+
+ private static Logger logger = Logger
+ .getLogger(InstanceNode.class);
private SortedSet<ClassNode> classes = new TreeSet<ClassNode>();
//SortedSet<StringTuple> datatypes = new TreeSet<StringTuple>();
@@ -88,6 +92,20 @@
return newNodes;
}
+
+ @Override
+ public List<Node> getAllNodesAsList(List<Node> l){
+ l.add(this);
+ logger.trace(this+"\nclasses: "+classes.size()+"\nrelInstances: "+properties.size());
+ for (ClassNode clazz : classes) {
+ l.addAll(clazz.getAllNodesAsList(l));
+ }
+ for (PropertyNode props : properties) {
+ l.addAll(props.getB().getAllNodesAsList(l));
+ }
+
+ return l;
+ }
// gets the types for properties recursively
@Override
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java 2008-08-15 13:53:47 UTC (rev 1091)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java 2008-08-15 14:50:53 UTC (rev 1092)
@@ -102,47 +102,9 @@
return nt.toString();
}
-/* public void addPredicateFilter(String str) {
- this.configuration.getSparqlQueryMaker().addPredicateFilter(str);
- }
-*/
public Configuration getConfiguration() {
return configuration;
}
- /*
- * public void calculateSubjects(String label, int limit) {
- * System.out.println("SparqlModul: Collecting Subjects");
- * oldSparqlOntologyCollector oc = new oldSparqlOntologyCollector(url); try {
- * subjects = oc.getSubjectsFromLabel(label, limit); } catch (IOException e) {
- * subjects = new String[1]; subjects[0] = "[Error]Sparql Endpoint could not
- * be reached."; } System.out.println("SparqlModul: ****Finished"); }
- *
- * /** TODO SparqlOntologyCollector needs to be removed @param subject
- */
- /*
- * public void calculateTriples(String subject) {
- * System.out.println("SparqlModul: Collecting Triples");
- * oldSparqlOntologyCollector oc = new oldSparqlOntologyCollector(url); try {
- * triples = oc.collectTriples(subject); } catch (IOException e) { triples =
- * new String[1]; triples[0] = "[Error]Sparql Endpoint could not be
- * reached."; } System.out.println("SparqlModul: ****Finished"); }
- */
- /**
- * TODO SparqlOntologyCollector needs to be removed
- *
- * @param concept
- */
-
- /*
- * public void calculateConceptSubjects(String concept) {
- * System.out.println("SparqlModul: Collecting Subjects");
- * oldSparqlOntologyCollector oc = new oldSparqlOntologyCollector(url); try {
- * conceptSubjects = oc.getSubjectsFromConcept(concept); } catch
- * (IOException e) { conceptSubjects = new String[1]; conceptSubjects[0] =
- * "[Error]Sparql Endpoint could not be reached."; }
- * System.out.println("SparqlModul: ****Finished"); }
- */
-
}
\ No newline at end of file
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-08-15 13:53:47 UTC (rev 1091)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-08-15 14:50:53 UTC (rev 1092)
@@ -83,6 +83,8 @@
public URI getURI() {
return uri;
}
+
+ public abstract List<Node> getAllNodesAsList(List<Node> l);
public boolean equals(Node n) {
if (this.uri.equals(n.uri))
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java 2008-08-15 13:53:47 UTC (rev 1091)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java 2008-08-15 14:50:53 UTC (rev 1092)
@@ -76,6 +76,12 @@
}
}
+
+ @Override
+ public List<Node> getAllNodesAsList(List<Node> l){
+ throw new RuntimeException("PropertyNode.getAllNodesAsList() should never be called");
+ }
+
public Node getA() {
return a;
Deleted: trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-08-15 13:53:47 UTC (rev 1091)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-08-15 14:50:53 UTC (rev 1092)
@@ -1,207 +0,0 @@
-/**
- * Copyright (C) 2007, Sebastian Hellmann
- *
- * This file is part of DL-Learner.
- *
- * DL-Learner is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * DL-Learner is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.dllearner.kb.manipulator;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.SortedSet;
-
-import org.dllearner.kb.extraction.ClassNode;
-import org.dllearner.kb.extraction.InstanceNode;
-import org.dllearner.kb.extraction.Node;
-import org.dllearner.kb.manipulator.Rule.Months;
-import org.dllearner.utilities.datastructures.RDFNodeTuple;
-import org.dllearner.utilities.owl.OWLVocabulary;
-
-/**
- * Used to manipulate retrieved tupels, identify blanknodes, etc.
- *
- * @author Sebastian Hellmann
- *
- */
-public class Manipulator {
-
- private List<Rule> rules = new ArrayList<Rule>();
-
- private Manipulator() {
- }
-
- public Manipulator(List<Rule> rules) {
- for (Rule rule : rules) {
- addRule(rule);
- }
- }
-
- /**
- * this checks for consistency and manipulates the tuples, before they get
- * triple
- */
- public SortedSet<RDFNodeTuple> manipulate( Node node, SortedSet<RDFNodeTuple> tuples) {
-
- for (Rule rule : rules) {
- tuples = rule.applyRule(node, tuples);
- }
- return tuples;
- }
-
-
-
- public static Manipulator getManipulatorByName(String predefinedManipulator)
- {
- if (predefinedManipulator.equalsIgnoreCase("DBPEDIA-NAVIGATOR")) {
- return getDBpediaNavigatorManipulator();
-
- } else if(predefinedManipulator.equalsIgnoreCase("DEFAULT")){
- return getDefaultManipulator();
- }
- else {
- //QUALITY maybe not the best,
- return getDefaultManipulator();
- }
- }
-
- public static Manipulator getDBpediaNavigatorManipulator(){
- Manipulator m = new Manipulator();
- m.addRule(new DBPediaNavigatorCityLocatorRule(Months.JANUARY));
- m.addRule(new DBpediaNavigatorOtherRule(Months.DECEMBER));
- return m;
- }
-
- public static Manipulator getDefaultManipulator(){
- Manipulator m = new Manipulator();
- m.addDefaultRules(Months.DECEMBER);
- return m;
- }
-
- //HACK
-// if(t.a.equals("http://www.holygoat.co.uk/owl/redwood/0.1/tags/taggedWithTag")) {
-// //hackGetLabel(t.b);
-//
-// }
-
- // GovTrack hack
- // => we convert a string literal to a URI
- // => TODO: introduce an option for converting literals for certain
- // properties into URIs
-// String sp = "http://purl.org/dc/elements/1.1/subject";
-// if(t.a.equals(sp)) {
-// System.out.println(t);
-// System.exit(0);
-// }
-
-
- private void addDefaultRules(Months month){
-
- addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_CLASS,ClassNode.class.getCanonicalName() )) ;
- addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_THING,InstanceNode.class.getCanonicalName() )) ;
- addRule(new TypeFilterRule(month, "", OWLVocabulary.OWL_CLASS, ClassNode.class.getCanonicalName()) ) ;
- }
-
- public synchronized void addRule(Rule newRule){
- rules.add(newRule);
- List<Rule> l = new ArrayList<Rule>();
-
- for (Months month : Rule.MONTHS) {
- for (Rule rule : rules) {
- if(rule.month.equals(month)) {
- l.add(rule);
- }
- }
-
- }
- rules = l;
- }
-
-
-
- /*
- private RDFNodeTuple manipulateTuple(String subject, RDFNodeTuple tuple) {
-
- for (int i = 0; i < replacementRules.size(); i++) {
- ReplacementRule replace = replacementRules.get(i);
- tuple = replace.applyRule(subject, tuple);
- }
- return tuple;
- }*/
-
- /*private String hackGetLabel(String resname){
- String query="" +
- "SELECT ?o \n" +
- "WHERE { \n" +
- "<"+resname+"> "+ " <http://www.holygoat.co.uk/owl/redwood/0.1/tags/tagName> ?o " +
- "}";
-
- System.out.println(query);
- //http://dbtune.org/musicbrainz/sparql?query=
- //SELECT ?o WHERE { <http://dbtune.org/musicbrainz/resource/tag/1391> <http://www.holygoat.co.uk/owl/redwood/0.1/tags/tagName> ?o }
- SparqlQuery s=new SparqlQuery(query,SparqlEndpoint.EndpointMusicbrainz());
- ResultSet rs=s.send();
- while (rs.hasNext()){
- rs.nextBinding();
- }
- //System.out.println("AAA"+s.getAsXMLString(s.send()) );
- return "";
- }*/
-
- /*private void replacePredicate(StringTuple t) {
- for (StringTuple rep : replacePredicate) {
- if (rep.a.equals(t.a)) {
- t.a = rep.b;
- }
- }
-}
-
-private void replaceObject(StringTuple t) {
- for (StringTuple rep : replaceObject) {
- if (rep.a.equals(t.a)) {
- t.a = rep.b;
- }
- }
-}*/
-
-
-
- /*
- // remove <rdf:type, owl:class>
- // this is done to avoid transformation to owl:subclassof
- if (t.a.equals(type) && t.b.equals(classns)
- && node instanceof ClassNode) {
- toRemove.add(t);
- }
-
- // all with type class
- if (t.b.equals(classns) && node instanceof ClassNode) {
- toRemove.add(t);
- }
-
- // remove all instances with owl:type thing
- if (t.a.equals(type) && t.b.equals(thing)
- && node instanceof InstanceNode) {
- toRemove.add(t);
- }
-
- }
- tuples.removeAll(toRemove);
-
- return tuples;
-}
-*/
-
-}
Copied: trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java (from rev 1084, trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java)
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-08-15 14:50:53 UTC (rev 1092)
@@ -0,0 +1,152 @@
+/**
+ * Copyright (C) 2007, Sebastian Hellmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.manipulator;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.SortedSet;
+
+import org.dllearner.kb.extraction.ClassNode;
+import org.dllearner.kb.extraction.InstanceNode;
+import org.dllearner.kb.extraction.Node;
+import org.dllearner.kb.manipulator.Rule.Months;
+import org.dllearner.utilities.datastructures.RDFNodeTuple;
+import org.dllearner.utilities.owl.OWLVocabulary;
+
+/**
+ * Used to manipulate retrieved tupels, identify blanknodes, etc.
+ *
+ * @author Sebastian Hellmann
+ *
+ */
+public class Manipulator {
+
+ private List<Rule> rules = new ArrayList<Rule>();
+
+ private Manipulator() {
+ }
+
+ public Manipulator(List<Rule> rules) {
+ for (Rule rule : rules) {
+ addRule(rule);
+ }
+ }
+
+ /**
+ * this checks for consistency and manipulates the tuples, before they get
+ * triple
+ */
+ public SortedSet<RDFNodeTuple> manipulate( Node node, SortedSet<RDFNodeTuple> tuples) {
+
+ for (Rule rule : rules) {
+ tuples = rule.applyRule(node, tuples);
+ }
+ return tuples;
+ }
+
+
+
+ public static Manipulator getManipulatorByName(String predefinedManipulator)
+ {
+ if (predefinedManipulator.equalsIgnoreCase("DBPEDIA-NAVIGATOR")) {
+ return getDBpediaNavigatorManipulator();
+
+ } else if(predefinedManipulator.equalsIgnoreCase("DEFAULT")){
+ return getDefaultManipulator();
+ }
+ else {
+ //QUALITY maybe not the best,
+ return getDefaultManipulator();
+ }
+ }
+
+ public static Manipulator getDBpediaNavigatorManipulator(){
+ Manipulator m = new Manipulator();
+ m.addRule(new DBPediaNavigatorCityLocatorRule(Months.JANUARY));
+ m.addRule(new DBpediaNavigatorOtherRule(Months.DECEMBER));
+ return m;
+ }
+
+ public static Manipulator getDefaultManipulator(){
+ Manipulator m = new Manipulator();
+ m.addDefaultRules(Months.DECEMBER);
+ return m;
+ }
+
+ //HACK
+// if(t.a.equals("http://www.holygoat.co.uk/owl/redwood/0.1/tags/taggedWithTag")) {
+// //hackGetLabel(t.b);
+//
+// }
+
+ // GovTrack hack
+ // => we convert a string literal to a URI
+ // => TODO: introduce an option for converting literals for certain
+ // properties into URIs
+// String sp = "http://purl.org/dc/elements/1.1/subject";
+// if(t.a.equals(sp)) {
+// System.out.println(t);
+// System.exit(0);
+// }
+
+
+ private void addDefaultRules(Months month){
+
+ addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_CLASS,ClassNode.class.getCanonicalName() )) ;
+ addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_THING,InstanceNode.class.getCanonicalName() )) ;
+ addRule(new TypeFilterRule(month, "", OWLVocabulary.OWL_CLASS, ClassNode.class.getCanonicalName()) ) ;
+ }
+
+ public synchronized void addRule(Rule newRule){
+ rules.add(newRule);
+ List<Rule> l = new ArrayList<Rule>();
+
+ for (Months month : Rule.MONTHS) {
+ for (Rule rule : rules) {
+ if(rule.month.equals(month)) {
+ l.add(rule);
+ }
+ }
+
+ }
+ rules = l;
+ }
+
+
+ /*private String hackGetLabel(String resname){
+ String query="" +
+ "SELECT ?o \n" +
+ "WHERE { \n" +
+ "<"+resname+"> "+ " <http://www.holygoat.co.uk/owl/redwood/0.1/tags/tagName> ?o " +
+ "}";
+
+ System.out.println(query);
+ //http://dbtune.org/musicbrainz/sparql?query=
+ //SELECT ?o WHERE { <http://dbtune.org/musicbrainz/resource/tag/1391> <http://www.holygoat.co.uk/owl/redwood/0.1/tags/tagName> ?o }
+ SparqlQuery s=new SparqlQuery(query,SparqlEndpoint.EndpointMusicbrainz());
+ ResultSet rs=s.send();
+ while (rs.hasNext()){
+ rs.nextBinding();
+ }
+ //System.out.println("AAA"+s.getAsXMLString(s.send()) );
+ return "";
+ }*/
+
+}
Property changes on: trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java
___________________________________________________________________
Added: svn:mergeinfo
+
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2008-08-15 13:53:47 UTC (rev 1091)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2008-08-15 14:50:53 UTC (rev 1092)
@@ -216,15 +216,25 @@
assembled = false;
predicateFilterList.add(newFilter);
}
+
+ public void addObjectFilter(String newFilter) {
+ assembled = false;
+ objectFilterList.add(newFilter);
+ }
+
+ public void combineWith(SparqlQueryMaker sqm){
+ predicateFilterList.addAll(sqm.predicateFilterList);
+ objectFilterList.addAll(sqm.objectFilterList);
+ }
public static SparqlQueryMaker getSparqlQueryMakerByName(String name) {
if (name.equalsIgnoreCase("YAGO"))
- return getYAGOFilter();
+ return getAllowYAGOFilter();
else if (name.equalsIgnoreCase("SKOS"))
- return getSKOSFilter();
+ return getAllowSKOSFilter();
else if (name.equalsIgnoreCase("YAGOSKOS"))
- return getYAGOSKOS();
+ return getAllowYAGOandSKOSFilter();
else if (name.equalsIgnoreCase("YAGOSPECIALHIERARCHY"))
return getYagoSpecialHierarchyFilter();
else if (name.equalsIgnoreCase("TEST"))
@@ -234,160 +244,111 @@
else
return null;
}
+
+ private void addFiltersForDBpediaSKOS() {
+ addPredicateFilter("http://www.w3.org/2004/02/skos/core");
+ addObjectFilter("http://www.w3.org/2004/02/skos/core");
+ addObjectFilter("http://dbpedia.org/resource/Category:");
+ addObjectFilter("http://dbpedia.org/resource/Template");
+ }
+ private void addFiltersForYago() {
+ addObjectFilter("http://dbpedia.org/class/yago");
+
+ }
+ private void addFiltersForOWLSameAs() {
+ addPredicateFilter("http://www.w3.org/2002/07/owl#sameAs");
+ }
+ private void addFiltersForFOAF() {
+ addPredicateFilter("http://xmlns.com/foaf/0.1/");
+ addObjectFilter("http://xmlns.com/foaf/0.1/");
+
+ }
+
+ private void addFiltersForWordNet() {
+ addObjectFilter("http://www.w3.org/2006/03/wn/wn20/instances/synset");
+
+ }
+ private void addFiltersForGeonames() {
+ addObjectFilter("http://www.geonames.org");
+
+ }
+ private void addFiltersForFlickrwrappr() {
+ addObjectFilter("http://www4.wiwiss.fu-berlin.de/flickrwrappr");
+
+ }
+
+ private void addFiltersForDBpedia() {
+ addPredicateFilter("http://dbpedia.org/property/reference");
+ addPredicateFilter("http://dbpedia.org/property/website");
+ addPredicateFilter("http://dbpedia.org/property/wikipage");
+ addPredicateFilter("http://dbpedia.org/property/wikiPageUsesTemplate");
+ addPredicateFilter("http://dbpedia.org/property/relatedInstance");
+ addPredicateFilter("http://dbpedia.org/property/owner");
+ addPredicateFilter("http://dbpedia.org/property/standard");
+ addObjectFilter("http://upload.wikimedia.org/wikipedia/commons");
+ addObjectFilter("http://upload.wikimedia.org/wikipedia");
+ }
+
+ public static SparqlQueryMaker getAllowSKOSFilter() {
+ SparqlQueryMaker sqm = new SparqlQueryMaker("forbid", new TreeSet<String>(), new TreeSet<String>(), false);
+ sqm.combineWith(getAllowYAGOandSKOSFilter());
+ sqm.addFiltersForYago();
+
+ sqm.addPredicateFilter("http://www.w3.org/2004/02/skos/core#narrower");
+ sqm.addObjectFilter("http://dbpedia.org/resource/Template");
+
+ return sqm;
+ }
- public static SparqlQueryMaker getYAGOFilter() {
- SortedSet<String> pred = new TreeSet<String>();
- pred.add("http://www.w3.org/2004/02/skos/core");
- pred.add("http://www.w3.org/2002/07/owl#sameAs");
- pred.add("http://xmlns.com/foaf/0.1/");
- pred.add("http://dbpedia.org/property/reference");
- pred.add("http://dbpedia.org/property/website");
- 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");
-
- SortedSet<String> obj = new TreeSet<String>();
- // obj.add("http://dbpedia.org/resource/Category:Wikipedia_");
- // obj.add("http://dbpedia.org/resource/Category:Articles_");
- obj.add("http://dbpedia.org/resource/Category:");
- obj.add("http://dbpedia.org/resource/Template");
- obj.add("http://xmlns.com/foaf/0.1/");
- obj.add("http://upload.wikimedia.org/wikipedia/commons");
- obj.add("http://upload.wikimedia.org/wikipedia");
- obj.add("http://www.geonames.org");
- 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 SparqlQueryMaker("forbid", obj, pred, false);
+ public static SparqlQueryMaker getAllowYAGOFilter() {
+ SparqlQueryMaker sqm = new SparqlQueryMaker("forbid", new TreeSet<String>(), new TreeSet<String>(), false);
+ sqm.combineWith(getAllowYAGOandSKOSFilter());
+ sqm.addFiltersForDBpediaSKOS();
+ return sqm;
}
public static SparqlQueryMaker getDBpediaNavigatorFilter() {
- SortedSet<String> pred = new TreeSet<String>();
- pred.add("http://www.w3.org/1999/02/22-rdf-syntax-ns#type");
- pred.add("http://www.w3.org/2000/01/rdf-schema#subClassOf");
- pred.add("http://www.w3.org/2003/01/geo/wgs84_pos#lat");
- pred.add("http://www.w3.org/2003/01/geo/wgs84_pos#long");
+ SparqlQueryMaker sqm = new SparqlQueryMaker("allow", new TreeSet<String>(), new TreeSet<String>(), false);
+ sqm.addPredicateFilter("http://www.w3.org/1999/02/22-rdf-syntax-ns#type");
+ sqm.addPredicateFilter("http://www.w3.org/2000/01/rdf-schema#subClassOf");
+ sqm.addPredicateFilter("http://www.w3.org/2003/01/geo/wgs84_pos#lat");
+ sqm.addPredicateFilter("http://www.w3.org/2003/01/geo/wgs84_pos#long");
// 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");
- return new SparqlQueryMaker("allow", new TreeSet<String>(), pred, true);
+ return sqm;
}
public static SparqlQueryMaker getYagoSpecialHierarchyFilter() {
- SortedSet<String> pred = new TreeSet<String>();
- pred.add("http://www.w3.org/2004/02/skos/core");
- pred.add("http://www.w3.org/2002/07/owl#sameAs");
- pred.add("http://xmlns.com/foaf/0.1/");
-
- pred.add("http://dbpedia.org/property/reference");
- pred.add("http://dbpedia.org/property/website");
- 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/monarch");
-
- SortedSet<String> obj = new TreeSet<String>();
- obj.add("http://dbpedia.org/resource/Category:Wikipedia_");
- obj.add("http://dbpedia.org/resource/Category:Articles_");
- obj.add("http://dbpedia.org/resource/Template");
- obj.add("http://xmlns.com/foaf/0.1/");
- obj.add("http://upload.wikimedia.org/wikipedia/commons");
- obj.add("http://upload.wikimedia.org/wikipedia");
- obj.add("http://www.geonames.org");
- 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 SparqlQueryMaker("forbid", obj, pred, false);
+ SparqlQueryMaker sqm = new SparqlQueryMaker("forbid", new TreeSet<String>(), new TreeSet<String>(), false);
+ sqm.combineWith(getAllowYAGOFilter());
+ sqm.addPredicateFilter("http://dbpedia.org/property/monarch");
+ return sqm;
}
- public static SparqlQueryMaker getSKOSFilter() {
- SortedSet<String> pred = new TreeSet<String>();
- // pred.add("http://www.w3.org/2004/02/skos/core");
- pred.add("http://www.w3.org/2002/07/owl#sameAs");
- pred.add("http://xmlns.com/foaf/0.1/");
- pred.add("http://dbpedia.org/property/reference");
- pred.add("http://dbpedia.org/property/website");
- pred.add("http://dbpedia.org/property/wikipage");
- pred.add("http://www.w3.org/2004/02/skos/core#narrower");
- pred.add("http://dbpedia.org/property/wikiPageUsesTemplate");
- SortedSet<String> obj = new TreeSet<String>();
- // obj.add("http://dbpedia.org/resource/Category:Wikipedia_");
- // obj.add("http://dbpedia.org/resource/Category:Articles_");
- obj.add("http://xmlns.com/foaf/0.1/");
- obj.add("http://upload.wikimedia.org/wikipedia/commons");
- obj.add("http://upload.wikimedia.org/wikipedia");
+ public static SparqlQueryMaker getAllowYAGOandSKOSFilter() {
+ SparqlQueryMaker sqm = new SparqlQueryMaker("forbid", new TreeSet<String>(), new TreeSet<String>(), false);
+ sqm.addFiltersForFOAF();
+ sqm.addFiltersForDBpedia();
- obj.add("http://www.geonames.org");
- obj.add("http://www.w3.org/2006/03/wn/wn20/instances/synset");
- obj.add("http://www4.wiwiss.fu-berlin.de/flickrwrappr");
-
- obj.add("http://dbpedia.org/class/yago");
- obj.add("http://dbpedia.org/resource/Template");
-
- return new SparqlQueryMaker("forbid", obj, pred, false);
+ sqm.addFiltersForGeonames();
+ sqm.addFiltersForWordNet();
+ sqm.addFiltersForFlickrwrappr();
+ sqm.addFiltersForOWLSameAs();
+
+ sqm.addPredicateFilter("http://www.w3.org/2004/02/skos/core#narrower");
+ sqm.addObjectFilter("http://dbpedia.org/resource/Template");
+ return sqm;
}
- public static SparqlQueryMaker getYAGOSKOS() {
- SortedSet<String> pred = new TreeSet<String>();
- // pred.add("http://www.w3.org/2004/02/skos/core");
- pred.add("http://www.w3.org/2002/07/owl#sameAs");
- pred.add("http://xmlns.com/foaf/0.1/");
-
- pred.add("http://dbpedia.org/property/reference");
- pred.add("http://dbpedia.org/property/website");
- pred.add("http://dbpedia.org/property/wikipage");
- // pred.add("http://www.w3.org/2004/02/skos/core#narrower");
- pred.add("http://dbpedia.org/property/wikiPageUsesTemplate");
-
- SortedSet<String> obj = new TreeSet<String>();
- // obj.add("http://dbpedia.org/resource/Category:Wikipedia_");
- // obj.add("http://dbpedia.org/resource/Category:Articles_");
- obj.add("http://xmlns.com/foaf/0.1/");
- obj.add("http://upload.wikimedia.org/wikipedia/commons");
- obj.add("http://upload.wikimedia.org/wikipedia");
-
- obj.add("http://www.geonames.org");
- obj.add("http://www.w3.org/2006/03/wn/wn20/instances/synset");
- obj.add("http://www4.wiwiss.fu-berlin.de/flickrwrappr");
-
- // obj.add("http://dbpedia.org/class/yago");
- obj.add("http://dbpedia.org/resource/Template");
-
- return new SparqlQueryMaker("forbid", obj, pred, false);
- }
-
public static SparqlQueryMaker test() {
- SortedSet<String> pred = new TreeSet<String>();
- pred.add("http://www.w3.org/2004/02/skos/core");
- pred.add("http://www.w3.org/2002/07/owl#sameAs");
- pred.add("http://xmlns.com/foaf/0.1/");
- // pred.add("http://dbpedia.org/property/reference");
- // pred.add("http://dbpedia.org/property/website");
- // pred.add("http://dbpedia.org/property/wikipage");
- pred.add("http://dbpedia.org/property/wikiPageUsesTemplate");
- pred.add("http://dbpedia.org/property/relatedInstance");
-
- SortedSet<String> obj = new TreeSet<String>();
- // obj.add("http://dbpedia.org/resource/Category:Wikipedia_");
- // obj.add("http://dbpedia.org/resource/Category:Articles_");
- obj.add("http://dbpedia.org/resource/Category:");
- obj.add("http://dbpedia.org/resource/Template");
- obj.add("http://xmlns.com/foaf/0.1/");
- obj.add("http://upload.wikimedia.org/wikipedia/commons");
- obj.add("http://upload.wikimedia.org/wikipedia");
- obj.add("http://www.geonames.org");
- 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 SparqlQueryMaker("forbid", obj, pred, false);
+ SparqlQueryMaker sqm = new SparqlQueryMaker("forbid", new TreeSet<String>(), new TreeSet<String>(), false);
+
+ return sqm;
}
public static void main(String[] args) {
@@ -402,53 +363,5 @@
}
- /*
- * private String internalFilterAssemblySubject() {
- *
- * boolean emptyPredicateFilter = getPredicateFilterList().isEmpty();
- * boolean emptyObjectFilter = getObjectFilterList().isEmpty();
- *
- * String filterString = ""; if (!isLiterals()) { filterString +=
- * "(!isLiteral(?object))"; if (!getPredicateFilterList().isEmpty()) {
- * filterString += "&&("; }
- * } else if (!emptyPredicateFilter) { filterString += "("; } boolean
- * firstRun = true; for (String p : getPredicateFilterList()) { filterString +=
- * lineend; filterString += (firstRun) ? handlePredicate(p).substring(2) :
- * handlePredicate(p); firstRun = false; } if (!emptyPredicateFilter) {
- * filterString += ")"; } if ((!emptyPredicateFilter || !isLiterals()) &&
- * !emptyObjectFilter) { filterString += "&&("; }else if
- * (!emptyObjectFilter) { filterString += "("; }
- *
- * firstRun = true; for (String o : getObjectFilterList()) { filterString +=
- * lineend; filterString += (firstRun) ? handleObject(o).substring(2) :
- * handleObject(o) ; firstRun = false; } if (!emptyObjectFilter){
- * filterString += ")"; }
- *
- * return filterString; }
- */
- /*
- * private String filterSubject(String ns) { return "&&(
- * !regex(str(?subject), '" + ns + "') )"; }
- *
- *
- * private String handlePredicate (String ns) { return (isAllowMode()) ?
- * allowPredicate(ns) : filterPredicate(ns) ; }
- *
- * private String handleObject (String ns) { return (isAllowMode()) ?
- * allowObject(ns) : filterObject(ns) ; }
- *
- * private static String filterPredicate(String ns) { return "&&(
- * !regex(str(?predicate), '" + ns + "') )"; }
- *
- * private static String filterObject(String ns) { return "&&(
- * !regex(str(?object), '" + ns + "') )"; }
- *
- * private static String allowPredicate(String ns) { return "||(
- * regex(str(?predicate), '" + ns + "') )"; }
- *
- * private static String allowObject(String ns) { return "||(
- * regex(str(?object), '" + ns + "') )"; }
- */
-
}
Modified: trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-08-15 13:53:47 UTC (rev 1091)
+++ trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-08-15 14:50:53 UTC (rev 1092)
@@ -23,6 +23,10 @@
import java.io.FileWriter;
import java.net.URI;
+import org.apache.log4j.ConsoleAppender;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.apache.log4j.SimpleLayout;
import org.dllearner.kb.aquisitors.SparqlTupelAquisitor;
import org.dllearner.kb.extraction.Configuration;
import org.dllearner.kb.extraction.Manager;
@@ -38,17 +42,28 @@
*
*/
public class SparqlExtractionTest {
+
+ private static Logger logger = Logger.getRootLogger();
+
public static void main(String[] args) {
System.out.println("Start");
+// 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.TRACE);
+
// String test2 = "http://www.extraction.org/config#dbpediatest";
// String test = "http://www.extraction.org/config#localjoseki";
try {
// URI u = new URI(test);
Manager m = new Manager();
Configuration conf = new Configuration (
- new SparqlTupelAquisitor(SparqlQueryMaker.getYAGOFilter(), SPARQLTasks.getPredefinedSPARQLTasksWithCache("DBPEDIA")),
+ new SparqlTupelAquisitor(SparqlQueryMaker.getAllowYAGOFilter(), SPARQLTasks.getPredefinedSPARQLTasksWithCache("DBPEDIA")),
Manipulator.getDefaultManipulator(),
1,
true,
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ku...@us...> - 2008-08-15 15:40:06
|
Revision: 1093
http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1093&view=rev
Author: kurzum
Date: 2008-08-15 15:39:55 +0000 (Fri, 15 Aug 2008)
Log Message:
-----------
headers small changes
Modified Paths:
--------------
trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java
trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java
trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java
trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java
trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java
trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java
trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java
trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/DBPediaNavigatorCityLocatorRule.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/Rule.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertRDFS.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryException.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java
trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java
trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java
trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java
Added Paths:
-----------
trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java
Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java 2008-08-15 14:50:53 UTC (rev 1092)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java 2008-08-15 15:39:55 UTC (rev 1093)
@@ -19,7 +19,6 @@
*/
package org.dllearner.kb.aquisitors;
-import java.net.URI;
import java.util.SortedSet;
import org.apache.log4j.Logger;
@@ -46,7 +45,7 @@
// standard query get a tupels (p,o) for subject s
@Override
- public SortedSet<RDFNodeTuple> getTupelForResource(URI uri) {
+ public SortedSet<RDFNodeTuple> getTupelForResource(String uri) {
throw new RuntimeException("Not Implemented yet");
Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java 2008-08-15 14:50:53 UTC (rev 1092)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java 2008-08-15 15:39:55 UTC (rev 1093)
@@ -19,7 +19,6 @@
*/
package org.dllearner.kb.aquisitors;
-import java.net.URI;
import java.util.SortedSet;
import org.apache.log4j.Logger;
@@ -52,17 +51,17 @@
// standard query get a tupels (p,o) for subject s
@Override
- public SortedSet<RDFNodeTuple> getTupelForResource(URI uri) {
+ public SortedSet<RDFNodeTuple> getTupelForResource(String uri) {
+ checkURIforValidity(uri);
-
String pred = "predicate";
String obj = "object";
String sparqlQueryString = "";
// getQuery
if (classMode) {
- sparqlQueryString = sparqlQueryMaker.makeClassQueryUsingFilters(uri.toString());
+ sparqlQueryString = sparqlQueryMaker.makeClassQueryUsingFilters(uri);
}else {
- sparqlQueryString = sparqlQueryMaker.makeSubjectQueryUsingFilters(uri.toString());
+ sparqlQueryString = sparqlQueryMaker.makeSubjectQueryUsingFilters(uri);
}
Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java 2008-08-15 14:50:53 UTC (rev 1092)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java 2008-08-15 15:39:55 UTC (rev 1093)
@@ -19,7 +19,6 @@
*/
package org.dllearner.kb.aquisitors;
-import java.net.URI;
import java.util.SortedSet;
import org.apache.log4j.Logger;
@@ -46,7 +45,7 @@
// standard query get a tupels (p,o) for subject s
@Override
- public SortedSet<RDFNodeTuple> getTupelForResource(URI uri) {
+ public SortedSet<RDFNodeTuple> getTupelForResource(String uri) {
throw new RuntimeException("not implemented yet");
Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java 2008-08-15 14:50:53 UTC (rev 1092)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java 2008-08-15 15:39:55 UTC (rev 1093)
@@ -22,6 +22,7 @@
import java.net.URI;
import java.util.SortedSet;
+import org.apache.log4j.Logger;
import org.dllearner.utilities.datastructures.RDFNodeTuple;
/**
@@ -35,9 +36,13 @@
*/
public abstract class TupelAquisitor {
+
+ private static Logger logger = Logger.getLogger(TupelAquisitor.class);
+
protected boolean classMode = false;
+ private boolean uriDebugCheck = true;
- public abstract SortedSet<RDFNodeTuple> getTupelForResource(URI u);
+ public abstract SortedSet<RDFNodeTuple> getTupelForResource(String uri);
public void setClassMode(boolean classMode) {
this.classMode = classMode;
@@ -46,6 +51,17 @@
public boolean isClassMode() {
return classMode;
}
+
+ protected boolean checkURIforValidity(String uri){
+ if(uriDebugCheck) return true;
+ try{
+ new URI(uri);
+ }catch (Exception e) {
+ logger.warn("Exception while validating uri: "+uri);
+ return false;
+ }
+ return true;
+ }
}
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-08-15 14:50:53 UTC (rev 1092)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-08-15 15:39:55 UTC (rev 1093)
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2007, Sebastian Hellmann
+ * Copyright (C) 2007-2008, Jens Lehmann
*
* This file is part of DL-Learner.
*
@@ -19,7 +19,6 @@
*/
package org.dllearner.kb.extraction;
-import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.SortedSet;
@@ -38,8 +37,8 @@
public class ClassNode extends Node {
SortedSet<PropertyNode> properties = new TreeSet<PropertyNode>();
- public ClassNode(URI u) {
- super(u);
+ public ClassNode(String uri) {
+ super(uri);
}
// expands all directly connected nodes
@@ -56,15 +55,14 @@
String property = tuple.a.toString();
// substitute rdf:type with owl:subclassof
if (property.equals(OWLVocabulary.RDF_TYPE) || property.equals(OWLVocabulary.RDFS_SUBCLASS_OF)) {
- ClassNode tmp = new ClassNode(new URI(tuple.b.toString()));
- properties.add(new PropertyNode(new URI( OWLVocabulary.RDFS_SUBCLASS_OF), this,
- tmp));
+ ClassNode tmp = new ClassNode(tuple.b.toString());
+ properties.add(new PropertyNode( OWLVocabulary.RDFS_SUBCLASS_OF, this, tmp));
newNodes.add(tmp);
} else {
// further expansion stops here
// Nodes.add(tmp); is missing on purpose
- ClassNode tmp = new ClassNode(new URI(tuple.b.toString()));
- properties.add(new PropertyNode(new URI(tuple.a.toString()), this, tmp));
+ ClassNode tmp = new ClassNode(tuple.b.toString());
+ properties.add(new PropertyNode(tuple.a.toString(), this, tmp));
// System.out.println(m.blankNodeIdentifier);
// System.out.println("XXXXX"+t.b);
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java 2008-08-15 14:50:53 UTC (rev 1092)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java 2008-08-15 15:39:55 UTC (rev 1093)
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2007, Sebastian Hellmann
+ * Copyright (C) 2007-2008, Jens Lehmann
*
* This file is part of DL-Learner.
*
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-15 14:50:53 UTC (rev 1092)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-15 15:39:55 UTC (rev 1093)
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2007, Sebastian Hellmann
+ * Copyright (C) 2007-2008, Jens Lehmann
*
* This file is part of DL-Learner.
*
@@ -19,7 +19,6 @@
*/
package org.dllearner.kb.extraction;
-import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.SortedSet;
@@ -47,16 +46,16 @@
this.configuration = Configuration;
}
- public Node getFirstNode(URI u) {
- return new InstanceNode(u);
+ public Node getFirstNode(String uri) {
+ return new InstanceNode(uri);
}
- public List<Node> expandAll(URI[] uris, TupelAquisitor tupelAquisitor) {
- List<Node> v = new ArrayList<Node>();
- for (URI oneURI : uris) {
- v.add(expandNode(oneURI, tupelAquisitor));
+ public List<Node> expandAll(String[] uris, TupelAquisitor tupelAquisitor) {
+ List<Node> nodeList = new ArrayList<Node>();
+ for (String oneURI : uris) {
+ nodeList.add(expandNode(oneURI, tupelAquisitor));
}
- return v;
+ return nodeList;
}
/**
@@ -68,7 +67,7 @@
* @param typedSparqlQuery
* @return
*/
- public Node expandNode(URI uri, TupelAquisitor tupelAquisitor) {
+ public Node expandNode(String uri, TupelAquisitor tupelAquisitor) {
SimpleClock sc = new SimpleClock();
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-08-15 14:50:53 UTC (rev 1092)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-08-15 15:39:55 UTC (rev 1093)
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2007, Sebastian Hellmann
+ * Copyright (C) 2007-2008, Jens Lehmann
*
* This file is part of DL-Learner.
*
@@ -19,7 +19,6 @@
*/
package org.dllearner.kb.extraction;
-import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.SortedSet;
@@ -46,9 +45,8 @@
//SortedSet<StringTuple> datatypes = new TreeSet<StringTuple>();
private SortedSet<PropertyNode> properties = new TreeSet<PropertyNode>();
- public InstanceNode(URI u) {
- super(u);
- // this.type = "instance";
+ public InstanceNode(String uri) {
+ super(uri);
}
@@ -59,8 +57,7 @@
SortedSet<RDFNodeTuple> newTuples = tupelAquisitor.getTupelForResource(uri);
// see Manipulator
newTuples = manipulator.manipulate(this, newTuples);
- //s=m.check(s, this);
- // System.out.println("fffffff"+m);
+
List<Node> newNodes = new ArrayList<Node>();
for (RDFNodeTuple tuple : newTuples) {
@@ -71,12 +68,12 @@
// else it is an instance
try {
if (tuple.a.toString().equals(OWLVocabulary.RDF_TYPE)) {
- ClassNode tmp = new ClassNode(new URI(tuple.b.toString()));
+ ClassNode tmp = new ClassNode(tuple.b.toString());
classes.add(tmp);
newNodes.add(tmp);
} else {
- InstanceNode tmp = new InstanceNode(new URI(tuple.b.toString()));
- properties.add(new PropertyNode(new URI(tuple.a.toString()), this, tmp));
+ InstanceNode tmp = new InstanceNode(tuple.b.toString());
+ properties.add(new PropertyNode(tuple.a.toString(), this, tmp));
newNodes.add(tmp);
}
Added: trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java 2008-08-15 15:39:55 UTC (rev 1093)
@@ -0,0 +1,78 @@
+/**
+ * Copyright (C) 2007-2008, Jens Lehmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.extraction;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import org.apache.log4j.Logger;
+import org.dllearner.kb.aquisitors.TupelAquisitor;
+import org.dllearner.kb.manipulator.Manipulator;
+
+/**
+ * A node in the graph that is a Literal.
+ *
+ * @author Sebastian Hellmann
+ *
+ */
+public class LiteralNode extends Node {
+
+ @SuppressWarnings("unused")
+ private static Logger logger = Logger
+ .getLogger(LiteralNode.class);
+
+
+ public LiteralNode(String uri) {
+ super(uri);
+ // this.type = "instance";
+
+ }
+
+ // expands all directly connected nodes
+ @Override
+ public List<Node> expand(TupelAquisitor tupelAquisitor, Manipulator manipulator) {
+ return new ArrayList<Node>();
+ }
+
+ @Override
+ public List<Node> getAllNodesAsList(List<Node> l){
+ l.add(this);
+ return l;
+ }
+
+ // gets the types for properties recursively
+ @Override
+ public void expandProperties(TupelAquisitor tupelAquisitor, Manipulator manipulator) {
+ }
+
+ @Override
+ public SortedSet<String> toNTriple() {
+ return new TreeSet<String>();
+ }
+
+ @Override
+ public int compareTo(Node n) {
+ return super.compareTo(n);
+ //
+ }
+
+}
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java 2008-08-15 14:50:53 UTC (rev 1092)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java 2008-08-15 15:39:55 UTC (rev 1093)
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2007, Sebastian Hellmann
+ * Copyright (C) 2007-2008, Jens Lehmann
*
* This file is part of DL-Learner.
*
@@ -19,7 +19,6 @@
*/
package org.dllearner.kb.extraction;
-import java.net.URI;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
@@ -50,10 +49,9 @@
}
- public String extract(URI uri) {
- // this.TypedSparqlQuery.query(uri);
- // System.out.println(ExtractionAlgorithm.getFirstNode(uri));
- System.out.println("Start extracting");
+ public String extract(String uri) {
+
+ logger.info("Start extracting");
Node n = extractionAlgorithm.expandNode(uri, configuration.getTupelAquisitor());
SortedSet<String> s = n.toNTriple();
@@ -77,8 +75,7 @@
logger.info("Progress: "+progress+" of "+instances.size()+" finished: "+one);
//}
try {
- Node n = extractionAlgorithm.expandNode(new URI(one),
- configuration.getTupelAquisitor());
+ Node n = extractionAlgorithm.expandNode(one, configuration.getTupelAquisitor());
tripleCollector.addAll(n.toNTriple());
} catch (Exception e) {
e.printStackTrace();
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-08-15 14:50:53 UTC (rev 1092)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-08-15 15:39:55 UTC (rev 1093)
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2007, Sebastian Hellmann
+ * Copyright (C) 2007-2008, Jens Lehmann
*
* This file is part of DL-Learner.
*
@@ -19,7 +19,6 @@
*/
package org.dllearner.kb.extraction;
-import java.net.URI;
import java.util.List;
import java.util.SortedSet;
@@ -38,11 +37,11 @@
- protected URI uri;
+ protected String uri;
// protected String type;
protected boolean expanded = false;
- public Node(URI uri) {
+ public Node(String uri) {
this.uri = uri;
}
@@ -80,7 +79,7 @@
}
- public URI getURI() {
+ public String getURI() {
return uri;
}
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java 2008-08-15 14:50:53 UTC (rev 1092)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java 2008-08-15 15:39:55 UTC (rev 1093)
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2007, Sebastian Hellmann
+ * Copyright (C) 2007-2008, Jens Lehmann
*
* This file is part of DL-Learner.
*
@@ -19,7 +19,6 @@
*/
package org.dllearner.kb.extraction;
-import java.net.URI;
import java.util.List;
import java.util.SortedSet;
import java.util.TreeSet;
@@ -44,7 +43,7 @@
// specialtypes like owl:symmetricproperty
private SortedSet<String> specialTypes;
- public PropertyNode(URI uri, Node a, Node b) {
+ public PropertyNode(String uri, Node a, Node b) {
super(uri);
// this.type = "property";
this.a = a;
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/DBPediaNavigatorCityLocatorRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/DBPediaNavigatorCityLocatorRule.java 2008-08-15 14:50:53 UTC (rev 1092)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/DBPediaNavigatorCityLocatorRule.java 2008-08-15 15:39:55 UTC (rev 1093)
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2007-2008, Jens Lehmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
package org.dllearner.kb.manipulator;
import java.util.HashMap;
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java 2008-08-15 14:50:53 UTC (rev 1092)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java 2008-08-15 15:39:55 UTC (rev 1093)
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2007, Sebastian Hellmann
+ * Copyright (C) 2007-2008, Jens Lehmann
*
* This file is part of DL-Learner.
*
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-08-15 14:50:53 UTC (rev 1092)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-08-15 15:39:55 UTC (rev 1093)
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2007, Sebastian Hellmann
+ * Copyright (C) 2007-2008, Jens Lehmann
*
* This file is part of DL-Learner.
*
@@ -27,6 +27,7 @@
import org.dllearner.kb.extraction.InstanceNode;
import org.dllearner.kb.extraction.Node;
import org.dllearner.kb.manipulator.Rule.Months;
+import org.dllearner.utilities.JamonMonitorLogger;
import org.dllearner.utilities.datastructures.RDFNodeTuple;
import org.dllearner.utilities.owl.OWLVocabulary;
@@ -54,10 +55,11 @@
* triple
*/
public SortedSet<RDFNodeTuple> manipulate( Node node, SortedSet<RDFNodeTuple> tuples) {
-
+ JamonMonitorLogger.getTimeMonitor(Manipulator.class, "Time for Rules").start();
for (Rule rule : rules) {
tuples = rule.applyRule(node, tuples);
}
+ JamonMonitorLogger.getTimeMonitor(Manipulator.class, "Time for Rules").stop();
return tuples;
}
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/Rule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/Rule.java 2008-08-15 14:50:53 UTC (rev 1092)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/Rule.java 2008-08-15 15:39:55 UTC (rev 1093)
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2007-2008, Jens Lehmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
package org.dllearner.kb.manipulator;
import java.util.ArrayList;
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java 2008-08-15 14:50:53 UTC (rev 1092)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java 2008-08-15 15:39:55 UTC (rev 1093)
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2007-2008, Jens Lehmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
package org.dllearner.kb.manipulator;
import java.util.SortedSet;
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java 2008-08-15 14:50:53 UTC (rev 1092)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java 2008-08-15 15:39:55 UTC (rev 1093)
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2007-2008, Jens Lehmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
package org.dllearner.kb.manipulator;
import java.util.SortedSet;
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-08-15 14:50:53 UTC (rev 1092)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-08-15 15:39:55 UTC (rev 1093)
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2007-2008, Jens Lehmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
package org.dllearner.kb.manipulator;
import java.util.SortedSet;
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java 2008-08-15 14:50:53 UTC (rev 1092)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java 2008-08-15 15:39:55 UTC (rev 1093)
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2007, Sebastian Hellmann
+ * Copyright (C) 2007-2008, Jens Lehmann
*
* This file is part of DL-Learner.
*
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertRDFS.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertRDFS.java 2008-08-15 14:50:53 UTC (rev 1092)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertRDFS.java 2008-08-15 15:39:55 UTC (rev 1093)
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2007, Sebastian Hellmann
+ * Copyright (C) 2007-2008, Jens Lehmann
*
* This file is part of DL-Learner.
*
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryException.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryException.java 2008-08-15 14:50:53 UTC (rev 1092)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryException.java 2008-08-15 15:39:55 UTC (rev 1093)
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2007-2008, Jens Lehmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
package org.dllearner.kb.sparql;
public class SparqlQueryException extends Exception{
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2008-08-15 14:50:53 UTC (rev 1092)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2008-08-15 15:39:55 UTC (rev 1093)
@@ -238,7 +238,7 @@
else if (name.equalsIgnoreCase("YAGOSPECIALHIERARCHY"))
return getYagoSpecialHierarchyFilter();
else if (name.equalsIgnoreCase("TEST"))
- return test();
+ return getTestFilter();
else if (name.equalsIgnoreCase("DBPEDIA-NAVIGATOR"))
return getDBpediaNavigatorFilter();
else
@@ -345,9 +345,9 @@
return sqm;
}
- public static SparqlQueryMaker test() {
- SparqlQueryMaker sqm = new SparqlQueryMaker("forbid", new TreeSet<String>(), new TreeSet<String>(), false);
-
+ public static SparqlQueryMaker getTestFilter() {
+ SparqlQueryMaker sqm = new SparqlQueryMaker("forbid", new TreeSet<String>(), new TreeSet<String>(), true);
+ sqm.combineWith(getAllowYAGOFilter());
return sqm;
}
Modified: trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-08-15 14:50:53 UTC (rev 1092)
+++ trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-08-15 15:39:55 UTC (rev 1093)
@@ -21,7 +21,6 @@
import java.io.File;
import java.io.FileWriter;
-import java.net.URI;
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.Level;
@@ -34,6 +33,7 @@
import org.dllearner.kb.sparql.SPARQLTasks;
import org.dllearner.kb.sparql.SparqlQueryMaker;
import org.dllearner.scripts.NT2RDF;
+import org.dllearner.utilities.JamonMonitorLogger;
/**
* Test class, uses the whole thing
@@ -63,7 +63,7 @@
// URI u = new URI(test);
Manager m = new Manager();
Configuration conf = new Configuration (
- new SparqlTupelAquisitor(SparqlQueryMaker.getAllowYAGOFilter(), SPARQLTasks.getPredefinedSPARQLTasksWithCache("DBPEDIA")),
+ new SparqlTupelAquisitor(SparqlQueryMaker.getTestFilter(), SPARQLTasks.getPredefinedSPARQLTasksWithCache("DBPEDIA")),
Manipulator.getDefaultManipulator(),
1,
true,
@@ -72,14 +72,16 @@
);
m.useConfiguration(conf);
- URI u2 = new URI("http://dbpedia.org/resource/Angela_Merkel");
+ String u2 = "http://dbpedia.org/resource/Angela_Merkel";
- String filename = System.currentTimeMillis() + ".nt";
+ String filename = "cache/"+System.currentTimeMillis() + ".nt";
FileWriter fw = new FileWriter(new File(filename), true);
fw.write(m.extract(u2));
fw.flush();
fw.close();
NT2RDF.convertNT2RDF(filename);
+
+ JamonMonitorLogger.printAllSortedByLabel();
} catch (Exception e) {
e.printStackTrace();
Modified: trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java 2008-08-15 14:50:53 UTC (rev 1092)
+++ trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java 2008-08-15 15:39:55 UTC (rev 1093)
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2007-2008, Jens Lehmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
package org.dllearner.utilities;
import java.util.Iterator;
@@ -7,6 +26,7 @@
import java.util.TreeSet;
import org.dllearner.algorithms.refexamples.ExampleBasedROLComponent;
+import org.dllearner.kb.manipulator.Manipulator;
import org.dllearner.kb.sparql.Cache;
import org.dllearner.kb.sparql.SparqlQuery;
@@ -66,10 +86,10 @@
retval= "Sparql:";
} else if (clazz == Cache.class) {
retval= "Sparql:";
- } else if (clazz == Cache.class) {
- retval= "Sparql:";
- } else if (clazz == SparqlQuery.class) {
+ }else if (clazz == SparqlQuery.class) {
retval= "sparql:";
+ } else if (clazz == Manipulator.class) {
+ retval= "extraction:";
} else if (clazz == SparqlQuery.class) {
retval= "sparql:";
} else if (clazz == SparqlQuery.class) {
@@ -78,8 +98,6 @@
retval= "sparql:";
} else if (clazz == SparqlQuery.class) {
retval= "sparql:";
- } else if (clazz == SparqlQuery.class) {
- retval= "sparql:";
} else if (clazz == ExampleBasedROLComponent.class) {
retval= "Learning:";
} else if (clazz == SparqlQuery.class) {
Modified: trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java 2008-08-15 14:50:53 UTC (rev 1092)
+++ trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java 2008-08-15 15:39:55 UTC (rev 1093)
@@ -1,3 +1,22 @@
+/**
+ * Copyright (C) 2007-2008, Jens Lehmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
package org.dllearner.utilities.owl;
public class OWLVocabulary {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ku...@us...> - 2008-08-15 17:55:47
|
Revision: 1094
http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1094&view=rev
Author: kurzum
Date: 2008-08-15 17:55:39 +0000 (Fri, 15 Aug 2008)
Log Message:
-----------
added support fo datatypes, some options from the *.conf files might not work.
everything else should be fine
Modified Paths:
--------------
trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java
trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java
trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java
trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java
trunk/src/dl-learner/org/dllearner/test/TestOneQueryForMusicRecommender.java
trunk/src/dl-learner/org/dllearner/test/TripleTypeTest.java
trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java
Added Paths:
-----------
trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java
trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java
Removed Paths:
-------------
trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-08-15 15:39:55 UTC (rev 1093)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-08-15 17:55:39 UTC (rev 1094)
@@ -24,6 +24,7 @@
import java.util.SortedSet;
import java.util.TreeSet;
+import org.apache.log4j.Logger;
import org.dllearner.kb.aquisitors.TupelAquisitor;
import org.dllearner.kb.manipulator.Manipulator;
import org.dllearner.utilities.datastructures.RDFNodeTuple;
@@ -35,7 +36,13 @@
* @author Sebastian Hellmann
*/
public class ClassNode extends Node {
- SortedSet<PropertyNode> properties = new TreeSet<PropertyNode>();
+
+ @SuppressWarnings("unused")
+ private static Logger logger = Logger
+ .getLogger(ClassNode.class);
+
+ SortedSet<ObjectPropertyNode> classProperties = new TreeSet<ObjectPropertyNode>();
+ SortedSet<DatatypePropertyNode> datatypeProperties = new TreeSet<DatatypePropertyNode>();
public ClassNode(String uri) {
super(uri);
@@ -50,54 +57,50 @@
newTuples = manipulator.manipulate(this, newTuples);
List<Node> newNodes = new ArrayList<Node>();
+ Node tmp;
for (RDFNodeTuple tuple : newTuples) {
- try {
- String property = tuple.a.toString();
- // substitute rdf:type with owl:subclassof
- if (property.equals(OWLVocabulary.RDF_TYPE) || property.equals(OWLVocabulary.RDFS_SUBCLASS_OF)) {
- ClassNode tmp = new ClassNode(tuple.b.toString());
- properties.add(new PropertyNode( OWLVocabulary.RDFS_SUBCLASS_OF, this, tmp));
- newNodes.add(tmp);
- } else {
- // further expansion stops here
- // Nodes.add(tmp); is missing on purpose
- ClassNode tmp = new ClassNode(tuple.b.toString());
- properties.add(new PropertyNode(tuple.a.toString(), this, tmp));
- // System.out.println(m.blankNodeIdentifier);
- // System.out.println("XXXXX"+t.b);
-
- // if o is a blank node expand further
- // TODO this needs a lot more work
-
- // Nodes.add(tmp);
- }
-
-
-
-
- } catch (Exception e) {
- System.out.println("ClassNode");
- e.printStackTrace();
- }
+ if((tmp = processTuple(tuple))!= null) {
+ newNodes.add(tmp);
+ }
}
return newNodes;
}
+
+ public Node processTuple( RDFNodeTuple tuple) {
+ try {
+ String property = tuple.a.toString();
+ if(tuple.b.isLiteral()) {
+ datatypeProperties.add(new DatatypePropertyNode(tuple.a.toString(), this, new LiteralNode(tuple.b) ));
+ return null;
+ }else if(tuple.b.isAnon()){
+ logger.warn("blanknodes not supported as of now"+ this +"in tuple" + tuple);
+ return null;
+ // substitute rdf:type with owl:subclassof
+ }else if (property.equals(OWLVocabulary.RDF_TYPE) || property.equals(OWLVocabulary.RDFS_SUBCLASS_OF)) {
+ ClassNode tmp = new ClassNode(tuple.b.toString());
+ classProperties.add(new ObjectPropertyNode( OWLVocabulary.RDFS_SUBCLASS_OF, this, tmp));
+ return tmp;
+ } else {
+ // further expansion stops here
+ ClassNode tmp = new ClassNode(tuple.b.toString());
+ classProperties.add(new ObjectPropertyNode(tuple.a.toString(), this, tmp));
+ // return tmp; is missing on purpose
+ }
+ } catch (Exception e) {
+ logger.warn("Problem with: " + this + " in tuple " + tuple);
+ e.printStackTrace();
+
+ }
+ return null;
+ }
// gets the types for properties recursively
@Override
public void expandProperties(TupelAquisitor tupelAquisitor, Manipulator manipulator) {
}
- @Override
- public List<Node> getAllNodesAsList(List<Node> l){
- l.add(this);
- for (PropertyNode props : properties) {
- l.addAll(props.getB().getAllNodesAsList(l));
- }
-
- return l;
- }
+
/*
* (non-Javadoc)
*
@@ -105,16 +108,20 @@
*/
@Override
public SortedSet<String> toNTriple() {
- SortedSet<String> s = new TreeSet<String>();
- s.add("<" + this.uri + "><" + OWLVocabulary.RDF_TYPE + "><" + OWLVocabulary.OWL_CLASS + ">.");
+ SortedSet<String> returnSet = new TreeSet<String>();
+ returnSet.add("<" + this.uri + "><" + OWLVocabulary.RDF_TYPE + "><" + OWLVocabulary.OWL_CLASS + ">.");
- for (PropertyNode one : properties) {
- s.add("<" + this.uri + "><" + one.getURI() + "><"
+ for (ObjectPropertyNode one : classProperties) {
+ returnSet.add("<" + this.uri + "><" + one.getURI() + "><"
+ one.getB().getURI() + ">.");
- s.addAll(one.getB().toNTriple());
+ returnSet.addAll(one.getB().toNTriple());
}
+ for (DatatypePropertyNode one : datatypeProperties) {
+ returnSet.add("<" + uri + "><" + one.getURI() + "> " + one.getNTripleFormOfB()
+ + " .");
+ }
- return s;
+ return returnSet;
}
@Override
Added: trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java 2008-08-15 17:55:39 UTC (rev 1094)
@@ -0,0 +1,101 @@
+/**
+ * Copyright (C) 2007-2008, Jens Lehmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.extraction;
+
+import java.util.List;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import org.dllearner.kb.aquisitors.TupelAquisitor;
+import org.dllearner.kb.manipulator.Manipulator;
+import org.dllearner.utilities.owl.OWLVocabulary;
+
+/**
+ * Property node, has connection to a and b part
+ *
+ * @author Sebastian Hellmann
+ *
+ */
+
+public class DatatypePropertyNode extends Node {
+
+ // the a and b part of a property
+ private Node a;
+ private LiteralNode b;
+
+
+ public DatatypePropertyNode(String uri, Node a, LiteralNode b) {
+ super(uri);
+ // this.type = "property";
+ this.a = a;
+ this.b = b;
+ }
+
+ // Property Nodes are normally not expanded,
+ // this function is never called
+ @Override
+ public List<Node> expand(TupelAquisitor tupelAquisitor, Manipulator manipulator) {
+ return null;
+ }
+
+ // gets the types for properties recursively
+ @Override
+ public void expandProperties(TupelAquisitor tupelAquisitor, Manipulator manipulator) {
+ }
+
+
+
+ public Node getA() {
+ return a;
+ }
+
+ public Node getB() {
+ return b;
+ }
+
+ public String getNTripleFormOfB() {
+ return b.getNTripleForm();
+ }
+
+ @Override
+ public SortedSet<String> toNTriple() {
+ SortedSet<String> s = new TreeSet<String>();
+ s.add("<" + uri + "><" + OWLVocabulary.RDF_TYPE + "><"
+ + OWLVocabulary.OWL_DATATYPPROPERTY + ">.");
+
+ return s;
+ }
+
+ //TODO check
+ @Override
+ public boolean equals(Node n) {
+ if (this.uri.equals(n.uri)) {
+ return true;
+ }else {
+ return false;
+ }
+ }
+
+ @Override
+ public int compareTo(Node n) {
+ return super.compareTo(n);
+ }
+
+}
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-08-15 15:39:55 UTC (rev 1093)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-08-15 17:55:39 UTC (rev 1094)
@@ -38,13 +38,16 @@
*/
public class InstanceNode extends Node {
+ @SuppressWarnings("unused")
private static Logger logger = Logger
.getLogger(InstanceNode.class);
private SortedSet<ClassNode> classes = new TreeSet<ClassNode>();
//SortedSet<StringTuple> datatypes = new TreeSet<StringTuple>();
- private SortedSet<PropertyNode> properties = new TreeSet<PropertyNode>();
+ private SortedSet<ObjectPropertyNode> objectProperties = new TreeSet<ObjectPropertyNode>();
+ private SortedSet<DatatypePropertyNode> datatypeProperties = new TreeSet<DatatypePropertyNode>();
+
public InstanceNode(String uri) {
super(uri);
@@ -60,54 +63,48 @@
List<Node> newNodes = new ArrayList<Node>();
+ Node tmp;
for (RDFNodeTuple tuple : newTuples) {
- //QUALITY: needs proper handling of ressource, could be done one step lower in the onion
- if(!tuple.b.toString().startsWith("http:"))continue;
-// basically : if p is rdf:type then o is a class
- // else it is an instance
- try {
- if (tuple.a.toString().equals(OWLVocabulary.RDF_TYPE)) {
- ClassNode tmp = new ClassNode(tuple.b.toString());
- classes.add(tmp);
- newNodes.add(tmp);
- } else {
- InstanceNode tmp = new InstanceNode(tuple.b.toString());
- properties.add(new PropertyNode(tuple.a.toString(), this, tmp));
- newNodes.add(tmp);
-
- }
- } catch (Exception e) {
- System.out.println("Problem with: " + tuple);
- e.printStackTrace();
- }
-
-
-
+ if((tmp = processTuple(tuple))!= null) {
+ newNodes.add(tmp);
+ }
}//endfor
expanded = true;
return newNodes;
-
}
- @Override
- public List<Node> getAllNodesAsList(List<Node> l){
- l.add(this);
- logger.trace(this+"\nclasses: "+classes.size()+"\nrelInstances: "+properties.size());
- for (ClassNode clazz : classes) {
- l.addAll(clazz.getAllNodesAsList(l));
+ public Node processTuple( RDFNodeTuple tuple) {
+ try {
+ if(tuple.b.isLiteral()) {
+ datatypeProperties.add(new DatatypePropertyNode(tuple.a.toString(), this, new LiteralNode(tuple.b) ));
+ return null;
+ }else if(tuple.b.isAnon()){
+ logger.warn("blanknodes not supported as of now"+ this +"in tuple" + tuple);
+ return null;
+
+ // basically : if p is rdf:type then o is a class
+ // else it is an instance
+ }else if (tuple.a.toString().equals(OWLVocabulary.RDF_TYPE)) {
+ ClassNode tmp = new ClassNode(tuple.b.toString());
+ classes.add(tmp);
+ return tmp;
+ } else {
+ InstanceNode tmp = new InstanceNode(tuple.b.toString());
+ objectProperties.add(new ObjectPropertyNode(tuple.a.toString(), this, tmp));
+ return tmp;
+ }
+ } catch (Exception e) {
+ System.out.println("Problem with: " + tuple);
+ e.printStackTrace();
+ return null;
}
- for (PropertyNode props : properties) {
- l.addAll(props.getB().getAllNodesAsList(l));
- }
-
- return l;
}
-
+
// gets the types for properties recursively
@Override
public void expandProperties(TupelAquisitor tupelAquisitor, Manipulator manipulator) {
- for (PropertyNode one : properties) {
+ for (ObjectPropertyNode one : objectProperties) {
one.expandProperties(tupelAquisitor, manipulator);
}
@@ -121,12 +118,17 @@
returnSet.add("<" + uri + "><" + OWLVocabulary.RDF_TYPE + "><" + one.getURI() + ">.");
returnSet.addAll(one.toNTriple());
}
- for (PropertyNode one : properties) {
+ for (ObjectPropertyNode one : objectProperties) {
returnSet.add("<" + uri + "><" + one.getURI() + "><" + one.getB().getURI()
+ ">.");
returnSet.addAll(one.toNTriple());
returnSet.addAll(one.getB().toNTriple());
}
+
+ for (DatatypePropertyNode one : datatypeProperties) {
+ returnSet.add("<" + uri + "><" + one.getURI() + "> " + one.getNTripleFormOfB()
+ + " .");
+ }
return returnSet;
}
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java 2008-08-15 15:39:55 UTC (rev 1093)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java 2008-08-15 17:55:39 UTC (rev 1094)
@@ -28,6 +28,9 @@
import org.dllearner.kb.aquisitors.TupelAquisitor;
import org.dllearner.kb.manipulator.Manipulator;
+import com.hp.hpl.jena.rdf.model.Literal;
+import com.hp.hpl.jena.rdf.model.RDFNode;
+
/**
* A node in the graph that is a Literal.
*
@@ -36,6 +39,8 @@
*/
public class LiteralNode extends Node {
+ private Literal l;
+
@SuppressWarnings("unused")
private static Logger logger = Logger
.getLogger(LiteralNode.class);
@@ -46,6 +51,11 @@
// this.type = "instance";
}
+
+ public LiteralNode(RDFNode node) {
+ super(node.toString());
+ l = (Literal) node;
+ }
// expands all directly connected nodes
@Override
@@ -53,11 +63,7 @@
return new ArrayList<Node>();
}
- @Override
- public List<Node> getAllNodesAsList(List<Node> l){
- l.add(this);
- return l;
- }
+
// gets the types for properties recursively
@Override
@@ -74,5 +80,21 @@
return super.compareTo(n);
//
}
+
+
+ public String getNTripleForm() {
+ String quote = "\\\"";
+ quote = """;
+ String retVal = l.getLexicalForm();
+ retVal = retVal.replaceAll("\n", "\\n");
+ retVal = retVal.replaceAll("\"", quote);
+ retVal = "\""+retVal+"\"";
+ if(l.getDatatypeURI()!=null) {
+ return retVal +"^^<"+l.getDatatypeURI()+">";
+ }else {
+ return retVal+((l.getLanguage().length()==0)?"":"@"+l.getLanguage());
+ }
+
+ }
}
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-08-15 15:39:55 UTC (rev 1093)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-08-15 17:55:39 UTC (rev 1094)
@@ -83,7 +83,7 @@
return uri;
}
- public abstract List<Node> getAllNodesAsList(List<Node> l);
+
public boolean equals(Node n) {
if (this.uri.equals(n.uri))
Copied: trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java (from rev 1093, trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java)
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java 2008-08-15 17:55:39 UTC (rev 1094)
@@ -0,0 +1,118 @@
+/**
+ * Copyright (C) 2007-2008, Jens Lehmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.extraction;
+
+import java.util.List;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import org.dllearner.kb.aquisitors.TupelAquisitor;
+import org.dllearner.kb.manipulator.Manipulator;
+import org.dllearner.utilities.datastructures.RDFNodeTuple;
+import org.dllearner.utilities.owl.OWLVocabulary;
+
+/**
+ * Property node, has connection to a and b part
+ *
+ * @author Sebastian Hellmann
+ *
+ */
+
+public class ObjectPropertyNode extends Node {
+
+ // the a and b part of a property
+ private Node a;
+ private Node b;
+ // specialtypes like owl:symmetricproperty
+ private SortedSet<String> specialTypes;
+
+ public ObjectPropertyNode(String uri, Node a, Node b) {
+ super(uri);
+ // this.type = "property";
+ this.a = a;
+ this.b = b;
+ this.specialTypes = new TreeSet<String>();
+ }
+
+ // Property Nodes are normally not expanded,
+ // this function is never called
+ @Override
+ public List<Node> expand(TupelAquisitor tupelAquisitor, Manipulator manipulator) {
+ return null;
+ }
+
+ // gets the types for properties recursively
+ @Override
+ public void expandProperties(TupelAquisitor tupelAquisitor, Manipulator manipulator) {
+ b.expandProperties(tupelAquisitor, manipulator);
+ SortedSet<RDFNodeTuple> newTypes = tupelAquisitor.getTupelForResource(uri);
+ for (RDFNodeTuple tuple : newTypes) {
+ try {
+ if (tuple.a.equals(OWLVocabulary.RDF_TYPE)) {
+ specialTypes.add(tuple.b.toString());
+ }
+ } catch (Exception e) {
+ System.out.println(tuple);
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+
+
+
+ public Node getA() {
+ return a;
+ }
+
+ public Node getB() {
+ return b;
+ }
+
+ @Override
+ public SortedSet<String> toNTriple() {
+ SortedSet<String> s = new TreeSet<String>();
+ s.add("<" + uri + "><" + OWLVocabulary.RDF_TYPE + "><"
+ + OWLVocabulary.OWL_OBJECTPROPERTY + ">.");
+ for (String one : specialTypes) {
+ s.add("<" + uri + "><" + OWLVocabulary.RDF_TYPE + "><"
+ + one + ">.");
+ }
+
+ return s;
+ }
+
+ //TODO check
+ @Override
+ public boolean equals(Node n) {
+ if (this.uri.equals(n.uri)) {
+ return true;
+ }else {
+ return false;
+ }
+ }
+
+ @Override
+ public int compareTo(Node n) {
+ return super.compareTo(n);
+ }
+
+}
Property changes on: trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java
___________________________________________________________________
Added: svn:mergeinfo
+
Deleted: trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java 2008-08-15 15:39:55 UTC (rev 1093)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/PropertyNode.java 2008-08-15 17:55:39 UTC (rev 1094)
@@ -1,121 +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.kb.extraction;
-
-import java.util.List;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.dllearner.kb.aquisitors.TupelAquisitor;
-import org.dllearner.kb.manipulator.Manipulator;
-import org.dllearner.utilities.datastructures.RDFNodeTuple;
-import org.dllearner.utilities.owl.OWLVocabulary;
-
-/**
- * Property node, has connection to a and b part
- *
- * @author Sebastian Hellmann
- *
- */
-
-public class PropertyNode extends Node {
-
- // the a and b part of a property
- private Node a;
- private Node b;
- // specialtypes like owl:symmetricproperty
- private SortedSet<String> specialTypes;
-
- public PropertyNode(String uri, Node a, Node b) {
- super(uri);
- // this.type = "property";
- this.a = a;
- this.b = b;
- this.specialTypes = new TreeSet<String>();
- }
-
- // Property Nodes are normally not expanded,
- // this function is never called
- @Override
- public List<Node> expand(TupelAquisitor tupelAquisitor, Manipulator manipulator) {
- return null;
- }
-
- // gets the types for properties recursively
- @Override
- public void expandProperties(TupelAquisitor tupelAquisitor, Manipulator manipulator) {
- b.expandProperties(tupelAquisitor, manipulator);
- SortedSet<RDFNodeTuple> newTypes = tupelAquisitor.getTupelForResource(uri);
- for (RDFNodeTuple tuple : newTypes) {
- try {
- if (tuple.a.equals(OWLVocabulary.RDF_TYPE)) {
- specialTypes.add(tuple.b.toString());
- }
- } catch (Exception e) {
- System.out.println(tuple);
- e.printStackTrace();
- }
- }
-
- }
-
- @Override
- public List<Node> getAllNodesAsList(List<Node> l){
- throw new RuntimeException("PropertyNode.getAllNodesAsList() should never be called");
- }
-
-
- public Node getA() {
- return a;
- }
-
- public Node getB() {
- return b;
- }
-
- @Override
- public SortedSet<String> toNTriple() {
- SortedSet<String> s = new TreeSet<String>();
- s.add("<" + uri + "><" + OWLVocabulary.RDF_TYPE + "><"
- + OWLVocabulary.OWL_OBJECTPROPERTY + ">.");
- for (String one : specialTypes) {
- s.add("<" + uri + "><" + OWLVocabulary.RDF_TYPE + "><"
- + one + ">.");
- }
-
- return s;
- }
-
- //TODO check
- @Override
- public boolean equals(Node n) {
- if (this.uri.equals(n.uri)) {
- return true;
- }else {
- return false;
- }
- }
-
- @Override
- public int compareTo(Node n) {
- return super.compareTo(n);
- }
-
-}
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java 2008-08-15 15:39:55 UTC (rev 1093)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java 2008-08-15 17:55:39 UTC (rev 1094)
@@ -21,11 +21,11 @@
import java.util.SortedSet;
-
import org.dllearner.kb.extraction.Node;
import org.dllearner.utilities.datastructures.RDFNodeTuple;
import org.dllearner.utilities.owl.OWLVocabulary;
+import com.hp.hpl.jena.rdf.model.Literal;
import com.hp.hpl.jena.rdf.model.RDFNode;
import com.hp.hpl.jena.rdf.model.impl.ResourceImpl;
@@ -53,14 +53,16 @@
//TODO this doesn't work, because it is unclear what toString() method returns
- if (tuple.a.toString().equals("http://www.w3.org/2003/01/geo/wgs84_pos#lat")){
- lat=Float.parseFloat(tuple.b.toString().substring(0,tuple.b.toString().indexOf("^^")));
+ if (tuple.a.toString().equals("http://www.w3.org/2003/01/geo/wgs84_pos#lat") && tuple.b.isLiteral()){
+ lat = ((Literal) tuple.b).getFloat();
+ //lat=Float.parseFloat(tuple.b.toString().substring(0,tuple.b.toString().indexOf("^^")));
}
- if (tuple.a.toString().equals("http://www.w3.org/2003/01/geo/wgs84_pos#long")) {
- lng=Float.parseFloat(tuple.b.toString().substring(0,tuple.b.toString().indexOf("^^")));
+ if (tuple.a.toString().equals("http://www.w3.org/2003/01/geo/wgs84_pos#long") && tuple.b.isLiteral()) {
+ lng = ((Literal) tuple.b).getFloat();
+ //lng=Float.parseFloat(tuple.b.toString().substring(0,tuple.b.toString().indexOf("^^")));
}
- }
+ }//end for
if (clazz.toString().equals("http://dbpedia.org/class/yago/City108524735")){
String newType = getTypeToCoordinates(lat, lng);
tuples.add(new RDFNodeTuple(new ResourceImpl(OWLVocabulary.RDF_TYPE),new ResourceImpl(newType)));
Modified: trunk/src/dl-learner/org/dllearner/test/TestOneQueryForMusicRecommender.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/test/TestOneQueryForMusicRecommender.java 2008-08-15 15:39:55 UTC (rev 1093)
+++ trunk/src/dl-learner/org/dllearner/test/TestOneQueryForMusicRecommender.java 2008-08-15 17:55:39 UTC (rev 1094)
@@ -53,6 +53,7 @@
ResultSet rs = ResultSetFactory.fromXML(xml);
+ @SuppressWarnings("unchecked")
List<ResultBinding> l = ResultSetFormatter.toList(rs);
for (ResultBinding binding : l) {
Modified: trunk/src/dl-learner/org/dllearner/test/TripleTypeTest.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/test/TripleTypeTest.java 2008-08-15 15:39:55 UTC (rev 1093)
+++ trunk/src/dl-learner/org/dllearner/test/TripleTypeTest.java 2008-08-15 17:55:39 UTC (rev 1094)
@@ -23,6 +23,7 @@
SPARQLTasks st = new SPARQLTasks (Cache.getDefaultCache(), SparqlEndpoint.getEndpointDBpedia());
ResultSetRewindable rsw = st.queryAsResultSet(sparqlQueryString);
+ @SuppressWarnings("unchecked")
List<ResultBinding> l = ResultSetFormatter.toList(rsw);
for (ResultBinding binding : l) {
Modified: trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java 2008-08-15 15:39:55 UTC (rev 1093)
+++ trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java 2008-08-15 17:55:39 UTC (rev 1094)
@@ -28,6 +28,7 @@
public static final String OWL_SAME_AS = "http://www.w3.org/2002/07/owl#sameAs";
public static final String OWL_OBJECTPROPERTY = "http://www.w3.org/2002/07/owl#ObjectProperty";
+ public static final String OWL_DATATYPPROPERTY = "http://www.w3.org/2002/07/owl#DataTypeProperty";
public static final String OWL_CLASS = "http://www.w3.org/2002/07/owl#Class";
public static final String OWL_THING = "http://www.w3.org/2002/07/owl#Thing";
//OWL2 Namespace: http://www.w3.org/2006/12/owl2#
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <Jen...@us...> - 2008-08-19 15:23:57
|
Revision: 1101
http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1101&view=rev
Author: JensLehmann
Date: 2008-08-19 15:23:53 +0000 (Tue, 19 Aug 2008)
Log Message:
-----------
- unit test, which verifies that all learning problems are working (learn a concept)
- feature request #1892798
Modified Paths:
--------------
trunk/src/dl-learner/org/dllearner/cli/QuickStart.java
Added Paths:
-----------
trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java
Modified: trunk/src/dl-learner/org/dllearner/cli/QuickStart.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/cli/QuickStart.java 2008-08-19 14:28:27 UTC (rev 1100)
+++ trunk/src/dl-learner/org/dllearner/cli/QuickStart.java 2008-08-19 15:23:53 UTC (rev 1101)
@@ -39,7 +39,7 @@
*/
public class QuickStart {
- static HashMap<String, ArrayList<String>> hm = null;
+// static HashMap<String, ArrayList<String>> hm = null;
static String pm = ".";// pathmodifier
public static void main(String[] args) {
@@ -50,10 +50,10 @@
ArrayList<String> finalSelection = new ArrayList<String>();
finalSelection.add("na");
- hm = new HashMap<String, ArrayList<String>>();
+ HashMap<String, ArrayList<String>> hm = new HashMap<String, ArrayList<String>>();
String path = pm + File.separator + "examples";
File f = new File(path);
- getAllConfs(f, path);
+ getAllConfs(f, path, hm);
// System.out.println(hm.size());
Iterator<String> i = hm.keySet().iterator();
@@ -148,7 +148,7 @@
// System.out.println(f.isDirectory()+f.getAbsolutePath());
}
- public static void getAllConfs(File f, String path) {
+ public static void getAllConfs(File f, String path, HashMap<String, ArrayList<String>> confs) {
path = path + File.separator;
// System.out.println(path);
String[] act = f.list();
@@ -157,13 +157,13 @@
if (new File(path + act[i]).isDirectory()) {
- getAllConfs(new File(path + act[i]), path + act[i]);
+ getAllConfs(new File(path + act[i]), path + act[i], confs);
// al.add(new File(act[i]));
} else if (act[i].endsWith(".conf")) {
- if (hm.get(path) == null) {
- hm.put(path, new ArrayList<String>());
+ if (confs.get(path) == null) {
+ confs.put(path, new ArrayList<String>());
}
- hm.get(path).add(act[i].substring(0, act[i].length() - 5));
+ confs.get(path).add(act[i].substring(0, act[i].length() - 5));
// System.out.println(act[i].substring(0,act[i].length()-5));
// System.out.println(hm.get(path).size());
// hm.put(new
Added: trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java 2008-08-19 15:23:53 UTC (rev 1101)
@@ -0,0 +1,66 @@
+/**
+ * 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.test.junit;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import org.dllearner.cli.QuickStart;
+import org.dllearner.cli.Start;
+import org.dllearner.core.ComponentInitException;
+import org.junit.Test;
+
+/**
+ * Tests related to learning problems in the examples directory.
+ *
+ * @author Jens Lehmann
+ *
+ */
+public class ExampleTests {
+
+ /**
+ * This test runs all conf files in the examples directory. Each conf file corresponds to one
+ * unit test, which is succesful if a concept was learned.
+ * @throws ComponentInitException If any component initialisation exception occurs in the process.
+ */
+ @Test
+ public void testAllConfFiles() throws ComponentInitException {
+ // map containing a list of conf files for each path
+ HashMap<String, ArrayList<String>> confFiles = new HashMap<String, ArrayList<String>>();
+ String exampleDir = "." + File.separator + "examples";
+ File f = new File(exampleDir);
+ QuickStart.getAllConfs(f, exampleDir, confFiles);
+
+ for(String path : confFiles.keySet()) {
+ for(String file : confFiles.get(path)) {
+ String conf = path + file + ".conf";
+ // start example
+ Start start = new Start(new File(conf));
+ start.start(false);
+ // test is successful if a concept was learned
+ assert(start.getLearningAlgorithm().getCurrentlyBestDescription() != null);
+ }
+ }
+
+
+ }
+
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ku...@us...> - 2008-08-19 15:35:27
|
Revision: 1102
http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1102&view=rev
Author: kurzum
Date: 2008-08-19 15:35:22 +0000 (Tue, 19 Aug 2008)
Log Message:
-----------
working improved aquisitor
Modified Paths:
--------------
trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java
trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java
trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java
Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java 2008-08-19 15:23:53 UTC (rev 1101)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java 2008-08-19 15:35:22 UTC (rev 1102)
@@ -45,12 +45,17 @@
// standard query get a tupels (p,o) for subject s
@Override
- public SortedSet<RDFNodeTuple> getTupelForResource(String uri) {
-
+ public SortedSet<RDFNodeTuple> retrieveTupel(String uri){
throw new RuntimeException("Not Implemented yet");
-
-
}
+ @Override
+ public SortedSet<RDFNodeTuple> retrieveClassesForInstances(String uri){
+ throw new RuntimeException("Not Implemented yet");
+ }
+ @Override
+ public SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri){
+ throw new RuntimeException("Not Implemented yet");
+ }
Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java 2008-08-19 15:23:53 UTC (rev 1101)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java 2008-08-19 15:35:22 UTC (rev 1102)
@@ -34,8 +34,11 @@
*/
public class SparqlTupelAquisitor extends TupelAquisitor {
+
@SuppressWarnings("unused")
private static Logger logger = Logger.getLogger(SparqlTupelAquisitor.class);
+ protected static final String PREDICATE = "predicate";
+ protected static final String OBJECT = "object";
protected SparqlQueryMaker sparqlQueryMaker;
protected SPARQLTasks sparqlTasks;
@@ -48,26 +51,24 @@
this.sparqlTasks = sparqlTasks;
}
-
- // standard query get a tupels (p,o) for subject s
@Override
- public SortedSet<RDFNodeTuple> getTupelForResource(String uri) {
- checkURIforValidity(uri);
+ public SortedSet<RDFNodeTuple> retrieveTupel(String uri){
+ // getQuery
+ String sparqlQueryString = sparqlQueryMaker.makeSubjectQueryUsingFilters(uri);
+ return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, PREDICATE, OBJECT);
- String pred = "predicate";
- String obj = "object";
- String sparqlQueryString = "";
+ }
+ @Override
+ public SortedSet<RDFNodeTuple> retrieveClassesForInstances(String uri){
// getQuery
- if (classMode) {
- sparqlQueryString = sparqlQueryMaker.makeClassQueryUsingFilters(uri);
- }else {
- sparqlQueryString = sparqlQueryMaker.makeSubjectQueryUsingFilters(uri);
- }
+ String sparqlQueryString = sparqlQueryMaker.makeClassQueryUsingFilters(uri);
+ return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, PREDICATE, OBJECT);
-
- return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, pred, obj);
-
}
+ @Override
+ public SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri){
+ return retrieveTupel(uri);
+ }
Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java 2008-08-19 15:23:53 UTC (rev 1101)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java 2008-08-19 15:35:22 UTC (rev 1102)
@@ -54,61 +54,79 @@
this.recursionDepth = recursionDepth;
}
-
- // standard query get a tupels (p,o) for subject s
-// standard query get a tupels (p,o) for subject s
+
@Override
- public SortedSet<RDFNodeTuple> getTupelForResource(String uri) {
- checkURIforValidity(uri);
- String sparqlQueryString = "";
- String pred = "predicate";
- String obj = "object";
+ public SortedSet<RDFNodeTuple> retrieveTupel(String uri){
- // getQuery
- if (classMode) {
-
-
- sparqlQueryString = sparqlQueryMaker.makeClassQueryUsingFilters(uri);
- return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, pred, obj);
- }
-
SortedSet<RDFNodeTuple> cachedSet = resources.get(uri);
if(cachedSet!=null) {
return cachedSet;
}
//SortedSet<RDFNodeTuple> tmp = new TreeSet<RDFNodeTuple>();
- sparqlQueryString = sparqlQueryMaker.makeSubjectQueryLevel(uri, recursionDepth);
+ String sparqlQueryString = sparqlQueryMaker.makeSubjectQueryLevel(uri, recursionDepth);
+ //System.out.println(sparqlQueryString);
ResultSetRewindable rsw= sparqlTasks.queryAsResultSet(sparqlQueryString);
@SuppressWarnings("unchecked")
List<ResultBinding> l = ResultSetFormatter.toList(rsw);
rsw.reset();
+ int count = 0;
+
+ for (ResultBinding binding : l) {
+ count++;
+ }
+
int resultsetcount = 0;
int i = 0;
for (ResultBinding binding : l) {
- i=0;
- RDFNode nextURI = binding.get(obj+i);
- add(uri, new RDFNodeTuple(binding.get(pred+i), nextURI ));
-
- for (i=1; i < recursionDepth; i++) {
- RDFNode tmpURI = binding.get(obj+i);
- add(nextURI.toString(), new RDFNodeTuple(binding.get(pred+i),tmpURI));
- logger.trace("For: "+nextURI.toString()+ " added :"+resources.get(nextURI.toString()));
- nextURI = tmpURI;
- }
+ i = 0;
+ RDFNode nextOBJ = binding.get(OBJECT+i);
+ RDFNode nextPRED = binding.get(PREDICATE+i);
+ RDFNodeTuple tmptuple = new RDFNodeTuple(nextPRED, nextOBJ );
+ add(uri,tmptuple);
+ boolean cont = !nextOBJ.isLiteral();
+ for (i=0; (i < recursionDepth) && cont; i++) {
+ RDFNode tmpPREDURI = binding.get(PREDICATE+i);
+ RDFNode tmpOBJURI = binding.get(OBJECT+i);
+ if(tmpOBJURI==null) {
+ cont=false;
+ }else if (tmpOBJURI.isLiteral()) {
+ tmptuple = new RDFNodeTuple(tmpPREDURI, tmpOBJURI );
+ add(nextOBJ.toString(), tmptuple);
+ logger.trace(tmptuple);
+ logger.trace("For: "+nextOBJ.toString()+ " added :"+resources.get(nextOBJ.toString()));
+ cont=false;
+ }else {
+ tmptuple = new RDFNodeTuple(tmpPREDURI, tmpOBJURI );
+ add(nextOBJ.toString(), tmptuple);
+ logger.trace(tmptuple);
+ logger.trace("For: "+nextOBJ.toString()+ " added :"+resources.get(nextOBJ.toString()));
+ nextOBJ = tmpOBJURI;
+ cont = true;
+ }
+ }//end for
+
resultsetcount++;
}
+ //System.out.println("original count "+count);
+ logger.warn("SparqlTupelAquisitor retrieved : "+resultsetcount);
if(resultsetcount>999) {
logger.warn("SparqlTupelAquisitor retrieved more than 1000 results, there might some be missing");
}
- return resources.get(uri);
-
- //return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, pred, obj);
+ return ((cachedSet=resources.get(uri))==null)?new TreeSet<RDFNodeTuple>():cachedSet;
}
+ @Override
+ public SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri){
+ //getQuery
+ String sparqlQueryString = sparqlQueryMaker.makeSubjectQueryUsingFilters(uri);
+ return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, PREDICATE, OBJECT);
+ }
+
+
private void add(String uri, RDFNodeTuple tuple){
SortedSet<RDFNodeTuple> set = resources.get(uri);
if(set==null){
Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java 2008-08-19 15:23:53 UTC (rev 1101)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java 2008-08-19 15:35:22 UTC (rev 1102)
@@ -38,20 +38,41 @@
private static Logger logger = Logger.getLogger(TupelAquisitor.class);
+ protected final int NORMAL = 0;
+ protected final int CLASSES_FOR_INSTANCES = 1;
+ protected final int CLASS_INFORMATION = 2;
- protected boolean classMode = false;
+ protected int mode = 0;
private boolean uriDebugCheck = true;
- public abstract SortedSet<RDFNodeTuple> getTupelForResource(String uri);
+ public final SortedSet<RDFNodeTuple> getTupelForResource(String uri){
+ checkURIforValidity(uri);
+ if (mode == NORMAL) {
+ return retrieveTupel(uri);
+ } else if(mode == CLASSES_FOR_INSTANCES){
+ return retrieveClassesForInstances(uri);
+ }else if(mode == CLASS_INFORMATION){
+ return retrieveTuplesForClassesOnly(uri);
+ }else{
+ throw new RuntimeException("undefined mode in aquisitor");
+ }
+ }
+ public abstract SortedSet<RDFNodeTuple> retrieveTupel(String uri);
+ public abstract SortedSet<RDFNodeTuple> retrieveClassesForInstances(String uri);
+ public abstract SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri);
- public void setClassMode(boolean classMode) {
- this.classMode = classMode;
- }
+ /*private void setMode(int mode) {
+ this.mode = mode;
+ }*/
- public boolean isClassMode() {
- return classMode;
+ public int getMode() {
+ return mode;
}
+ public void setNextTaskToNormal(){mode = NORMAL;}
+ public void setNextTaskToClassesForInstances(){mode = CLASSES_FOR_INSTANCES;}
+ public void setNextTaskToClassInformation(){mode = CLASS_INFORMATION;}
+
protected boolean checkURIforValidity(String uri){
if(uriDebugCheck) return true;
try{
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-19 15:23:53 UTC (rev 1101)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-19 15:35:22 UTC (rev 1102)
@@ -70,6 +70,7 @@
public Node expandNode(String uri, TupelAquisitor tupelAquisitor) {
SimpleClock sc = new SimpleClock();
+ tupelAquisitor.setNextTaskToNormal();
Node seedNode = getFirstNode(uri);
List<Node> newNodes = new ArrayList<Node>();
@@ -131,7 +132,7 @@
//TODO LinkedData incompatibility
- tupelAquisitor.setClassMode(true);
+ tupelAquisitor.setNextTaskToClassesForInstances();
if (configuration.isCloseAfterRecursion()) {
while (!instances.isEmpty()) {
logger.trace("Getting classes for remaining instances: "
@@ -144,12 +145,11 @@
}//endif
}//endwhile
}//endif
- tupelAquisitor.setClassMode(false);
-
+ tupelAquisitor.setNextTaskToClassInformation();
int i = 0;
- while (!classes.isEmpty()) {
+ while (!classes.isEmpty() && false) {
logger.trace("Remaining classes: " + classes.size());
Node next = classes.remove(0);
if (!alreadyQueriedSuperClasses.contains(next.getURI().toString())) {
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java 2008-08-19 15:23:53 UTC (rev 1101)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java 2008-08-19 15:35:22 UTC (rev 1102)
@@ -51,7 +51,6 @@
typeTuple = tuple;
}
- //TODO this doesn't work, because it is unclear what toString() method returns
if (tuple.a.toString().equals("http://www.w3.org/2003/01/geo/wgs84_pos#lat") && tuple.b.isLiteral()){
lat = ((Literal) tuple.b).getFloat();
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-08-19 15:23:53 UTC (rev 1101)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-08-19 15:35:22 UTC (rev 1102)
@@ -23,6 +23,7 @@
import java.util.List;
import java.util.SortedSet;
+import org.apache.log4j.Logger;
import org.dllearner.kb.extraction.ClassNode;
import org.dllearner.kb.extraction.InstanceNode;
import org.dllearner.kb.extraction.Node;
@@ -39,6 +40,7 @@
*/
public class Manipulator {
+ private static Logger logger = Logger.getLogger(Manipulator.class);
private List<Rule> rules = new ArrayList<Rule>();
private Manipulator() {
@@ -56,9 +58,11 @@
*/
public SortedSet<RDFNodeTuple> manipulate( Node node, SortedSet<RDFNodeTuple> tuples) {
JamonMonitorLogger.getTimeMonitor(Manipulator.class, "Time for Rules").start();
+ logger.warn("before: "+tuples.size());
for (Rule rule : rules) {
tuples = rule.applyRule(node, tuples);
}
+ logger.warn("after: "+tuples.size());
JamonMonitorLogger.getTimeMonitor(Manipulator.class, "Time for Rules").stop();
return tuples;
}
@@ -111,9 +115,13 @@
private void addDefaultRules(Months month){
- addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_CLASS,ClassNode.class.getCanonicalName() )) ;
- addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_THING,InstanceNode.class.getCanonicalName() )) ;
- addRule(new TypeFilterRule(month, "", OWLVocabulary.OWL_CLASS, ClassNode.class.getCanonicalName()) ) ;
+ // addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_CLASS,ClassNode.class.getCanonicalName() )) ;
+ // addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_THING,InstanceNode.class.getCanonicalName() )) ;
+ // addRule(new TypeFilterRule(month, "", OWLVocabulary.OWL_CLASS, ClassNode.class.getCanonicalName()) ) ;
+ addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_CLASS,ClassNode.class )) ;
+ addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_THING,InstanceNode.class )) ;
+ addRule(new TypeFilterRule(month, "", OWLVocabulary.OWL_CLASS, ClassNode.class) ) ;
+
}
public synchronized void addRule(Rule newRule){
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-08-19 15:23:53 UTC (rev 1101)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-08-19 15:35:22 UTC (rev 1102)
@@ -22,21 +22,24 @@
import java.util.SortedSet;
import java.util.TreeSet;
+import org.apache.log4j.Logger;
import org.dllearner.kb.extraction.Node;
import org.dllearner.utilities.datastructures.RDFNodeTuple;
public class TypeFilterRule extends Rule{
+ public static Logger logger = Logger.getLogger(TypeFilterRule.class);
+
String predicateFilter;
String objectFilter;
- String canonicalClassName;
+ String classCanonicalName;
- public TypeFilterRule(Months month, String predicateFilter, String objectFilter, String canonicalClassName) {
+ public TypeFilterRule(Months month, String predicateFilter, String objectFilter, Class<? extends Node> clazz) {
super(month);
this.predicateFilter = predicateFilter;
this.objectFilter = objectFilter;
- this.canonicalClassName = canonicalClassName;
+ this.classCanonicalName = clazz.getCanonicalName();
}
@@ -45,12 +48,20 @@
public SortedSet<RDFNodeTuple> applyRule(Node subject, SortedSet<RDFNodeTuple> tuples){
SortedSet<RDFNodeTuple> keep = new TreeSet<RDFNodeTuple>();
for (RDFNodeTuple tuple : tuples) {
+ String a = tuple.a.toString();
+ String b = tuple.b.toString();
+ //System.out.println(a+b);
boolean remove = (tuple.aPartContains(predicateFilter) &&
- tuple.bPartContains(objectFilter) &&
- subject.getClass().getCanonicalName().equals(canonicalClassName));
+ tuple.bPartContains(objectFilter) &&
+ // QUALITY this might be dead wrong
+ (classCanonicalName.equalsIgnoreCase(subject.getClass().getCanonicalName()))
+ );
if(!remove){
keep.add(tuple);
+ }else{
+ logger.warn("Removed: "+subject+"::"+tuple);
}
+
}
return keep;
}
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-08-19 15:23:53 UTC (rev 1101)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-08-19 15:35:22 UTC (rev 1102)
@@ -47,6 +47,7 @@
import org.dllearner.core.config.StringTupleListConfigOption;
import org.dllearner.core.owl.KB;
import org.dllearner.kb.aquisitors.SparqlTupelAquisitor;
+import org.dllearner.kb.aquisitors.SparqlTupelAquisitorImproved;
import org.dllearner.kb.aquisitors.TupelAquisitor;
import org.dllearner.kb.extraction.Configuration;
import org.dllearner.kb.extraction.Manager;
@@ -410,7 +411,8 @@
public TupelAquisitor getTupelAquisitor()
{
- return new SparqlTupelAquisitor(getSparqlQueryMaker(), getSPARQLTasks());
+ //return new SparqlTupelAquisitor(getSparqlQueryMaker(), getSPARQLTasks());
+ return new SparqlTupelAquisitorImproved(getSparqlQueryMaker(), getSPARQLTasks(),recursionDepth);
}
/* (non-Javadoc)
Modified: trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-08-19 15:23:53 UTC (rev 1101)
+++ trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-08-19 15:35:22 UTC (rev 1102)
@@ -26,7 +26,7 @@
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.SimpleLayout;
-import org.dllearner.kb.aquisitors.SparqlTupelAquisitor;
+import org.dllearner.kb.aquisitors.SparqlTupelAquisitorImproved;
import org.dllearner.kb.extraction.Configuration;
import org.dllearner.kb.extraction.Manager;
import org.dllearner.kb.manipulator.Manipulator;
@@ -34,6 +34,7 @@
import org.dllearner.kb.sparql.SparqlQueryMaker;
import org.dllearner.scripts.NT2RDF;
import org.dllearner.utilities.JamonMonitorLogger;
+import org.dllearner.utilities.statistics.SimpleClock;
/**
* Test class, uses the whole thing
@@ -55,17 +56,19 @@
ConsoleAppender consoleAppender = new ConsoleAppender(layout);
logger.removeAllAppenders();
logger.addAppender(consoleAppender);
- logger.setLevel(Level.TRACE);
+ logger.setLevel(Level.INFO);
// String test2 = "http://www.extraction.org/config#dbpediatest";
// String test = "http://www.extraction.org/config#localjoseki";
try {
// URI u = new URI(test);
+ int recursionDepth=3;
Manager m = new Manager();
Configuration conf = new Configuration (
- new SparqlTupelAquisitor(SparqlQueryMaker.getTestFilter(), SPARQLTasks.getPredefinedSPARQLTasksWithCache("DBPEDIA")),
+ new SparqlTupelAquisitorImproved(SparqlQueryMaker.getAllowYAGOFilter(),
+ SPARQLTasks.getPredefinedSPARQLTasksWithCache("DBPEDIA"),recursionDepth),
Manipulator.getDefaultManipulator(),
- 1,
+ recursionDepth,
true,
true,
200
@@ -79,6 +82,7 @@
fw.write(m.extract(u2));
fw.flush();
fw.close();
+
NT2RDF.convertNT2RDF(filename);
JamonMonitorLogger.printAllSortedByLabel();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ku...@us...> - 2008-08-19 17:35:54
|
Revision: 1104
http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1104&view=rev
Author: kurzum
Date: 2008-08-19 17:35:48 +0000 (Tue, 19 Aug 2008)
Log Message:
-----------
small improvements
Modified Paths:
--------------
trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java
trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java
trunk/src/dl-learner/org/dllearner/scripts/WikipediaCategoryCleaner.java
trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java
trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java
Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java 2008-08-19 15:41:45 UTC (rev 1103)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java 2008-08-19 17:35:48 UTC (rev 1104)
@@ -66,8 +66,13 @@
//SortedSet<RDFNodeTuple> tmp = new TreeSet<RDFNodeTuple>();
String sparqlQueryString = sparqlQueryMaker.makeSubjectQueryLevel(uri, recursionDepth);
//System.out.println(sparqlQueryString);
- ResultSetRewindable rsw= sparqlTasks.queryAsResultSet(sparqlQueryString);
- @SuppressWarnings("unchecked")
+ ResultSetRewindable rsw=null;
+ try{
+ rsw = sparqlTasks.queryAsResultSet(sparqlQueryString);
+ }catch (Exception e) {
+ return super.retrieveTupel(uri);
+ }
+ @SuppressWarnings("unchecked")
List<ResultBinding> l = ResultSetFormatter.toList(rsw);
rsw.reset();
Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java 2008-08-19 15:41:45 UTC (rev 1103)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java 2008-08-19 17:35:48 UTC (rev 1104)
@@ -21,6 +21,7 @@
import java.net.URI;
import java.util.SortedSet;
+import java.util.TreeSet;
import org.apache.log4j.Logger;
import org.dllearner.utilities.datastructures.RDFNodeTuple;
@@ -47,14 +48,20 @@
public final SortedSet<RDFNodeTuple> getTupelForResource(String uri){
checkURIforValidity(uri);
- if (mode == NORMAL) {
- return retrieveTupel(uri);
- } else if(mode == CLASSES_FOR_INSTANCES){
- return retrieveClassesForInstances(uri);
- }else if(mode == CLASS_INFORMATION){
- return retrieveTuplesForClassesOnly(uri);
- }else{
- throw new RuntimeException("undefined mode in aquisitor");
+ try{
+ if (mode == NORMAL) {
+ return retrieveTupel(uri);
+ } else if(mode == CLASSES_FOR_INSTANCES){
+ return retrieveClassesForInstances(uri);
+ }else if(mode == CLASS_INFORMATION){
+ return retrieveTuplesForClassesOnly(uri);
+ }else{
+ throw new RuntimeException("undefined mode in aquisitor");
+ }
+ }catch(Exception e){
+ logger.warn("caught exception in tupleaquisitor, ignoring it"+e.toString());
+ return new TreeSet<RDFNodeTuple>();
+
}
}
public abstract SortedSet<RDFNodeTuple> retrieveTupel(String uri);
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java 2008-08-19 15:41:45 UTC (rev 1103)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java 2008-08-19 17:35:48 UTC (rev 1104)
@@ -55,6 +55,7 @@
Node n = extractionAlgorithm.expandNode(uri, configuration.getTupelAquisitor());
SortedSet<String> s = n.toNTriple();
+ logger.info("number of triples: "+s.size());
StringBuffer nt = new StringBuffer(33000);
for (String str : s) {
nt.append(str + "\n");
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java 2008-08-19 15:41:45 UTC (rev 1103)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java 2008-08-19 17:35:48 UTC (rev 1104)
@@ -23,6 +23,7 @@
import java.util.TreeSet;
import org.dllearner.kb.extraction.Node;
+import org.dllearner.utilities.JamonMonitorLogger;
import org.dllearner.utilities.datastructures.RDFNodeTuple;
public class SimpleObjectFilterRule extends Rule{
@@ -41,6 +42,8 @@
for (RDFNodeTuple tuple : tuples) {
if(!tuple.bPartContains(objectFilter)){
keep.add(tuple);
+ }else{
+ JamonMonitorLogger.increaseCount(SimpleObjectFilterRule.class, "filteredTriples");
}
}
return keep;
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java 2008-08-19 15:41:45 UTC (rev 1103)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java 2008-08-19 17:35:48 UTC (rev 1104)
@@ -23,6 +23,7 @@
import java.util.TreeSet;
import org.dllearner.kb.extraction.Node;
+import org.dllearner.utilities.JamonMonitorLogger;
import org.dllearner.utilities.datastructures.RDFNodeTuple;
public class SimplePredicateFilterRule extends Rule{
@@ -42,6 +43,8 @@
for (RDFNodeTuple tuple : tuples) {
if(!tuple.aPartContains(predicateFilter)){
keep.add(tuple);
+ }else{
+ JamonMonitorLogger.increaseCount(SimplePredicateFilterRule.class, "filteredTriples");
}
}
return keep;
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-08-19 15:41:45 UTC (rev 1103)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-08-19 17:35:48 UTC (rev 1104)
@@ -24,6 +24,7 @@
import org.apache.log4j.Logger;
import org.dllearner.kb.extraction.Node;
+import org.dllearner.utilities.JamonMonitorLogger;
import org.dllearner.utilities.datastructures.RDFNodeTuple;
public class TypeFilterRule extends Rule{
@@ -59,7 +60,7 @@
if(!remove){
keep.add(tuple);
}else{
- logger.warn("Removed: "+subject+"::"+tuple);
+ JamonMonitorLogger.increaseCount(TypeFilterRule.class, "filteredTriples");
}
}
Modified: trunk/src/dl-learner/org/dllearner/scripts/WikipediaCategoryCleaner.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/scripts/WikipediaCategoryCleaner.java 2008-08-19 15:41:45 UTC (rev 1103)
+++ trunk/src/dl-learner/org/dllearner/scripts/WikipediaCategoryCleaner.java 2008-08-19 17:35:48 UTC (rev 1104)
@@ -222,10 +222,11 @@
LearnSPARQLConfiguration lsc = new LearnSPARQLConfiguration();
lsc.sparqlEndpoint = sparqlTasks.getSparqlEndpoint();
+ lsc.recursiondepth = 1;
lsc.noisePercentage = 15;
lsc.guaranteeXgoodDescriptions = 200;
lsc.maxExecutionTimeInSeconds = 50;
- lsc.logLevel = "INFO";
+ lsc.logLevel = "TRACE";
// lsc.searchTreeFile = "log/WikipediaCleaner.txt";
return lsc;
Modified: trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-08-19 15:41:45 UTC (rev 1103)
+++ trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-08-19 17:35:48 UTC (rev 1104)
@@ -31,6 +31,7 @@
import org.dllearner.kb.extraction.Manager;
import org.dllearner.kb.manipulator.Manipulator;
import org.dllearner.kb.sparql.SPARQLTasks;
+import org.dllearner.kb.sparql.SparqlQuery;
import org.dllearner.kb.sparql.SparqlQueryMaker;
import org.dllearner.scripts.NT2RDF;
import org.dllearner.utilities.JamonMonitorLogger;
@@ -57,12 +58,13 @@
logger.removeAllAppenders();
logger.addAppender(consoleAppender);
logger.setLevel(Level.INFO);
+ Logger.getLogger(SparqlQuery.class).setLevel(Level.DEBUG);
// String test2 = "http://www.extraction.org/config#dbpediatest";
// String test = "http://www.extraction.org/config#localjoseki";
try {
// URI u = new URI(test);
- int recursionDepth=3;
+ int recursionDepth=2;
Manager m = new Manager();
Configuration conf = new Configuration (
new SparqlTupelAquisitorImproved(SparqlQueryMaker.getAllowYAGOFilter(),
Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java 2008-08-19 15:41:45 UTC (rev 1103)
+++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java 2008-08-19 17:35:48 UTC (rev 1104)
@@ -149,16 +149,23 @@
// superclasses");
for (String instance : positiveSet) {
+ try{
classes.addAll(sparqltasks.getClassesForInstance(instance, sparqlResultLimit));
+ }catch (Exception e) {
+ logger.warn("ignoring SPARQLQuery failure, see log/sparql.txt");
+ }
}
logger.debug("getting negExamples from " + classes.size() + " parallel classes");
for (String oneClass : classes) {
logger.debug(oneClass);
// rsc = new
// JenaResultSetConvenience(queryConcept("\""+oneClass+"\"",limit));
+ try{
this.fromParallelClasses.addAll(sparqltasks.retrieveInstancesForClassDescription("\"" + oneClass
+ "\"", sparqlResultLimit));
-
+ }catch (Exception e) {
+ logger.warn("ignoring SPARQLQuery failure, see log/sparql.txt");
+ }
}
fromParallelClasses.removeAll(fullPositiveSet);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jen...@us...> - 2008-08-20 12:13:52
|
Revision: 1106
http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1106&view=rev
Author: jenslehmann
Date: 2008-08-20 12:13:48 +0000 (Wed, 20 Aug 2008)
Log Message:
-----------
* changed command line logging:
- one appender writes to console with log level info
- a second appender writes to a file log/log.txt with log level debug
* console output cleaned up a bit
Modified Paths:
--------------
trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedNode.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/cli/Start.java
trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java
Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedNode.java 2008-08-20 11:21:37 UTC (rev 1105)
+++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedNode.java 2008-08-20 12:13:48 UTC (rev 1106)
@@ -206,6 +206,15 @@
return (coveredPositives.size() + nrOfNegativeExamples - coveredNegatives.size())/(double)(nrOfPositiveExamples+nrOfNegativeExamples);
}
+ /**
+ * Used to detect whether one node is more accurate than another one
+ * with calculating accuracy itself.
+ * @return Number of covered positives minus number of covered negatives.
+ */
+ public int getCovPosMinusCovNeg() {
+ return coveredPositives.size() - coveredNegatives.size();
+ }
+
public Set<Individual> getCoveredPositives() {
return coveredPositives;
}
Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java 2008-08-20 11:21:37 UTC (rev 1105)
+++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java 2008-08-20 12:13:48 UTC (rev 1106)
@@ -275,11 +275,15 @@
@Override
public void init() throws ComponentInitException {
+ // exit with a ComponentInitException if the reasoner is unsupported for this learning algorithm
if(rs.getReasonerType() == ReasonerType.DIG) {
throw new ComponentInitException("DIG does not support the inferences needed in the selected learning algorithm component: " + getName());
}
- logger.setLevel(Level.toLevel(logLevel,Level.toLevel(CommonConfigOptions.logLevelDefault)));
+ // set log level if the option has been set
+ if(!logLevel.equals(CommonConfigOptions.logLevelDefault))
+ logger.setLevel(Level.toLevel(logLevel,Level.toLevel(CommonConfigOptions.logLevelDefault)));
+
if(searchTreeFile == null)
searchTreeFile = new File(defaultSearchTreeFile);
Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-08-20 11:21:37 UTC (rev 1105)
+++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-08-20 12:13:48 UTC (rev 1106)
@@ -26,6 +26,7 @@
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
+import java.util.Map;
import java.util.NavigableSet;
import java.util.Set;
import java.util.SortedSet;
@@ -118,9 +119,9 @@
//extended Options
private long maxExecutionTimeInSeconds;
private boolean maxExecutionTimeShown=false;
- private long minExecutionTimeInSeconds;
+ private long minExecutionTimeInSeconds = 0;
private boolean minExecutionTimeShown=false;
- private int guaranteeXgoodDescriptions;
+ private int guaranteeXgoodDescriptions = 1;
private boolean guaranteeXgoodShown=false;
// if set to false we do not test properness; this may seem wrong
@@ -217,6 +218,7 @@
// prefixes
private String baseURI;
+ private Map<String,String> prefixes;
public ExampleBasedROLearner(
LearningProblem learningProblem,
@@ -277,7 +279,8 @@
this.useOverlyGeneralList = useOverlyGeneralList;
this.useShortConceptConstruction = useShortConceptConstruction;
this.usePropernessChecks = usePropernessChecks;
- this.baseURI = rs.getBaseURI();
+ baseURI = rs.getBaseURI();
+ prefixes = rs.getPrefixes();
this.maxPosOnlyExpansion = maxPosOnlyExpansion;
this.maxExecutionTimeInSeconds = maxExecutionTimeInSeconds;
this.minExecutionTimeInSeconds = minExecutionTimeInSeconds;
@@ -292,7 +295,7 @@
runtime=System.currentTimeMillis();
JamonMonitorLogger.getTimeMonitor(ExampleBasedROLComponent.class, "totalLearningTime").start();
// TODO: write a JUnit test for this problem (long-lasting or infinite loops because
- // redundant children of a node are called recursively after when the node is extended
+ // redundant children of a node are called recursively when a node is extended
// twice)
/*
// String conceptStr = "(\"http://dl-learner.org/carcinogenesis#Compound\" AND (>= 2 \"http://dl-learner.org/carcinogenesis#hasStructure\".\"http://dl-learner.org/carcinogenesis#Ar_halide\" OR ((\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS TRUE) AND >= 5 \"http://dl-learner.org/carcinogenesis#hasBond\". TOP)))";
@@ -350,6 +353,7 @@
candidatesStable.add(startNode);
ExampleBasedNode bestNode = startNode;
+ ExampleBasedNode bestNodeStable = startNode;
int loop = 0;
@@ -386,7 +390,14 @@
}
-// System.out.println("next expanded: " + candidates.last().getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI));
+// System.out.println("next expanded: " + candidates.last().getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI));
+
+ // we record when a more accurate node is found and log it
+ if(bestNodeStable.getCovPosMinusCovNeg() < candidatesStable.last().getCovPosMinusCovNeg()) {
+ logger.info("more accurate node found: " + candidatesStable.last());
+ bestNodeStable = candidatesStable.last();
+ }
+
// chose best node according to heuristics
bestNode = candidates.last();
// extend best node
@@ -456,21 +467,23 @@
if(solutionFound ) {
+ int solutionLimit = 20;
logger.info("best node " + candidatesStable.last().getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI));
- logger.info("\nsolutions ( top 5 ):");
+ logger.info("solutions (at most " + solutionLimit + " are shown):");
int show=1;
String manchester="MANCHESTER:\n";
- String KBSyntax="KBSyntax:\n";
+ String kbSyntax="KBSyntax:\n";
for(Description c : solutions) {
logger.info(show+": " + c.toString(baseURI,null) + " (length " + c.getLength() +", depth " + c.getDepth() + ")");
- manchester+=show+": "+c.toManchesterSyntaxString(baseURI, new HashMap<String,String>())+"\n";
- KBSyntax+=show+": " + c.toKBSyntaxString()+"\n";
- if(show>=5){break;} show++;
+ manchester+=show+": "+c.toManchesterSyntaxString(baseURI, prefixes)+"\n";
+ kbSyntax+=show+": " + c.toKBSyntaxString()+"\n";
+ if(show >= solutionLimit) {
+ break;
+ }
+ show++;
}
logger.debug(manchester);
- logger.debug(KBSyntax);
-
-
+ logger.debug(kbSyntax);
}
logger.debug("size of candidate set: " + candidates.size());
@@ -1189,7 +1202,9 @@
private boolean guaranteeXgoodDescriptions(){
if(guaranteeXgoodShown)return true;
if(solutions.size()>guaranteeXgoodDescriptions){
- logger.info("Minimum number ("+guaranteeXgoodDescriptions+") of good descriptions reached, stopping now...");
+ if(guaranteeXgoodDescriptions != 1) {
+ logger.info("Minimum number ("+guaranteeXgoodDescriptions+") of good descriptions reached, stopping now.");
+ }
guaranteeXgoodShown=true;
return true;}
else return false;
@@ -1218,8 +1233,10 @@
if(minExecutionTimeShown)return true;
long needed = System.currentTimeMillis()- this.runtime;
long minMilliSeconds = minExecutionTimeInSeconds *1000 ;
- if(minMilliSeconds<needed){
- logger.info("Minimum time ("+minExecutionTimeInSeconds+" seconds) reached, stopping when next solution is found");
+ if(minMilliSeconds<needed) {
+ if(minExecutionTimeInSeconds != 0) {
+ 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/cli/Start.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-08-20 11:21:37 UTC (rev 1105)
+++ trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-08-20 12:13:48 UTC (rev 1106)
@@ -36,8 +36,11 @@
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.FileAppender;
+import org.apache.log4j.Layout;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
+import org.apache.log4j.PatternLayout;
+import org.apache.log4j.Priority;
import org.apache.log4j.SimpleLayout;
import org.dllearner.algorithms.BruteForceLearner;
import org.dllearner.algorithms.RandomGuesser;
@@ -118,20 +121,28 @@
if (args.length > 1 && args[0].equals("-q"))
inQueryMode = true;
- // create logger (a simple logger which outputs
+ // create loggers (a simple logger which outputs
// its messages to the console and a log file)
- SimpleLayout layout = new SimpleLayout();
+ // logger 1 is the console, where we print only info messages;
+ // the logger is plain, i.e. does not output log level etc.
+ Layout layout = new PatternLayout();
ConsoleAppender consoleAppender = new ConsoleAppender(layout);
+ consoleAppender.setThreshold(Level.INFO);
+
+ // logger 2 is writes to a file; it records all debug messages
+ // and includes the log level
+ Layout layout2 = new SimpleLayout();
FileAppender fileAppenderNormal = null;
File f = new File("log/sparql.txt");
try {
- fileAppenderNormal = new FileAppender(layout, "log/log.txt", false);
+ fileAppenderNormal = new FileAppender(layout2, "log/log.txt", false);
f.delete();
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
+// fileAppenderNormal.setThreshold(Level.DEBUG);
logger.removeAllAppenders();
logger.addAppender(consoleAppender);
Modified: trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2008-08-20 11:21:37 UTC (rev 1105)
+++ trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2008-08-20 12:13:48 UTC (rev 1106)
@@ -222,7 +222,7 @@
}
long dematDuration = System.currentTimeMillis() - dematStartTime;
- logger.info("TBox dematerialised in " + dematDuration + " ms");
+ logger.debug("TBox dematerialised in " + dematDuration + " ms");
} catch (ReasoningMethodUnsupportedException e) {
throw new ComponentInitException(
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <jen...@us...> - 2008-08-20 14:23:00
|
Revision: 1108
http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1108&view=rev
Author: jenslehmann
Date: 2008-08-20 14:22:56 +0000 (Wed, 20 Aug 2008)
Log Message:
-----------
- further cleanup and logging improvements
- examples unit test improved
Modified Paths:
--------------
trunk/src/dl-learner/org/dllearner/Info.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/cli/Start.java
trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java
Modified: trunk/src/dl-learner/org/dllearner/Info.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/Info.java 2008-08-20 13:12:53 UTC (rev 1107)
+++ trunk/src/dl-learner/org/dllearner/Info.java 2008-08-20 14:22:56 UTC (rev 1108)
@@ -3,6 +3,6 @@
package org.dllearner;
public class Info {
- public static final String build = "2008-08-15";
+ public static final String build = "2008-08-20";
}
\ No newline at end of file
Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-08-20 13:12:53 UTC (rev 1107)
+++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-08-20 14:22:56 UTC (rev 1108)
@@ -21,7 +21,6 @@
import java.io.File;
import java.text.DecimalFormat;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
@@ -54,34 +53,24 @@
import org.dllearner.utilities.owl.EvaluatedDescriptionComparator;
/**
- * Implements the example based refinement operator learning
- * approach.
+ * Implements the example based refinement operator learning approach.
*
- * TODO: Implement noise handling (here and/or in heuristics). When the
- * noise level in the examples is set to a certain percentage, we
- * compute the number of positive examples corresponding to this
- * percentage. This is the maximum number of positive examples, which
- * can be misclassified (everything above is considered a too weak
- * concept wrt. the noise percentage).
- *
* TODO: Solve subsumption problems. It is easy to implement approximate fast
* instance checks. However, subsumption is difficult to optimise. It should by
- * analysed whether it is reasonable to perform instance comparisions instead
- * of subsumption checks, e.g. a concept is only included in the search tree
- * when it covers strictly less examples than its parent. Note, that this does
- * not mean that concepts not bearing an advantage in classification are thrown
- * away. They are just handled like improper refinements. [TODO: How does this
+ * analysed whether it is reasonable to perform instance comparisions instead of
+ * subsumption checks, e.g. a concept is only included in the search tree when
+ * it covers strictly less examples than its parent. Note, that this does not
+ * mean that concepts not bearing an advantage in classification are thrown
+ * away. They are just handled like improper refinements. [TODO: How does this
* differ from not checking subsumption at all?]
*
* @author Jens Lehmann
- *
+ *
*/
public class ExampleBasedROLearner {
- private static Logger logger = Logger
- .getLogger(ExampleBasedROLearner.class);
-
-
+ private static Logger logger = Logger.getLogger(ExampleBasedROLearner.class);
+
// basic setup: learning problem and reasoning service
private ReasoningService rs;
// often the learning problems needn't be accessed directly; instead
@@ -95,17 +84,21 @@
private Set<Individual> positiveExamples;
private int nrOfNegativeExamples;
private Set<Individual> negativeExamples;
-
- // noise regulates how many positives can be misclassified and when the algorithm terminates
+
+ // noise regulates how many positives can be misclassified and when the
+ // algorithm terminates
private double noise = 0.0;
private int allowedMisclassifications = 0;
-
+
// positive only learning options:
- // if no negatives are given, then one possible strategy is to find a very special concept still entailing all positive examples;
- // this is realised by changing the termination criterion: a concept is a solution if it has been expanded x times (x is
- // configurable) but no more special concept is found (all are either equivalent or too weak)
+ // if no negatives are given, then one possible strategy is to find a very
+ // special concept still entailing all positive examples;
+ // this is realised by changing the termination criterion: a concept is a
+ // solution if it has been expanded x times (x is
+ // configurable) but no more special concept is found (all are either
+ // equivalent or too weak)
private int maxPosOnlyExpansion;
-
+
// search tree options
private boolean writeSearchTree;
private File searchTreeFile;
@@ -115,84 +108,85 @@
private boolean useTooWeakList = true;
private boolean useOverlyGeneralList = true;
private boolean useShortConceptConstruction = true;
-
- //extended Options
+
+ // extended Options
private long maxExecutionTimeInSeconds;
- private boolean maxExecutionTimeShown=false;
+ private boolean maxExecutionTimeShown = false;
private long minExecutionTimeInSeconds = 0;
- private boolean minExecutionTimeShown=false;
+ private boolean minExecutionTimeShown = false;
private int guaranteeXgoodDescriptions = 1;
- private boolean guaranteeXgoodShown=false;
-
+ 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
- // queries and a search bias towards ALL r.something because
+ // queries and a search bias towards ALL r.something because
// ALL r.TOP is improper and automatically expanded further
private boolean usePropernessChecks = false;
-
+
// tree traversal means to run through the most promising concepts
// and connect them in an intersection to find a solution
// (this is called irregularly e.g. every 100 seconds)
private boolean useTreeTraversal = false;
-
+
// candidate reduction: using this mechanism we can simulate
// the divide&conquer approach in many ILP programs using a
// clause by clause search; after a period of time the candidate
// set is reduced to focus CPU time on the most promising concepts
private boolean useCandidateReduction = true;
private int candidatePostReductionSize = 30;
-
+
// setting to true gracefully stops the algorithm
private boolean stop = false;
private boolean isRunning = false;
-
+
// node from which algorithm has started
- private ExampleBasedNode startNode;
-
+ private ExampleBasedNode startNode;
+
// solution protocol
private boolean solutionFound = false;
- private List<Description> solutions = new LinkedList<Description>();
-
+ private List<Description> solutions = new LinkedList<Description>();
+
// used refinement operator and heuristic (exchangeable)
private RhoDRDown operator;
-// private RefinementOperator operator;
+ // private RefinementOperator operator;
// private ExampleBasedHeuristic heuristic;
-
+
// specifies whether to compute and log benchmark information
private boolean computeBenchmarkInformation = false;
-
+
// comparator used to maintain a stable ordering of nodes, i.e.
// an ordering which does not change during the run of the algorithm
private NodeComparatorStable nodeComparatorStable = new NodeComparatorStable();
// stable candidate set; it has no functional part in the algorithm,
// but is a list of the currently best concepts found
- private TreeSet<ExampleBasedNode> candidatesStable = new TreeSet<ExampleBasedNode>(nodeComparatorStable);
-
+ private TreeSet<ExampleBasedNode> candidatesStable = new TreeSet<ExampleBasedNode>(
+ nodeComparatorStable);
+
// comparator used to create ordered sets of concepts
private ConceptComparator conceptComparator = new ConceptComparator();
// comparator for evaluated descriptions
private EvaluatedDescriptionComparator edComparator = new EvaluatedDescriptionComparator();
-
+
// utility variables
- private DecimalFormat df = new DecimalFormat();
-
- // candidates for refinement (used for directly accessing
+ private DecimalFormat df = new DecimalFormat();
+
+ // candidates for refinement (used for directly accessing
// nodes in the search tree)
private TreeSet<ExampleBasedNode> candidates;
-
+
// new nodes found during a run of the algorithm
private List<ExampleBasedNode> newCandidates = new LinkedList<ExampleBasedNode>();
-
+
// all concepts which have been evaluated as being proper refinements
private SortedSet<Description> properRefinements = new TreeSet<Description>(conceptComparator);
// blacklists
private SortedSet<Description> tooWeakList = new TreeSet<Description>(conceptComparator);
private SortedSet<Description> overlyGeneralList = new TreeSet<Description>(conceptComparator);
-
+
// set of expanded nodes (TODO: better explanation)
TreeSet<ExampleBasedNode> expandedNodes = new TreeSet<ExampleBasedNode>(nodeComparatorStable);
-
+
// statistic variables
private int maxRecDepth = 0;
private int maxNrOfRefinements = 0;
@@ -204,12 +198,12 @@
private int conceptTestsTooWeakList = 0;
private int conceptTestsOverlyGeneralList = 0;
private int conceptTestsReasoner = 0;
-
+
// time variables
private long runtime;
private long algorithmStartTime;
private long propernessCalcTimeNs = 0;
- private long propernessCalcReasoningTimeNs = 0;
+ private long propernessCalcReasoningTimeNs = 0;
private long childConceptsDeletionTimeNs = 0;
private long refinementCalcTimeNs = 0;
private long redundancyCheckTimeNs = 0;
@@ -218,31 +212,23 @@
// prefixes
private String baseURI;
- private Map<String,String> prefixes;
-
+ private Map<String, String> prefixes;
+
public ExampleBasedROLearner(
LearningProblem learningProblem,
ReasoningService rs,
- RefinementOperator operator,
+ RefinementOperator operator,
ExampleBasedHeuristic heuristic,
Description startDescription,
// Set<AtomicConcept> allowedConcepts,
- // Set<AtomicRole> allowedRoles,
- double noise,
- boolean writeSearchTree,
- boolean replaceSearchTree,
- File searchTreeFile,
- boolean useTooWeakList,
- boolean useOverlyGeneralList,
- boolean useShortConceptConstruction,
- boolean usePropernessChecks,
- int maxPosOnlyExpansion,
- int maxExecutionTimeInSeconds,
- int minExecutionTimeInSeconds,
- int guaranteeXgoodDescriptions
- ) {
-
- if(learningProblem instanceof PosNegLP) {
+ // Set<AtomicRole> allowedRoles,
+ double noise, boolean writeSearchTree, boolean replaceSearchTree, File searchTreeFile,
+ boolean useTooWeakList, boolean useOverlyGeneralList,
+ boolean useShortConceptConstruction, boolean usePropernessChecks,
+ int maxPosOnlyExpansion, int maxExecutionTimeInSeconds, int minExecutionTimeInSeconds,
+ int guaranteeXgoodDescriptions) {
+
+ if (learningProblem instanceof PosNegLP) {
PosNegLP lp = (PosNegLP) learningProblem;
this.learningProblem = lp;
posOnly = false;
@@ -250,19 +236,19 @@
negativeExamples = lp.getNegativeExamples();
nrOfPositiveExamples = positiveExamples.size();
nrOfNegativeExamples = negativeExamples.size();
-
-// System.out.println(nrOfPositiveExamples);
-// System.out.println(nrOfNegativeExamples);
-// System.exit(0);
-
- } else if(learningProblem instanceof PosOnlyDefinitionLP) {
+
+ // System.out.println(nrOfPositiveExamples);
+ // System.out.println(nrOfNegativeExamples);
+ // System.exit(0);
+
+ } else if (learningProblem instanceof PosOnlyDefinitionLP) {
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;
@@ -285,78 +271,93 @@
this.maxExecutionTimeInSeconds = maxExecutionTimeInSeconds;
this.minExecutionTimeInSeconds = minExecutionTimeInSeconds;
this.guaranteeXgoodDescriptions = guaranteeXgoodDescriptions;
-
-
-// logger.setLevel(Level.DEBUG);
+
+ // logger.setLevel(Level.DEBUG);
}
-
+
public void start() {
isRunning = true;
- runtime=System.currentTimeMillis();
- JamonMonitorLogger.getTimeMonitor(ExampleBasedROLComponent.class, "totalLearningTime").start();
- // TODO: write a JUnit test for this problem (long-lasting or infinite loops because
- // redundant children of a node are called recursively when a node is extended
+ runtime = System.currentTimeMillis();
+ JamonMonitorLogger.getTimeMonitor(ExampleBasedROLComponent.class, "totalLearningTime")
+ .start();
+ // TODO: write a JUnit test for this problem (long-lasting or infinite
+ // loops because
+ // redundant children of a node are called recursively when a node is
+ // extended
// twice)
/*
-// String conceptStr = "(\"http://dl-learner.org/carcinogenesis#Compound\" AND (>= 2 \"http://dl-learner.org/carcinogenesis#hasStructure\".\"http://dl-learner.org/carcinogenesis#Ar_halide\" OR ((\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS TRUE) AND >= 5 \"http://dl-learner.org/carcinogenesis#hasBond\". TOP)))";
-// String conceptStr = "(\"http://dl-learner.org/carcinogenesis#Compound\" AND ((\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS TRUE) AND (\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS TRUE)))";
- String conceptStr = "(\"http://dl-learner.org/carcinogenesis#Compound\" AND (>= 3 \"http://dl-learner.org/carcinogenesis#hasStructure\".\"http://dl-learner.org/carcinogenesis#Halide\" OR ((\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS TRUE) AND ALL \"http://dl-learner.org/carcinogenesis#hasAtom\".TOP)))";
- String conceptStr2 = "(\"http://dl-learner.org/carcinogenesis#Compound\" AND (>= 4 \"http://dl-learner.org/carcinogenesis#hasStructure\".\"http://dl-learner.org/carcinogenesis#Halide\" OR ((\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS TRUE) AND ALL \"http://dl-learner.org/carcinogenesis#hasAtom\".TOP)))";
- try {
- NamedClass struc = new NamedClass("http://dl-learner.org/carcinogenesis#Compound");
- Description d = KBParser.parseConcept(conceptStr);
- Description d2 = KBParser.parseConcept(conceptStr2);
-// SortedSet<Description> ds = (SortedSet<Description>) operator.refine(d,15,null,struc);
-// System.out.println(ds);
-
-// System.out.println(RhoDRDown.checkIntersection((Intersection)d));
-
-
- Set<Individual> coveredNegatives = rs.instanceCheck(d, learningProblem.getNegativeExamples());
- Set<Individual> coveredPositives = rs.instanceCheck(d, learningProblem.getPositiveExamples());
- ExampleBasedNode ebn = new ExampleBasedNode(d);
- ebn.setCoveredExamples(coveredPositives, coveredNegatives);
-
- properRefinements.add(d2);
- extendNodeProper(ebn,13);
- extendNodeProper(ebn,14);
- for(Description refinement: ebn.getChildConcepts())
- System.out.println("refinement: " + refinement);
-
- // Individual i = new Individual("http://dl-learner.org/carcinogenesis#d101");
-// for(Individual i : learningProblem.getPositiveExamples())
-// rs.instanceCheck(ds.last(), i);
-
- System.out.println("finished");
- } catch (ParseException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- System.exit(0);
- */
-
+ * // String conceptStr =
+ * "(\"http://dl-learner.org/carcinogenesis#Compound\" AND (>= 2
+ * \"http://dl-learner.org/carcinogenesis#hasStructure\".\"http://dl-learner.org/carcinogenesis#Ar_halide\"
+ * OR ((\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS
+ * TRUE) AND >= 5 \"http://dl-learner.org/carcinogenesis#hasBond\".
+ * TOP)))"; // String conceptStr =
+ * "(\"http://dl-learner.org/carcinogenesis#Compound\" AND
+ * ((\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS TRUE)
+ * AND (\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS
+ * TRUE)))"; String conceptStr =
+ * "(\"http://dl-learner.org/carcinogenesis#Compound\" AND (>= 3
+ * \"http://dl-learner.org/carcinogenesis#hasStructure\".\"http://dl-learner.org/carcinogenesis#Halide\"
+ * OR ((\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS
+ * TRUE) AND ALL
+ * \"http://dl-learner.org/carcinogenesis#hasAtom\".TOP)))"; String
+ * conceptStr2 = "(\"http://dl-learner.org/carcinogenesis#Compound\" AND
+ * (>= 4
+ * \"http://dl-learner.org/carcinogenesis#hasStructure\".\"http://dl-learner.org/carcinogenesis#Halide\"
+ * OR ((\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS
+ * TRUE) AND ALL
+ * \"http://dl-learner.org/carcinogenesis#hasAtom\".TOP)))"; try {
+ * NamedClass struc = new
+ * NamedClass("http://dl-learner.org/carcinogenesis#Compound");
+ * Description d = KBParser.parseConcept(conceptStr); Description d2 =
+ * KBParser.parseConcept(conceptStr2); // SortedSet<Description> ds =
+ * (SortedSet<Description>) operator.refine(d,15,null,struc); //
+ * System.out.println(ds);
+ * // System.out.println(RhoDRDown.checkIntersection((Intersection)d));
+ *
+ *
+ * Set<Individual> coveredNegatives = rs.instanceCheck(d,
+ * learningProblem.getNegativeExamples()); Set<Individual>
+ * coveredPositives = rs.instanceCheck(d,
+ * learningProblem.getPositiveExamples()); ExampleBasedNode ebn = new
+ * ExampleBasedNode(d); ebn.setCoveredExamples(coveredPositives,
+ * coveredNegatives);
+ *
+ * properRefinements.add(d2); extendNodeProper(ebn,13);
+ * extendNodeProper(ebn,14); for(Description refinement:
+ * ebn.getChildConcepts()) System.out.println("refinement: " +
+ * refinement);
+ * // Individual i = new
+ * Individual("http://dl-learner.org/carcinogenesis#d101"); //
+ * for(Individual i : learningProblem.getPositiveExamples()) //
+ * rs.instanceCheck(ds.last(), i);
+ *
+ * System.out.println("finished"); } catch (ParseException e) { // TODO
+ * Auto-generated catch block e.printStackTrace(); } System.exit(0);
+ */
+
// calculate quality threshold required for a solution
allowedMisclassifications = (int) Math.round(noise * nrOfExamples);
-
+
// start search with start class
- if(startDescription == null) {
+ if (startDescription == null) {
startNode = new ExampleBasedNode(Thing.instance);
startNode.setCoveredExamples(positiveExamples, negativeExamples);
} else {
startNode = new ExampleBasedNode(startDescription);
Set<Individual> coveredNegatives = rs.instanceCheck(startDescription, negativeExamples);
- Set<Individual> coveredPositives = rs.instanceCheck(startDescription, positiveExamples);
+ Set<Individual> coveredPositives = rs.instanceCheck(startDescription, positiveExamples);
startNode.setCoveredExamples(coveredPositives, coveredNegatives);
}
-
+
candidates.add(startNode);
- candidatesStable.add(startNode);
+ candidatesStable.add(startNode);
ExampleBasedNode bestNode = startNode;
ExampleBasedNode bestNodeStable = startNode;
int loop = 0;
-
+
algorithmStartTime = System.nanoTime();
long lastPrintTime = 0;
long lastTreeTraversalTime = System.nanoTime();
@@ -365,81 +366,86 @@
long traversalInterval = 300l * 1000000000l;
long reductionInterval = 500l * 1000000000l;
long currentTime;
-
- while(!solutionFound && !stop ) {
-
+
+ while (!solutionFound && !stop) {
+
// print statistics at most once a second
currentTime = System.nanoTime();
- if(currentTime - lastPrintTime > 3000000000l) {
+ if (currentTime - lastPrintTime > 3000000000l) {
printStatistics(false);
lastPrintTime = currentTime;
- logger.debug("--- loop " + loop + " started ---");
+ logger.debug("--- loop " + loop + " started ---");
}
-
+
// traverse the current search tree to find a solution
- if(useTreeTraversal && (currentTime - lastTreeTraversalTime > traversalInterval)) {
+ if (useTreeTraversal && (currentTime - lastTreeTraversalTime > traversalInterval)) {
traverseTree();
lastTreeTraversalTime = System.nanoTime();
}
-
+
// reduce candidates to focus on promising concepts
- if(useCandidateReduction && (currentTime - lastReductionTime > reductionInterval)) {
+ if (useCandidateReduction && (currentTime - lastReductionTime > reductionInterval)) {
reduceCandidates();
lastReductionTime = System.nanoTime();
-// Logger.getRootLogger().setLevel(Level.TRACE);
- }
-
-
-// System.out.println("next expanded: " + candidates.last().getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI));
-
+ // Logger.getRootLogger().setLevel(Level.TRACE);
+ }
+
+ // System.out.println("next expanded: " +
+ // candidates.last().getShortDescription(nrOfPositiveExamples,
+ // nrOfNegativeExamples, baseURI));
+
// we record when a more accurate node is found and log it
- if(bestNodeStable.getCovPosMinusCovNeg() < candidatesStable.last().getCovPosMinusCovNeg()) {
+ if (bestNodeStable.getCovPosMinusCovNeg() < candidatesStable.last()
+ .getCovPosMinusCovNeg()) {
logger.info("more accurate node found: " + candidatesStable.last());
bestNodeStable = candidatesStable.last();
}
-
+
// chose best node according to heuristics
bestNode = candidates.last();
- // extend best node
+ // extend best node
newCandidates.clear();
// best node is removed temporarily, because extending it can
// change its evaluation
candidates.remove(bestNode);
- extendNodeProper(bestNode, bestNode.getHorizontalExpansion()+1);
+ extendNodeProper(bestNode, bestNode.getHorizontalExpansion() + 1);
candidates.add(bestNode);
// newCandidates has been filled during node expansion
candidates.addAll(newCandidates);
- candidatesStable.addAll(newCandidates);
-
-
-// System.out.println("done");
-
- if(writeSearchTree) {
+ candidatesStable.addAll(newCandidates);
+
+ // System.out.println("done");
+
+ if (writeSearchTree) {
// String treeString = "";
- String treeString = "best node: " + bestNode+ "\n";
- if(expandedNodes.size()>1) {
+ String treeString = "best node: " + bestNode + "\n";
+ if (expandedNodes.size() > 1) {
treeString += "all expanded nodes:\n";
- for(ExampleBasedNode n : expandedNodes) {
+ for (ExampleBasedNode n : expandedNodes) {
treeString += " " + n + "\n";
}
}
expandedNodes.clear();
- treeString += startNode.getTreeString(nrOfPositiveExamples, nrOfNegativeExamples, baseURI);
+ treeString += startNode.getTreeString(nrOfPositiveExamples, nrOfNegativeExamples,
+ baseURI);
treeString += "\n";
- if(replaceSearchTree)
+ if (replaceSearchTree)
Files.createFile(searchTreeFile, treeString);
else
Files.appendFile(searchTreeFile, treeString);
}
-
- // special situation for positive only learning: the expanded node can become a solution (see explanations
+
+ // special situation for positive only learning: the expanded node
+ // can become a solution (see explanations
// for maxPosOnlyExpansion above)
- if(posOnly && bestNode.isPosOnlyCandidate() && (bestNode.getHorizontalExpansion() - bestNode.getConcept().getLength() >= maxPosOnlyExpansion)) {
-
+ if (posOnly
+ && bestNode.isPosOnlyCandidate()
+ && (bestNode.getHorizontalExpansion() - bestNode.getConcept().getLength() >= maxPosOnlyExpansion)) {
+
boolean solution = checkSubtreePosOnly(bestNode);
-
- if(solution) {
+
+ if (solution) {
solutions.add(bestNode.getConcept());
ExampleBasedNode bestChild = bestNode.getChildren().last();
System.out.println("solution: " + bestNode.getConcept());
@@ -447,37 +453,39 @@
System.out.println("best child of this node: " + bestChild);
System.out.println(bestNode.getChildConcepts());
System.out.println("TODO: needs to be integrated with other stopping criteria");
- System.out.println("You tried to use this algorithm for positive only learning, which is not recommended (yet).");
-// System.out.println("Exiting.");
-// System.exit(0);
+ System.out
+ .println("You tried to use this algorithm for positive only learning, which is not recommended (yet).");
+ // System.out.println("Exiting.");
+ // System.exit(0);
} else {
// tag as non-candidate so we do not need to search again
bestNode.setPosOnlyCandidate(false);
}
-
- }
-
+
+ }
+
// handle termination criteria
handleStoppingConditions();
-
+
// Anzahl Schleifendurchläufe
loop++;
- }//end while
-
-
-
- if(solutionFound ) {
+ }// end while
+
+ if (solutionFound) {
int solutionLimit = 20;
- logger.info("best node " + candidatesStable.last().getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI));
+ logger.info("best node "
+ + candidatesStable.last().getShortDescription(nrOfPositiveExamples,
+ nrOfNegativeExamples, baseURI));
logger.info("solutions (at most " + solutionLimit + " are shown):");
- 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() + ")");
- manchester+=show+": "+c.toManchesterSyntaxString(baseURI, prefixes)+"\n";
- kbSyntax+=show+": " + c.toKBSyntaxString()+"\n";
- if(show >= solutionLimit) {
+ 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() + ")");
+ manchester += show + ": " + c.toManchesterSyntaxString(baseURI, prefixes) + "\n";
+ kbSyntax += show + ": " + c.toKBSyntaxString() + "\n";
+ if (show >= solutionLimit) {
break;
}
show++;
@@ -485,344 +493,375 @@
logger.debug(manchester);
logger.debug(kbSyntax);
}
-
+
logger.debug("size of candidate set: " + candidates.size());
boolean showOrderedSolutions = false;
- printBestSolutions(20,showOrderedSolutions);
-
+ printBestSolutions(20, showOrderedSolutions);
+
printStatistics(true);
-
- if(stop)
+
+ if (stop)
logger.info("Algorithm stopped.");
else
- logger.info("Algorithm terminated succesfully.");
-
- JamonMonitorLogger.getTimeMonitor(ExampleBasedROLComponent.class, "totalLearningTime").stop();
+ logger.info("Algorithm terminated succesfully.");
+
+ JamonMonitorLogger.getTimeMonitor(ExampleBasedROLComponent.class, "totalLearningTime")
+ .stop();
isRunning = false;
}
-
-
-
+
// we apply the operator recursively until all proper refinements up
// to the maxmimum length are reached
private void extendNodeProper(ExampleBasedNode node, int maxLength) {
long propCalcNsStart = System.nanoTime();
-
- if(writeSearchTree)
+
+ if (writeSearchTree)
expandedNodes.add(node);
-
- if(node.getChildren().size()>maxNrOfChildren)
+
+ if (node.getChildren().size() > maxNrOfChildren)
maxNrOfChildren = node.getChildren().size();
-
+
extendNodeProper(node, node.getConcept(), maxLength, 0);
node.setHorizontalExpansion(maxLength);
-
- propernessCalcTimeNs += (System.nanoTime()-propCalcNsStart);
+
+ propernessCalcTimeNs += (System.nanoTime() - propCalcNsStart);
}
-
- // for all refinements of concept up to max length, we check whether they are properr
+
+ // for all refinements of concept up to max length, we check whether they
+ // are properr
// and call the method recursively if not
// recDepth is used only for statistics
- private void extendNodeProper(ExampleBasedNode node, Description concept, int maxLength, int recDepth) {
-
- // do not execute methods if algorithm has been stopped (this means that the algorithm
+ private void extendNodeProper(ExampleBasedNode node, Description concept, int maxLength,
+ int recDepth) {
+
+ // do not execute methods if algorithm has been stopped (this means that
+ // the algorithm
// will terminate without further reasoning queries)
- if(stop)
+ if (stop)
return;
-
- if(recDepth > maxRecDepth)
+
+ if (recDepth > maxRecDepth)
maxRecDepth = recDepth;
-
- // compute refinements => we must not delete refinements with low horizontal expansion,
+
+ // compute refinements => we must not delete refinements with low
+ // horizontal expansion,
// because they are used in recursive calls of this method later on
long refinementCalcTimeNsStart = System.nanoTime();
Set<Description> refinements = operator.refine(concept, maxLength, null);
refinementCalcTimeNs += System.nanoTime() - refinementCalcTimeNsStart;
-
- if(refinements.size()>maxNrOfRefinements)
+
+ if (refinements.size() > maxNrOfRefinements)
maxNrOfRefinements = refinements.size();
-
+
long childConceptsDeletionTimeNsStart = System.nanoTime();
- // entferne aus den refinements alle Konzepte, die bereits Kinder des Knotens sind
+ // entferne aus den refinements alle Konzepte, die bereits Kinder des
+ // Knotens sind
// for(Node n : node.getChildren()) {
- // refinements.remove(n.getConcept());
+ // refinements.remove(n.getConcept());
// }
-
- // das ist viel schneller, allerdings bekommt man ein anderes candidate set(??)
+
+ // das ist viel schneller, allerdings bekommt man ein anderes candidate
+ // set(??)
refinements.removeAll(node.getChildConcepts());
childConceptsDeletionTimeNs += System.nanoTime() - childConceptsDeletionTimeNsStart;
-
-// if(refinements.size()<30) {
-//// System.out.println("refinements: " + refinements);
-// for(Description refinement: refinements)
-// System.out.println("refinement: " + refinement);
-// }
-
+
+ // if(refinements.size()<30) {
+ // // System.out.println("refinements: " + refinements);
+ // for(Description refinement: refinements)
+ // System.out.println("refinement: " + refinement);
+ // }
+
long evaluateSetCreationTimeNsStart = System.nanoTime();
-
- // alle Konzepte, die länger als horizontal expansion sind, müssen ausgewertet
+
+ // alle Konzepte, die länger als horizontal expansion sind, müssen
+ // ausgewertet
// werden
TreeSet<Description> toEvaluateConcepts = new TreeSet<Description>(conceptComparator);
Iterator<Description> it = refinements.iterator();
// for(Concept refinement : refinements) {
- while(it.hasNext()) {
-
+ while (it.hasNext()) {
+
Description refinement = it.next();
- if(refinement.getLength()>node.getHorizontalExpansion()) {
+ if (refinement.getLength() > node.getHorizontalExpansion()) {
// sagt aus, ob festgestellt wurde, ob refinement proper ist
// (sagt nicht aus, dass das refinement proper ist!)
boolean propernessDetected = false;
-
+
// 1. short concept construction
- if(useShortConceptConstruction) {
+ if (useShortConceptConstruction) {
// kurzes Konzept konstruieren
- Description shortConcept = ConceptTransformation.getShortConcept(refinement, conceptComparator);
+ Description shortConcept = ConceptTransformation.getShortConcept(refinement,
+ conceptComparator);
int n = conceptComparator.compare(shortConcept, concept);
-
+
// Konzepte sind gleich also Refinement improper
- if(n==0) {
+ if (n == 0) {
propernessTestsAvoidedByShortConceptConstruction++;
propernessDetected = true;
-
-// System.out.println("refinement " + refinement + " can be shortened");
-// System.exit(0);
+
+ // System.out.println("refinement " + refinement + " can
+ // be shortened");
+ // System.exit(0);
}
}
-
+
// 2. too weak test
- if(!propernessDetected && useTooWeakList) {
- if(refinement instanceof Intersection) {
- boolean tooWeakElement = containsTooWeakElement((Intersection)refinement);
- if(tooWeakElement) {
+ if (!propernessDetected && useTooWeakList) {
+ if (refinement instanceof Intersection) {
+ boolean tooWeakElement = containsTooWeakElement((Intersection) refinement);
+ if (tooWeakElement) {
propernessTestsAvoidedByTooWeakList++;
conceptTestsTooWeakList++;
propernessDetected = true;
// tooWeakList.add(refinement);
-
- // Knoten wird direkt erzeugt (es ist buganfällig zwei Plätze
- // zu haben, an denen Knoten erzeugt werden, aber es erscheint
+
+ // Knoten wird direkt erzeugt (es ist buganfällig
+ // zwei Plätze
+ // zu haben, an denen Knoten erzeugt werden, aber es
+ // erscheint
// hier am sinnvollsten)
properRefinements.add(refinement);
tooWeakList.add(refinement);
-
+
ExampleBasedNode newNode = new ExampleBasedNode(refinement);
- newNode.setHorizontalExpansion(refinement.getLength()-1);
+ newNode.setHorizontalExpansion(refinement.getLength() - 1);
newNode.setTooWeak(true);
- newNode.setQualityEvaluationMethod(ExampleBasedNode.QualityEvaluationMethod.TOO_WEAK_LIST);
+ newNode
+ .setQualityEvaluationMethod(ExampleBasedNode.QualityEvaluationMethod.TOO_WEAK_LIST);
node.addChild(newNode);
-
+
// Refinement muss gelöscht werden, da es proper ist
it.remove();
}
}
}
-
+
// properness konnte nicht vorher ermittelt werden
- if(!propernessDetected) {
+ if (!propernessDetected) {
toEvaluateConcepts.add(refinement);
-// if(!res) {
-// System.out.println("already in: " + refinement);
-// Comparator comp = toEvaluateConcepts.comparator();
-// for(Description d : toEvaluateConcepts) {
-// if(comp.compare(d,refinement)==0)
-// System.out.println("see: " + d);
-// }
-// }
+ // if(!res) {
+ // System.out.println("already in: " + refinement);
+ // Comparator comp = toEvaluateConcepts.comparator();
+ // for(Description d : toEvaluateConcepts) {
+ // if(comp.compare(d,refinement)==0)
+ // System.out.println("see: " + d);
+ // }
+ // }
}
-
-
+
}
-
-// System.out.println("handled " + refinement + " length: " + refinement.getLength() + " (new size: " + toEvaluateConcepts.size() + ")");
-
+
+ // System.out.println("handled " + refinement + " length: " +
+ // refinement.getLength() + " (new size: " +
+ // toEvaluateConcepts.size() + ")");
+
}
evaluateSetCreationTimeNs += System.nanoTime() - evaluateSetCreationTimeNsStart;
-
-// System.out.println("intermediate 1 " + node.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI));
-
+
+ // System.out.println("intermediate 1 " +
+ // node.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples,
+ // baseURI));
+
// System.out.println(toEvaluateConcepts.size());
-
+
Set<Description> improperConcepts = null;
- if(toEvaluateConcepts.size()>0) {
+ if (toEvaluateConcepts.size() > 0) {
// Test aller Konzepte auf properness (mit DIG in nur einer Anfrage)
- if(usePropernessChecks) {
+ if (usePropernessChecks) {
long propCalcReasoningStart = System.nanoTime();
improperConcepts = rs.subsumes(toEvaluateConcepts, concept);
- propernessTestsReasoner+=toEvaluateConcepts.size();
- // boolean isProper = !learningProblem.getReasoningService().subsumes(refinement, concept);
+ propernessTestsReasoner += toEvaluateConcepts.size();
+ // boolean isProper =
+ // !learningProblem.getReasoningService().subsumes(refinement,
+ // concept);
propernessCalcReasoningTimeNs += System.nanoTime() - propCalcReasoningStart;
}
}
-// if(toEvaluateConcepts.size()<10)
-// System.out.println("to evaluate: " + toEvaluateConcepts);
-// else
-// System.out.println("to evaluate: more than 10");
-
+ // if(toEvaluateConcepts.size()<10)
+ // System.out.println("to evaluate: " + toEvaluateConcepts);
+ // else
+ // System.out.println("to evaluate: more than 10");
+
long improperConceptsRemovalTimeNsStart = System.nanoTime();
// die improper Konzepte werden von den auszuwertenden gelöscht, d.h.
// alle proper concepts bleiben übrig (einfache Umbenennung)
- if(improperConcepts != null)
+ if (improperConcepts != null)
toEvaluateConcepts.removeAll(improperConcepts);
Set<Description> properConcepts = toEvaluateConcepts;
// alle proper concepts von refinements löschen
refinements.removeAll(properConcepts);
improperConceptsRemovalTimeNs += System.nanoTime() - improperConceptsRemovalTimeNsStart;
-
-// if(refinements.size()<10)
-// System.out.println("refinements: " + refinements);
-// else
-// System.out.println("refinements: more than 10");
-//
-// System.out.println("improper concepts: " + improperConcepts);
-
- for(Description refinement : properConcepts) {
+
+ // if(refinements.size()<10)
+ // System.out.println("refinements: " + refinements);
+ // else
+ // System.out.println("refinements: more than 10");
+ //
+ // System.out.println("improper concepts: " + improperConcepts);
+
+ for (Description refinement : properConcepts) {
long redundancyCheckTimeNsStart = System.nanoTime();
boolean nonRedundant = properRefinements.add(refinement);
redundancyCheckTimeNs += System.nanoTime() - redundancyCheckTimeNsStart;
-
- if(!nonRedundant)
+
+ if (!nonRedundant)
redundantConcepts++;
-
+
// es wird nur ein neuer Knoten erzeugt, falls das Konzept nicht
// schon existiert
- if(nonRedundant) {
-
+ if (nonRedundant) {
+
// newly created node
ExampleBasedNode newNode = new ExampleBasedNode(refinement);
- // die -1 ist wichtig, da sonst keine gleich langen Refinements
+ // die -1 ist wichtig, da sonst keine gleich langen Refinements
// für den neuen Knoten erlaubt wären z.B. person => male
- newNode.setHorizontalExpansion(refinement.getLength()-1);
-
+ newNode.setHorizontalExpansion(refinement.getLength() - 1);
+
boolean qualityKnown = false;
int quality = -2;
-
+
// overly general list verwenden
- if(useOverlyGeneralList && refinement instanceof Union) {
- if(containsOverlyGeneralElement((Union)refinement)) {
+ 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
+ .setQualityEvaluationMethod(ExampleBasedNode.QualityEvaluationMethod.OVERLY_GENERAL_LIST);
newNode.setCoveredExamples(positiveExamples, negativeExamples);
- }
-
+ }
+
}
// Qualität des Knotens auswerten
- if(!qualityKnown) {
+ if (!qualityKnown) {
long propCalcReasoningStart2 = System.nanoTime();
conceptTestsReasoner++;
-
+
// quality = coveredNegativesOrTooWeak(refinement);
-
- // determine individuals which have not been covered yet (more efficient than full retrieval)
+
+ // determine individuals which have not been covered yet
+ // (more efficient than full retrieval)
Set<Individual> coveredPositives = node.getCoveredPositives();
Set<Individual> newlyCoveredPositives = new HashSet<Individual>();
-
+
// calculate how many pos. examples are not covered by the
// parent node of the refinement
int misclassifiedPositives = nrOfPositiveExamples - coveredPositives.size();
-
- // iterate through all covered examples (examples which are not
- // covered do not need to be tested, because they remain uncovered);
- // DIG will be slow if we send each reasoner request individually
- // (however if we send everything in one request, too many instance checks
+
+ // iterate through all covered examples (examples which are
+ // not
+ // covered do not need to be tested, because they remain
+ // uncovered);
+ // DIG will be slow if we send each reasoner request
+ // individually
+ // (however if we send everything in one request, too many
+ // instance checks
// are performed => rely on fast instance checker)
- for(Individual i : coveredPositives) {
+ for (Individual i : coveredPositives) {
// TODO: move code to a separate function
- if(quality != -1) {
+ if (quality != -1) {
boolean covered = rs.instanceCheck(refinement, i);
- if(!covered)
+ if (!covered)
misclassifiedPositives++;
else
newlyCoveredPositives.add(i);
-
- if(misclassifiedPositives > allowedMisclassifications)
+
+ if (misclassifiedPositives > allowedMisclassifications)
quality = -1;
-
+
}
}
-
+
Set<Individual> newlyCoveredNegatives = null;
- if(quality != -1) {
+ if (quality != -1) {
Set<Individual> coveredNegatives = node.getCoveredNegatives();
newlyCoveredNegatives = new HashSet<Individual>();
-
- for(Individual i : coveredNegatives) {
+
+ for (Individual i : coveredNegatives) {
boolean covered = rs.instanceCheck(refinement, i);
- if(covered)
+ if (covered)
newlyCoveredNegatives.add(i);
}
}
-
+
propernessCalcReasoningTimeNs += System.nanoTime() - propCalcReasoningStart2;
- newNode.setQualityEvaluationMethod(ExampleBasedNode.QualityEvaluationMethod.REASONER);
- if(quality != -1) {
- // quality is the number of misclassifications (if it is not too weak)
+ newNode
+ .setQualityEvaluationMethod(ExampleBasedNode.QualityEvaluationMethod.REASONER);
+ if (quality != -1) {
+ // quality is the number of misclassifications (if it is
+ // not too weak)
quality = (nrOfPositiveExamples - newlyCoveredPositives.size())
- + newlyCoveredNegatives.size();
+ + newlyCoveredNegatives.size();
newNode.setCoveredExamples(newlyCoveredPositives, newlyCoveredNegatives);
}
}
- if(quality == -1) {
+ if (quality == -1) {
newNode.setTooWeak(true);
// Blacklist für too weak concepts
tooWeakList.add(refinement);
} else {
// Lösung gefunden
- if(quality >= 0 && quality<=allowedMisclassifications && !posOnly) {
+ if (quality >= 0 && quality <= allowedMisclassifications && !posOnly) {
solutionFound = true;
solutions.add(refinement);
- }
-
+ }
newCandidates.add(newNode);
-
+
// we need to make sure that all positives are covered
// before adding something to the overly general list
- if((newNode.getCoveredPositives().size() == nrOfPositiveExamples) && quality == nrOfNegativeExamples)
+ if ((newNode.getCoveredPositives().size() == nrOfPositiveExamples)
+ && quality == nrOfNegativeExamples)
overlyGeneralList.add(refinement);
-
+
}
-
-// System.out.println(newNode.getConcept() + " " + quality);
+
+ // System.out.println(newNode.getConcept() + " " + quality);
node.addChild(newNode);
- }
+ }
}
-
+
// es sind jetzt noch alle Konzepte übrig, die improper refinements sind
- // auf jedem dieser Konzepte wird die Funktion erneut aufgerufen, da sich
+ // auf jedem dieser Konzepte wird die Funktion erneut aufgerufen, da
+ // sich
// proper refinements ergeben könnten
- for(Description refinement : refinements) {
+ for (Description refinement : refinements) {
// for(int i=0; i<=recDepth; i++)
- // System.out.print(" ");
-// System.out.println("call: " + refinement + " [maxLength " + maxLength + ", rec depth " + recDepth + "]");
-
- // check for redundancy (otherwise we may run into very time-intensive loops,
+ // System.out.print(" ");
+ // System.out.println("call: " + refinement + " [maxLength " +
+ // maxLength + ", rec depth " + recDepth + "]");
+
+ // check for redundancy (otherwise we may run into very
+ // time-intensive loops,
// see planned JUnit test case $x)
-
+
long redundancyCheckTimeNsStart = System.nanoTime();
boolean redundant = properRefinements.contains(refinement);
redundancyCheckTimeNs += System.nanoTime() - redundancyCheckTimeNsStart;
-
- if(!redundant)
- extendNodeProper(node, refinement, maxLength, recDepth+1);
+
+ if (!redundant)
+ extendNodeProper(node, refinement, maxLength, recDepth + 1);
// for(int i=0; i<=recDepth; i++)
- // System.out.print(" ");
- // System.out.println("finished: " + refinement + " [maxLength " + maxLength + "]");
-// System.exit(0);
+ // System.out.print(" ");
+ // System.out.println("finished: " + refinement + " [maxLength " +
+ // maxLength + "]");
+ // System.exit(0);
}
}
-
+
private void printStatistics(boolean finalStats) {
- // TODO: viele Tests haben ergeben, dass man nie 100% mit der Zeitmessung abdecken
- // kann (zum einen weil Stringausgabe verzögert erfolgt und zum anderen weil
- // Funktionsaufrufe, garbage collection, Zeitmessung selbst auch Zeit benötigt);
+ // TODO: viele Tests haben ergeben, dass man nie 100% mit der
+ // Zeitmessung abdecken
+ // kann (zum einen weil Stringausgabe verzögert erfolgt und zum anderen
+ // weil
+ // Funktionsaufrufe, garbage collection, Zeitmessung selbst auch Zeit
+ // benötigt);
// es empfiehlt sich folgendes Vorgehen:
// - Messung der Zeit eines Loops im Algorithmus
// - Messung der Zeit für alle node extensions innerhalb eines Loops
@@ -831,181 +870,232 @@
// ... momentan kann es aber auch erstmal so lassen
long algorithmRuntime = System.nanoTime() - algorithmStartTime;
-
- if(!finalStats) {
-
+
+ if (!finalStats) {
+
ExampleBasedNode bestNode = candidatesStable.last();
-// double accuracy = 100 * ((bestNode.getCoveredPositives().size()
-// + nrOfNegativeExamples - bestNode.getCoveredNegatives().size())/(double)nrOfExamples);
+ // double accuracy = 100 * ((bestNode.getCoveredPositives().size()
+ // + nrOfNegativeExamples -
+ // bestNode.getCoveredNegatives().size())/(double)nrOfExamples);
// Refinementoperator auf Konzept anwenden
-// String bestNodeString = "currently best node: " + bestNode + " accuracy: " + df.format(accuracy) + "%";
- logger.debug("start node: " + startNode.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI));
- String bestNodeString = "currently best node: " + bestNode.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI);
- String bestNodeStringKBSyntax = "currently best node KBSyntax: " + bestNode.getConcept().toKBSyntaxString();
-
+ // String bestNodeString = "currently best node: " + bestNode + "
+ // accuracy: " + df.format(accuracy) + "%";
+ logger.debug("start node: "
+ + startNode.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples,
+ baseURI));
+ String bestNodeString = "currently best node: "
+ + bestNode.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples,
+ baseURI);
+ String bestNodeStringKBSyntax = "currently best node KBSyntax: "
+ + bestNode.getConcept().toKBSyntaxString();
+
// searchTree += bestNodeString + "\n";
logger.debug(bestNodeString);
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);
+ 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);
+ logger.debug(expandedNodeString);
logger.debug("algorithm runtime " + Helper.prettyPrintNanoSeconds(algorithmRuntime));
logger.debug("size of candidate set: " + candidates.size());
- // System.out.println("properness max recursion depth: " + maxRecDepth);
- // System.out.println("max. number of one-step refinements: " + maxNrOfRefinements);
- // System.out.println("max. number of children of a node: " + maxNrOfChildren);
- logger.debug("subsumption time: " + Helper.prettyPrintNanoSeconds(rs.getSubsumptionReasoningTimeNs()));
- logger.debug("instance check time: " + Helper.prettyPrintNanoSeconds(rs.getInstanceCheckReasoningTimeNs()));
- logger.debug("retrieval time: " + Helper.prettyPrintNanoSeconds(rs.getRetrievalReasoningTimeNs()));
+ // System.out.println("properness max recursion depth: " +
+ // maxRecDepth);
+ // System.out.println("max. number of one-step refinements: " +
+ // maxNrOfRefinements);
+ // System.out.println("max. number of children of a node: " +
+ // maxNrOfChildren);
+ logger.debug("subsumption time: "
+ + Helper.prettyPrintNanoSeconds(rs.getSubsumptionReasoningTimeNs()));
+ logger.debug("instance check time: "
+ + Helper.prettyPrintNanoSeconds(rs.getInstanceCheckReasoningTimeNs()));
+ logger.debug("retrieval time: "
+ + Helper.prettyPrintNanoSeconds(rs.getRetrievalReasoningTimeNs()));
}
-
- if(computeBenchmarkInformation) {
-
+
+ if (computeBenchmarkInformation) {
+
long reasoningTime = rs.getOverallReasoningTimeNs();
- double reasoningPercentage = 100 * reasoningTime/(double)algorithmRuntime;
- long propWithoutReasoning = propernessCalcTimeNs-propernessCalcReasoningTimeNs;
- double propPercentage = 100 * propWithoutReasoning/(double)algorithmRuntime;
- double deletionPercentage = 100 * childConceptsDeletionTimeNs/(double)algorithmRuntime;
+ double reasoningPercentage = 100 * reasoningTime / (double) algorithmRuntime;
+ long propWithoutReasoning = propernessCalcTimeNs - propernessCalcReasoningTimeNs;
+ double propPercentage = 100 * propWithoutReasoning / (double) algorithmRuntime;
+ double deletionPercentage = 100 * childConceptsDeletionTimeNs
+ / (double) algorithmRuntime;
long subTime = rs.getSubsumptionReasoningTimeNs();
- double subPercentage = 100 * subTime/(double)algorithmRuntime;
- double refinementPercentage = 100 * refinementCalcTimeNs/(double)algorithmRuntime;
- double redundancyCheckPercentage = 100 * redundancyCheckTimeNs/(double)algorithmRuntime;
- double evaluateSetCreationTimePercentage = 100 * evaluateSetCreationTimeNs/(double)algorithmRuntime;
- double improperConceptsRemovalTimePercentage = 100 * improperConceptsRemovalTimeNs/(double)algorithmRuntime;
- double mComputationTimePercentage = 100 * operator.mComputationTimeNs/(double)algorithmRuntime;
- double topComputationTimePercentage = 100 * operator.topComputationTimeNs/(double)algorithmRuntime;
- double cleanTimePercentage = 100 * ConceptTransformation.cleaningTimeNs/(double)algorithmRuntime;
- double onnfTimePercentage = 100 * ConceptTransformation.onnfTimeNs/(double)algorithmRuntime;
- double shorteningTimePercentage = 100 * ConceptTransformation.shorteningTimeNs/(double)algorithmRuntime;
-
+ double subPercentage = 100 * subTime / (double) algorithmRuntime;
+ double refinementPercentage = 100 * refinementCalcTimeNs / (double) algorithmRuntime;
+ double redundancyCheckPercentage = 100 * redundancyCheckTimeNs
+ / (double) algorithmRuntime;
+ double evaluateSetCreationTimePercentage = 100 * evaluateSetCreationTimeNs
+ / (double) algorithmRuntime;
+ double improperConceptsRemovalTimePercentage = 100 * improperConceptsRemovalTimeNs
+ / (double) algorithmRuntime;
+ double mComputationTimePercentage = 100 * operator.mComputationTimeNs
+ / (double) algorithmRuntime;
+ double topComputationTimePercentage = 100 * operator.topComputationTimeNs
+ / (double) algorithmRuntime;
+ double cleanTimePercentage = 100 * ConceptTransformation.cleaningTimeNs
+ / (double) algorithmRuntime;
+ double onnfTimePercentage = 100 * ConceptTransformation.onnfTimeNs
+ / (double) algorithmRuntime;
+ double shorteningTimePercentage = 100 * ConceptTransformation.shorteningTimeNs
+ / (double) algorithmRuntime;
+
logger.debug("reasoning percentage: " + df.format(reasoningPercentage) + "%");
- logger.debug(" subsumption check time: " + df.format(subPercentage) + "%");
- logger.debug("proper calculation percentage (wo. reasoning): " + df.format(propPercentage) + "%");
+ logger.debug(" subsumption check time: " + df.format(subPercentage) + "%");
+ logger.debug("proper calculation percentage (wo. reasoning): "
+ + df.format(propPercentage) + "%");
logger.debug(" deletion time percentage: " + df.format(deletionPercentage) + "%");
- logger.debug(" refinement calculation percentage: " + df.format(refinementPercentage) + "%");
- logger.debug(" m calculation percentage: " + df.format(mComputationTimePercentage) + "%");
- logger.debug(" top calculation percentage: " + df.format(topComputationTimePercentage) + "%");
- logger.debug(" redundancy check percentage: " + df.format(redundancyCheckPercentage) + "%");
- logger.debug(" evaluate set creation time percentage: " + df.format(evaluateSetCreationTimePercentage) + "%");
- logger.debug(" improper concepts removal time percentage: " + df.format(improperConceptsRemovalTimePercentage) + "%");
+ logger.debug(" refinement calculation percentage: " + df.format(refinementPercentage)
+ + "%");
+ logger.debug(" m calculation percentage: " + df.format(mComputationTimePercentage)
+ + "%");
+ logger.debug(" top calculation percentage: "
+ + df.format(topComputationTimePercentage) + "%");
+ logger.debug(" redundancy check percentage: " + df.format(redundancyCheckPercentage)
+ + "%");
+ logger.debug(" evaluate set creation time percentage: "
+ + df.format(evaluateSetCreationTimePercentage) + "%");
+ logger.debug(" improper concepts removal time percentage: "
+ + df.format(improperConceptsRemovalTimePercentage) + "%");
logger.debug("clean time percentage: " + df.format(cleanTimePercentage) + "%");
logger.debug("onnf time percentage: " + df.format(onnfTimePercentage) + "%");
- logger.debug("shortening time percentage: " + df.format(shorteningTimePercentage) + "%");
+ logger
+ .debug("shortening time percentage: " + df.format(shorteningTimePercentage)
+ + "%");
}
-
- logger.debug("properness tests (reasoner/short concept/too weak list): " + propernessTestsReasoner + "/" + propernessTestsAvoidedByShortConceptConstruction
+
+ logger.debug("properness tests (reasoner/short concept/too weak list): "
+ + propernessTestsReasoner + "/" + propernessTestsAvoidedByShortConceptConstruction
+ "/" + propernessTestsAvoidedByTooWeakList);
- logger.debug("concept tests (reasoner/too weak list/overly general list/redundant concepts): " + conceptTestsReasoner + "/"
- + conceptTestsTooWeakList + "/" + conceptTestsOverlyGeneralList + "/" + redundantConcepts);
+ logger
+ .debug("concept tests (reasoner/too weak list/overly general list/redundant concepts): "
+ + conceptTestsReasoner
+ + "/"
+ + conceptTestsTooWeakList
+ + "/"
+ + conceptTestsOverlyGeneralList + "/" + redundantConcepts);
}
-
-// @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();
-// }
-
+
+ // @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 boolean containsTooWeakElement(Intersection mc) {
- for(Description child : mc.getChildren()) {
- if(tooWeakList.contains(child))
+ for (Description child : mc.getChildren()) {
+ if (tooWeakList.contains(child))
return true;
}
return false;
}
-
+
private boolean containsOverlyGeneralElement(Union md) {
- for(Description child : md.getChildren()) {
- if(overlyGeneralList.contains(child))
+ for (Description child : md.getChildren()) {
+ if (overlyGeneralList.contains(child))
return true;
}
return false;
- }
-
+ }
+
// TODO: investigate whether it makes sense not to store all individuals
// in the nodes, but instead perform instance checks in tree traversal
// (it is only run in large intervals so it shouldn't be too expensive)
private void traverseTree() {
-// ExampleBasedNode startNode = candidatesStable.last();
+ // ExampleBasedNode startNode = candidatesStable.last();
ExampleBasedNode startNode = findBestTraversalStartNode();
Description currentDescription = startNode.getConcept();
Set<Individual> currentCoveredPos = startNode.getCoveredPositives();
Set<Individual> currentCoveredNeg = startNode.getCoveredNegatives();
double currentAccuracy = startNode.getAccuracy(nrOfPositiveExamples, nrOfNegativeExamples);
- int currentMisclassifications = nrOfPositiveExamples - currentCoveredPos.size() + currentCoveredNeg.size();
- logger.debug("tree traversal start node " + startNode.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI));
+ int currentMisclassifications = nrOfPositiveExamples - currentCoveredPos.size()
+ + currentCoveredNeg.size();
+ logger.debug("tree traversal start node "
+ + startNode
+ .getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI));
logger.debug("tree traversal start accuracy: " + currentAccuracy);
- int i=0;
+ int i = 0;
// start from the most promising nodes
NavigableSet<ExampleBasedNode> reverseView = candidatesStable.descendingSet();
- for(ExampleBasedNode currNode : reverseView) {
+ for (ExampleBasedNode currNode : reverseView) {
// compute covered positives and negatives
SortedSet<Individual> newCoveredPositives = new TreeSet<Individual>(currentCoveredPos);
newCoveredPositives.retainAll(currNode.getCoveredPositives());
SortedSet<Individual> newCoveredNegatives = new TreeSet<Individual>(currentCoveredNeg);
newCoveredNegatives.retainAll(currNode.getCoveredNegatives());
-
+
// compute the accuracy we would get by adding this node
- double accuracy = (newCoveredPositives.size() + nrOfNegativeExamples - newCoveredNegatives.size())/(double)(nrOfPositiveExamples+nrOfNegativeExamples);
- int misclassifications = nrOfPositiveExamples - newCoveredPositives.size() + newCoveredNegatives.size();
+ double accuracy = (newCoveredPositives.size() + nrOfNegativeExamples - newCoveredNegatives
+ .size())
+ / (double) (nrOfPositiveExamples + nrOfNegativeExamples);
+ int misclassifications = nrOfPositiveExamples - newCoveredPositives.size()
+ + newCoveredNegatives.size();
int misclassifiedPositives = nrOfPositiveExamples - newCoveredPositives.size();
-
+
int lostPositives = currentCoveredPos.size() - newCoveredPositives.size();
-
- // TODO: maybe we should also consider a minimum improvement when adding something
- // otherwise we could overfit
- // we ...
[truncated message content] |
|
From: <ku...@us...> - 2008-08-20 14:37:21
|
Revision: 1109
http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1109&view=rev
Author: kurzum
Date: 2008-08-20 14:37:13 +0000 (Wed, 20 Aug 2008)
Log Message:
-----------
Modified Paths:
--------------
trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java
trunk/src/dl-learner/org/dllearner/scripts/WikipediaCategoryCleaner.java
trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java
trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java
Added Paths:
-----------
trunk/src/dl-learner/org/dllearner/test/TestGetExampleBug.java
Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java 2008-08-20 14:22:56 UTC (rev 1108)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java 2008-08-20 14:37:13 UTC (rev 1109)
@@ -122,9 +122,14 @@
@Override
public SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri){
+ int tmp = recursionDepth;
+ recursionDepth=4;
+ SortedSet<RDFNodeTuple> tmpSet = retrieveTupel(uri);
+ recursionDepth = tmp;
+ return tmpSet;
//getQuery
- String sparqlQueryString = sparqlQueryMaker.makeSubjectQueryUsingFilters(uri);
- return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, PREDICATE, OBJECT);
+ //String sparqlQueryString = sparqlQueryMaker.makeSubjectQueryUsingFilters(uri);
+ //return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, PREDICATE, OBJECT);
}
Modified: trunk/src/dl-learner/org/dllearner/scripts/WikipediaCategoryCleaner.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/scripts/WikipediaCategoryCleaner.java 2008-08-20 14:22:56 UTC (rev 1108)
+++ trunk/src/dl-learner/org/dllearner/scripts/WikipediaCategoryCleaner.java 2008-08-20 14:37:13 UTC (rev 1109)
@@ -223,8 +223,8 @@
lsc.sparqlEndpoint = sparqlTasks.getSparqlEndpoint();
lsc.recursiondepth = 1;
- lsc.noisePercentage = 15;
- lsc.guaranteeXgoodDescriptions = 200;
+ lsc.noisePercentage = 20;
+ lsc.guaranteeXgoodDescriptions = 100;
lsc.maxExecutionTimeInSeconds = 50;
lsc.logLevel = "TRACE";
// lsc.searchTreeFile = "log/WikipediaCleaner.txt";
Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-08-20 14:22:56 UTC (rev 1108)
+++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-08-20 14:37:13 UTC (rev 1109)
@@ -681,15 +681,28 @@
@WebMethod
public String[] getNegativeExamples(int sessionID, int componentID,String[] positives, int results, String namespace) throws ClientNotKnownException
{
- SortedSet<String> set = new TreeSet<String>(Arrays.asList(positives));
+ int sparqlResultSetLimit = 500;
+ SortedSet<String> positiveSet = new TreeSet<String>(Arrays.asList(positives));
ClientState state = getState(sessionID);
Component component = state.getComponent(componentID);
SparqlKnowledgeSource ks=(SparqlKnowledgeSource)component;
SPARQLTasks task=ks.getSPARQLTasks();
- AutomaticNegativeExampleFinderSPARQL finder=new AutomaticNegativeExampleFinderSPARQL(set,task);
- //finder.makeNegativeExamplesFromRelatedInstances(set, namespace);
- finder.makeNegativeExamplesFromParallelClasses(set, 25);
+ AutomaticNegativeExampleFinderSPARQL finder=new AutomaticNegativeExampleFinderSPARQL(positiveSet,task);
+
+ finder.makeNegativeExamplesFromParallelClasses(positiveSet, sparqlResultSetLimit);
SortedSet<String> negExamples=finder.getNegativeExamples(results);
+ if(negExamples.isEmpty()){
+ finder.makeNegativeExamplesFromRelatedInstances(positiveSet, namespace);
+ negExamples = finder.getNegativeExamples(results);
+ if(negExamples.isEmpty()){
+ finder.makeNegativeExamplesFromSuperClassesOfInstances(positiveSet, sparqlResultSetLimit);
+ negExamples = finder.getNegativeExamples(results);
+ if(negExamples.isEmpty()) {
+ finder.makeNegativeExamplesFromRandomInstances();
+ negExamples = finder.getNegativeExamples(results);
+ }
+ }
+ }
return negExamples.toArray(new String[negExamples.size()]);
}
Added: trunk/src/dl-learner/org/dllearner/test/TestGetExampleBug.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/test/TestGetExampleBug.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/test/TestGetExampleBug.java 2008-08-20 14:37:13 UTC (rev 1109)
@@ -0,0 +1,86 @@
+package org.dllearner.test;
+
+import java.net.URL;
+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.SPARQLTasks;
+import org.dllearner.kb.sparql.SparqlEndpoint;
+import org.dllearner.utilities.examples.AutomaticNegativeExampleFinderSPARQL;
+
+public class TestGetExampleBug {
+
+ /**
+ * @param args
+ */
+ public static void main(String[] args) {
+ Logger logger = Logger.getRootLogger();
+ SimpleLayout layout = new SimpleLayout();
+ ConsoleAppender consoleAppender = new ConsoleAppender(layout);
+ logger.removeAllAppenders();
+ logger.addAppender(consoleAppender);
+ logger.setLevel(Level.TRACE);
+ //Logger.getLogger(SparqlQuery.class).setLevel(Level.DEBUG);
+
+ try {
+ String OntowikiUrl="http://localhost/ontowiki-0.8.5/service/sparql";
+
+ String posExamples = "http://3ba.se/conferences/FMILeipzig";
+ SortedSet<String> positiveSet = new TreeSet<String>();
+ positiveSet.add(posExamples);
+ SPARQLTasks st = new SPARQLTasks(new SparqlEndpoint(new URL(OntowikiUrl)));
+ AutomaticNegativeExampleFinderSPARQL ane =
+ new AutomaticNegativeExampleFinderSPARQL(positiveSet,st);
+ SortedSet<String> negExamples = new TreeSet<String>();
+ int results=100;
+ if(negExamples.isEmpty()){
+ //ane.makeNegativeExamplesFromRelatedInstances(positiveSet, "http://3ba.se/conferences/");
+ negExamples = ane.getNegativeExamples(results);
+ if(negExamples.isEmpty()){
+ ane.makeNegativeExamplesFromSuperClassesOfInstances(positiveSet, 500);
+ negExamples = ane.getNegativeExamples(results);
+ if(negExamples.isEmpty()) {
+ ane.makeNegativeExamplesFromRandomInstances();
+ negExamples = ane.getNegativeExamples(results);
+ }
+ }
+ }
+
+ System.out.println(ane.getNegativeExamples(100));
+ }catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ /*$negExamples=$client->getNegativeExamples($id,$ksID,$posExamples,count($posExamples),"http://localhost/ontowiki/service/sparql");
+ $negExamples=$negExamples->item;
+ $client->setLearningProblem($id, "posNegDefinition");
+ $client->setPositiveExamples($id, $posExamples);
+ $client->setNegativeExamples($id, $negExamples);
+
+// choose refinement operator approach
+ $client->setLearningAlgorithm($id, "refexamples");
+// you can add the following to apply a config option to a component, e.g. ignore a concept
+// $client->applyConfigEntryStringArray($id, $la_id, "ignoredConcepts", array('http://example.com/father#male'));
+
+ $client->initAll($id);
+
+// learn concept
+ echo 'start learning ... ';
+// get only concept
+// $concept = $client->learn($id, "manchester");
+// get concept and additional information in JSON syntax
+ $concept = $client->learnDescriptionsEvaluated($id, 5);
+ echo 'OK <br />';
+ echo 'solution: <pre>' . $concept . '</pre>';
+
+ ?>*/
+
+
+
+ }
+
+}
Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java 2008-08-20 14:22:56 UTC (rev 1108)
+++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java 2008-08-20 14:37:13 UTC (rev 1109)
@@ -19,6 +19,7 @@
*/
package org.dllearner.utilities.examples;
+import java.util.Iterator;
import java.util.SortedSet;
import java.util.TreeSet;
@@ -26,6 +27,7 @@
import org.dllearner.core.ComponentManager;
import org.dllearner.kb.sparql.SPARQLTasks;
import org.dllearner.utilities.datastructures.SetManipulation;
+import org.dllearner.utilities.owl.OWLVocabulary;
public class AutomaticNegativeExampleFinderSPARQL {
@@ -40,6 +42,7 @@
private SortedSet<String> fromRelated = new TreeSet<String>();
private SortedSet<String> fromSuperclasses = new TreeSet<String>();;
private SortedSet<String> fromParallelClasses = new TreeSet<String>();;
+ private SortedSet<String> fromRandom = new TreeSet<String>();;
private SortedSet<String> fromDomain = new TreeSet<String>();;
private SortedSet<String> fromRange = new TreeSet<String>();;
@@ -68,16 +71,20 @@
/**
* aggregates all collected neg examples
+ * CAVE: it is necessary to call one of the make functions before calling this
+ *
* @param neglimit size of negative Example set
* @param stable decides whether neg Examples are randomly picked, default false, faster for developing, since the cache can be used
* @return
*/
public SortedSet<String> getNegativeExamples(int neglimit, boolean stable ) {
-
SortedSet<String> negatives = new TreeSet<String>();
negatives.addAll(fromParallelClasses);
negatives.addAll(fromRelated);
negatives.addAll(fromSuperclasses);
+ if(negatives.isEmpty()) {
+ negatives.addAll(fromRandom);
+ }
logger.debug("neg Example size before shrinking: " + negatives.size());
if (stable) {
negatives = SetManipulation.stableShrink(negatives,neglimit);
@@ -90,6 +97,18 @@
}
+ public void makeNegativeExamplesFromRandomInstances() {
+ logger.debug("making random examples ");
+ String variable = "subject";
+ String sparqlQueryString="SELECT ?"+variable+" WHERE {" +
+ "?"+variable+" <" +OWLVocabulary.RDF_TYPE+">" + " ?o" +
+ "}";
+
+ fromRandom = sparqltasks.queryAsSet(sparqlQueryString, variable);
+ fromRandom.removeAll(fullPositiveSet);
+ logger.debug("|-negExample size from related: " + fromRelated.size());
+ }
+
/**
* makes neg ex from related instances, that take part in a role R(pos,neg)
* filters all objects, that don't use the given namespace
@@ -173,23 +192,48 @@
}
+
+
/**
+ * it gets the first class of an arbitrary instance and queries the superclasses of it,
+ * could be more elaborate.
+ * It is better to use makeNegativeExamplesFromSuperClasses
+ * @param positiveSet
+ * @param sparqlResultSetLimit
+ */
+ public void makeNegativeExamplesFromSuperClassesOfInstances(SortedSet<String> positiveSet,
+ int sparqlResultSetLimit) {
+ SortedSet<String> classes = new TreeSet<String>();
+ Iterator<String> instanceIter = positiveSet.iterator();
+ while(classes.isEmpty() && instanceIter.hasNext()) {
+ classes.addAll(sparqltasks.getClassesForInstance(instanceIter.next(), sparqlResultSetLimit));
+
+ }
+ makeNegativeExamplesFromSuperClasses(classes.first(), sparqlResultSetLimit);
+ }
+
+
+ public void makeNegativeExamplesFromSuperClasses(String concept, int sparqlResultSetLimit) {
+ makeNegativeExamplesFromSuperClasses( concept, sparqlResultSetLimit, 2);
+ }
+
+ /**
* if pos ex derive from one class, then neg ex are taken from a superclass
* @param concept
- * @param resultLimit
+ * @param sparqlResultSetLimit
*/
- public void makeNegativeExamplesFromSuperClasses(String concept, int resultLimit) {
+ public void makeNegativeExamplesFromSuperClasses(String concept, int sparqlResultSetLimit, int depth) {
concept = concept.replaceAll("\"", "");
// superClasses.add(concept.replace("\"", ""));
// logger.debug("before"+superClasses);
- SortedSet<String> superClasses = sparqltasks.getSuperClasses(concept, 4);
+ SortedSet<String> superClasses = sparqltasks.getSuperClasses(concept, depth);
logger.debug("making neg Examples from " + superClasses.size() + " superclasses");
for (String oneSuperClass : superClasses) {
logger.debug(oneSuperClass);
fromSuperclasses.addAll(sparqltasks.retrieveInstancesForClassDescription("\""
- + oneSuperClass + "\"", resultLimit));
+ + oneSuperClass + "\"", sparqlResultSetLimit));
}
this.fromSuperclasses.removeAll(fullPositiveSet);
@@ -197,17 +241,17 @@
}
@SuppressWarnings("unused")
- private void makeNegativeExamplesFromDomain(String role, int resultLimit){
+ private void makeNegativeExamplesFromDomain(String role, int sparqlResultSetLimit){
logger.debug("making Negative Examples from Domain of : "+role);
- fromDomain.addAll(sparqltasks.getDomainInstances(role, resultLimit));
+ fromDomain.addAll(sparqltasks.getDomainInstances(role, sparqlResultSetLimit));
fromDomain.removeAll(fullPositiveSet);
logger.debug("|-neg Example size from Domain: "+this.fromDomain.size());
}
@SuppressWarnings("unused")
- private void makeNegativeExamplesFromRange(String role, int resultLimit){
+ private void makeNegativeExamplesFromRange(String role, int sparqlResultSetLimit){
logger.debug("making Negative Examples from Range of : "+role);
- fromRange.addAll(sparqltasks.getRangeInstances(role, resultLimit));
+ fromRange.addAll(sparqltasks.getRangeInstances(role, sparqlResultSetLimit));
fromRange.removeAll(fullPositiveSet);
logger.debug("|-neg Example size from Range: "+fromRange.size());
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ku...@us...> - 2008-08-20 16:30:03
|
Revision: 1111
http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1111&view=rev
Author: kurzum
Date: 2008-08-20 16:29:59 +0000 (Wed, 20 Aug 2008)
Log Message:
-----------
changed back to old tupelaquisitor
Modified Paths:
--------------
trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java
trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-08-20 15:32:29 UTC (rev 1110)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-08-20 16:29:59 UTC (rev 1111)
@@ -47,7 +47,6 @@
import org.dllearner.core.config.StringTupleListConfigOption;
import org.dllearner.core.owl.KB;
import org.dllearner.kb.aquisitors.SparqlTupelAquisitor;
-import org.dllearner.kb.aquisitors.SparqlTupelAquisitorImproved;
import org.dllearner.kb.aquisitors.TupelAquisitor;
import org.dllearner.kb.extraction.Configuration;
import org.dllearner.kb.extraction.Manager;
@@ -411,8 +410,8 @@
public TupelAquisitor getTupelAquisitor()
{
- //return new SparqlTupelAquisitor(getSparqlQueryMaker(), getSPARQLTasks());
- return new SparqlTupelAquisitorImproved(getSparqlQueryMaker(), getSPARQLTasks(),recursionDepth);
+ return new SparqlTupelAquisitor(getSparqlQueryMaker(), getSPARQLTasks());
+ //return new SparqlTupelAquisitorImproved(getSparqlQueryMaker(), getSPARQLTasks(),recursionDepth);
}
/* (non-Javadoc)
Modified: trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java 2008-08-20 15:32:29 UTC (rev 1110)
+++ trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java 2008-08-20 16:29:59 UTC (rev 1111)
@@ -24,6 +24,7 @@
public static final String RDF_TYPE = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
public static final String RDFS_SUBCLASS_OF = "http://www.w3.org/2000/01/rdf-schema#subClassOf";
+ public static final String RDFS_CLASS = "http://www.w3.org/2000/01/rdf-schema#Class";
public static final String OWL_SAME_AS = "http://www.w3.org/2002/07/owl#sameAs";
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ku...@us...> - 2008-08-20 17:01:33
|
Revision: 1112
http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1112&view=rev
Author: kurzum
Date: 2008-08-20 17:01:28 +0000 (Wed, 20 Aug 2008)
Log Message:
-----------
some improvements still buggy
Modified Paths:
--------------
trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java
trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java
trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java
Added Paths:
-----------
trunk/src/dl-learner/org/dllearner/kb/manipulator/ObjectReplacementRule.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/PredicateReplacementRule.java
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-08-20 16:29:59 UTC (rev 1111)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-08-20 17:01:28 UTC (rev 1112)
@@ -40,6 +40,7 @@
*/
public class Manipulator {
+ @SuppressWarnings("unused")
private static Logger logger = Logger.getLogger(Manipulator.class);
private List<Rule> rules = new ArrayList<Rule>();
@@ -70,11 +71,13 @@
public static Manipulator getManipulatorByName(String predefinedManipulator)
- {
- if (predefinedManipulator.equalsIgnoreCase("DBPEDIA-NAVIGATOR")) {
+ { if (predefinedManipulator == null) {
+ return getDefaultManipulator();
+ }else if (predefinedManipulator.equalsIgnoreCase("DBPEDIA-NAVIGATOR")) {
return getDBpediaNavigatorManipulator();
- } else if(predefinedManipulator.equalsIgnoreCase("DEFAULT")){
+ } else if(predefinedManipulator.equalsIgnoreCase("DEFAULT")
+ ||predefinedManipulator.equalsIgnoreCase("STANDARD")){
return getDefaultManipulator();
}
else {
@@ -121,6 +124,7 @@
addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_CLASS,ClassNode.class )) ;
addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_THING,InstanceNode.class )) ;
addRule(new TypeFilterRule(month, "", OWLVocabulary.OWL_CLASS, ClassNode.class) ) ;
+ addRule(new TypeFilterRule(month, "", OWLVocabulary.RDFS_CLASS, ClassNode.class) ) ;
}
Added: trunk/src/dl-learner/org/dllearner/kb/manipulator/ObjectReplacementRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/ObjectReplacementRule.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/ObjectReplacementRule.java 2008-08-20 17:01:28 UTC (rev 1112)
@@ -0,0 +1,60 @@
+/**
+ * Copyright (C) 2007-2008, Jens Lehmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.manipulator;
+
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import org.dllearner.kb.extraction.Node;
+import org.dllearner.utilities.JamonMonitorLogger;
+import org.dllearner.utilities.datastructures.RDFNodeTuple;
+
+import com.hp.hpl.jena.rdf.model.impl.ResourceImpl;
+
+public class ObjectReplacementRule extends Rule{
+
+ String oldObject;
+ String newObject;
+
+
+ public ObjectReplacementRule(Months month, String oldObject, String newObject) {
+ super(month);
+ this.oldObject = oldObject;
+ this.newObject = newObject;
+ }
+
+
+ @Override
+ public SortedSet<RDFNodeTuple> applyRule(Node subject, SortedSet<RDFNodeTuple> tuples){
+ SortedSet<RDFNodeTuple> keep = new TreeSet<RDFNodeTuple>();
+ for (RDFNodeTuple tuple : tuples) {
+ if(tuple.aPartContains(oldObject)){
+ tuple.a = new ResourceImpl(newObject);
+ JamonMonitorLogger.increaseCount(ObjectReplacementRule.class, "replacedObjects");
+ }
+ keep.add(tuple);
+ }
+ return keep;
+ }
+
+
+
+
+}
Added: trunk/src/dl-learner/org/dllearner/kb/manipulator/PredicateReplacementRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/PredicateReplacementRule.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/PredicateReplacementRule.java 2008-08-20 17:01:28 UTC (rev 1112)
@@ -0,0 +1,60 @@
+/**
+ * Copyright (C) 2007-2008, Jens Lehmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.manipulator;
+
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import org.dllearner.kb.extraction.Node;
+import org.dllearner.utilities.JamonMonitorLogger;
+import org.dllearner.utilities.datastructures.RDFNodeTuple;
+
+import com.hp.hpl.jena.rdf.model.impl.ResourceImpl;
+
+public class PredicateReplacementRule extends Rule{
+
+ String oldPredicate;
+ String newPredicate;
+
+
+ public PredicateReplacementRule(Months month, String oldPredicate, String newPredicate) {
+ super(month);
+ this.oldPredicate = oldPredicate;
+ this.newPredicate = newPredicate;
+ }
+
+
+ @Override
+ public SortedSet<RDFNodeTuple> applyRule(Node subject, SortedSet<RDFNodeTuple> tuples){
+ SortedSet<RDFNodeTuple> keep = new TreeSet<RDFNodeTuple>();
+ for (RDFNodeTuple tuple : tuples) {
+ if(tuple.aPartContains(oldPredicate)){
+ tuple.a = new ResourceImpl(newPredicate);
+ JamonMonitorLogger.increaseCount(PredicateReplacementRule.class, "replacedPredicates");
+ }
+ keep.add(tuple);
+ }
+ return keep;
+ }
+
+
+
+
+}
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-08-20 16:29:59 UTC (rev 1111)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-08-20 17:01:28 UTC (rev 1112)
@@ -60,7 +60,7 @@
if(!remove){
keep.add(tuple);
}else{
- JamonMonitorLogger.increaseCount(TypeFilterRule.class, "filteredTriples");
+ JamonMonitorLogger.increaseCount(TypeFilterRule.class, "filteredTriples");
}
}
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-08-20 16:29:59 UTC (rev 1111)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-08-20 17:01:28 UTC (rev 1112)
@@ -261,8 +261,9 @@
query.setRunning(false);
SparqlQuery.writeToSparqlLog("***********\nJSON retrieved from cache");
+ SparqlQuery.writeToSparqlLog("wget -S -O - '\n"+query.getSparqlEndpoint().getHTTPRequest());
SparqlQuery.writeToSparqlLog(query.getSparqlQueryString());
- SparqlQuery.writeToSparqlLog(query.getSparqlEndpoint().getURL().toString());
+
//SparqlQuery.writeToSparqlLog("JSON: "+result);
JamonMonitorLogger.increaseCount(Cache.class, "SuccessfulHits");
@@ -280,7 +281,7 @@
json="";
result="";
logger.warn(Cache.class.getSimpleName()+"empty result: "+query.getSparqlQueryString());
- SparqlQuery.writeToSparqlLog("empty result for : "+query.getSparqlQueryString());
+
}
//return json;
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java 2008-08-20 16:29:59 UTC (rev 1111)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java 2008-08-20 17:01:28 UTC (rev 1112)
@@ -52,6 +52,13 @@
public URL getURL() {
return this.url;
}
+
+ public String getHTTPRequest() {
+ String ret = this.url.toString()+"/sparql?";
+ ret += (defaultGraphURIs.isEmpty())?"":"default-graph-uri="+defaultGraphURIs.remove(0)+"&";
+ ret += "query=";
+ return ret;
+ }
public List<String> getDefaultGraphURIs() {
return defaultGraphURIs;
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-08-20 16:29:59 UTC (rev 1111)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-08-20 17:01:28 UTC (rev 1112)
@@ -51,6 +51,9 @@
import org.dllearner.kb.extraction.Configuration;
import org.dllearner.kb.extraction.Manager;
import org.dllearner.kb.manipulator.Manipulator;
+import org.dllearner.kb.manipulator.ObjectReplacementRule;
+import org.dllearner.kb.manipulator.PredicateReplacementRule;
+import org.dllearner.kb.manipulator.Rule.Months;
import org.dllearner.parser.KBParser;
import org.dllearner.reasoning.DIGConverter;
import org.dllearner.reasoning.JenaOWLDIGConverter;
@@ -78,7 +81,7 @@
private int recursionDepth = recursionDepthDefault;
private String predefinedFilter = null;
private String predefinedEndpoint = null;
- private String predefinedManipulator = "STANDARD";
+ private String predefinedManipulator = null;
private SortedSet<String> predList = new TreeSet<String>();
private SortedSet<String> objList = new TreeSet<String>();
// private Set<String> classList;
@@ -279,7 +282,7 @@
Manager m = new Manager();
// get Options for Manipulator
- Manipulator manipulator = Manipulator.getManipulatorByName(predefinedManipulator);
+ Manipulator manipulator = getManipulator();
//manipulator.addRule(newRule);
Configuration configuration = new Configuration(
getTupelAquisitor(),
@@ -407,7 +410,26 @@
}
+ public Manipulator getManipulator()
+ {
+ // get Options for Filters
+ if (predefinedManipulator == null) {
+ return Manipulator.getManipulatorByName(predefinedManipulator);
+
+ } else {
+ Manipulator m = Manipulator.getDefaultManipulator();
+ for (StringTuple st : replacePredicate) {
+ m.addRule(new PredicateReplacementRule(Months.MAY, st.a,st.b));
+ }
+ for (StringTuple st : replaceObject) {
+ m.addRule(new ObjectReplacementRule(Months.MAY, st.a,st.b));
+ }
+ return m;
+ }
+
+ }
+
public TupelAquisitor getTupelAquisitor()
{
return new SparqlTupelAquisitor(getSparqlQueryMaker(), getSPARQLTasks());
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-08-20 16:29:59 UTC (rev 1111)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-08-20 17:01:28 UTC (rev 1112)
@@ -88,8 +88,9 @@
String service = sparqlEndpoint.getURL().toString();
writeToSparqlLog("***********\nNew Query:");
+ SparqlQuery.writeToSparqlLog("wget -S -O - '\n"+sparqlEndpoint.getHTTPRequest());
writeToSparqlLog(sparqlQueryString);
- writeToSparqlLog(service);
+
logger.trace("making queryExecution Object");
@@ -127,15 +128,12 @@
logger.warn("Exception in SparqlQuery\n"+ e.toString());
logger.warn("query was "+ sparqlQueryString);
writeToSparqlLog("ERROR: HTTPException occured"+ e.toString());
- writeToSparqlLog("ERROR: query was: "+sparqlQueryString);
throw e;
}catch (RuntimeException e) {
//if (!(e instanceof HTTPException)) {
logger.warn("RuntimeException in SparqlQuery"+ e.toString());
writeToSparqlLog("ERROR: HTTPException occured"+ e.toString());
- writeToSparqlLog("ERROR: query was: "+sparqlQueryString);
- writeToSparqlLog("wget -S -O test.txt '"+service+"?query="+sparqlQueryString+"'");
//}
throw e;
}
Modified: trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-08-20 16:29:59 UTC (rev 1111)
+++ trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-08-20 17:01:28 UTC (rev 1112)
@@ -35,7 +35,6 @@
import org.dllearner.kb.sparql.SparqlQueryMaker;
import org.dllearner.scripts.NT2RDF;
import org.dllearner.utilities.JamonMonitorLogger;
-import org.dllearner.utilities.statistics.SimpleClock;
/**
* Test class, uses the whole thing
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ku...@us...> - 2008-08-21 11:59:55
|
Revision: 1119
http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1119&view=rev
Author: kurzum
Date: 2008-08-21 11:59:44 +0000 (Thu, 21 Aug 2008)
Log Message:
-----------
some changes
Modified Paths:
--------------
trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java
trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java
trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java
trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java
trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java
trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java
trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java
trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java
trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java
Added Paths:
-----------
trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupleAquisitor.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitorImproved.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupleAquisitor.java
Removed Paths:
-------------
trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java
Deleted: trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java 2008-08-21 11:06:07 UTC (rev 1118)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java 2008-08-21 11:59:44 UTC (rev 1119)
@@ -1,64 +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.kb.aquisitors;
-
-import java.util.SortedSet;
-
-import org.apache.log4j.Logger;
-import org.dllearner.kb.extraction.Configuration;
-import org.dllearner.utilities.datastructures.RDFNodeTuple;
-
-/**
- * Can execute different queries.
- *
- * @author Sebastian Hellmann
- *
- */
-public class LinkedDataTupelAquisitor extends TupelAquisitor {
-
- @SuppressWarnings("unused")
- private static Logger logger = Logger.getLogger(LinkedDataTupelAquisitor.class);
- @SuppressWarnings("unused")
- private Configuration configuration;
-
-
- public LinkedDataTupelAquisitor(Configuration configuration) {
- this.configuration = configuration;
- }
-
- // standard query get a tupels (p,o) for subject s
- @Override
- public SortedSet<RDFNodeTuple> retrieveTupel(String uri){
- throw new RuntimeException("Not Implemented yet");
- }
- @Override
- public SortedSet<RDFNodeTuple> retrieveClassesForInstances(String uri){
- throw new RuntimeException("Not Implemented yet");
- }
- @Override
- public SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri){
- throw new RuntimeException("Not Implemented yet");
- }
-
-
-
-
-
-}
Copied: trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupleAquisitor.java (from rev 1118, trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java)
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupleAquisitor.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupleAquisitor.java 2008-08-21 11:59:44 UTC (rev 1119)
@@ -0,0 +1,64 @@
+/**
+ * Copyright (C) 2007-2008, Jens Lehmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.aquisitors;
+
+import java.util.SortedSet;
+
+import org.apache.log4j.Logger;
+import org.dllearner.kb.extraction.Configuration;
+import org.dllearner.utilities.datastructures.RDFNodeTuple;
+
+/**
+ * Can execute different queries.
+ *
+ * @author Sebastian Hellmann
+ *
+ */
+public class LinkedDataTupleAquisitor extends TupleAquisitor {
+
+ @SuppressWarnings("unused")
+ private static Logger logger = Logger.getLogger(LinkedDataTupleAquisitor.class);
+ @SuppressWarnings("unused")
+ private Configuration configuration;
+
+
+ public LinkedDataTupleAquisitor(Configuration configuration) {
+ this.configuration = configuration;
+ }
+
+ // standard query get a tupels (p,o) for subject s
+ @Override
+ public SortedSet<RDFNodeTuple> retrieveTupel(String uri){
+ throw new RuntimeException("Not Implemented yet");
+ }
+ @Override
+ public SortedSet<RDFNodeTuple> retrieveClassesForInstances(String uri){
+ throw new RuntimeException("Not Implemented yet");
+ }
+ @Override
+ public SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri){
+ throw new RuntimeException("Not Implemented yet");
+ }
+
+
+
+
+
+}
Property changes on: trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupleAquisitor.java
___________________________________________________________________
Added: svn:mergeinfo
+
Deleted: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java 2008-08-21 11:06:07 UTC (rev 1118)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java 2008-08-21 11:59:44 UTC (rev 1119)
@@ -1,81 +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.kb.aquisitors;
-
-import java.util.SortedSet;
-
-import org.apache.log4j.Logger;
-import org.dllearner.kb.sparql.SPARQLTasks;
-import org.dllearner.kb.sparql.SparqlQueryMaker;
-import org.dllearner.utilities.datastructures.RDFNodeTuple;
-
-/**
- * Can execute different queries.
- *
- * @author Sebastian Hellmann
- *
- */
-public class SparqlTupelAquisitor extends TupelAquisitor {
-
-
- @SuppressWarnings("unused")
- private static Logger logger = Logger.getLogger(SparqlTupelAquisitor.class);
- protected static final String PREDICATE = "predicate";
- protected static final String OBJECT = "object";
-
- protected SparqlQueryMaker sparqlQueryMaker;
- protected SPARQLTasks sparqlTasks;
-
-
-
- public SparqlTupelAquisitor(SparqlQueryMaker sparqlQueryMaker, SPARQLTasks sparqlTasks) {
-
- this.sparqlQueryMaker = sparqlQueryMaker;
- this.sparqlTasks = sparqlTasks;
- }
-
- @Override
- public SortedSet<RDFNodeTuple> retrieveTupel(String uri){
- // getQuery
- String sparqlQueryString = sparqlQueryMaker.makeSubjectQueryUsingFilters(uri);
- return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, PREDICATE, OBJECT);
-
- }
- @Override
- public SortedSet<RDFNodeTuple> retrieveClassesForInstances(String uri){
- // getQuery
- String sparqlQueryString = sparqlQueryMaker.makeClassQueryUsingFilters(uri);
- return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, PREDICATE, OBJECT);
-
- }
- @Override
- public SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri){
- return retrieveTupel(uri);
- }
-
-
-
-
-
-
-
-
-
-}
Deleted: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java 2008-08-21 11:06:07 UTC (rev 1118)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java 2008-08-21 11:59:44 UTC (rev 1119)
@@ -1,149 +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.kb.aquisitors;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.apache.log4j.Logger;
-import org.dllearner.kb.sparql.SPARQLTasks;
-import org.dllearner.kb.sparql.SparqlQueryMaker;
-import org.dllearner.utilities.datastructures.RDFNodeTuple;
-
-import com.hp.hpl.jena.query.ResultSetFormatter;
-import com.hp.hpl.jena.rdf.model.RDFNode;
-import com.hp.hpl.jena.sparql.core.ResultBinding;
-import com.hp.hpl.jena.sparql.resultset.ResultSetRewindable;
-
-/**
- * Can execute different queries.
- *
- * @author Sebastian Hellmann
- *
- */
-public class SparqlTupelAquisitorImproved extends SparqlTupelAquisitor {
-
- @SuppressWarnings("unused")
- private static Logger logger = Logger.getLogger(SparqlTupelAquisitorImproved.class);
- private Map<String,SortedSet<RDFNodeTuple>> resources = new HashMap<String, SortedSet<RDFNodeTuple>>();
- int recursionDepth;
-
-
- public SparqlTupelAquisitorImproved(SparqlQueryMaker sparqlQueryMaker, SPARQLTasks sparqlTasks, int recursionDepth) {
- super(sparqlQueryMaker, sparqlTasks);
- this.recursionDepth = recursionDepth;
-
- }
-
- @Override
- public SortedSet<RDFNodeTuple> retrieveTupel(String uri){
-
- SortedSet<RDFNodeTuple> cachedSet = resources.get(uri);
- if(cachedSet!=null) {
- return cachedSet;
- }
-
- //SortedSet<RDFNodeTuple> tmp = new TreeSet<RDFNodeTuple>();
- String sparqlQueryString = sparqlQueryMaker.makeSubjectQueryLevel(uri, recursionDepth);
- //System.out.println(sparqlQueryString);
- ResultSetRewindable rsw=null;
- try{
- rsw = sparqlTasks.queryAsResultSet(sparqlQueryString);
- }catch (Exception e) {
- return super.retrieveTupel(uri);
- }
- @SuppressWarnings("unchecked")
- List<ResultBinding> l = ResultSetFormatter.toList(rsw);
- rsw.reset();
-
-
-
- int resultsetcount = 0;
- int i = 0;
- for (ResultBinding binding : l) {
- i = 0;
- RDFNode nextOBJ = binding.get(OBJECT+i);
- RDFNode nextPRED = binding.get(PREDICATE+i);
- RDFNodeTuple tmptuple = new RDFNodeTuple(nextPRED, nextOBJ );
- add(uri,tmptuple);
-
- boolean cont = !nextOBJ.isLiteral();
- for (i=0; (i < recursionDepth) && cont; i++) {
- RDFNode tmpPREDURI = binding.get(PREDICATE+i);
- RDFNode tmpOBJURI = binding.get(OBJECT+i);
- if(tmpOBJURI==null) {
- cont=false;
- }else if (tmpOBJURI.isLiteral()) {
- tmptuple = new RDFNodeTuple(tmpPREDURI, tmpOBJURI );
- add(nextOBJ.toString(), tmptuple);
- //logger.trace(tmptuple);
- //logger.trace("For: "+nextOBJ.toString()+ " added :"+resources.get(nextOBJ.toString()));
- cont=false;
- }else {
- tmptuple = new RDFNodeTuple(tmpPREDURI, tmpOBJURI );
- add(nextOBJ.toString(), tmptuple);
- //logger.trace(tmptuple);
- //logger.trace("For: "+nextOBJ.toString()+ " added :"+resources.get(nextOBJ.toString()));
- nextOBJ = tmpOBJURI;
- cont = true;
- }
- }//end for
-
- resultsetcount++;
- }
-
- //System.out.println("original count "+count);
- //logger.warn("SparqlTupelAquisitor retrieved : "+resultsetcount);
- if(resultsetcount>999) {
- logger.warn("SparqlTupelAquisitor retrieved more than 1000 results, there might some be missing");
- }
- return ((cachedSet=resources.get(uri))==null)?new TreeSet<RDFNodeTuple>():cachedSet;
- }
-
- @Override
- public SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri){
- int tmp = recursionDepth;
- recursionDepth=4;
- SortedSet<RDFNodeTuple> tmpSet = retrieveTupel(uri);
- recursionDepth = tmp;
- return tmpSet;
- //getQuery
- //String sparqlQueryString = sparqlQueryMaker.makeSubjectQueryUsingFilters(uri);
- //return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, PREDICATE, OBJECT);
- }
-
-
- private void add(String uri, RDFNodeTuple tuple){
- SortedSet<RDFNodeTuple> set = resources.get(uri);
- if(set==null){
- set = new TreeSet<RDFNodeTuple>();
- set.add(tuple);
- resources.put(uri, set );
- }else {
- set.add(tuple);
- }
- }
-
-
-
-}
Copied: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java (from rev 1118, trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java)
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java 2008-08-21 11:59:44 UTC (rev 1119)
@@ -0,0 +1,81 @@
+/**
+ * Copyright (C) 2007-2008, Jens Lehmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.aquisitors;
+
+import java.util.SortedSet;
+
+import org.apache.log4j.Logger;
+import org.dllearner.kb.sparql.SPARQLTasks;
+import org.dllearner.kb.sparql.SparqlQueryMaker;
+import org.dllearner.utilities.datastructures.RDFNodeTuple;
+
+/**
+ * Can execute different queries.
+ *
+ * @author Sebastian Hellmann
+ *
+ */
+public class SparqlTupleAquisitor extends TupleAquisitor {
+
+
+ @SuppressWarnings("unused")
+ private static Logger logger = Logger.getLogger(SparqlTupleAquisitor.class);
+ protected static final String PREDICATE = "predicate";
+ protected static final String OBJECT = "object";
+
+ protected SparqlQueryMaker sparqlQueryMaker;
+ protected SPARQLTasks sparqlTasks;
+
+
+
+ public SparqlTupleAquisitor(SparqlQueryMaker sparqlQueryMaker, SPARQLTasks sparqlTasks) {
+
+ this.sparqlQueryMaker = sparqlQueryMaker;
+ this.sparqlTasks = sparqlTasks;
+ }
+
+ @Override
+ public SortedSet<RDFNodeTuple> retrieveTupel(String uri){
+ // getQuery
+ String sparqlQueryString = sparqlQueryMaker.makeSubjectQueryUsingFilters(uri);
+ return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, PREDICATE, OBJECT);
+
+ }
+ @Override
+ public SortedSet<RDFNodeTuple> retrieveClassesForInstances(String uri){
+ // getQuery
+ String sparqlQueryString = sparqlQueryMaker.makeClassQueryUsingFilters(uri);
+ return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, PREDICATE, OBJECT);
+
+ }
+ @Override
+ public SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri){
+ return retrieveTupel(uri);
+ }
+
+
+
+
+
+
+
+
+
+}
Copied: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitorImproved.java (from rev 1118, trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java)
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitorImproved.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitorImproved.java 2008-08-21 11:59:44 UTC (rev 1119)
@@ -0,0 +1,156 @@
+/**
+ * Copyright (C) 2007-2008, Jens Lehmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.aquisitors;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import org.apache.log4j.Logger;
+import org.dllearner.kb.sparql.SPARQLTasks;
+import org.dllearner.kb.sparql.SparqlQueryMaker;
+import org.dllearner.utilities.datastructures.RDFNodeTuple;
+
+import com.hp.hpl.jena.query.ResultSetFormatter;
+import com.hp.hpl.jena.rdf.model.RDFNode;
+import com.hp.hpl.jena.sparql.core.ResultBinding;
+import com.hp.hpl.jena.sparql.resultset.ResultSetRewindable;
+
+/**
+ * Can execute different queries.
+ *
+ * @author Sebastian Hellmann
+ *
+ */
+public class SparqlTupleAquisitorImproved extends SparqlTupleAquisitor {
+
+ @SuppressWarnings("unused")
+ private static Logger logger = Logger.getLogger(SparqlTupleAquisitorImproved.class);
+ private Map<String,SortedSet<RDFNodeTuple>> resources = new HashMap<String, SortedSet<RDFNodeTuple>>();
+ int recursionDepth;
+
+
+ public SparqlTupleAquisitorImproved(SparqlQueryMaker sparqlQueryMaker, SPARQLTasks sparqlTasks, int recursionDepth) {
+ super(sparqlQueryMaker, sparqlTasks);
+ this.recursionDepth = recursionDepth;
+
+ }
+
+ @Override
+ public SortedSet<RDFNodeTuple> retrieveTupel(String uri){
+
+ SortedSet<RDFNodeTuple> cachedSet = resources.get(uri);
+ if(cachedSet!=null) {
+ return cachedSet;
+ }
+
+ //SortedSet<RDFNodeTuple> tmp = new TreeSet<RDFNodeTuple>();
+ String sparqlQueryString = sparqlQueryMaker.makeSubjectQueryLevel(uri, recursionDepth);
+ //System.out.println(sparqlQueryString);
+ ResultSetRewindable rsw=null;
+ try{
+ rsw = sparqlTasks.queryAsResultSet(sparqlQueryString);
+ }catch (Exception e) {
+ return super.retrieveTupel(uri);
+ }
+ @SuppressWarnings("unchecked")
+ List<ResultBinding> l = ResultSetFormatter.toList(rsw);
+ rsw.reset();
+
+
+
+ int resultsetcount = 0;
+ int i = 0;
+ for (ResultBinding binding : l) {
+ i = 0;
+ RDFNode nextOBJ = binding.get(OBJECT+i);
+ RDFNode nextPRED = binding.get(PREDICATE+i);
+ RDFNodeTuple tmptuple = new RDFNodeTuple(nextPRED, nextOBJ );
+ add(uri,tmptuple);
+
+ boolean cont = !nextOBJ.isLiteral();
+ for (i=0; (i < recursionDepth) && cont; i++) {
+ RDFNode tmpPREDURI = binding.get(PREDICATE+i);
+ RDFNode tmpOBJURI = binding.get(OBJECT+i);
+ if(tmpOBJURI==null) {
+ cont=false;
+ }else if (tmpOBJURI.isLiteral()) {
+ tmptuple = new RDFNodeTuple(tmpPREDURI, tmpOBJURI );
+ add(nextOBJ.toString(), tmptuple);
+ //logger.trace(tmptuple);
+ //logger.trace("For: "+nextOBJ.toString()+ " added :"+resources.get(nextOBJ.toString()));
+ cont=false;
+ }else {
+ tmptuple = new RDFNodeTuple(tmpPREDURI, tmpOBJURI );
+ add(nextOBJ.toString(), tmptuple);
+ //logger.trace(tmptuple);
+ //logger.trace("For: "+nextOBJ.toString()+ " added :"+resources.get(nextOBJ.toString()));
+ nextOBJ = tmpOBJURI;
+ cont = true;
+ }
+ }//end for
+
+ resultsetcount++;
+ }
+
+ //System.out.println("original count "+count);
+ //logger.warn("SparqlTupelAquisitor retrieved : "+resultsetcount);
+ if(resultsetcount>999) {
+ logger.warn("SparqlTupelAquisitor retrieved more than 1000 results, there might some be missing");
+ }
+ return ((cachedSet=resources.get(uri))==null)?new TreeSet<RDFNodeTuple>():cachedSet;
+ }
+
+ @Override
+ public SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri){
+ int tmp = recursionDepth;
+ recursionDepth=4;
+ SortedSet<RDFNodeTuple> tmpSet = retrieveTupel(uri);
+ recursionDepth = tmp;
+ return tmpSet;
+ //getQuery
+ //String sparqlQueryString = sparqlQueryMaker.makeSubjectQueryUsingFilters(uri);
+ //return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, PREDICATE, OBJECT);
+ }
+
+
+ private void add(String uri, RDFNodeTuple tuple){
+ SortedSet<RDFNodeTuple> set = resources.get(uri);
+ if(set==null){
+ set = new TreeSet<RDFNodeTuple>();
+ set.add(tuple);
+ resources.put(uri, set );
+ }else {
+ set.add(tuple);
+ }
+ }
+
+ @Override
+ public SortedSet<RDFNodeTuple> retrieveClassesForInstances(String uri){
+ // getQuery
+ return super.retrieveClassesForInstances(uri);
+
+ }
+
+
+
+}
Property changes on: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitorImproved.java
___________________________________________________________________
Added: svn:mergeinfo
+
Deleted: trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java 2008-08-21 11:06:07 UTC (rev 1118)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java 2008-08-21 11:59:44 UTC (rev 1119)
@@ -1,95 +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.kb.aquisitors;
-
-import java.net.URI;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.apache.log4j.Logger;
-import org.dllearner.utilities.datastructures.RDFNodeTuple;
-
-/**
- *
- * Typed SPARQL query interface. The typing means that they all have the same
- * input and the same output: They are fn: resource -> ( a | b ) where a
- * normally is a predicate and b an object
- *
- * @author Sebastian Hellmann
- *
- */
-public abstract class TupelAquisitor {
-
-
- private static Logger logger = Logger.getLogger(TupelAquisitor.class);
- protected final int NORMAL = 0;
- protected final int CLASSES_FOR_INSTANCES = 1;
- protected final int CLASS_INFORMATION = 2;
-
- protected int mode = 0;
- private boolean uriDebugCheck = true;
-
- public final SortedSet<RDFNodeTuple> getTupelForResource(String uri){
- checkURIforValidity(uri);
- try{
- if (mode == NORMAL) {
- return retrieveTupel(uri);
- } else if(mode == CLASSES_FOR_INSTANCES){
- return retrieveClassesForInstances(uri);
- }else if(mode == CLASS_INFORMATION){
- return retrieveTuplesForClassesOnly(uri);
- }else{
- throw new RuntimeException("undefined mode in aquisitor");
- }
- }catch(Exception e){
- logger.warn("caught exception in tupleaquisitor, ignoring it"+e.toString());
- return new TreeSet<RDFNodeTuple>();
-
- }
- }
- public abstract SortedSet<RDFNodeTuple> retrieveTupel(String uri);
- public abstract SortedSet<RDFNodeTuple> retrieveClassesForInstances(String uri);
- public abstract SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri);
-
- /*private void setMode(int mode) {
- this.mode = mode;
- }*/
-
- public int getMode() {
- return mode;
- }
-
- public void setNextTaskToNormal(){mode = NORMAL;}
- public void setNextTaskToClassesForInstances(){mode = CLASSES_FOR_INSTANCES;}
- public void setNextTaskToClassInformation(){mode = CLASS_INFORMATION;}
-
- protected boolean checkURIforValidity(String uri){
- if(uriDebugCheck) return true;
- try{
- new URI(uri);
- }catch (Exception e) {
- logger.warn("Exception while validating uri: "+uri);
- return false;
- }
- return true;
- }
-}
-
-
Copied: trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupleAquisitor.java (from rev 1118, trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java)
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupleAquisitor.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupleAquisitor.java 2008-08-21 11:59:44 UTC (rev 1119)
@@ -0,0 +1,95 @@
+/**
+ * Copyright (C) 2007-2008, Jens Lehmann
+ *
+ * This file is part of DL-Learner.
+ *
+ * DL-Learner is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * DL-Learner is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.dllearner.kb.aquisitors;
+
+import java.net.URI;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import org.apache.log4j.Logger;
+import org.dllearner.utilities.datastructures.RDFNodeTuple;
+
+/**
+ *
+ * Typed SPARQL query interface. The typing means that they all have the same
+ * input and the same output: They are fn: resource -> ( a | b ) where a
+ * normally is a predicate and b an object
+ *
+ * @author Sebastian Hellmann
+ *
+ */
+public abstract class TupleAquisitor {
+
+
+ private static Logger logger = Logger.getLogger(TupleAquisitor.class);
+ protected final int NORMAL = 0;
+ protected final int CLASSES_FOR_INSTANCES = 1;
+ protected final int CLASS_INFORMATION = 2;
+
+ protected int mode = 0;
+ private boolean uriDebugCheck = true;
+
+ public final SortedSet<RDFNodeTuple> getTupelForResource(String uri){
+ checkURIforValidity(uri);
+ try{
+ if (mode == NORMAL) {
+ return retrieveTupel(uri);
+ } else if(mode == CLASSES_FOR_INSTANCES){
+ return retrieveClassesForInstances(uri);
+ }else if(mode == CLASS_INFORMATION){
+ return retrieveTuplesForClassesOnly(uri);
+ }else{
+ throw new RuntimeException("undefined mode in aquisitor");
+ }
+ }catch(Exception e){
+ logger.warn("caught exception in tupleaquisitor, ignoring it"+e.toString());
+ return new TreeSet<RDFNodeTuple>();
+
+ }
+ }
+ public abstract SortedSet<RDFNodeTuple> retrieveTupel(String uri);
+ public abstract SortedSet<RDFNodeTuple> retrieveClassesForInstances(String uri);
+ public abstract SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri);
+
+ /*private void setMode(int mode) {
+ this.mode = mode;
+ }*/
+
+ public int getMode() {
+ return mode;
+ }
+
+ public void setNextTaskToNormal(){mode = NORMAL;}
+ public void setNextTaskToClassesForInstances(){mode = CLASSES_FOR_INSTANCES;}
+ public void setNextTaskToClassInformation(){mode = CLASS_INFORMATION;}
+
+ protected boolean checkURIforValidity(String uri){
+ if(uriDebugCheck) return true;
+ try{
+ new URI(uri);
+ }catch (Exception e) {
+ logger.warn("Exception while validating uri: "+uri);
+ return false;
+ }
+ return true;
+ }
+}
+
+
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-08-21 11:06:07 UTC (rev 1118)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-08-21 11:59:44 UTC (rev 1119)
@@ -25,7 +25,7 @@
import java.util.TreeSet;
import org.apache.log4j.Logger;
-import org.dllearner.kb.aquisitors.TupelAquisitor;
+import org.dllearner.kb.aquisitors.TupleAquisitor;
import org.dllearner.kb.manipulator.Manipulator;
import org.dllearner.utilities.datastructures.RDFNodeTuple;
import org.dllearner.utilities.owl.OWLVocabulary;
@@ -50,7 +50,7 @@
// expands all directly connected nodes
@Override
- public List<Node> expand(TupelAquisitor tupelAquisitor, Manipulator manipulator) {
+ public List<Node> expand(TupleAquisitor tupelAquisitor, Manipulator manipulator) {
SortedSet<RDFNodeTuple> newTuples = tupelAquisitor.getTupelForResource(this.uri);
// see manipulator
@@ -96,7 +96,7 @@
// gets the types for properties recursively
@Override
- public void expandProperties(TupelAquisitor tupelAquisitor, Manipulator manipulator) {
+ public void expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator) {
}
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java 2008-08-21 11:06:07 UTC (rev 1118)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java 2008-08-21 11:59:44 UTC (rev 1119)
@@ -19,7 +19,7 @@
*/
package org.dllearner.kb.extraction;
-import org.dllearner.kb.aquisitors.TupelAquisitor;
+import org.dllearner.kb.aquisitors.TupleAquisitor;
import org.dllearner.kb.manipulator.Manipulator;
/**
@@ -32,7 +32,7 @@
private Manipulator manipulator;
- private TupelAquisitor tupelAquisitor;
+ private TupleAquisitor tupelAquisitor;
// the following needs to be moved to
// class extraction algorithm or manipulator
@@ -44,7 +44,7 @@
public Configuration(
- TupelAquisitor tupelAquisitor,
+ TupleAquisitor tupelAquisitor,
Manipulator manipulator,
int recursiondepth,
boolean getAllSuperClasses,
@@ -87,7 +87,7 @@
}
- public TupelAquisitor getTupelAquisitor() {
+ public TupleAquisitor getTupelAquisitor() {
return tupelAquisitor;
}
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java 2008-08-21 11:06:07 UTC (rev 1118)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java 2008-08-21 11:59:44 UTC (rev 1119)
@@ -23,7 +23,7 @@
import java.util.SortedSet;
import java.util.TreeSet;
-import org.dllearner.kb.aquisitors.TupelAquisitor;
+import org.dllearner.kb.aquisitors.TupleAquisitor;
import org.dllearner.kb.manipulator.Manipulator;
import org.dllearner.utilities.owl.OWLVocabulary;
@@ -51,13 +51,13 @@
// Property Nodes are normally not expanded,
// this function is never called
@Override
- public List<Node> expand(TupelAquisitor tupelAquisitor, Manipulator manipulator) {
+ public List<Node> expand(TupleAquisitor tupelAquisitor, Manipulator manipulator) {
return null;
}
// gets the types for properties recursively
@Override
- public void expandProperties(TupelAquisitor tupelAquisitor, Manipulator manipulator) {
+ public void expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator) {
}
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-21 11:06:07 UTC (rev 1118)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-21 11:59:44 UTC (rev 1119)
@@ -25,7 +25,7 @@
import java.util.TreeSet;
import org.apache.log4j.Logger;
-import org.dllearner.kb.aquisitors.TupelAquisitor;
+import org.dllearner.kb.aquisitors.TupleAquisitor;
import org.dllearner.utilities.statistics.SimpleClock;
/**
@@ -42,15 +42,15 @@
private static Logger logger = Logger
.getLogger(ExtractionAlgorithm.class);
- public ExtractionAlgorithm(Configuration Configuration) {
- this.configuration = Configuration;
+ public ExtractionAlgorithm(Configuration configuration) {
+ this.configuration = configuration;
}
public Node getFirstNode(String uri) {
return new InstanceNode(uri);
}
- public List<Node> expandAll(String[] uris, TupelAquisitor tupelAquisitor) {
+ public List<Node> expandAll(String[] uris, TupleAquisitor tupelAquisitor) {
List<Node> nodeList = new ArrayList<Node>();
for (String oneURI : uris) {
nodeList.add(expandNode(oneURI, tupelAquisitor));
@@ -67,11 +67,11 @@
* @param typedSparqlQuery
* @return
*/
- public Node expandNode(String uri, TupelAquisitor tupelAquisitor) {
+ public Node expandNode(String uri, TupleAquisitor tupelAquisitor) {
SimpleClock sc = new SimpleClock();
- tupelAquisitor.setNextTaskToNormal();
+
Node seedNode = getFirstNode(uri);
List<Node> newNodes = new ArrayList<Node>();
List<Node> collectNodes = new ArrayList<Node>();
@@ -91,6 +91,7 @@
logger.info("Expanding " + nextNode);
// these are the new not expanded nodes
// the others are saved in connection with the original node
+ tupelAquisitor.setNextTaskToNormal();
tmp.addAll(nextNode.expand(tupelAquisitor,
configuration.getManipulator()));
//System.out.println(tmpVec);
@@ -104,58 +105,57 @@
+ " Nodes remaining, " + sc.getAndSet(""));
}
+
+ if(configuration.isCloseAfterRecursion()){
+ List<InstanceNode> l = getInstanceNodes(newNodes);
+ tupelAquisitor.setNextTaskToClassesForInstances();
+ collectNodes.addAll(expandCloseAfterRecursion(l, tupelAquisitor));
+
+ }
// gets All Class Nodes and expands them further
if (configuration.isGetAllSuperClasses()) {
- expandAllSuperClassesOfANode(collectNodes, tupelAquisitor);
+ List<ClassNode> allClassNodes = getClassNodes(collectNodes);
+ tupelAquisitor.setNextTaskToClassInformation();
+ expandAllSuperClassesOfANode(allClassNodes, tupelAquisitor);
}
return seedNode;
}
- private void expandAllSuperClassesOfANode(List<Node> allNodes, TupelAquisitor tupelAquisitor) {
- logger.info("Get all superclasses");
-
-
- List<Node> classes = new ArrayList<Node>();
- List<Node> instances = new ArrayList<Node>();
-
- for (Node one : allNodes) {
- if (one instanceof ClassNode) {
- classes.add(one);
- }
- if (one instanceof InstanceNode) {
- instances.add(one);
- }
-
- }
-
- //TODO LinkedData incompatibility
-
+ private List<Node> expandCloseAfterRecursion(List<InstanceNode> instanceNodes, TupleAquisitor tupelAquisitor) {
+ List<Node> newNodes = new ArrayList<Node>();
tupelAquisitor.setNextTaskToClassesForInstances();
if (configuration.isCloseAfterRecursion()) {
- while (!instances.isEmpty()) {
+ while (!instanceNodes.isEmpty()) {
logger.trace("Getting classes for remaining instances: "
- + instances.size());
- Node next = instances.remove(0);
+ + instanceNodes.size());
+ Node next = instanceNodes.remove(0);
logger.trace("Getting classes for: " + next);
- classes.addAll(next.expand(tupelAquisitor, configuration.getManipulator()));
- if (classes.size() >= configuration.getBreakSuperClassesAfter()) {
+ newNodes.addAll(next.expand(tupelAquisitor, configuration.getManipulator()));
+ if (newNodes.size() >= configuration.getBreakSuperClassesAfter()) {
break;
}//endif
}//endwhile
}//endif
+ return newNodes;
+ }
+
+ private void expandAllSuperClassesOfANode(List<ClassNode> allClassNodes, TupleAquisitor tupelAquisitor) {
+ logger.info("Get all superclasses");
-
+ List<Node> newClasses = new ArrayList<Node>();
+ newClasses.addAll(allClassNodes);
+ //TODO LinkedData incompatibility
tupelAquisitor.setNextTaskToClassInformation();
int i = 0;
- while (!classes.isEmpty() && false) {
- logger.trace("Remaining classes: " + classes.size());
- Node next = classes.remove(0);
+ while (!newClasses.isEmpty() && false) {
+ logger.trace("Remaining classes: " + newClasses.size());
+ Node next = newClasses.remove(0);
if (!alreadyQueriedSuperClasses.contains(next.getURI().toString())) {
logger.trace("Getting Superclasses for: " + next);
alreadyQueriedSuperClasses.add(next.getURI().toString());
- classes.addAll(next.expand(tupelAquisitor, configuration.getManipulator()));
+ newClasses.addAll(next.expand(tupelAquisitor, configuration.getManipulator()));
if (i > configuration.getBreakSuperClassesAfter()) {
break;
@@ -169,5 +169,30 @@
}
}
+
+ public static List<ClassNode> getClassNodes(List<Node> l ){
+ List<ClassNode> retList = new ArrayList<ClassNode>();
+ for (Node node : l) {
+ if (node instanceof ClassNode) {
+ retList.add( (ClassNode) node);
+
+ }
+
+ }
+ return retList;
+ }
+
+ public static List<InstanceNode> getInstanceNodes(List<Node> l ){
+ List<InstanceNode> retList = new ArrayList<InstanceNode>();
+ for (Node node : l) {
+ if (node instanceof InstanceNode) {
+ retList.add( (InstanceNode) node);
+
+ }
+
+ }
+ return retList;
+ }
+
}
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-08-21 11:06:07 UTC (rev 1118)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-08-21 11:59:44 UTC (rev 1119)
@@ -25,7 +25,7 @@
import java.util.TreeSet;
import org.apache.log4j.Logger;
-import org.dllearner.kb.aquisitors.TupelAquisitor;
+import org.dllearner.kb.aquisitors.TupleAquisitor;
import org.dllearner.kb.manipulator.Manipulator;
import org.dllearner.utilities.datastructures.RDFNodeTuple;
import org.dllearner.utilities.owl.OWLVocabulary;
@@ -55,7 +55,7 @@
// expands all directly connected nodes
@Override
- public List<Node> expand(TupelAquisitor tupelAquisitor, Manipulator manipulator) {
+ public List<Node> expand(TupleAquisitor tupelAquisitor, Manipulator manipulator) {
SortedSet<RDFNodeTuple> newTuples = tupelAquisitor.getTupelForResource(uri);
// see Manipulator
@@ -103,7 +103,7 @@
// gets the types for properties recursively
@Override
- public void expandProperties(TupelAquisitor tupelAquisitor, Manipulator manipulator) {
+ public void expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator) {
for (ObjectPropertyNode one : objectProperties) {
one.expandProperties(tupelAquisitor, manipulator);
}
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java 2008-08-21 11:06:07 UTC (rev 1118)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java 2008-08-21 11:59:44 UTC (rev 1119)
@@ -25,7 +25,7 @@
import java.util.TreeSet;
import org.apache.log4j.Logger;
-import org.dllearner.kb.aquisitors.TupelAquisitor;
+import org.dllearner.kb.aquisitors.TupleAquisitor;
import org.dllearner.kb.manipulator.Manipulator;
import com.hp.hpl.jena.rdf.model.Literal;
@@ -59,7 +59,7 @@
// expands all directly connected nodes
@Override
- public List<Node> expand(TupelAquisitor tupelAquisitor, Manipulator manipulator) {
+ public List<Node> expand(TupleAquisitor tupelAquisitor, Manipulator manipulator) {
return new ArrayList<Node>();
}
@@ -67,7 +67,7 @@
// gets the types for properties recursively
@Override
- public void expandProperties(TupelAquisitor tupelAquisitor, Manipulator manipulator) {
+ public void expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator) {
}
@Override
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-08-21 11:06:07 UTC (rev 1118)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-08-21 11:59:44 UTC (rev 1119)
@@ -22,7 +22,7 @@
import java.util.List;
import java.util.SortedSet;
-import org.dllearner.kb.aquisitors.TupelAquisitor;
+import org.dllearner.kb.aquisitors.TupleAquisitor;
import org.dllearner.kb.manipulator.Manipulator;
@@ -54,7 +54,7 @@
* @return Vector<Node> all Nodes that are new because of expansion
*/
public abstract List<Node> expand(
- TupelAquisitor TupelAquisitor, Manipulator manipulator);
+ TupleAquisitor TupelAquisitor, Manipulator manipulator);
/**
* gets type defs for properties like rdf:type SymmetricProperties
@@ -64,7 +64,7 @@
* @return Vector<Node>
*/
public abstract void expandProperties(
- TupelAquisitor TupelAquisitor, Manipulator manipulator);
+ TupleAquisitor TupelAquisitor, Manipulator manipulator);
/**
* output
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java 2008-08-21 11:06:07 UTC (rev 1118)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java 2008-08-21 11:59:44 UTC (rev 1119)
@@ -23,7 +23,7 @@
import java.util.SortedSet;
import java.util.TreeSet;
-import org.dllearner.kb.aquisitors.TupelAquisitor;
+import org.dllearner.kb.aquisitors.TupleAquisitor;
import org.dllearner.kb.manipulator.Manipulator;
import org.dllearner.utilities.datastructures.RDFNodeTuple;
import org.dllearner.utilities.owl.OWLVocabulary;
@@ -54,13 +54,13 @@
// Property Nodes are normally not expanded,
// this function is never called
@Override
- public List<Node> expand(TupelAquisitor tupelAquisitor, Manipulator manipulator) {
+ public List<Node> expand(TupleAquisitor tupelAquisitor, Manipulator manipulator) {
return null;
}
// gets the types for properties recursively
@Override
- public void expandProperties(TupelAquisitor tupelAquisitor, Manipulator manipulator) {
+ public void expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator) {
b.expandProperties(tupelAquisitor, manipulator);
SortedSet<RDFNodeTuple> newTypes = tupelAquisitor.getTupelForResource(uri);
for (RDFNodeTuple tuple : newTypes) {
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-08-21 11:06:07 UTC (rev 1118)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-08-21 11:59:44 UTC (rev 1119)
@@ -46,8 +46,9 @@
import org.dllearner.core.config.StringSetConfigOption;
import org.dllearner.core.config.StringTupleListConfigOption;
import org.dllearner.core.owl.KB;
-import org.dllearner.kb.aquisitors.SparqlTupelAquisitor;
-import org.dllearner.kb.aquisitors.TupelAquisitor;
+import org.dllearner.kb.aquisitors.SparqlTupleAquisitor;
+import org.dllearner.kb.aquisitors.SparqlTupleAquisitorImproved;
+import org.dllearner.kb.aquisitors.TupleAquisitor;
import org.dllearner.kb.extraction.Configuration;
import org.dllearner.kb.extraction.Manager;
import org.dllearner.kb.manipulator.Manipulator;
@@ -72,6 +73,7 @@
//DEFAULTS
static int recursionDepthDefault = 1;
+ static final boolean debug = false;
private boolean useCache=true;
// ConfigOptions
public URL url;
@@ -90,7 +92,7 @@
private boolean useLits = false;
private boolean getAllSuperClasses = true;
private boolean closeAfterRecursion = true;
- private int breakSuperClassRetrievalAfter = 200;
+ private int breakSuperClassRetrievalAfter = 1000;
private String cacheDir = "cache";
// private boolean learnDomain = false;
// private boolean learnRange = false;
@@ -283,9 +285,12 @@
// get Options for Manipulator
Manipulator manipulator = getManipulator();
- //manipulator.addRule(newRule);
+
+ TupleAquisitor tupleAquisitor = getTupleAquisitor();
+
+
Configuration configuration = new Configuration(
- getTupelAquisitor(),
+ getTupleAquisitor(),
manipulator,
recursionDepth,
getAllSuperClasses,
@@ -430,10 +435,13 @@
}
- public TupelAquisitor getTupelAquisitor()
+ public TupleAquisitor getTupleAquisitor()
{
- return new SparqlTupelAquisitor(getSparqlQueryMaker(), getSPARQLTasks());
- //return new SparqlTupelAquisitorImproved(getSparqlQueryMaker(), getSPARQLTasks(),recursionDepth);
+ return (debug)?
+ new SparqlTupleAquisitorImproved(getSparqlQueryMaker(), getSPARQLTasks(),recursionDepth)
+ :
+ new SparqlTupleAquisitor(getSparqlQueryMaker(), getSPARQLTasks());
+
}
/* (non-Javadoc)
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2008-08-21 11:06:07 UTC (rev 1118)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2008-08-21 11:59:44 UTC (rev 1119)
@@ -24,6 +24,8 @@
import java.util.SortedSet;
import java.util.TreeSet;
+import org.dllearner.utilities.owl.OWLVocabulary;
+
/**
* Can assemble sparql queries. can make queries for subject, predicate, object
* according to the filter settings object SparqlQueryType, which gives the
@@ -105,12 +107,15 @@
tmpFilter = (tmpFilter.length() > 0) ? "FILTER( " + lineend + tmpFilter
+ "). " : " ";
- String returnString = "SELECT * WHERE {" +lineend +
+ /*String returnString = "SELECT * WHERE {" +lineend +
"<" + subject + "> ?predicate ?object;" +
"a ?object . "+lineend+
tmpFilter + "}";
+ */
+ String returnString = "SELECT * WHERE {" +lineend +
+ "<" + subject + "> <"+OWLVocabulary.RDF_TYPE+"> ?object. " +lineend+
+ tmpFilter + "}";
-
return returnString;
}
Modified: trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-08-21 11:06:07 UTC (rev 1118)
+++ trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-08-21 11:59:44 UTC (rev 1119)
@@ -26,7 +26,7 @@
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.SimpleLayout;
-import org.dllearner.kb.aquisitors.SparqlTupelAquisitorImproved;
+import org.dllearner.kb.aquisitors.SparqlTupleAquisitorImproved;
import org.dllearner.kb.extraction.Configuration;
import org.dllearner.kb.extraction.Manager;
import org.dllearner.kb.manipulator.Manipulator;
@@ -66,7 +66,7 @@
int recursionDepth=2;
Manager m = new Manager();
Configuration conf = new Configuration (
- new SparqlTupelAquisitorImproved(SparqlQueryMaker.getAllowYAGOFilter(),
+ new SparqlTupleAquisitorImproved(SparqlQueryMaker.getAllowYAGOFilter(),
SPARQLTasks.getPredefinedSPARQLTasksWithCache("DBPEDIA"),recursionDepth),
Manipulator.getDefaultManipulator(),
recursionDepth,
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <Jen...@us...> - 2008-08-21 14:23:05
|
Revision: 1120
http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1120&view=rev
Author: JensLehmann
Date: 2008-08-21 14:23:00 +0000 (Thu, 21 Aug 2008)
Log Message:
-----------
intermediate commit (fixing GUI code for several hours)
Modified Paths:
--------------
trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java
trunk/src/dl-learner/org/dllearner/core/ComponentPool.java
trunk/src/dl-learner/org/dllearner/gui/Config.java
trunk/src/dl-learner/org/dllearner/gui/KnowledgeSourcePanel.java
trunk/src/dl-learner/org/dllearner/gui/LearningAlgorithmPanel.java
trunk/src/dl-learner/org/dllearner/gui/LearningProblemPanel.java
trunk/src/dl-learner/org/dllearner/gui/OptionPanel.java
trunk/src/dl-learner/org/dllearner/gui/ReasonerPanel.java
trunk/src/dl-learner/org/dllearner/gui/StartGUI.java
trunk/src/dl-learner/org/dllearner/gui/WidgetPanelBoolean.java
trunk/src/dl-learner/org/dllearner/gui/WidgetPanelDefault.java
trunk/src/dl-learner/org/dllearner/gui/WidgetPanelDouble.java
trunk/src/dl-learner/org/dllearner/gui/WidgetPanelInteger.java
trunk/src/dl-learner/org/dllearner/gui/WidgetPanelString.java
trunk/src/dl-learner/org/dllearner/gui/WidgetPanelStringSet.java
trunk/src/dl-learner/org/dllearner/gui/WidgetPanelStringTupleList.java
trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java
Added Paths:
-----------
trunk/src/dl-learner/org/dllearner/gui/AboutWindow.java
trunk/src/dl-learner/org/dllearner/gui/AbstractWidgetPanel.java
trunk/src/dl-learner/org/dllearner/gui/ComponentPanel.java
trunk/src/dl-learner/org/dllearner/gui/TutorialWindow.java
trunk/src/dl-learner/org/dllearner/gui/dl-learner.gif
Removed Paths:
-------------
trunk/src/dl-learner/org/dllearner/gui/WidgetPanelAbstract.java
Modified: trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java 2008-08-21 11:59:44 UTC (rev 1119)
+++ trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java 2008-08-21 14:23:00 UTC (rev 1120)
@@ -74,6 +74,10 @@
return problems;
}
+ public static String getName() {
+ return "DBpedia Navigation Suggestor";
+ }
+
public DBpediaNavigationSuggestor(PosOnlyDefinitionLP learningProblem, ReasoningService rs) {
System.out.println("test1");
}
Modified: trunk/src/dl-learner/org/dllearner/core/ComponentPool.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/core/ComponentPool.java 2008-08-21 11:59:44 UTC (rev 1119)
+++ trunk/src/dl-learner/org/dllearner/core/ComponentPool.java 2008-08-21 14:23:00 UTC (rev 1120)
@@ -39,8 +39,7 @@
*/
public final class ComponentPool {
- private static Logger logger = Logger
- .getLogger(ComponentPool.class);
+ private static Logger logger = Logger.getLogger(ComponentPool.class);
// stores all components, which are live (components which are
// no longer used have to be deregistered)
Added: trunk/src/dl-learner/org/dllearner/gui/AboutWindow.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/gui/AboutWindow.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/gui/AboutWindow.java 2008-08-21 14:23:00 UTC (rev 1120)
@@ -0,0 +1,32 @@
+package org.dllearner.gui;
+
+import javax.swing.JFrame;
+
+/**
+ * Window displaying some information about DL-Learner and DL-Learner GUI.
+ *
+ * @author Jens Lehmann
+ *
+ */
+public class AboutWindow extends JFrame {
+
+ private static final long serialVersionUID = -5448814141333659068L;
+
+ public AboutWindow() {
+ setTitle("About");
+ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ setLocationByPlatform(true);
+ setSize(300, 300);
+
+ // display icon
+
+ // display build version
+
+ // display authors of GUI
+
+ // display DL-Learner contributors
+
+ setVisible(true);
+ }
+
+}
Copied: trunk/src/dl-learner/org/dllearner/gui/AbstractWidgetPanel.java (from rev 1115, trunk/src/dl-learner/org/dllearner/gui/WidgetPanelAbstract.java)
===================================================================
--- trunk/src/dl-learner/org/dllearner/gui/AbstractWidgetPanel.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/gui/AbstractWidgetPanel.java 2008-08-21 14:23:00 UTC (rev 1120)
@@ -0,0 +1,76 @@
+/**
+ * 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.gui;
+
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import org.dllearner.core.Component;
+import org.dllearner.core.config.ConfigOption;
+
+/**
+ * Abstract superclass of all widgets. Each widget has an associated component and configuration option,
+ * for which it allows modification by the user.
+ *
+ * @author Jens Lehmann
+ */
+public abstract class AbstractWidgetPanel<T> extends JPanel {
+
+ protected ConfigOption<T> configOption;
+ protected Config config;
+ protected Component component;
+
+ /**
+ * Constructs a widget.
+ * @param config The status of all components and options (which may be updated by this widget).
+ * @param component The component potentially changed by this widget.
+ * @param optionOption The config option of the specified component, which is potentially changed by this widget.
+ */
+ public AbstractWidgetPanel(Config config, Component component, ConfigOption<T> optionOption) {
+ this.config = config;
+ this.component = component;
+ this.configOption = optionOption;
+
+ if(configOption == null || component == null || config == null) {
+ System.out.println("| " + component + ", " + configOption + ", " + config + " |");
+ throw new Error("Parameters must not be null.");
+ }
+
+ buildWidgetPanel();
+ }
+
+ // convenience method
+ protected JLabel getLabel() {
+ JLabel nameLabel = new JLabel(configOption.getName());
+ nameLabel.setToolTipText(configOption.getDescription());
+ return nameLabel;
+ }
+
+ // subclasses should call this method if a configuration option has changed
+ public void fireValueChanged(T value) {
+ // TODO notify config that an option has changed
+ // (component manager should be accessed in config only, such that we can intelligently decide which
+ // panels to initialise)
+ }
+
+ // subclasses should use this method to build the graphical representation of the widgets
+ public abstract void buildWidgetPanel();
+
+}
Added: trunk/src/dl-learner/org/dllearner/gui/ComponentPanel.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/gui/ComponentPanel.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/gui/ComponentPanel.java 2008-08-21 14:23:00 UTC (rev 1120)
@@ -0,0 +1,24 @@
+package org.dllearner.gui;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JPanel;
+
+import org.dllearner.core.Component;
+
+/**
+ * Class displaying a component (and its options).
+ *
+ * @author Jens Lehmann
+ *
+ */
+public class ComponentPanel<T extends Component> extends JPanel implements ActionListener {
+
+ private static final long serialVersionUID = -7678275020058043937L;
+
+ public void actionPerformed(ActionEvent arg0) {
+ // TODO Auto-generated method stub
+ }
+
+}
Modified: trunk/src/dl-learner/org/dllearner/gui/Config.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/gui/Config.java 2008-08-21 11:59:44 UTC (rev 1119)
+++ trunk/src/dl-learner/org/dllearner/gui/Config.java 2008-08-21 14:23:00 UTC (rev 1120)
@@ -20,12 +20,16 @@
package org.dllearner.gui;
+import org.dllearner.core.Component;
import org.dllearner.core.ComponentManager;
import org.dllearner.core.KnowledgeSource;
import org.dllearner.core.LearningProblem;
+import org.dllearner.core.LearningProblemUnsupportedException;
import org.dllearner.core.ReasoningService;
import org.dllearner.core.LearningAlgorithm;
import org.dllearner.core.ReasonerComponent;
+import org.dllearner.core.config.ConfigEntry;
+import org.dllearner.core.config.ConfigOption;
// import org.dllearner.core.Component;
@@ -37,28 +41,32 @@
* @author Tilo Hielscher
*/
public class Config {
+
private ComponentManager cm = ComponentManager.getInstance();
+
+ // the components currently active
private KnowledgeSource source;
- private KnowledgeSource oldSource;
private ReasonerComponent reasoner;
- private ReasonerComponent oldReasoner;
private ReasoningService rs;
private LearningProblem lp;
- private LearningProblem oldLearningProblem;
private LearningAlgorithm la;
- private LearningAlgorithm oldLearningAlgorithm;
+
private boolean[] isInit = new boolean[4];
+ // stores whether a component needs to be initialised ("previous" components have changed configuration values)
+// private boolean[] needsInit = new boolean[4];
+
+ // learning algorithm status
private Boolean threadIsRunning = false;
private Long algorithmRunStartTime = null;
private Long algorithmRunStopTime = null;
-
+
/**
* Get ComponentManager.
*
* @return ComponentManager
*/
public ComponentManager getComponentManager() {
- return this.cm;
+ return cm;
}
/**
@@ -80,8 +88,7 @@
* @param knowledgeSource
*/
public void setKnowledgeSource(KnowledgeSource knowledgeSource) {
- this.oldSource = this.source;
- this.source = knowledgeSource;
+ source = knowledgeSource;
}
/**
@@ -94,21 +101,21 @@
}
/**
- * Get old KnowledgeSource.
- *
- * @return old KnowledgeSource
+ * Creates a knowledge source and makes it the active source.
+ * @param clazz
+ * @return
*/
- public KnowledgeSource getOldKnowledgeSource() {
- return this.oldSource;
+ public KnowledgeSource newKnowledgeSource(Class<? extends KnowledgeSource> clazz) {
+ source = cm.knowledgeSource(clazz);
+ return source;
}
-
+
/**
* Set Reasoner.
*
* @param reasoner
*/
public void setReasoner(ReasonerComponent reasoner) {
- this.oldReasoner = this.reasoner;
this.reasoner = reasoner;
}
@@ -121,16 +128,14 @@
return this.reasoner;
}
+ // creates reasoner + reasoning service and makes it active
+ public ReasonerComponent newReasoner(Class<? extends ReasonerComponent> clazz) {
+ reasoner = cm.reasoner(clazz, source);
+ rs = cm.reasoningService(reasoner);
+ return reasoner;
+ }
+
/**
- * Get old Reasoner as a set.
- *
- * @return oldReasonerSet.
- */
- public ReasonerComponent getOldReasonerSet() {
- return this.oldReasoner;
- }
-
- /**
* Set ReasoningService.
*
* @param reasoningService
@@ -154,7 +159,6 @@
* @param learningProblem
*/
public void setLearningProblem(LearningProblem learningProblem) {
- this.oldLearningProblem = this.lp;
this.lp = learningProblem;
}
@@ -167,22 +171,17 @@
return this.lp;
}
- /**
- * Get old LearningProblem as a set.
- *
- * @return old learningProblemSet.
- */
- public LearningProblem getOldLearningProblem() {
- return this.oldLearningProblem;
+ public LearningProblem newLearningProblem(Class<? extends LearningProblem> clazz) {
+ lp = cm.learningProblem(clazz, rs);
+ return lp;
}
-
+
/**
* Set LearningAlgorithm.
*
* @param learningAlgorithm
*/
public void setLearningAlgorithm(LearningAlgorithm learningAlgorithm) {
- this.oldLearningAlgorithm = this.la;
this.la = learningAlgorithm;
}
@@ -195,16 +194,12 @@
return this.la;
}
+ public LearningAlgorithm newLearningAlgorithm(Class<? extends LearningAlgorithm> clazz) throws LearningProblemUnsupportedException {
+ la = cm.learningAlgorithm(clazz, lp, rs);
+ return la;
+ }
+
/**
- * Get old LearningAlgorithmSet.
- *
- * @return old LearningAlgorithmSet
- */
- public LearningAlgorithm getOldLearningAlgorithm() {
- return this.oldLearningAlgorithm;
- }
-
- /**
* KnowledgeSource.init has run?
*
* @return true, if init was made, false if not
@@ -331,23 +326,28 @@
return false;
}
- /**
- * reInit ComponentManager.
- */
public void reInit() {
cm = ComponentManager.getInstance();
source = null;
- oldSource = null;
reasoner = null;
- oldReasoner = null;
rs = null;
lp = null;
- oldLearningProblem = null;
la = null;
- oldLearningAlgorithm = null;
isInit = new boolean[4];
threadIsRunning = false;
algorithmRunStartTime = null;
algorithmRunStopTime = null;
}
+
+ // applies a configuration option - used as delegate method, which invalidates components
+ public <T> void applyConfigEntry(Component component, ConfigEntry<T> entry) {
+ cm.applyConfigEntry(component, entry);
+ // invalidate components
+ }
+
+ // delegate method for getting
+ public <T> T getConfigOptionValue(Component component, ConfigOption<T> option) {
+ return cm.getConfigOptionValue(component, option);
+ }
+
}
Modified: trunk/src/dl-learner/org/dllearner/gui/KnowledgeSourcePanel.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/gui/KnowledgeSourcePanel.java 2008-08-21 11:59:44 UTC (rev 1119)
+++ trunk/src/dl-learner/org/dllearner/gui/KnowledgeSourcePanel.java 2008-08-21 14:23:00 UTC (rev 1120)
@@ -1,5 +1,3 @@
-package org.dllearner.gui;
-
/**
* Copyright (C) 2007-2008, Jens Lehmann
*
@@ -19,18 +17,21 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+package org.dllearner.gui;
-import java.util.List;
-import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.util.List;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JPanel;
+
import org.dllearner.core.ComponentInitException;
import org.dllearner.core.KnowledgeSource;
-// import org.dllearner.kb.*;
/**
* KnowledgeSourcePanel, tab 0. Choose Source, change Options and final initiate
@@ -80,9 +81,12 @@
choosePanel.add(setButton);
choosenClassIndex = cb.getSelectedIndex();
- optionPanel = new OptionPanel(config, config.getKnowledgeSource(), config
- .getOldKnowledgeSource(), sources.get(choosenClassIndex));
- initPanel.add(initButton);
+ // whenever a component is selected, we immediately create an instance (non-initialised)
+ KnowledgeSource ks = config.newKnowledgeSource(sources.get(cb.getSelectedIndex()));
+ optionPanel = new OptionPanel(config, ks);
+
+// optionPanel = new OptionPanel(config, config.getKnowledgeSource(), sources.get(choosenClassIndex));
+ // initPanel.add(initButton);
add(choosePanel, BorderLayout.PAGE_START);
add(optionPanel, BorderLayout.CENTER);
@@ -167,8 +171,8 @@
* update OptionPanel with new selection
*/
public void updateOptionPanel() {
- optionPanel.update(config.getKnowledgeSource(), config.getOldKnowledgeSource(), sources
- .get(choosenClassIndex));
+ // TODO implement properly !!
+// optionPanel.update(config.getKnowledgeSource(), sources.get(choosenClassIndex));
}
/**
Modified: trunk/src/dl-learner/org/dllearner/gui/LearningAlgorithmPanel.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/gui/LearningAlgorithmPanel.java 2008-08-21 11:59:44 UTC (rev 1119)
+++ trunk/src/dl-learner/org/dllearner/gui/LearningAlgorithmPanel.java 2008-08-21 14:23:00 UTC (rev 1120)
@@ -19,14 +19,18 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
-import javax.swing.*;
-
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JPanel;
+
+import org.dllearner.algorithms.DBpediaNavigationSuggestor;
+import org.dllearner.algorithms.refexamples.ExampleBasedROLComponent;
import org.dllearner.core.ComponentInitException;
import org.dllearner.core.LearningAlgorithm;
import org.dllearner.core.LearningProblemUnsupportedException;
@@ -52,16 +56,22 @@
private JComboBox cb = new JComboBox(cbItems);
private int choosenClassIndex;
- LearningAlgorithmPanel(Config config, StartGUI startGUI) {
+ public LearningAlgorithmPanel(Config config, StartGUI startGUI) {
super(new BorderLayout());
this.config = config;
this.startGUI = startGUI;
learner = config.getComponentManager().getLearningAlgorithms();
+ // to set a default learning algorithm, we move it to the beginning of the list
+ learner.remove(ExampleBasedROLComponent.class);
+ learner.add(0, ExampleBasedROLComponent.class);
+ // we also remove the DBpedia Navigation Suggestor (maybe shouldn't be declared as a learning algorithm at all;
+ // at least it is not doing anything useful at the moment)
+ learner.remove(DBpediaNavigationSuggestor.class);
initButton = new JButton("Init LearingAlgorithm");
initButton.addActionListener(this);
- initPanel.add(initButton);
+ // initPanel.add(initButton);
initButton.setEnabled(true);
autoInitButton = new JButton("Set");
autoInitButton.addActionListener(this);
@@ -75,8 +85,14 @@
choosePanel.add(autoInitButton);
cb.addActionListener(this);
- optionPanel = new OptionPanel(config, config.getLearningAlgorithm(), config
- .getOldLearningAlgorithm(), learner.get(choosenClassIndex));
+ LearningAlgorithm la = null;
+ try {
+ la = config.newLearningAlgorithm(learner.get(cb.getSelectedIndex()));
+ } catch (LearningProblemUnsupportedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ optionPanel = new OptionPanel(config, la);
add(choosePanel, BorderLayout.PAGE_START);
add(optionPanel, BorderLayout.CENTER);
@@ -161,8 +177,8 @@
*/
public void updateOptionPanel() {
// update OptionPanel
- optionPanel.update(config.getLearningAlgorithm(), config.getOldLearningAlgorithm(), learner
- .get(choosenClassIndex));
+ // TODO implement properly !!
+// optionPanel.update(config.getLearningAlgorithm(), learner.get(choosenClassIndex));
}
/**
Modified: trunk/src/dl-learner/org/dllearner/gui/LearningProblemPanel.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/gui/LearningProblemPanel.java 2008-08-21 11:59:44 UTC (rev 1119)
+++ trunk/src/dl-learner/org/dllearner/gui/LearningProblemPanel.java 2008-08-21 14:23:00 UTC (rev 1120)
@@ -60,7 +60,7 @@
initButton = new JButton("Init LearningProblem");
initButton.addActionListener(this);
- initPanel.add(initButton);
+ // initPanel.add(initButton);
initButton.setEnabled(true);
setButton = new JButton("Set");
setButton.addActionListener(this);
@@ -76,8 +76,8 @@
// read choosen LearningProblem
choosenClassIndex = cb.getSelectedIndex();
- optionPanel = new OptionPanel(config, config.getLearningProblem(), config
- .getOldLearningProblem(), problem.get(choosenClassIndex));
+ LearningProblem lp = config.newLearningProblem(problem.get(choosenClassIndex));
+ optionPanel = new OptionPanel(config, lp);
add(choosePanel, BorderLayout.PAGE_START);
add(optionPanel, BorderLayout.CENTER);
@@ -160,8 +160,8 @@
*/
private void updateOptionPanel() {
// update OptionPanel
- optionPanel.update(config.getLearningProblem(), config.getOldLearningProblem(), problem
- .get(choosenClassIndex));
+// TODO: implement properly !!
+// optionPanel.update(config.getLearningProblem(), problem.get(choosenClassIndex));
}
/**
Modified: trunk/src/dl-learner/org/dllearner/gui/OptionPanel.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/gui/OptionPanel.java 2008-08-21 11:59:44 UTC (rev 1119)
+++ trunk/src/dl-learner/org/dllearner/gui/OptionPanel.java 2008-08-21 14:23:00 UTC (rev 1120)
@@ -1,5 +1,3 @@
-package org.dllearner.gui;
-
/**
* Copyright (C) 2007-2008, Jens Lehmann
*
@@ -19,6 +17,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+package org.dllearner.gui;
import java.awt.BorderLayout;
import java.awt.Dimension;
@@ -39,31 +38,26 @@
* here.
*
* @author Tilo Hielscher
+ * @author Jens Lehmann
*
*/
public class OptionPanel extends JPanel {
private static final long serialVersionUID = -3053205578443575240L;
+
private Config config;
- private Class<? extends Component> componentOption;
- private List<ConfigOption<?>> optionList;
+// private Class<? extends Component> componentClass;
private JPanel centerPanel = new JPanel();
private Component component;
- private Component oldComponent;
private GridBagLayout gridBagLayout = new GridBagLayout();
private GridBagConstraints constraints = new GridBagConstraints();
- public OptionPanel(Config config, Component component, Component oldComponent,
- Class<? extends Component> componentOption) {
+ public OptionPanel(Config config, Component component) {
super(new BorderLayout());
-
+
this.config = config;
this.component = component;
- this.oldComponent = oldComponent;
- this.componentOption = componentOption;
- optionList = ComponentManager.getConfigOptions(componentOption);
-
// define GridBagLayout
centerPanel.setLayout(gridBagLayout);
constraints.anchor = GridBagConstraints.NORTHWEST;
@@ -78,47 +72,40 @@
}
/** update this OptionPanel */
- public void update(Component component, Component oldComponent,
- Class<? extends Component> componentOption) {
+ public void update(Component component) {
this.component = component;
- this.oldComponent = oldComponent;
- this.componentOption = componentOption;
showWidgets();
-
}
/**
* Define here what core.config.class is what type of widget.
* WidgetPanelDefault is for none defined classes.
*/
+ @SuppressWarnings("unchecked")
private void showWidgets() {
+ // clear panel
+ centerPanel.removeAll();
+
JPanel widgetPanel;
- optionList = ComponentManager.getConfigOptions(componentOption);
- centerPanel.removeAll(); // clear panel
+ List<ConfigOption<?>> optionList = ComponentManager.getConfigOptions(component.getClass());
+
for (int i = 0; i < optionList.size(); i++) {
buildConstraints(constraints, 0, i, 1, 1, 0, 0);
- if (optionList.get(i).getClass().toString().contains("IntegerConfigOption")) {
- widgetPanel = new WidgetPanelInteger(config, component, oldComponent,
- componentOption, optionList.get(i));
- } else if (optionList.get(i).getClass().toString().contains("BooleanConfigOption")) {
- widgetPanel = new WidgetPanelBoolean(config, component, oldComponent,
- componentOption, optionList.get(i));
- } else if (optionList.get(i).getClass().toString().contains("DoubleConfigOption")) {
- widgetPanel = new WidgetPanelDouble(config, component, oldComponent,
- componentOption, optionList.get(i));
- } else if (optionList.get(i).getClass().toString().contains("StringConfigOption")) {
- widgetPanel = new WidgetPanelString(config, component, oldComponent,
- componentOption, optionList.get(i));
- } else if (optionList.get(i).getClass().toString().contains("StringSetConfigOption")) {
- widgetPanel = new WidgetPanelStringSet(config, component, oldComponent,
- componentOption, optionList.get(i));
- } else if (optionList.get(i).getClass().toString().contains(
- "StringTupleListConfigOption")) {
- widgetPanel = new WidgetPanelStringTupleList(config, component, oldComponent,
- componentOption, optionList.get(i));
+ ConfigOption option = optionList.get(i);
+ if (option instanceof IntegerConfigOption) {
+ widgetPanel = new WidgetPanelInteger(config, component, (IntegerConfigOption) option);
+ } else if (option instanceof BooleanConfigOption) {
+ widgetPanel = new WidgetPanelBoolean(config, component, (BooleanConfigOption) option);
+ } else if (option instanceof DoubleConfigOption) {
+ widgetPanel = new WidgetPanelDouble(config, component, (DoubleConfigOption) option);
+ } else if (option instanceof StringConfigOption) {
+ widgetPanel = new WidgetPanelString(config, component, (StringConfigOption) option);
+ } else if (option instanceof StringSetConfigOption) {
+ widgetPanel = new WidgetPanelStringSet(config, component, (StringSetConfigOption) option);
+ } else if (option instanceof StringTupleListConfigOption) {
+ widgetPanel = new WidgetPanelStringTupleList(config, component, (StringTupleListConfigOption) option);
} else {
- widgetPanel = new WidgetPanelDefault(config, component,
- /* oldComponent, */componentOption, optionList.get(i));
+ widgetPanel = new WidgetPanelDefault(config, component, option);
}
gridBagLayout.setConstraints(widgetPanel, constraints);
centerPanel.add(widgetPanel);
Modified: trunk/src/dl-learner/org/dllearner/gui/ReasonerPanel.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/gui/ReasonerPanel.java 2008-08-21 11:59:44 UTC (rev 1119)
+++ trunk/src/dl-learner/org/dllearner/gui/ReasonerPanel.java 2008-08-21 14:23:00 UTC (rev 1120)
@@ -26,10 +26,13 @@
import java.awt.event.ActionListener;
import java.util.List;
-import javax.swing.*;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JPanel;
import org.dllearner.core.ComponentInitException;
import org.dllearner.core.ReasonerComponent;
+import org.dllearner.reasoning.OWLAPIReasoner;
/**
* ReasonerPanel, tab 1. Choose Resoner, change Options and final initiate
@@ -58,10 +61,13 @@
this.config = config;
this.startGUI = startGUI;
reasoner = config.getComponentManager().getReasonerComponents();
+ // to set a default reasoner, we move it to the beginning of the list
+ reasoner.remove(OWLAPIReasoner.class);
+ reasoner.add(0, OWLAPIReasoner.class);
initButton = new JButton("Init Reasoner");
initButton.addActionListener(this);
- initPanel.add(initButton);
+ // initPanel.add(initButton);
initButton.setEnabled(true);
setButton = new JButton("Set");
setButton.addActionListener(this);
@@ -73,8 +79,8 @@
cb.addItem(config.getComponentManager().getComponentName(reasoner.get(i)));
}
- optionPanel = new OptionPanel(config, config.getReasoner(), config.getOldReasonerSet(),
- reasoner.get(choosenClassIndex));
+ ReasonerComponent rc = config.newReasoner(reasoner.get(cb.getSelectedIndex()));
+ optionPanel = new OptionPanel(config, rc);
choosePanel.add(setButton);
cb.addActionListener(this);
@@ -168,8 +174,8 @@
* update OptionPanel with new selection
*/
public void updateOptionPanel() {
- optionPanel.update(config.getReasoner(), config.getOldReasonerSet(), reasoner
- .get(choosenClassIndex));
+// TODO: implement properly !!
+// optionPanel.update(config.getReasoner(), reasoner.get(choosenClassIndex));
}
/**
Modified: trunk/src/dl-learner/org/dllearner/gui/StartGUI.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/gui/StartGUI.java 2008-08-21 11:59:44 UTC (rev 1119)
+++ trunk/src/dl-learner/org/dllearner/gui/StartGUI.java 2008-08-21 14:23:00 UTC (rev 1120)
@@ -1,5 +1,3 @@
-package org.dllearner.gui;
-
/**
* Copyright (C) 2007-2008, Jens Lehmann
*
@@ -19,6 +17,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+package org.dllearner.gui;
import javax.swing.*;
import javax.swing.event.*;
@@ -38,9 +37,10 @@
import javax.swing.filechooser.FileFilter;
/**
- * StartGUI
+ * This class builds the basic GUI elements and is used to start the DL-Learner GUI.
*
* @author Tilo Hielscher
+ * @author Jens Lehmann
*/
public class StartGUI extends JFrame implements ActionListener {
@@ -49,9 +49,10 @@
private JTabbedPane tabPane = new JTabbedPane();
private Config config = new Config();
- private ConfigLoad configLoad = new ConfigLoad(config, this);;
- private ConfigSave configSave = new ConfigSave(config, this);;
+ private ConfigLoad configLoad = new ConfigLoad(config, this);
+ private ConfigSave configSave = new ConfigSave(config, this);
+
private KnowledgeSourcePanel tab0;
private ReasonerPanel tab1;
private LearningProblemPanel tab2;
@@ -60,19 +61,23 @@
private JMenuBar menuBar = new JMenuBar();
private JMenu menuFile = new JMenu("File");
- private JMenuItem openItem = new JMenuItem("Open Config");
- private JMenuItem saveItem = new JMenuItem("Save As Config");
+ private JMenuItem openItem = new JMenuItem("Open Conf File ...");
+ private JMenuItem saveItem = new JMenuItem("Save As Conf File ...");
+ private JMenuItem exitItem = new JMenuItem("Exit");
+ private JMenu menuHelp = new JMenu("Help");
+ private JMenuItem aboutItem = new JMenuItem("About");
+ private JMenuItem tutorialItem = new JMenuItem("Tutorial");
public StartGUI() {
this(null);
}
-
+
public StartGUI(File file) {
- this.setTitle("DL-Learner");
+ this.setTitle("DL-Learner GUI");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationByPlatform(true);
this.setSize(800, 600);
-
+
// set icon
if (this.getClass().getResource("icon.gif") != null)
setIconImage(java.awt.Toolkit.getDefaultToolkit().getImage(
@@ -89,15 +94,22 @@
tabPane.addTab("Learning Algorithm", tab3);
tabPane.addTab("Run", tab4);
- this.setJMenuBar(menuBar);
+ setJMenuBar(menuBar);
menuBar.add(menuFile);
menuFile.add(openItem);
openItem.addActionListener(this);
menuFile.add(saveItem);
saveItem.addActionListener(this);
+ menuFile.add(exitItem);
+ exitItem.addActionListener(this);
+ menuBar.add(menuHelp);
+ menuHelp.add(tutorialItem);
+ tutorialItem.addActionListener(this);
+ menuHelp.add(aboutItem);
+ aboutItem.addActionListener(this);
- this.add(tabPane);
- this.setVisible(true);
+ add(tabPane);
+ setVisible(true);
updateTabColors();
// Register a change listener
@@ -107,8 +119,8 @@
init();
}
});
-
- if(file != null) {
+
+ if (file != null) {
configLoad.openFile(file);
configLoad.startParser();
}
@@ -132,10 +144,10 @@
logger.setLevel(Level.INFO);
File file = null;
- if(args.length > 0)
+ if (args.length > 0)
file = new File(args[args.length - 1]);
- new StartGUI(file);
+ new StartGUI(file);
}
public void actionPerformed(ActionEvent e) {
@@ -162,9 +174,8 @@
configLoad.openFile(fc.getSelectedFile());
configLoad.startParser();
}
- }
// save as config file
- if (e.getSource() == saveItem) {
+ } else if (e.getSource() == saveItem) {
JFileChooser fc = new JFileChooser(new File("examples/"));
// FileFilter only *.conf
fc.addChoosableFileFilter(new FileFilter() {
@@ -194,6 +205,15 @@
}
}
System.out.println("config file saved");
+ // exit
+ } else if (e.getSource() == exitItem) {
+ dispose();
+ // tutorial
+ } else if (e.getSource() == tutorialItem) {
+ new TutorialWindow();
+ // about
+ } else if (e.getSource() == aboutItem) {
+ new AboutWindow();
}
}
Added: trunk/src/dl-learner/org/dllearner/gui/TutorialWindow.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/gui/TutorialWindow.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/gui/TutorialWindow.java 2008-08-21 14:23:00 UTC (rev 1120)
@@ -0,0 +1,26 @@
+package org.dllearner.gui;
+
+import javax.swing.JFrame;
+
+/**
+ * Window displaying a tutorial for the DL-Learner GUI.
+ *
+ * @author Jens Lehmann
+ *
+ */
+public class TutorialWindow extends JFrame {
+
+ private static final long serialVersionUID = 9152567539729126842L;
+
+ public TutorialWindow() {
+ setTitle("Quick Tutorial");
+ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ setLocationByPlatform(true);
+ setSize(300, 500);
+
+ // display tutorial text
+
+ setVisible(true);
+ }
+
+}
Deleted: trunk/src/dl-learner/org/dllearner/gui/WidgetPanelAbstract.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/gui/WidgetPanelAbstract.java 2008-08-21 11:59:44 UTC (rev 1119)
+++ trunk/src/dl-learner/org/dllearner/gui/WidgetPanelAbstract.java 2008-08-21 14:23:00 UTC (rev 1120)
@@ -1,47 +0,0 @@
-package org.dllearner.gui;
-
-/**
- * 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/>.
- *
- */
-
-import javax.swing.JPanel;
-
-/**
- * WidgetPanelAbstract defines all Widgets in an abstract way.
- *
- * @author Tilo Hielscher
- */
-public abstract class WidgetPanelAbstract extends JPanel {
-
- /**
- * Show label and tooltip.
- */
- public abstract void showLabel();
-
- /**
- * Show textfield, setbutton and so on, make layout.
- */
- public abstract void showThingToChange();
-
- /**
- * Set entry you got from showThingToChange().
- */
- public abstract void setEntry();
-
-}
Modified: trunk/src/dl-learner/org/dllearner/gui/WidgetPanelBoolean.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/gui/WidgetPanelBoolean.java 2008-08-21 11:59:44 UTC (rev 1119)
+++ trunk/src/dl-learner/org/dllearner/gui/WidgetPanelBoolean.java 2008-08-21 14:23:00 UTC (rev 1120)
@@ -1,5 +1,3 @@
-package org.dllearner.gui;
-
/**
* Copyright (C) 2007-2008, Jens Lehmann
*
@@ -19,53 +17,35 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+package org.dllearner.gui;
-import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
-import java.awt.Color;
import javax.swing.JComboBox;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
import org.dllearner.core.Component;
-import org.dllearner.core.config.ConfigEntry;
-import org.dllearner.core.config.ConfigOption;
import org.dllearner.core.config.BooleanConfigOption;
+import org.dllearner.core.config.ConfigEntry;
import org.dllearner.core.config.InvalidConfigOptionValueException;
/**
* Panel for option Boolean, defined in
* org.dllearner.core.config.BooleanConfigOption.
*
+ * @author Jens Lehmann
* @author Tilo Hielscher
*/
-public class WidgetPanelBoolean extends WidgetPanelAbstract implements ActionListener {
+public class WidgetPanelBoolean extends AbstractWidgetPanel<Boolean> implements ActionListener {
private static final long serialVersionUID = -4800583253223939928L;
- private Config config;
- private ConfigOption<?> configOption;
- private JLabel nameLabel;
- private JPanel widgetPanel = new JPanel();
- private Component component;
- private Component oldComponent;
- private Class<? extends Component> componentOption;
+
private Boolean value;
- private String[] kbBoxItems = { "false", "true" };
- private JComboBox cb = new JComboBox(kbBoxItems);
+// private String[] kbBoxItems; // = { "false", "true" };
+ private JComboBox cb; // = new JComboBox(kbBoxItems);
- public WidgetPanelBoolean(Config config, Component component, Component oldComponent,
- Class<? extends Component> componentOption, ConfigOption<?> configOption) {
- this.config = config;
- this.configOption = configOption;
- this.component = component;
- this.oldComponent = oldComponent;
- this.componentOption = componentOption;
-
- showLabel(); // name of option and tooltip
- showThingToChange(); // textfield, setbutton
- add(widgetPanel, BorderLayout.CENTER);
+ public WidgetPanelBoolean(Config config, Component component, BooleanConfigOption configOption) {
+ super(config, component, configOption);
}
public void actionPerformed(ActionEvent e) {
@@ -73,76 +53,27 @@
value = false;
else
value = true;
- setEntry();
- }
-
- @Override
- public void showLabel() {
- nameLabel = new JLabel(configOption.getName());
- nameLabel.setToolTipText(configOption.getDescription());
- widgetPanel.add(nameLabel);
- }
-
- @Override
- public void showThingToChange() {
- if (component != null) {
- // BooleanConfigOption
- if (configOption.getClass().toString().contains("BooleanConfigOption")) {
- // previous set value
- if (configOption != null) {
- value = (Boolean) config.getComponentManager().getConfigOptionValue(component,
- configOption.getName());
- }
- // previous set value from old
- if (component != null && oldComponent != null) {
- if (oldComponent.getClass().equals(component.getClass())) {
- value = (Boolean) config.getComponentManager().getConfigOptionValue(
- oldComponent, configOption.getName());
- if (value == null)
- value = false;
- else
- setEntry();
- // set cb-index
- if (!value)
- cb.setSelectedIndex(0);
- else
- cb.setSelectedIndex(1);
- }
- }
- // default value
- else if (value != null && configOption.getDefaultValue() != null) {
- value = (Boolean) configOption.getDefaultValue();
- }
- // value == null?
- if (value == null) {
- value = false;
- }
- // set cb-index
- if (!value)
- cb.setSelectedIndex(0);
- else
- cb.setSelectedIndex(1);
- cb.addActionListener(this);
- widgetPanel.add(cb);
+
+ BooleanConfigOption specialOption;
+ specialOption = (BooleanConfigOption) config.getComponentManager().getConfigOption(
+ component.getClass(), configOption.getName());
+ if (specialOption.isValidValue(value)) {
+ try {
+ ConfigEntry<Boolean> specialEntry = new ConfigEntry<Boolean>(specialOption, value);
+ config.getComponentManager().applyConfigEntry(component, specialEntry);
+ // System.out.println("set Boolean: " + configOption.getName() +
+ // " = " + value);
+ } catch (InvalidConfigOptionValueException s) {
+ s.printStackTrace();
}
- // UNKNOWN
- else {
- JLabel notImplementedLabel = new JLabel("not a boolean");
- notImplementedLabel.setForeground(Color.RED);
- widgetPanel.add(notImplementedLabel);
- }
- } else { // configOption == NULL
- JLabel noConfigOptionLabel = new JLabel("no init (Boolean)");
- noConfigOptionLabel.setForeground(Color.MAGENTA);
- widgetPanel.add(noConfigOptionLabel);
- }
+ } else
+ System.out.println("Boolean: not valid value");
}
- @Override
public void setEntry() {
BooleanConfigOption specialOption;
specialOption = (BooleanConfigOption) config.getComponentManager().getConfigOption(
- componentOption, configOption.getName());
+ component.getClass(), configOption.getName());
if (specialOption.isValidValue(value)) {
try {
ConfigEntry<Boolean> specialEntry = new ConfigEntry<Boolean>(specialOption, value);
@@ -156,4 +87,28 @@
System.out.println("Boolean: not valid value");
}
+ @Override
+ public void buildWidgetPanel() {
+ add(getLabel());
+
+ value = config.getConfigOptionValue(component, configOption);
+
+ if (value == null)
+ value = false;
+ else
+ setEntry();
+
+ // set cb-index
+ String[] kbBoxItems = { "false", "true" };
+ cb = new JComboBox(kbBoxItems);
+ if (!value)
+ cb.setSelectedIndex(0);
+ else
+ cb.setSelectedIndex(1);
+
+ cb.addActionListener(this);
+ add(cb);
+
+ }
+
}
Modified: trunk/src/dl-learner/org/dllearner/gui/WidgetPanelDefault.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/gui/WidgetPanelDefault.java 2008-08-21 11:59:44 UTC (rev 1119)
+++ trunk/src/dl-learner/org/dllearner/gui/WidgetPanelDefault.java 2008-08-21 14:23:00 UTC (rev 1120)
@@ -1,5 +1,3 @@
-package org.dllearner.gui;
-
/**
* Copyright (C) 2007-2008, Jens Lehmann
*
@@ -19,12 +17,11 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+package org.dllearner.gui;
-import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.JLabel;
-import javax.swing.JPanel;
import org.dllearner.core.Component;
import org.dllearner.core.config.ConfigOption;
@@ -35,42 +32,20 @@
* @author Tilo Hielscher
*
*/
-public class WidgetPanelDefault extends WidgetPanelAbstract {
+public class WidgetPanelDefault extends AbstractWidgetPanel<Object> {
private static final long serialVersionUID = 4059515858894036769L;
- private ConfigOption<?> configOption;
- private JLabel nameLabel;
- private JPanel widgetPanel = new JPanel();
-
- public WidgetPanelDefault(Config config, Component component,
- Class<? extends Component> componentOption, ConfigOption<?> configOption) {
-
- this.configOption = configOption;
-
- showLabel();
- showThingToChange();
- add(widgetPanel, BorderLayout.CENTER);
+ public WidgetPanelDefault(Config config, Component component, ConfigOption<Object> configOption) {
+ super(config, component, configOption);
}
@Override
- public void showLabel() {
- nameLabel = new JLabel(configOption.getName());
- nameLabel.setToolTipText(configOption.getDescription());
- widgetPanel.add(nameLabel);
- }
-
- @Override
- public void showThingToChange() {
+ public void buildWidgetPanel() {
JLabel notImplementedLabel = new JLabel(configOption.getClass().getSimpleName()
+ " not implemented");
notImplementedLabel.setForeground(Color.RED);
-
- widgetPanel.add(notImplementedLabel);
+ add(notImplementedLabel);
}
- @Override
- public void setEntry() {
- }
-
}
Modified: trunk/src/dl-learner/org/dllearner/gui/WidgetPanelDouble.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/gui/WidgetPanelDouble.java 2008-08-21 11:59:44 UTC (rev 1119)
+++ trunk/src/dl-learner/org/dllearner/gui/WidgetPanelDouble.java 2008-08-21 14:23:00 UTC (rev 1120)
@@ -20,55 +20,37 @@
*
*/
-import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
-import java.awt.Color;
-import javax.swing.JTextField;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
import javax.swing.JButton;
+import javax.swing.JTextField;
import org.dllearner.core.Component;
import org.dllearner.core.config.ConfigEntry;
-import org.dllearner.core.config.ConfigOption;
import org.dllearner.core.config.DoubleConfigOption;
import org.dllearner.core.config.InvalidConfigOptionValueException;
/**
* Panel for option Double, defined in
- * org.dllearner.core.config.DoubleConfigOption.
+ * {@link org.dllearner.core.config.DoubleConfigOption}.
*
* @author Tilo Hielscher
*
*/
-public class WidgetPanelDouble extends WidgetPanelAbstract implements ActionListener {
+public class WidgetPanelDouble extends AbstractWidgetPanel<Double> implements ActionListener {
private static final long serialVersionUID = 5238903690721116289L;
- private Config config;
- private ConfigOption<?> configOption;
- private JLabel nameLabel;
- private JPanel widgetPanel = new JPanel();
+
private JButton setButton = new JButton("Set");
- private Component component;
- private Component oldComponent;
- private Class<? extends Component> componentOption;
+// private Class<? extends Component> componentOption;
+
private Double value;
private JTextField doubleField = new JTextField(5);
- public WidgetPanelDouble(Config config, Component component, Component oldComponent,
- Class<? extends Component> componentOption, ConfigOption<?> configOption) {
- this.config = config;
- this.configOption = configOption;
- this.component = component;
- this.oldComponent = oldComponent;
- this.componentOption = componentOption;
-
- showLabel(); // name of option and tooltip
- showThingToChange(); // textfield, setbutton
- add(widgetPanel, BorderLayout.CENTER);
+ public WidgetPanelDouble(Config config, Component component, DoubleConfigOption configOption) {
+ super(config, component, configOption);
}
public void actionPerformed(ActionEvent e) {
@@ -77,69 +59,11 @@
}
}
- @Override
- public void showLabel() {
- nameLabel = new JLabel(configOption.getName());
- nameLabel.setToolTipText(configOption.getDescription());
- widgetPanel.add(nameLabel);
- }
-
- @Override
- public void showThingToChange() {
- if (component != null) {
- // DoubleConfigOption
- if (configOption.getClass().toString().contains("DoubleConfigOption")) {
- // previous set value
- if (configOption != null) {
- value = (Double) config.getComponentManager().getConfigOptionValue(component,
- configOption.getName());
- }
- // previous set value from old
- if (component != null && oldComponent != null) {
- if (oldComponent.getClass().equals(component.getClass())) {
- value = (Double) config.getComponentManager().getConfigOptionValue(
- oldComponent, configOption.getName());
- if (value == null)
- value = 0.0;
- else {
- doubleField.setText(value.toString());
- setEntry();
- }
- }
- }
- // default value
- else if (configOption.getDefaultValue() != null) {
- value = (Double) configOption.getDefaultValue();
- }
- // value == null
- if (value == null) {
- value = 0.0;
- }
- doubleField.setText(value.toString());
- doubleField.setToolTipText(configOption.getAllowedValuesDescription());
- setButton.addActionListener(this);
- widgetPanel.add(doubleField);
- widgetPanel.add(setButton);
- }
- // UNKNOWN
- else {
- JLabel notImplementedLabel = new JLabel("not a double");
- notImplementedLabel.setForeground(Color.RED);
- widgetPanel.add(notImplementedLabel);
- }
- } else { // configOption == NULL
- JLabel noConfigOptionLabel = new JLabel("no instance (Double)");
- noConfigOptionLabel.setForeground(Color.MAGENTA);
- widgetPanel.add(noConfigOptionLabel);
- }
- }
-
- @Override
public void setEntry() {
DoubleConfigOption specialOption;
value = Double.parseDouble(doubleField.getText()); // get from input
specialOption = (DoubleConfigOption) config.getComponentManager().getConfigOption(
- componentOption, configOption.getName());
+ component.getClass(), configOption.getName());
if (specialOption.isValidValue(value)) {
try {
ConfigEntry<Double> specialEntry = new ConfigEntry<Double>(specialOption, value);
@@ -152,4 +76,27 @@
} else
System.out.println("Double: not valid value");
}
+
+ @Override
+ public void buildWidgetPanel() {
+ add(getLabel());
+
+ value = config.getConfigOptionValue(component, configOption);
+
+ setButton = new JButton("Set");
+ doubleField = new JTextField(5);
+ if (value == null)
+ value = 0.0;
+ else {
+ doubleField.setText(value.toString());
+ setEntry();
+ }
+
+ doubleField.setText(value.toString());
+ doubleField.setToolTipText(configOption.getAllowedValuesDescription());
+ setButton.addActionListener(this);
+ add(doubleField);
+ add(setButton);
+
+ }
}
Modified: trunk/src/dl-learner/org/dllearner/gui/WidgetPanelInteger.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/gui/WidgetPanelInteger.java 2008-08-21 11:59:44 UTC (rev 1119)
+++ trunk/src/dl-learner/org/dllearner/gui/WidgetPanelInteger.java 2008-08-21 14:23:00 UTC (rev 1120)
@@ -20,19 +20,14 @@
*
*/
-import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
-import java.awt.Color;
-import javax.swing.JTextField;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
import javax.swing.JButton;
+import javax.swing.JTextField;
import org.dllearner.core.Component;
import org.dllearner.core.config.ConfigEntry;
-import org.dllearner.core.config.ConfigOption;
import org.dllearner.core.config.IntegerConfigOption;
import org.dllearner.core.config.InvalidConfigOptionValueException;
@@ -43,33 +38,17 @@
* @author Tilo Hielscher
*
*/
-public class WidgetPanelInteger extends WidgetPanelAbstract implements ActionListener {
+public class WidgetPanelInteger extends AbstractWidgetPanel<Integer> implements ActionListener {
private static final long serialVersionUID = -1802111225835164644L;
- private Config config;
- private ConfigOption<?> configOption;
- private JLabel nameLabel;
- private JPanel widgetPanel = new JPanel();
private JButton setButton = new JButton("Set");
- private Component component;
- private Component oldComponent;
- private Class<? extends Component> componentOption;
private Integer value;
private JTextField integerField = new JTextField(3);
- public WidgetPanelInteger(Config config, Component component, Component oldComponent,
- Class<? extends Component> componentOption, ConfigOption<?> configOption) {
- this.config = config;
- this.configOption = configOption;
- this.component = component;
- this.oldComponent = oldComponent;
- this.componentOption = componentOption;
-
- showLabel(); // name of option and tooltip
- showThingToChange(); // textfield, setbutton
- add(widgetPanel, BorderLayout.CENTER);
+ public WidgetPanelInteger(Config config, Component component, IntegerConfigOption configOption) {
+ super(config, component, configOption);
}
public void actionPerformed(ActionEvent e) {
@@ -78,69 +57,11 @@
}
}
- @Override
- public void showLabel() {
- nameLabel = new JLabel(configOption.getName());
- nameLabel.setToolTipText(configOption.getDescription());
- widgetPanel.add(nameLabel);
- }
-
- @Override
- public void showThingToChange() {
- if (component != null) {
- // IntegerConfigOption
- if (configOption.getClass().toString().contains("IntegerConfigOption")) {
- // previous set value
- if (configOption != null) {
- value = (Integer) config.getComponentManager().getConfigOptionValue(component,
- configOption.getName());
- }
- // previous set value from old
- if (component != null && oldComponent != null) {
- if (oldComponent.getClass().equals(component.getClass())) {
- value = (Integer) config.getComponentManager().getConfigOptionValue(
- oldComponent, configOption.getName());
- if (value == null)
- value = 0;
- else {
- integerField.setText(value.toString());
- setEntry();
- }
- }
- }
- // default value
- else if (configOption.getDefaultValue() != null) {
- value = (Integer) configOption.getDefaultValue();
- }
- // value == null
- if (value == null) {
- value = 0;
- }
- integerField.setText(value.toString());
- integerField.setToolTipText(configOption.getAllowedValuesDescription());
- setButton.addActionListener(this);
- widgetPanel.add(integerField);
- widgetPanel.add(setButton);
- }
- // UNKNOWN
- else {
- JLabel notImplementedLabel = new JLabel("not an integer");
- notImplementedLabel.setForeground(Color.RED);
- widgetPanel.add(notImplementedLabel);
- }
- } else { // configOption == NULL
- JLabel noConfigOptionLabel = new JLabel("no instance (Integer)");
- noConfigOptionLabel.setForeground(Color.MAGENTA);
- widgetPanel.add(noConfigOptionLabel);
- }
- }
-
- @Override
public void setEntry() {
IntegerConfigOption specialOption;
value = Integer.parseInt(integerField.getText()); // get from input
specialOption = (IntegerConfigOption) config.getComponentManager().getConfigOption(
- componentOption, configOption.getName());
+ component.getClass(), configOption.getName());
if (specialOption.isValidValue(value)) {
try {
ConfigEntry<Integer> specialEntry = new ConfigEntry<Integer>(specialOption, value);
@@ -153,4 +74,26 @@
} else
System.out.println("Integer: not valid value");
}
+
+ @Override
+ public void buildWidgetPanel() {
+ add(getLabel());
+
+ value = config.getConfigOptionValue(component, configOption);
+
+ setButton = new JButton("Set");
+ integerField = new JTextField(3);
+ if (value == null)
+ value = 0;
+ else {
+ integerField.setText(value.toString());
+ setEntry();
+ }
+
+ integerField.setText(value.toString());
+ integerField.setToolTipText(configOption.getAllowedValuesDescription());
+ setButton.addActionListener(this);
+ add(integerField);
+ add(setButton);
+ }
}
Modified: trunk/src/dl-learner/org/dllearner/gui/WidgetPanelString.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/gui/WidgetPanelString.java 2008-08-21 11:59:44 UTC (rev 1119)
+++ trunk/src/dl-learner/org/dllearner/gui/WidgetPanelString.java 2008-08-21 14:23:00 UTC (rev 1120)
@@ -1,5 +1,3 @@
-package org.dllearner.gui;
-
/**
* Copyright (C) 2007-2008, Jens Lehmann
*
@@ -19,58 +17,43 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+package org.dllearner.gui;
-import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
-import java.awt.Color;
import java.io.File;
+import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JTextField;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JButton;
import org.dllearner.core.Component;
import org.dllearner.core.config.ConfigEntry;
-import org.dllearner.core.config.ConfigOption;
-import org.dllearner.core.config.StringConfigOption;
import org.dllearner.core.config.InvalidConfigOptionValueException;
+import org.dllearner.core.config.StringConfigOption;
/**
* Panel for option String, defined in
- * org.dllearner.core.config.StringConfigOption.
+ * {@link org.dllearner.core.config.StringConfigOption}.
*
+ * @author Jens Lehmann
* @author Tilo Hielscher
*
*/
-public class WidgetPanelString extends WidgetPanelAbstract implements ActionListener {
+public class WidgetPanelString extends AbstractWidgetPanel<String> implements ActionListener {
private static final long serialVersionUID = -2169739820989891226L;
- private Config config;
- private ConfigOption<?> configOption;
- private JLabel nameLabel;
- private JPanel widgetPanel = new JPanel();
- private JButton setButton = new JButton("Set");
- private Component component;
- private Component oldComponent;
+
+// private JPanel widgetPanel = new JPanel();
+ private JButton setButton; // = new JButton("Set");
+
private Class<? extends Component> componentOption;
private String value;
- private JTextField stringField = new JTextField(35);
+ private JTextField stringField; // = new JTextField(35);
- public WidgetPanelString(Config config, Component component, Component oldComponent,
- Class<? extends Component> componentOption, ConfigOption<?> configOption) {
- this.config = config;
- this.configOption = configOption;
- this.component = component;
- this.oldComponent = oldComponent;
- this.componentOption = componentOption;
-
- showLabel(); // name of option and tooltip
- showThingToChange(); // textfield, setbutton
- add(widgetPanel, BorderLayout.CENTER);
+ public WidgetPanelString(Config config, Component component, StringConfigOption configOption) {
+ super(config, component, configOption);
}
public void actionPerformed(ActionEvent e) {
@@ -92,64 +75,6 @@
}
}
- @Override
- public void showLabel() {
- nameLabel = new JLabel(configOption.getName());
- nameLabel.setToolTipText(configOption.getDescription());
- widgetPanel.add(nameLabel);
- }
-
- @Override
- public void showThingToChange() {
- if (component != null) {
- // StringConfigOption
- if (configOption.getClass().toString().contains("StringConfigOption")) {
- // previous set value
- if (configOption != null) {
- value = (String) config.getComponentManager().getConfigOptionValue(component,
- configOption.getName());
- }
- // previous set value from old
- if (component != null && oldComponent != null) {
- if (oldComponent.getClass().equals(component.getClass())) {
- value = (String) config.getComponentManager().getConfigOptionValue(
- oldComponent, configOption.getName());
- if (value != null) {
- stringField.setText(value.toString());
- setEntry();
- }
- }
- }
- // default value
- else if (configOption.getDefaultValue() != null) {
- value = (String) configOption.getDefaultValue();
- }
- // value == null
- if (value == null) {
- value = "";
- }
- stringField.setText(value.toString());
- stringField.setToolTipText(configOption.getAllowedValuesDescription());
- setButton.addActionListener(this);
- widgetPanel.add(stringField);
- widgetPanel.add(setButton);
- if (checkForFilename())
- setButton.setText("choose local file");
- }
- // UNKNOWN
- else {
- JLabel notImplementedLabel = new JLabel("not a string");
- notImplementedLabel.setForeground(Color.RED);
- widgetPanel.add(notImplementedLabel);
- }
- } else { // configOption == NULL
- JLabel noConfigOptionLabel = new JLabel("no instance (String)");
- noConfigOptionLabel.setForeground(Color.MAGENTA);
- widgetPanel.add(noConfigOptionLabel);
- }
- }
-
- @Override
public void setEntry() {
StringConfigOption specialOption;
value = stringField.getText(); // get from input
@@ -176,4 +101,32 @@
return configOption.getName().equalsIgnoreCase("filename");
}
+ @Override
+ public void buildWidgetPanel() {
+ add(getLabel());
+
+ // get current value of this option for the given component
+ value = config.getConfigOptionValue(component, configOption);
+ // default values can be null, so we interpret this as empty string
+ if (value == null) {
+ value = "";
+ }
+
+ // text field for strings
+ stringField = new JTextField(35);
+ stringField.setText(value);
+ stringField.setToolTipText(configOption.getAllowedValuesDescription());
+
+ // set button (value is only updated when this button is pressed => would better without set)
+ setButton = new JButton("Set");
+ setButton.addActionListener(this);
+
+ add(stringField);
+ add(setButton);
+
+ if (checkForFilename())
+ setButton.setText("choose local file");
+
+ }
+
}
Modified: trunk/src/dl-learner/org/dllearner/gui/WidgetPanelStringSet.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/gui/WidgetPanelStringSet.java 2008-08-21 11:59:44 UTC (rev 1119)
+++ trunk/src/dl-learner/org/dllearner/gui/WidgetPanelStringSet.java 2008-08-21 14:23:00 UTC (rev 1120)
@@ -1,5 +1,3 @@
-package org.dllearner.gui;
-
/**
* Copyright (C) 2007-2008, Jens Lehmann
*
@@ -19,6 +17,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
+package org.dllearner.gui;
import java.awt.BorderLayout;
import java.awt.Dimension;
@@ -26,24 +25,24 @@
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
-import java.awt.Color;
-import java.util.*;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.Set;
import javax.swing.DefaultListModel;
-import javax.swing.JLabel;
+import javax.swing.JButton;
import javax.swing.JList;
import javax.swing.JPanel;
-import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import org.dllearner.core.Component;
import org.dllearner.core.config.ConfigEntry;
-import org.dllearner.core.config.ConfigOption;
-import org.dllearner.core.config.StringSetConfigOption;
import org.dllearner.core.config.InvalidConfigOpti...
[truncated message content] |
|
From: <ku...@us...> - 2008-08-21 14:54:38
|
Revision: 1121
http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1121&view=rev
Author: kurzum
Date: 2008-08-21 14:54:31 +0000 (Thu, 21 Aug 2008)
Log Message:
-----------
empty log message
Modified Paths:
--------------
trunk/src/dl-learner/org/dllearner/cli/Start.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitorImproved.java
trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/DBPediaNavigatorCityLocatorRule.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/ObjectReplacementRule.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/PredicateReplacementRule.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/Rule.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.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/SparqlQueryMaker.java
trunk/src/dl-learner/org/dllearner/scripts/NT2RDF.java
trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java
trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java
Modified: trunk/src/dl-learner/org/dllearner/cli/Start.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-08-21 14:23:00 UTC (rev 1120)
+++ trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-08-21 14:54:31 UTC (rev 1121)
@@ -86,6 +86,7 @@
import org.dllearner.reasoning.OWLAPIReasoner;
import org.dllearner.utilities.Files;
import org.dllearner.utilities.Helper;
+import org.dllearner.utilities.JamonMonitorLogger;
import org.dllearner.utilities.datastructures.Datastructures;
import org.dllearner.utilities.datastructures.StringTuple;
import org.dllearner.utilities.owl.ConceptComparator;
@@ -155,7 +156,9 @@
Start start = new Start(file);
start.start(inQueryMode);
// write JaMON report in HTML file
- Files.createFile(new File("log/jamon.html"), MonitorFactory.getReport());
+ File jamonlog = new File("log/jamon.html");
+ Files.createFile(jamonlog, MonitorFactory.getReport());
+ Files.appendFile(jamonlog, "<xmp>\n"+JamonMonitorLogger.getStringForAllSortedByLabel());
}
/**
Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitorImproved.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitorImproved.java 2008-08-21 14:23:00 UTC (rev 1120)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitorImproved.java 2008-08-21 14:54:31 UTC (rev 1121)
@@ -85,23 +85,23 @@
RDFNode nextOBJ = binding.get(OBJECT+i);
RDFNode nextPRED = binding.get(PREDICATE+i);
RDFNodeTuple tmptuple = new RDFNodeTuple(nextPRED, nextOBJ );
- add(uri,tmptuple);
+ addToLocalCache(uri,tmptuple);
boolean cont = !nextOBJ.isLiteral();
- for (i=0; (i < recursionDepth) && cont; i++) {
+ for (i=1; (i < recursionDepth) && cont; i++) {
RDFNode tmpPREDURI = binding.get(PREDICATE+i);
RDFNode tmpOBJURI = binding.get(OBJECT+i);
if(tmpOBJURI==null) {
cont=false;
}else if (tmpOBJURI.isLiteral()) {
tmptuple = new RDFNodeTuple(tmpPREDURI, tmpOBJURI );
- add(nextOBJ.toString(), tmptuple);
+ addToLocalCache(nextOBJ.toString(), tmptuple);
//logger.trace(tmptuple);
//logger.trace("For: "+nextOBJ.toString()+ " added :"+resources.get(nextOBJ.toString()));
cont=false;
}else {
tmptuple = new RDFNodeTuple(tmpPREDURI, tmpOBJURI );
- add(nextOBJ.toString(), tmptuple);
+ addToLocalCache(nextOBJ.toString(), tmptuple);
//logger.trace(tmptuple);
//logger.trace("For: "+nextOBJ.toString()+ " added :"+resources.get(nextOBJ.toString()));
nextOBJ = tmpOBJURI;
@@ -124,6 +124,7 @@
public SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri){
int tmp = recursionDepth;
recursionDepth=4;
+
SortedSet<RDFNodeTuple> tmpSet = retrieveTupel(uri);
recursionDepth = tmp;
return tmpSet;
@@ -133,12 +134,15 @@
}
- private void add(String uri, RDFNodeTuple tuple){
+ private void addToLocalCache(String uri, RDFNodeTuple tuple){
SortedSet<RDFNodeTuple> set = resources.get(uri);
+
+
if(set==null){
set = new TreeSet<RDFNodeTuple>();
set.add(tuple);
resources.put(uri, set );
+
}else {
set.add(tuple);
}
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-21 14:23:00 UTC (rev 1120)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-21 14:54:31 UTC (rev 1121)
@@ -24,6 +24,7 @@
import java.util.SortedSet;
import java.util.TreeSet;
+import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.dllearner.kb.aquisitors.TupleAquisitor;
import org.dllearner.utilities.statistics.SimpleClock;
@@ -108,14 +109,15 @@
if(configuration.isCloseAfterRecursion()){
List<InstanceNode> l = getInstanceNodes(newNodes);
+ logger.info("Getting classes for remaining instances: "+l.size() + " instances");
tupelAquisitor.setNextTaskToClassesForInstances();
collectNodes.addAll(expandCloseAfterRecursion(l, tupelAquisitor));
-
}
// gets All Class Nodes and expands them further
if (configuration.isGetAllSuperClasses()) {
List<ClassNode> allClassNodes = getClassNodes(collectNodes);
tupelAquisitor.setNextTaskToClassInformation();
+ logger.info("Get all superclasses for "+allClassNodes.size() + " classes");
expandAllSuperClassesOfANode(allClassNodes, tupelAquisitor);
}
@@ -124,6 +126,7 @@
}
private List<Node> expandCloseAfterRecursion(List<InstanceNode> instanceNodes, TupleAquisitor tupelAquisitor) {
+
List<Node> newNodes = new ArrayList<Node>();
tupelAquisitor.setNextTaskToClassesForInstances();
if (configuration.isCloseAfterRecursion()) {
@@ -142,19 +145,23 @@
}
private void expandAllSuperClassesOfANode(List<ClassNode> allClassNodes, TupleAquisitor tupelAquisitor) {
- logger.info("Get all superclasses");
+
List<Node> newClasses = new ArrayList<Node>();
newClasses.addAll(allClassNodes);
//TODO LinkedData incompatibility
- tupelAquisitor.setNextTaskToClassInformation();
+
int i = 0;
- while (!newClasses.isEmpty() && false) {
+
+ while (!newClasses.isEmpty() ) {
logger.trace("Remaining classes: " + newClasses.size());
Node next = newClasses.remove(0);
+ logger.trace("Getting Superclasses for: " + next);
+
if (!alreadyQueriedSuperClasses.contains(next.getURI().toString())) {
- logger.trace("Getting Superclasses for: " + next);
+ logger.trace("" + next+" not in cache retrieving");
alreadyQueriedSuperClasses.add(next.getURI().toString());
+ tupelAquisitor.setNextTaskToClassInformation();
newClasses.addAll(next.expand(tupelAquisitor, configuration.getManipulator()));
if (i > configuration.getBreakSuperClassesAfter()) {
@@ -162,6 +169,9 @@
}//endinnerif
i++;
}//endouterif
+ else {
+ logger.trace("" + next+" in cache skipping");
+ }
}//endwhile
if(!configuration.isOptimizeForDLLearner()){
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/DBPediaNavigatorCityLocatorRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/DBPediaNavigatorCityLocatorRule.java 2008-08-21 14:23:00 UTC (rev 1120)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/DBPediaNavigatorCityLocatorRule.java 2008-08-21 14:54:31 UTC (rev 1121)
@@ -63,8 +63,13 @@
}
+ @Override
+ public void logJamon(){
+
+ }
+
}
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java 2008-08-21 14:23:00 UTC (rev 1120)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java 2008-08-21 14:54:31 UTC (rev 1121)
@@ -99,5 +99,10 @@
}
else return "http://dbpedia.org/class/custom/City_in_World";
}
+
+ @Override
+ public void logJamon(){
+
+ }
}
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/ObjectReplacementRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/ObjectReplacementRule.java 2008-08-21 14:23:00 UTC (rev 1120)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/ObjectReplacementRule.java 2008-08-21 14:54:31 UTC (rev 1121)
@@ -54,6 +54,10 @@
return keep;
}
+ @Override
+ public void logJamon(){
+ JamonMonitorLogger.increaseCount(ObjectReplacementRule.class, "replacedObjects");
+ }
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/PredicateReplacementRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/PredicateReplacementRule.java 2008-08-21 14:23:00 UTC (rev 1120)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/PredicateReplacementRule.java 2008-08-21 14:54:31 UTC (rev 1121)
@@ -47,14 +47,18 @@
for (RDFNodeTuple tuple : tuples) {
if(tuple.aPartContains(oldPredicate)){
tuple.a = new ResourceImpl(newPredicate);
- JamonMonitorLogger.increaseCount(PredicateReplacementRule.class, "replacedPredicates");
+ logJamon();
}
keep.add(tuple);
}
return keep;
}
+ @Override
+ public void logJamon(){
+ JamonMonitorLogger.increaseCount(PredicateReplacementRule.class, "replacedPredicates");
+ }
+
-
}
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/Rule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/Rule.java 2008-08-21 14:23:00 UTC (rev 1120)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/Rule.java 2008-08-21 14:54:31 UTC (rev 1121)
@@ -59,4 +59,6 @@
}
System.out.println(Months.values());
}
+
+ public abstract void logJamon();
}
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java 2008-08-21 14:23:00 UTC (rev 1120)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java 2008-08-21 14:54:31 UTC (rev 1121)
@@ -43,11 +43,16 @@
if(!tuple.bPartContains(objectFilter)){
keep.add(tuple);
}else{
- JamonMonitorLogger.increaseCount(SimpleObjectFilterRule.class, "filteredTriples");
+ logJamon();
}
}
return keep;
}
+
+ @Override
+ public void logJamon(){
+ JamonMonitorLogger.increaseCount(SimpleObjectFilterRule.class, "filteredTriples");
+ }
/*
private boolean keepTuple(Node subject, RDFNodeTuple tuple) {
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java 2008-08-21 14:23:00 UTC (rev 1120)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java 2008-08-21 14:54:31 UTC (rev 1121)
@@ -44,11 +44,16 @@
if(!tuple.aPartContains(predicateFilter)){
keep.add(tuple);
}else{
- JamonMonitorLogger.increaseCount(SimplePredicateFilterRule.class, "filteredTriples");
+ logJamon();
}
}
return keep;
}
+
+ @Override
+ public void logJamon(){
+ JamonMonitorLogger.increaseCount(SimplePredicateFilterRule.class, "filteredTriples");
+ }
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-08-21 14:23:00 UTC (rev 1120)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-08-21 14:54:31 UTC (rev 1121)
@@ -60,14 +60,21 @@
if(!remove){
keep.add(tuple);
}else{
- JamonMonitorLogger.increaseCount(TypeFilterRule.class, "filteredTriples");
+ logJamon();
}
}
return keep;
}
+ @Override
+ public void logJamon(){
+ JamonMonitorLogger.increaseCount(TypeFilterRule.class, "filteredTriples");
+ }
+
+
+
/*
if (t.a.equals(type) && t.b.equals(classns)
&& node instanceof ClassNode) {
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java 2008-08-21 14:23:00 UTC (rev 1120)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java 2008-08-21 14:54:31 UTC (rev 1121)
@@ -54,8 +54,8 @@
}
public String getHTTPRequest() {
- String ret = this.url.toString()+"/sparql?";
- ret += (defaultGraphURIs.isEmpty())?"":"default-graph-uri="+defaultGraphURIs.remove(0)+"&";
+ String ret = this.url.toString()+"?";
+ ret += (defaultGraphURIs.isEmpty())?"":"default-graph-uri="+defaultGraphURIs.get(0)+"&";
ret += "query=";
return ret;
}
@@ -68,6 +68,10 @@
return namedGraphURIs;
}
+ @Override
+ public String toString(){
+ return getHTTPRequest();
+ }
/*public static SparqlEndpoint getEndpointByNumber(int i) {
switch (i) {
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-08-21 14:23:00 UTC (rev 1120)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-08-21 14:54:31 UTC (rev 1121)
@@ -58,6 +58,7 @@
import org.dllearner.parser.KBParser;
import org.dllearner.reasoning.DIGConverter;
import org.dllearner.reasoning.JenaOWLDIGConverter;
+import org.dllearner.scripts.NT2RDF;
import org.dllearner.utilities.datastructures.StringTuple;
import org.dllearner.utilities.statistics.SimpleClock;
@@ -290,7 +291,7 @@
Configuration configuration = new Configuration(
- getTupleAquisitor(),
+ tupleAquisitor,
manipulator,
recursionDepth,
getAllSuperClasses,
@@ -325,6 +326,10 @@
fw.close();
dumpFile = (new File(basedir + filename)).toURI().toURL();
+ if(debug){
+ NT2RDF.convertNT2RDF(basedir + filename);
+ //System.exit(0);
+ }
} catch (Exception e) {
e.printStackTrace();
}
@@ -388,11 +393,14 @@
public SPARQLTasks getSPARQLTasks() {
+
// get Options for endpoints
if (predefinedEndpoint == null) {
endpoint = new SparqlEndpoint(url, defaultGraphURIs, namedGraphURIs);
} else {
endpoint = SparqlEndpoint.getEndpointByName(predefinedEndpoint);
+ //System.out.println(endpoint);
+
}
if (this.useCache)
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-08-21 14:23:00 UTC (rev 1120)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-08-21 14:54:31 UTC (rev 1121)
@@ -98,6 +98,7 @@
queryExecution = new QueryEngineHTTP(service, sparqlQueryString);
//System.out.println(sparqlEndpoint.getDefaultGraphURIs());
+
for (String dgu : sparqlEndpoint.getDefaultGraphURIs()) {
queryExecution.addDefaultGraph(dgu);
}
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2008-08-21 14:23:00 UTC (rev 1120)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2008-08-21 14:54:31 UTC (rev 1121)
@@ -107,14 +107,14 @@
tmpFilter = (tmpFilter.length() > 0) ? "FILTER( " + lineend + tmpFilter
+ "). " : " ";
- /*String returnString = "SELECT * WHERE {" +lineend +
+ String returnString = "SELECT * WHERE {" +lineend +
"<" + subject + "> ?predicate ?object;" +
"a ?object . "+lineend+
tmpFilter + "}";
- */
- String returnString = "SELECT * WHERE {" +lineend +
- "<" + subject + "> <"+OWLVocabulary.RDF_TYPE+"> ?object. " +lineend+
- tmpFilter + "}";
+
+ //String returnString = "SELECT * WHERE {" +lineend +
+ // "<" + subject + "> <"+OWLVocabulary.RDF_TYPE+"> ?object. " +lineend+
+ // tmpFilter + "}";
return returnString;
}
Modified: trunk/src/dl-learner/org/dllearner/scripts/NT2RDF.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/scripts/NT2RDF.java 2008-08-21 14:23:00 UTC (rev 1120)
+++ trunk/src/dl-learner/org/dllearner/scripts/NT2RDF.java 2008-08-21 14:54:31 UTC (rev 1121)
@@ -35,6 +35,10 @@
}
+ /**
+ * converts .nt file to rdf, same file name, different ending
+ * @param ontopath path to nt file
+ */
public static void convertNT2RDF(String ontopath){
try {
Modified: trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java 2008-08-21 14:23:00 UTC (rev 1120)
+++ trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java 2008-08-21 14:54:31 UTC (rev 1121)
@@ -65,16 +65,23 @@
public static void printAllSortedByLabel() {
+
+ System.out.println(getStringForAllSortedByLabel());
+
+ }
+
+ public static String getStringForAllSortedByLabel() {
List<Monitor> l= getMonitors();
SortedSet<String> sset = new TreeSet<String>();
-
+ StringBuffer sbuf = new StringBuffer();
for (int i = 0; i < l.size(); i++) {
Monitor monitor = l.get(i);
sset.add(monitor.toString());
}
for (String onemon : sset) {
- System.out.println(onemon);
+ sbuf.append(onemon+"\n");
}
+ return sbuf.toString();
}
Modified: trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java 2008-08-21 14:23:00 UTC (rev 1120)
+++ trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java 2008-08-21 14:54:31 UTC (rev 1121)
@@ -24,6 +24,7 @@
public static final String RDF_TYPE = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
public static final String RDFS_SUBCLASS_OF = "http://www.w3.org/2000/01/rdf-schema#subClassOf";
+
public static final String RDFS_CLASS = "http://www.w3.org/2000/01/rdf-schema#Class";
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sk...@us...> - 2008-08-21 16:58:06
|
Revision: 1125
http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1125&view=rev
Author: sknappe
Date: 2008-08-21 16:58:03 +0000 (Thu, 21 Aug 2008)
Log Message:
-----------
changed some little stuff
Modified Paths:
--------------
trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryException.java
trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java
Added Paths:
-----------
trunk/src/dl-learner/org/dllearner/kb/sparql/NaturalLanguageDescriptionConvertVisitor.java
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-08-21 16:53:11 UTC (rev 1124)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-08-21 16:58:03 UTC (rev 1125)
@@ -259,7 +259,7 @@
if (result != null) {
query.setJson(result);
- query.setRunning(false);
+ query.setRunning(false);
SparqlQuery.writeToSparqlLog("***********\nJSON retrieved from cache");
SparqlQuery.writeToSparqlLog("wget -S -O - '\n"+query.getSparqlEndpoint().getHTTPRequest());
SparqlQuery.writeToSparqlLog(query.getSparqlQueryString());
Added: trunk/src/dl-learner/org/dllearner/kb/sparql/NaturalLanguageDescriptionConvertVisitor.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/NaturalLanguageDescriptionConvertVisitor.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/NaturalLanguageDescriptionConvertVisitor.java 2008-08-21 16:58:03 UTC (rev 1125)
@@ -0,0 +1,270 @@
+package org.dllearner.kb.sparql;
+import java.util.HashMap;
+import java.util.SortedSet;
+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;
+import org.dllearner.core.owl.DatatypeSomeRestriction;
+import org.dllearner.core.owl.DatatypeValueRestriction;
+import org.dllearner.core.owl.Description;
+import org.dllearner.core.owl.DescriptionVisitor;
+import org.dllearner.core.owl.Intersection;
+import org.dllearner.core.owl.NamedClass;
+import org.dllearner.core.owl.Negation;
+import org.dllearner.core.owl.Nothing;
+import org.dllearner.core.owl.ObjectAllRestriction;
+import org.dllearner.core.owl.ObjectExactCardinalityRestriction;
+import org.dllearner.core.owl.ObjectMaxCardinalityRestriction;
+import org.dllearner.core.owl.ObjectMinCardinalityRestriction;
+import org.dllearner.core.owl.ObjectSomeRestriction;
+import org.dllearner.core.owl.ObjectValueRestriction;
+import org.dllearner.core.owl.Thing;
+import org.dllearner.core.owl.Union;
+import org.dllearner.parser.KBParser;
+import org.dllearner.parser.ParseException;
+
+/**
+ * Converter from DL-Learner descriptions to a corresponding natural
+ * language description.
+ *
+ * @author Sebastian Knappe
+ *
+ *
+ */
+public class NaturalLanguageDescriptionConvertVisitor implements DescriptionVisitor{
+
+ private static Logger logger = Logger.getLogger(ComponentManager.class);
+
+ private String query="";
+
+ private SPARQLTasks tasks;
+
+ public NaturalLanguageDescriptionConvertVisitor()
+ {
+ //stack.push("subject");
+ tasks=new SPARQLTasks(new Cache("cache"),SparqlEndpoint.getEndpointDBpedia());
+ }
+
+ private String getDescription()
+ { // for old function see below
+ // it was using the object attribute in a strange way
+ // QUALITY: what if this function is called several times?? should be private maybe?
+ String tmpQuery=""+query;
+
+ query = tmpQuery;
+ return query;
+ }
+
+ public static String getNaturalLanguageDescription(Description description)
+ {
+ NaturalLanguageDescriptionConvertVisitor visitor=new NaturalLanguageDescriptionConvertVisitor();
+ description.accept(visitor);
+ String ret = visitor.getDescription();
+ return ret;
+ }
+
+ public static String getSparqlQuery(String descriptionKBSyntax) throws ParseException
+ {
+ Description d = KBParser.parseConcept(descriptionKBSyntax);
+ NaturalLanguageDescriptionConvertVisitor visitor=new NaturalLanguageDescriptionConvertVisitor();
+ d.accept(visitor);
+ String ret = visitor.getDescription();
+ return ret;
+ }
+
+ /**
+ * Used for testing the Sparql Query converter.
+ *
+ * @param args
+ */
+ public static void main(String[] args) {
+ try {
+ SortedSet<String> s = new TreeSet<String>();
+ HashMap<String,String> result = new HashMap<String,String>();
+ String conj="(\"http://dbpedia.org/class/yago/Person100007846\" AND \"http://dbpedia.org/class/yago/Head110162991\")";
+ s.add("EXISTS \"http://dbpedia.org/property/disambiguates\".TOP");
+ s.add("EXISTS \"http://dbpedia.org/property/successor\".\"http://dbpedia.org/class/yago/Person100007846\"");
+ s.add("EXISTS \"http://dbpedia.org/property/successor\"."+conj);
+ s.add("ALL \"http://dbpedia.org/property/disambiguates\".TOP");
+ s.add("ALL \"http://dbpedia.org/property/successor\".\"http://dbpedia.org/class/yago/Person100007846\"");
+ s.add("\"http://dbpedia.org/class/yago/Person100007846\"");
+ s.add(conj);
+ s.add("(\"http://dbpedia.org/class/yago/Person100007846\" OR \"http://dbpedia.org/class/yago/Head110162991\")");
+ s.add("NOT \"http://dbpedia.org/class/yago/Person100007846\"");
+ s.add("(\"http://dbpedia.org/class/yago/HeadOfState110164747\" AND (\"http://dbpedia.org/class/yago/Negotiator110351874\" AND \"http://dbpedia.org/class/yago/Representative110522035\"))");
+ for (String kbsyntax : s) {
+ result.put(kbsyntax,NaturalLanguageDescriptionConvertVisitor.getSparqlQuery(kbsyntax));
+ }
+ System.out.println("************************");
+ for (String string : result.keySet()) {
+ System.out.println("KBSyntayString: "+string);
+ System.out.println("Query:\n"+result.get(string));
+ System.out.println("************************");
+ }
+ System.out.println("Finished");
+ } catch (ParseException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Negation)
+ */
+ public void visit(Negation description) {
+ logger.trace("Negation");
+ query+="not ";
+ description.getChild(0).accept(this);
+ }
+
+ /* (non-Javadoc)
+ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectAllRestriction)
+ */
+ public void visit(ObjectAllRestriction description) {
+ logger.trace("ObjectAllRestriction");
+ SortedSet<String> label=tasks.queryAsSet("SELECT ?label WHERE {<"+description.getRole().toString()+"> <http://www.w3.org/2000/01/rdf-schema#label> ?label}", "label");
+ if (label.size()>0) query+="all "+label.first()+" are ";
+ else query+="all "+description.getRole().toString().substring(description.getRole().toString().lastIndexOf("/")+1)+" are ";
+ description.getChild(0).accept(this);
+ logger.trace(description.getRole().toString());
+ logger.trace(description.getChild(0).toString());
+ }
+
+ /* (non-Javadoc)
+ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectSomeRestriction)
+ */
+ public void visit(ObjectSomeRestriction description) {
+ logger.trace("ObjectSomeRestriction");
+ SortedSet<String> label=tasks.queryAsSet("SELECT ?label WHERE {<"+description.getRole().toString()+"> <http://www.w3.org/2000/01/rdf-schema#label> ?label}", "label");
+ if (label.size()>0) query+="has "+label.first()+" which is ";
+ else query+="has "+description.getRole().toString().substring(description.getRole().toString().lastIndexOf("/")+1)+" which is ";
+ description.getChild(0).accept(this);
+ 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) {
+ logger.trace("Nothing");
+ query+="nothing";
+ }
+
+ /* (non-Javadoc)
+ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Thing)
+ */
+ public void visit(Thing description) {
+ logger.trace("Thing");
+ query+="anything";
+ }
+
+ /* (non-Javadoc)
+ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Intersection)
+ */
+ public void visit(Intersection description) {
+ // HACK see replace hacks in other functions
+ logger.trace("Intersection");
+ description.getChild(0).accept(this);
+ query+=" and ";
+ description.getChild(1).accept(this);
+ }
+
+ /* (non-Javadoc)
+ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Union)
+ */
+ public void visit(Union description) {
+ // HACK see replace hacks in other functions
+ logger.trace("Union");
+ description.getChild(0).accept(this);
+ query+=" or ";
+ description.getChild(1).accept(this);
+ }
+
+ /* (non-Javadoc)
+ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectMinCardinalityRestriction)
+ */
+ public void visit(ObjectMinCardinalityRestriction description) {
+ logger.trace("ObjectMinCardinalityRestriction");
+ }
+
+ /* (non-Javadoc)
+ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectExactCardinalityRestriction)
+ */
+ public void visit(ObjectExactCardinalityRestriction description) {
+ logger.trace("ObjectExactCardinalityRestriction");
+ }
+
+ /* (non-Javadoc)
+ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectMaxCardinalityRestriction)
+ */
+ public void visit(ObjectMaxCardinalityRestriction description) {
+ logger.trace("ObjectMaxCardinalityRestriction");
+ }
+
+ /* (non-Javadoc)
+ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectValueRestriction)
+ */
+ public void visit(ObjectValueRestriction description) {
+ logger.trace("ObjectValueRestriction");
+ }
+
+ /* (non-Javadoc)
+ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeValueRestriction)
+ */
+ public void visit(DatatypeValueRestriction description) {
+ logger.trace("DatatypeValueRestriction");
+ }
+
+ /* (non-Javadoc)
+ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.NamedClass)
+ */
+ public void visit(NamedClass description) {
+
+ logger.trace("NamedClass");
+ SortedSet<String> label=tasks.queryAsSet("SELECT ?label WHERE {<"+description.getName()+"> <http://www.w3.org/2000/01/rdf-schema#label> ?label}", "label");
+ query+="a "+label.first();
+ }
+
+
+
+ /* (non-Javadoc)
+ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.algorithms.gp.ADC)
+ */
+ public void visit(ADC description) {
+ logger.trace("ADC");
+ }
+
+ /* (non-Javadoc)
+ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeMinCardinalityRestriction)
+ */
+ public void visit(DatatypeMinCardinalityRestriction description) {
+ logger.trace("DatatypeMinCardinalityRestriction");
+ }
+
+ /* (non-Javadoc)
+ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeExactCardinalityRestriction)
+ */
+ public void visit(DatatypeExactCardinalityRestriction description) {
+ logger.trace("DatatypeExactCardinalityRestriction");
+ }
+
+ /* (non-Javadoc)
+ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeMaxCardinalityRestriction)
+ */
+ public void visit(DatatypeMaxCardinalityRestriction description) {
+ logger.trace("DatatypeMaxCardinalityRestriction");
+ }
+
+ /* (non-Javadoc)
+ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeSomeRestriction)
+ */
+ public void visit(DatatypeSomeRestriction description) {
+ logger.trace("DatatypeSomeRestriction");
+ }
+}
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-08-21 16:53:11 UTC (rev 1124)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-08-21 16:58:03 UTC (rev 1125)
@@ -23,6 +23,7 @@
import java.io.ByteArrayOutputStream;
import java.io.FileWriter;
import java.io.UnsupportedEncodingException;
+import java.net.UnknownHostException;
import java.nio.charset.Charset;
import javax.xml.ws.http.HTTPException;
@@ -129,6 +130,7 @@
logger.warn("Exception in SparqlQuery\n"+ e.toString());
logger.warn("query was "+ sparqlQueryString);
writeToSparqlLog("ERROR: HTTPException occured"+ e.toString());
+ isRunning = false;
throw e;
}catch (RuntimeException e) {
@@ -136,14 +138,14 @@
logger.warn("RuntimeException in SparqlQuery"+ e.toString());
writeToSparqlLog("ERROR: HTTPException occured"+ e.toString());
//}
+ isRunning = false;
throw e;
}
// there is a minor issue here: Jamon now also measures ResultsetConversion
// the code would need a second try catch block to handle it correctly
JamonMonitorLogger.getTimeMonitor(SparqlQuery.class, "httpTime").stop();
- isRunning = false;
-
+ isRunning = false;
}
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryException.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryException.java 2008-08-21 16:53:11 UTC (rev 1124)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryException.java 2008-08-21 16:58:03 UTC (rev 1125)
@@ -24,6 +24,6 @@
static final long serialVersionUID=101;
public SparqlQueryException (String message) {
- super ("Sparql Query failed.\n"+message);
+ super (message);
}
}
Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-08-21 16:53:11 UTC (rev 1124)
+++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-08-21 16:58:03 UTC (rev 1125)
@@ -387,6 +387,7 @@
json += "\"solution" + count + "\" : " + description.asJSON();
count++;
}
+ json+="}";
return json;
}
@@ -561,7 +562,7 @@
throw new SparqlQueryException("SparqlQuery failed"+e.toString());
}
- if(json == null) { throw new SparqlQueryException("SparqlQuery failed JSON was null");}
+ if(json == null) { throw new SparqlQueryException("Sparql Query failed. Please try again later.");}
return json;
//if ((json=state.getQuery(queryID).getJson())!=null) return json;
//else if ((resultSet=state.getQuery(queryID).getResultSet())!=null) return SparqlQuery.getAsJSON(resultSet);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ku...@us...> - 2008-08-22 07:31:01
|
Revision: 1126
http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1126&view=rev
Author: kurzum
Date: 2008-08-22 07:30:58 +0000 (Fri, 22 Aug 2008)
Log Message:
-----------
Modified Paths:
--------------
trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java
trunk/src/dl-learner/org/dllearner/utilities/Helper.java
trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-21 16:58:03 UTC (rev 1125)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-22 07:30:58 UTC (rev 1126)
@@ -27,6 +27,7 @@
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.dllearner.kb.aquisitors.TupleAquisitor;
+import org.dllearner.utilities.JamonMonitorLogger;
import org.dllearner.utilities.statistics.SimpleClock;
/**
@@ -83,7 +84,7 @@
newNodes.add(seedNode);
-
+ JamonMonitorLogger.getTimeMonitor(ExtractionAlgorithm.class, "TimeBasicExtraction").start();
for (int x = 1; x <= configuration.getRecursiondepth(); x++) {
sc.reset();
@@ -105,20 +106,24 @@
logger.info("Recursion counter: " + x + " with " + newNodes.size()
+ " Nodes remaining, " + sc.getAndSet(""));
}
-
+ JamonMonitorLogger.getTimeMonitor(ExtractionAlgorithm.class, "TimeBasicExtraction").stop();
if(configuration.isCloseAfterRecursion()){
+ JamonMonitorLogger.getTimeMonitor(ExtractionAlgorithm.class, "TimeCloseAfterRecursion").start();
List<InstanceNode> l = getInstanceNodes(newNodes);
logger.info("Getting classes for remaining instances: "+l.size() + " instances");
tupelAquisitor.setNextTaskToClassesForInstances();
collectNodes.addAll(expandCloseAfterRecursion(l, tupelAquisitor));
+ JamonMonitorLogger.getTimeMonitor(ExtractionAlgorithm.class, "TimeCloseAfterRecursion").stop();
}
// gets All Class Nodes and expands them further
if (configuration.isGetAllSuperClasses()) {
+ JamonMonitorLogger.getTimeMonitor(ExtractionAlgorithm.class, "TimeGetAllSuperClasses").start();
List<ClassNode> allClassNodes = getClassNodes(collectNodes);
tupelAquisitor.setNextTaskToClassInformation();
logger.info("Get all superclasses for "+allClassNodes.size() + " classes");
expandAllSuperClassesOfANode(allClassNodes, tupelAquisitor);
+ JamonMonitorLogger.getTimeMonitor(ExtractionAlgorithm.class, "TimeGetAllSuperClasses").stop();
}
return seedNode;
Modified: trunk/src/dl-learner/org/dllearner/utilities/Helper.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/utilities/Helper.java 2008-08-21 16:58:03 UTC (rev 1125)
+++ trunk/src/dl-learner/org/dllearner/utilities/Helper.java 2008-08-22 07:30:58 UTC (rev 1126)
@@ -170,7 +170,22 @@
return str;
}
+
+ public static String prettyPrintMilliSeconds(long milliSeconds) {
+
+ long seconds = milliSeconds / 1000;
+ milliSeconds = milliSeconds % 1000;
+
+ // Mikrosekunden werden immer angezeigt, Sekunden nur falls größer 0
+ String str = "";
+ if (seconds > 0)
+ str = seconds + "s ";
+ str += milliSeconds + "ms";
+
+ return str;
+ }
+
public static <T1, T2> void addMapEntry(Map<T1, SortedSet<T2>> map, T1 keyEntry, T2 setEntry) {
if (map.containsKey(keyEntry)) {
map.get(keyEntry).add(setEntry);
Modified: trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java 2008-08-21 16:58:03 UTC (rev 1125)
+++ trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java 2008-08-22 07:30:58 UTC (rev 1126)
@@ -76,7 +76,8 @@
StringBuffer sbuf = new StringBuffer();
for (int i = 0; i < l.size(); i++) {
Monitor monitor = l.get(i);
- sset.add(monitor.toString());
+
+ sset.add(convMonitorToString(monitor));
}
for (String onemon : sset) {
sbuf.append(onemon+"\n");
@@ -84,8 +85,22 @@
return sbuf.toString();
}
+ public static String convMonitorToString (Monitor m) {
+ String retVal = m.getLabel();
+ String unit = m.getUnits();
+ long content = new Double(m.getTotal()).longValue();
+ String contentstr = (unit.equals("ms."))? Helper.prettyPrintNanoSeconds(content ) : content+"" ;
+ retVal+= "total:"+contentstr+"|\t";
+
+ long avg = new Double(m.getAvg()).longValue();
+ String avgstr = (unit.equals("ms."))? Helper.prettyPrintMilliSeconds(avg ) : avg+"" ;
+ retVal+= "avg:"+avgstr+"|\t";
+
+ return retVal;
+ }
+
@SuppressWarnings("all")
public static String getMonitorPrefix(Class clazz){
String retval="";
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ku...@us...> - 2008-08-22 13:15:58
|
Revision: 1127
http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1127&view=rev
Author: kurzum
Date: 2008-08-22 13:15:50 +0000 (Fri, 22 Aug 2008)
Log Message:
-----------
Modified Paths:
--------------
trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java
trunk/src/dl-learner/org/dllearner/cli/QuickStart.java
trunk/src/dl-learner/org/dllearner/cli/Start.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitorImproved.java
trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupleAquisitor.java
trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java
trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java
trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java
trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java
Added Paths:
-----------
trunk/src/dl-learner/org/dllearner/utilities/URLencodeUTF8.java
Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-08-22 07:30:58 UTC (rev 1126)
+++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-08-22 13:15:50 UTC (rev 1127)
@@ -52,6 +52,8 @@
import org.dllearner.utilities.owl.ConceptTransformation;
import org.dllearner.utilities.owl.EvaluatedDescriptionComparator;
+import com.jamonapi.Monitor;
+
/**
* Implements the example based refinement operator learning approach.
*
@@ -278,7 +280,7 @@
public void start() {
isRunning = true;
runtime = System.currentTimeMillis();
- JamonMonitorLogger.getTimeMonitor(ExampleBasedROLComponent.class, "totalLearningTime")
+ Monitor totalLearningTime = JamonMonitorLogger.getTimeMonitor(ExampleBasedROLComponent.class, "totalLearningTime")
.start();
// TODO: write a JUnit test for this problem (long-lasting or infinite
// loops because
@@ -397,7 +399,9 @@
// we record when a more accurate node is found and log it
if (bestNodeStable.getCovPosMinusCovNeg() < candidatesStable.last()
.getCovPosMinusCovNeg()) {
- logger.info("more accurate node found: " + candidatesStable.last());
+ String acc = (candidatesStable.last().getAccuracy(nrOfPositiveExamples, nrOfNegativeExamples)+"").substring(2,6);
+ acc= acc.substring(0,2)+"."+acc.substring(3)+"%";
+ logger.info("more accurate ("+acc+") node found: " + candidatesStable.last());
bestNodeStable = candidatesStable.last();
}
@@ -507,8 +511,7 @@
else
logger.info("Algorithm terminated succesfully.");
- JamonMonitorLogger.getTimeMonitor(ExampleBasedROLComponent.class, "totalLearningTime")
- .stop();
+ totalLearningTime.stop();
isRunning = false;
}
Modified: trunk/src/dl-learner/org/dllearner/cli/QuickStart.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/cli/QuickStart.java 2008-08-22 07:30:58 UTC (rev 1126)
+++ trunk/src/dl-learner/org/dllearner/cli/QuickStart.java 2008-08-22 13:15:50 UTC (rev 1127)
@@ -43,6 +43,8 @@
static String pm = ".";// pathmodifier
public static void main(String[] args) {
+
+
String lastused = readit();
String tab = " ";
Modified: trunk/src/dl-learner/org/dllearner/cli/Start.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-08-22 07:30:58 UTC (rev 1126)
+++ trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-08-22 13:15:50 UTC (rev 1127)
@@ -115,6 +115,8 @@
* @param args
*/
public static void main(String[] args) throws ComponentInitException {
+
+
File file = new File(args[args.length - 1]);
boolean inQueryMode = false;
Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitorImproved.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitorImproved.java 2008-08-22 07:30:58 UTC (rev 1126)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitorImproved.java 2008-08-22 13:15:50 UTC (rev 1127)
@@ -57,7 +57,7 @@
@Override
public SortedSet<RDFNodeTuple> retrieveTupel(String uri){
-
+
SortedSet<RDFNodeTuple> cachedSet = resources.get(uri);
if(cachedSet!=null) {
return cachedSet;
@@ -134,6 +134,15 @@
}
+
+
+ @Override
+ public SortedSet<RDFNodeTuple> retrieveClassesForInstances(String uri){
+ // getQuery
+ return super.retrieveClassesForInstances(uri);
+
+ }
+
private void addToLocalCache(String uri, RDFNodeTuple tuple){
SortedSet<RDFNodeTuple> set = resources.get(uri);
@@ -148,11 +157,8 @@
}
}
- @Override
- public SortedSet<RDFNodeTuple> retrieveClassesForInstances(String uri){
- // getQuery
- return super.retrieveClassesForInstances(uri);
-
+ public void removeFromCache(String uri){
+ resources.remove(uri);
}
Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupleAquisitor.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupleAquisitor.java 2008-08-22 07:30:58 UTC (rev 1126)
+++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupleAquisitor.java 2008-08-22 13:15:50 UTC (rev 1127)
@@ -48,6 +48,7 @@
public final SortedSet<RDFNodeTuple> getTupelForResource(String uri){
checkURIforValidity(uri);
+
try{
if (mode == NORMAL) {
return retrieveTupel(uri);
@@ -59,7 +60,7 @@
throw new RuntimeException("undefined mode in aquisitor");
}
}catch(Exception e){
- logger.warn("caught exception in tupleaquisitor, ignoring it"+e.toString());
+ logger.warn("Caught exception in tupleaquisitor, ignoring it: "+e.toString());
return new TreeSet<RDFNodeTuple>();
}
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-22 07:30:58 UTC (rev 1126)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-22 13:15:50 UTC (rev 1127)
@@ -24,12 +24,14 @@
import java.util.SortedSet;
import java.util.TreeSet;
-import org.apache.log4j.Level;
import org.apache.log4j.Logger;
+import org.dllearner.kb.aquisitors.SparqlTupleAquisitorImproved;
import org.dllearner.kb.aquisitors.TupleAquisitor;
import org.dllearner.utilities.JamonMonitorLogger;
import org.dllearner.utilities.statistics.SimpleClock;
+import com.jamonapi.Monitor;
+
/**
* This class is used to extract the information .
*
@@ -72,8 +74,10 @@
public Node expandNode(String uri, TupleAquisitor tupelAquisitor) {
SimpleClock sc = new SimpleClock();
+ if(tupelAquisitor instanceof SparqlTupleAquisitorImproved){
+ ((SparqlTupleAquisitorImproved)tupelAquisitor).removeFromCache(uri);
+ }
-
Node seedNode = getFirstNode(uri);
List<Node> newNodes = new ArrayList<Node>();
List<Node> collectNodes = new ArrayList<Node>();
@@ -84,7 +88,7 @@
newNodes.add(seedNode);
- JamonMonitorLogger.getTimeMonitor(ExtractionAlgorithm.class, "TimeBasicExtraction").start();
+ Monitor basic = JamonMonitorLogger.getTimeMonitor(ExtractionAlgorithm.class, "TimeBasicExtraction").start();
for (int x = 1; x <= configuration.getRecursiondepth(); x++) {
sc.reset();
@@ -106,24 +110,24 @@
logger.info("Recursion counter: " + x + " with " + newNodes.size()
+ " Nodes remaining, " + sc.getAndSet(""));
}
- JamonMonitorLogger.getTimeMonitor(ExtractionAlgorithm.class, "TimeBasicExtraction").stop();
+ basic.stop();
if(configuration.isCloseAfterRecursion()){
- JamonMonitorLogger.getTimeMonitor(ExtractionAlgorithm.class, "TimeCloseAfterRecursion").start();
+ Monitor m = JamonMonitorLogger.getTimeMonitor(ExtractionAlgorithm.class, "TimeCloseAfterRecursion").start();
List<InstanceNode> l = getInstanceNodes(newNodes);
logger.info("Getting classes for remaining instances: "+l.size() + " instances");
tupelAquisitor.setNextTaskToClassesForInstances();
collectNodes.addAll(expandCloseAfterRecursion(l, tupelAquisitor));
- JamonMonitorLogger.getTimeMonitor(ExtractionAlgorithm.class, "TimeCloseAfterRecursion").stop();
+ m.stop();
}
// gets All Class Nodes and expands them further
if (configuration.isGetAllSuperClasses()) {
- JamonMonitorLogger.getTimeMonitor(ExtractionAlgorithm.class, "TimeGetAllSuperClasses").start();
+ Monitor m = JamonMonitorLogger.getTimeMonitor(ExtractionAlgorithm.class, "TimeGetAllSuperClasses").start();
List<ClassNode> allClassNodes = getClassNodes(collectNodes);
tupelAquisitor.setNextTaskToClassInformation();
logger.info("Get all superclasses for "+allClassNodes.size() + " classes");
expandAllSuperClassesOfANode(allClassNodes, tupelAquisitor);
- JamonMonitorLogger.getTimeMonitor(ExtractionAlgorithm.class, "TimeGetAllSuperClasses").stop();
+ m.stop();
}
return seedNode;
@@ -134,18 +138,21 @@
List<Node> newNodes = new ArrayList<Node>();
tupelAquisitor.setNextTaskToClassesForInstances();
- if (configuration.isCloseAfterRecursion()) {
- while (!instanceNodes.isEmpty()) {
- logger.trace("Getting classes for remaining instances: "
- + instanceNodes.size());
- Node next = instanceNodes.remove(0);
- logger.trace("Getting classes for: " + next);
- newNodes.addAll(next.expand(tupelAquisitor, configuration.getManipulator()));
- if (newNodes.size() >= configuration.getBreakSuperClassesAfter()) {
- break;
- }//endif
- }//endwhile
- }//endif
+ while (!instanceNodes.isEmpty()) {
+ logger.trace("Getting classes for remaining instances: "
+ + instanceNodes.size());
+ Node next = instanceNodes.remove(0);
+ if(next.isExpanded()){
+ JamonMonitorLogger.increaseCount(this.getClass(), "skipped nodes");
+ continue;
+ }
+ logger.trace("Getting classes for: " + next);
+ newNodes.addAll(next.expand(tupelAquisitor, configuration.getManipulator()));
+ if (newNodes.size() >= configuration.getBreakSuperClassesAfter()) {
+ break;
+ }//endif
+ }//endwhile
+
return newNodes;
}
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-08-22 07:30:58 UTC (rev 1126)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-08-22 13:15:50 UTC (rev 1127)
@@ -95,5 +95,9 @@
public int compareTo(Node n) {
return this.uri.toString().compareTo(n.uri.toString());
}
+
+ public boolean isExpanded(){
+ return expanded;
+ }
}
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-08-22 07:30:58 UTC (rev 1126)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-08-22 13:15:50 UTC (rev 1127)
@@ -32,6 +32,8 @@
import org.dllearner.utilities.datastructures.RDFNodeTuple;
import org.dllearner.utilities.owl.OWLVocabulary;
+import com.jamonapi.Monitor;
+
/**
* Used to manipulate retrieved tupels, identify blanknodes, etc.
*
@@ -58,13 +60,13 @@
* triple
*/
public SortedSet<RDFNodeTuple> manipulate( Node node, SortedSet<RDFNodeTuple> tuples) {
- JamonMonitorLogger.getTimeMonitor(Manipulator.class, "Time for Rules").start();
+ Monitor m = JamonMonitorLogger.getTimeMonitor(Manipulator.class, "Time for Rules").start();
//logger.warn("before: "+tuples.size());
for (Rule rule : rules) {
tuples = rule.applyRule(node, tuples);
}
//logger.warn("after: "+tuples.size());
- JamonMonitorLogger.getTimeMonitor(Manipulator.class, "Time for Rules").stop();
+ m.stop();
return tuples;
}
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-08-22 07:30:58 UTC (rev 1126)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-08-22 13:15:50 UTC (rev 1127)
@@ -33,6 +33,8 @@
import org.apache.log4j.Logger;
import org.dllearner.utilities.JamonMonitorLogger;
+import com.jamonapi.Monitor;
+
/**
* SPARQL query cache to avoid possibly expensive multiple queries. The queries
* and their results are written to files. A cache has an associated cache
@@ -249,12 +251,12 @@
* @return Jena result set in JSON format
*/
public String executeSparqlQuery(SparqlQuery query) {
- JamonMonitorLogger.getTimeMonitor(Cache.class, "TotalTimeExecuteSparqlQuery").start();
+ Monitor totaltime =JamonMonitorLogger.getTimeMonitor(Cache.class, "TotalTimeExecuteSparqlQuery").start();
JamonMonitorLogger.increaseCount(Cache.class, "TotalQueries");
- JamonMonitorLogger.getTimeMonitor(Cache.class, "ReadTime").start();
+ Monitor readTime = JamonMonitorLogger.getTimeMonitor(Cache.class, "ReadTime").start();
String result = getCacheEntry(query.getSparqlQueryString());
- JamonMonitorLogger.getTimeMonitor(Cache.class, "ReadTime").stop();
+ readTime.stop();
if (result != null) {
query.setJson(result);
@@ -286,7 +288,7 @@
//return json;
}
- JamonMonitorLogger.getTimeMonitor(Cache.class, "TotalTimeExecuteSparqlQuery").stop();
+ totaltime.stop();
return result;
}
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java 2008-08-22 07:30:58 UTC (rev 1126)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java 2008-08-22 13:15:50 UTC (rev 1127)
@@ -430,16 +430,17 @@
String jsonString = query(sparqlQueryString);
rsw = SparqlQuery.convertJSONtoResultSet(jsonString);
- } catch (Exception e) {
- logger.warn(e.getMessage());
- }
+
List<ResultBinding> l = ResultSetFormatter.toList(rsw);
for (ResultBinding resultBinding : l) {
returnSet.add(new RDFNodeTuple(resultBinding.get(var1),resultBinding.get(var2)));
}
rsw.reset();
+ } catch (Exception e) {
+ logger.warn("Exception caught in SPARQLTasks, passing emtpy result: "+e.getMessage());
+ }
return returnSet;
}
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-08-22 07:30:58 UTC (rev 1126)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-08-22 13:15:50 UTC (rev 1127)
@@ -59,9 +59,13 @@
import org.dllearner.reasoning.DIGConverter;
import org.dllearner.reasoning.JenaOWLDIGConverter;
import org.dllearner.scripts.NT2RDF;
+import org.dllearner.utilities.Files;
+import org.dllearner.utilities.JamonMonitorLogger;
import org.dllearner.utilities.datastructures.StringTuple;
import org.dllearner.utilities.statistics.SimpleClock;
+import com.jamonapi.MonitorFactory;
+
/**
* Represents the SPARQL Endpoint Component.
*
@@ -74,7 +78,8 @@
//DEFAULTS
static int recursionDepthDefault = 1;
- static final boolean debug = false;
+ static final boolean debug = false; //switches tupleaquisitor
+ static final boolean debug2 = false; //switches sysex und rdf generation
private boolean useCache=true;
// ConfigOptions
public URL url;
@@ -326,7 +331,7 @@
fw.close();
dumpFile = (new File(basedir + filename)).toURI().toURL();
- if(debug){
+ if(debug2){
NT2RDF.convertNT2RDF(basedir + filename);
//System.exit(0);
}
@@ -346,6 +351,13 @@
e.printStackTrace();
}
logger.info("SparqlModul: ****Finished " + totalTime.getAndSet("") );
+ if(debug2){
+
+ File jamonlog = new File("log/jamon.html");
+ Files.createFile(jamonlog, MonitorFactory.getReport());
+ Files.appendFile(jamonlog, "<xmp>\n"+JamonMonitorLogger.getStringForAllSortedByLabel());
+ System.exit(0);
+ }
}
/*
@@ -445,10 +457,12 @@
public TupleAquisitor getTupleAquisitor()
{
- return (debug)?
- new SparqlTupleAquisitorImproved(getSparqlQueryMaker(), getSPARQLTasks(),recursionDepth)
- :
- new SparqlTupleAquisitor(getSparqlQueryMaker(), getSPARQLTasks());
+ if (debug) {
+ return new SparqlTupleAquisitorImproved(getSparqlQueryMaker(), getSPARQLTasks(),recursionDepth);
+ }
+ else {
+ return new SparqlTupleAquisitor(getSparqlQueryMaker(), getSPARQLTasks());
+ }
}
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-08-22 07:30:58 UTC (rev 1126)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-08-22 13:15:50 UTC (rev 1127)
@@ -23,7 +23,6 @@
import java.io.ByteArrayOutputStream;
import java.io.FileWriter;
import java.io.UnsupportedEncodingException;
-import java.net.UnknownHostException;
import java.nio.charset.Charset;
import javax.xml.ws.http.HTTPException;
@@ -37,6 +36,7 @@
import com.hp.hpl.jena.query.ResultSetRewindable;
import com.hp.hpl.jena.sparql.engine.http.HttpQuery;
import com.hp.hpl.jena.sparql.engine.http.QueryEngineHTTP;
+import com.jamonapi.Monitor;
/**
* Represents one SPARQL query. It includes support for stopping the SPARQL
@@ -92,8 +92,6 @@
SparqlQuery.writeToSparqlLog("wget -S -O - '\n"+sparqlEndpoint.getHTTPRequest());
writeToSparqlLog(sparqlQueryString);
-
-
logger.trace("making queryExecution Object");
// Jena access to SPARQL endpoint
queryExecution = new QueryEngineHTTP(service, sparqlQueryString);
@@ -108,8 +106,8 @@
}
// TODO remove after overnext Jena release
HttpQuery.urlLimit = 3 * 1024;
- JamonMonitorLogger.getTimeMonitor(SparqlQuery.class, "httpTime")
- .start();
+ Monitor httpTime = JamonMonitorLogger.getTimeMonitor(SparqlQuery.class, "httpTime").start();
+
//TODO correct Bug: when there is a & in the result like in the
//URL: http://www.discusmedia.com/catalog.php?catID=5.2.2&profile=map
//the XML Parser throws an error, because he thinks &profile is an html entitie
@@ -127,24 +125,24 @@
//writeToSparqlLog("JSON: " + json);
//}catch (ResultSetException e) {
} catch (HTTPException e) {
- logger.warn("Exception in SparqlQuery\n"+ e.toString());
+ logger.warn("HTTPException in SparqlQuery\n"+ e.toString());
logger.warn("query was "+ sparqlQueryString);
writeToSparqlLog("ERROR: HTTPException occured"+ e.toString());
isRunning = false;
throw e;
}catch (RuntimeException e) {
- //if (!(e instanceof HTTPException)) {
- logger.warn("RuntimeException in SparqlQuery"+ e.toString());
- writeToSparqlLog("ERROR: HTTPException occured"+ e.toString());
- //}
+
+ logger.warn("RuntimeException in SparqlQuery (see /log/sparql.txt): "+ e.toString());
+ logger.warn("query was (first 300 chars) "+ sparqlQueryString.substring(0,300).replaceAll("\n", " "));
+ writeToSparqlLog("ERROR: HTTPException occured: "+ e.toString());
isRunning = false;
throw e;
}
// there is a minor issue here: Jamon now also measures ResultsetConversion
// the code would need a second try catch block to handle it correctly
- JamonMonitorLogger.getTimeMonitor(SparqlQuery.class, "httpTime").stop();
+ httpTime.stop();
isRunning = false;
}
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2008-08-22 07:30:58 UTC (rev 1126)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2008-08-22 13:15:50 UTC (rev 1127)
@@ -24,8 +24,6 @@
import java.util.SortedSet;
import java.util.TreeSet;
-import org.dllearner.utilities.owl.OWLVocabulary;
-
/**
* Can assemble sparql queries. can make queries for subject, predicate, object
* according to the filter settings object SparqlQueryType, which gives the
Modified: trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java 2008-08-22 07:30:58 UTC (rev 1126)
+++ trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java 2008-08-22 13:15:50 UTC (rev 1127)
@@ -26,6 +26,7 @@
import java.util.TreeSet;
import org.dllearner.algorithms.refexamples.ExampleBasedROLComponent;
+import org.dllearner.kb.extraction.ExtractionAlgorithm;
import org.dllearner.kb.manipulator.Manipulator;
import org.dllearner.kb.sparql.Cache;
import org.dllearner.kb.sparql.SparqlQuery;
@@ -77,7 +78,7 @@
for (int i = 0; i < l.size(); i++) {
Monitor monitor = l.get(i);
- sset.add(convMonitorToString(monitor));
+ sset.add(monitor.toString());
}
for (String onemon : sset) {
sbuf.append(onemon+"\n");
@@ -86,14 +87,17 @@
}
public static String convMonitorToString (Monitor m) {
- String retVal = m.getLabel();
+ String retVal = m.getLabel()+"|\t";
String unit = m.getUnits();
+ retVal+=unit+"|\t";
long content = new Double(m.getTotal()).longValue();
- String contentstr = (unit.equals("ms."))? Helper.prettyPrintNanoSeconds(content ) : content+"" ;
+ content = content / (1000*1000);
+ String contentstr = (unit.equals("ms."))? Helper.prettyPrintNanoSeconds(content ) : m.getHits()+"" ;
retVal+= "total:"+contentstr+"|\t";
long avg = new Double(m.getAvg()).longValue();
- String avgstr = (unit.equals("ms."))? Helper.prettyPrintMilliSeconds(avg ) : avg+"" ;
+ avg = avg / (1000*1000);
+ String avgstr = (unit.equals("ms."))? Helper.prettyPrintNanoSeconds(avg ) : avg+"" ;
retVal+= "avg:"+avgstr+"|\t";
return retVal;
@@ -108,10 +112,10 @@
retval= "Sparql:";
} else if (clazz == Cache.class) {
retval= "Sparql:";
- }else if (clazz == SparqlQuery.class) {
- retval= "sparql:";
+ }else if (clazz == ExtractionAlgorithm.class) {
+ retval= "Extraction:";
} else if (clazz == Manipulator.class) {
- retval= "extraction:";
+ retval= "Extraction:";
} else if (clazz == SparqlQuery.class) {
retval= "sparql:";
} else if (clazz == SparqlQuery.class) {
Added: trunk/src/dl-learner/org/dllearner/utilities/URLencodeUTF8.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/utilities/URLencodeUTF8.java (rev 0)
+++ trunk/src/dl-learner/org/dllearner/utilities/URLencodeUTF8.java 2008-08-22 13:15:50 UTC (rev 1127)
@@ -0,0 +1,22 @@
+package org.dllearner.utilities;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+
+import org.apache.log4j.Logger;
+
+public class URLencodeUTF8 {
+
+ public static Logger logger = Logger.getLogger(URLencodeUTF8.class);
+
+ public static String encode(String toEncode) {
+ String retVal = "";
+ try{
+ retVal = URLEncoder.encode(toEncode, "UTF-8");
+ }catch (UnsupportedEncodingException e) {
+ logger.error("This error should never occur, check your java for UTF-8 support");
+ e.printStackTrace();
+ }
+ return retVal;
+ }
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ku...@us...> - 2008-08-23 12:07:09
|
Revision: 1129
http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1129&view=rev
Author: kurzum
Date: 2008-08-23 12:07:03 +0000 (Sat, 23 Aug 2008)
Log Message:
-----------
Modified Paths:
--------------
trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java
trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java
trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java
trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java
trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java
trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java
trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java
trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertRDFS.java
trunk/src/dl-learner/org/dllearner/utilities/datastructures/RDFNodeTuple.java
trunk/src/dl-learner/org/dllearner/utilities/datastructures/SetManipulation.java
trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java
trunk/src/dl-learner/org/dllearner/utilities/learn/SPARQLExtractionEvaluation.java
trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java
Property Changed:
----------------
trunk/src/dl-learner/org/dllearner/test/
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-08-22 15:52:22 UTC (rev 1128)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-08-23 12:07:03 UTC (rev 1129)
@@ -41,8 +41,8 @@
private static Logger logger = Logger
.getLogger(ClassNode.class);
- SortedSet<ObjectPropertyNode> classProperties = new TreeSet<ObjectPropertyNode>();
- SortedSet<DatatypePropertyNode> datatypeProperties = new TreeSet<DatatypePropertyNode>();
+ List<ObjectPropertyNode> classProperties = new ArrayList<ObjectPropertyNode>();
+ List<DatatypePropertyNode> datatypeProperties = new ArrayList<DatatypePropertyNode>();
public ClassNode(String uri) {
super(uri);
@@ -73,10 +73,11 @@
datatypeProperties.add(new DatatypePropertyNode(tuple.a.toString(), this, new LiteralNode(tuple.b) ));
return null;
}else if(tuple.b.isAnon()){
- logger.warn("blanknodes not supported as of now"+ this +"in tuple" + tuple);
+ logger.warn("blanknodes not supported as of now "+ this +" in tuple" + tuple);
return null;
// substitute rdf:type with owl:subclassof
- }else if (property.equals(OWLVocabulary.RDF_TYPE) || property.equals(OWLVocabulary.RDFS_SUBCLASS_OF)) {
+ }else if (property.equals(OWLVocabulary.RDF_TYPE) ||
+ OWLVocabulary.isStringSubClassVocab(property)) {
ClassNode tmp = new ClassNode(tuple.b.toString());
classProperties.add(new ObjectPropertyNode( OWLVocabulary.RDFS_SUBCLASS_OF, this, tmp));
return tmp;
@@ -124,9 +125,6 @@
return returnSet;
}
- @Override
- public int compareTo(Node n) {
- return super.compareTo(n);
- }
+
}
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java 2008-08-22 15:52:22 UTC (rev 1128)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java 2008-08-23 12:07:03 UTC (rev 1129)
@@ -83,19 +83,6 @@
return s;
}
- //TODO check
- @Override
- public boolean equals(Node n) {
- if (this.uri.equals(n.uri)) {
- return true;
- }else {
- return false;
- }
- }
+
- @Override
- public int compareTo(Node n) {
- return super.compareTo(n);
- }
-
}
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-08-22 15:52:22 UTC (rev 1128)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-08-23 12:07:03 UTC (rev 1129)
@@ -42,10 +42,10 @@
private static Logger logger = Logger
.getLogger(InstanceNode.class);
- private SortedSet<ClassNode> classes = new TreeSet<ClassNode>();
+ private List<ClassNode> classes = new ArrayList<ClassNode>();
//SortedSet<StringTuple> datatypes = new TreeSet<StringTuple>();
- private SortedSet<ObjectPropertyNode> objectProperties = new TreeSet<ObjectPropertyNode>();
- private SortedSet<DatatypePropertyNode> datatypeProperties = new TreeSet<DatatypePropertyNode>();
+ private List<ObjectPropertyNode> objectProperties = new ArrayList<ObjectPropertyNode>();
+ private List<DatatypePropertyNode> datatypeProperties = new ArrayList<DatatypePropertyNode>();
public InstanceNode(String uri) {
@@ -133,10 +133,6 @@
return returnSet;
}
- @Override
- public int compareTo(Node n) {
- return super.compareTo(n);
- //
- }
+
}
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java 2008-08-22 15:52:22 UTC (rev 1128)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java 2008-08-23 12:07:03 UTC (rev 1129)
@@ -75,13 +75,9 @@
return new TreeSet<String>();
}
- @Override
- public int compareTo(Node n) {
- return super.compareTo(n);
- //
- }
+
public String getNTripleForm() {
String quote = "\\\"";
quote = """;
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-08-22 15:52:22 UTC (rev 1128)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-08-23 12:07:03 UTC (rev 1129)
@@ -33,7 +33,7 @@
* @author Sebastian Hellmann
*
*/
-public abstract class Node implements Comparable<Node> {
+public abstract class Node {
@@ -85,17 +85,8 @@
- public boolean equals(Node n) {
- if (this.uri.equals(n.uri))
- return true;
- else
- return false;
- }
-
- public int compareTo(Node n) {
- return this.uri.toString().compareTo(n.uri.toString());
- }
+
public boolean isExpanded(){
return expanded;
}
Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java 2008-08-22 15:52:22 UTC (rev 1128)
+++ trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java 2008-08-23 12:07:03 UTC (rev 1129)
@@ -100,19 +100,5 @@
return s;
}
- //TODO check
- @Override
- public boolean equals(Node n) {
- if (this.uri.equals(n.uri)) {
- return true;
- }else {
- return false;
- }
- }
-
- @Override
- public int compareTo(Node n) {
- return super.compareTo(n);
- }
-
+
}
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-08-22 15:52:22 UTC (rev 1128)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-08-23 12:07:03 UTC (rev 1129)
@@ -24,10 +24,9 @@
import java.util.SortedSet;
import org.apache.log4j.Logger;
-import org.dllearner.kb.extraction.ClassNode;
-import org.dllearner.kb.extraction.InstanceNode;
import org.dllearner.kb.extraction.Node;
import org.dllearner.kb.manipulator.Rule.Months;
+import org.dllearner.kb.manipulator.TypeFilterRule.Nodes;
import org.dllearner.utilities.JamonMonitorLogger;
import org.dllearner.utilities.datastructures.RDFNodeTuple;
import org.dllearner.utilities.owl.OWLVocabulary;
@@ -101,7 +100,7 @@
return m;
}
- //HACK
+ //
// if(t.a.equals("http://www.holygoat.co.uk/owl/redwood/0.1/tags/taggedWithTag")) {
// //hackGetLabel(t.b);
//
@@ -109,7 +108,7 @@
// GovTrack hack
// => we convert a string literal to a URI
- // => TODO: introduce an option for converting literals for certain
+ // => : introduce an option for converting literals for certain
// properties into URIs
// String sp = "http://purl.org/dc/elements/1.1/subject";
// if(t.a.equals(sp)) {
@@ -123,10 +122,12 @@
// addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_CLASS,ClassNode.class.getCanonicalName() )) ;
// addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_THING,InstanceNode.class.getCanonicalName() )) ;
// addRule(new TypeFilterRule(month, "", OWLVocabulary.OWL_CLASS, ClassNode.class.getCanonicalName()) ) ;
- addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_CLASS,ClassNode.class )) ;
- addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_THING,InstanceNode.class )) ;
- addRule(new TypeFilterRule(month, "", OWLVocabulary.OWL_CLASS, ClassNode.class) ) ;
- addRule(new TypeFilterRule(month, "", OWLVocabulary.RDFS_CLASS, ClassNode.class) ) ;
+
+ addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_THING, Nodes.INSTANCENODE )) ;
+
+ addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_CLASS, Nodes.CLASSNODE)) ;
+ addRule(new TypeFilterRule(month, "", OWLVocabulary.OWL_CLASS, Nodes.CLASSNODE) ) ;
+ addRule(new TypeFilterRule(month, "", OWLVocabulary.RDFS_CLASS, Nodes.CLASSNODE) ) ;
}
Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-08-22 15:52:22 UTC (rev 1128)
+++ trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-08-23 12:07:03 UTC (rev 1129)
@@ -23,6 +23,9 @@
import java.util.TreeSet;
import org.apache.log4j.Logger;
+import org.dllearner.kb.extraction.ClassNode;
+import org.dllearner.kb.extraction.InstanceNode;
+import org.dllearner.kb.extraction.LiteralNode;
import org.dllearner.kb.extraction.Node;
import org.dllearner.utilities.JamonMonitorLogger;
import org.dllearner.utilities.datastructures.RDFNodeTuple;
@@ -31,16 +34,17 @@
public static Logger logger = Logger.getLogger(TypeFilterRule.class);
- String predicateFilter;
- String objectFilter;
- String classCanonicalName;
+ private String predicateFilter;
+ private String objectFilter;
+ private Nodes requiredNodeType;
+ public enum Nodes {CLASSNODE, INSTANCENODE, LITERALNODE};
- public TypeFilterRule(Months month, String predicateFilter, String objectFilter, Class<? extends Node> clazz) {
+ public TypeFilterRule(Months month, String predicateFilter, String objectFilter, Nodes requiredNodeType) {
super(month);
this.predicateFilter = predicateFilter;
this.objectFilter = objectFilter;
- this.classCanonicalName = clazz.getCanonicalName();
+ this.requiredNodeType = requiredNodeType;
}
@@ -52,21 +56,37 @@
//String a = tuple.a.toString();
//String b = tuple.b.toString();
//System.out.println(a+b);
- boolean remove = (tuple.aPartContains(predicateFilter) &&
- tuple.bPartContains(objectFilter) &&
- // QUALITY this might be dead wrong
- (classCanonicalName.equalsIgnoreCase(subject.getClass().getCanonicalName()))
+ boolean remove = (
+ (tuple.aPartContains(predicateFilter) ) &&
+ (tuple.bPartContains(objectFilter) ) &&
+ (checkClass(subject))
);
+
if(!remove){
keep.add(tuple);
}else{
logJamon();
+ //RBC
+ logger.debug("for "+ subject+ " removed tuple: "+tuple);
}
}
return keep;
}
+ public boolean checkClass (Node n){
+ if (requiredNodeType.equals(Nodes.INSTANCENODE)){
+ return (n instanceof InstanceNode);
+ }else if (requiredNodeType.equals(Nodes.CLASSNODE)){
+ return (n instanceof ClassNode);
+ }else if (requiredNodeType.equals(Nodes.LITERALNODE)){
+ return (n instanceof LiteralNode);
+ }
+ else {
+ throw new RuntimeException("undefined TypeFilterRule");
+ }
+ }
+
@Override
public void logJamon(){
JamonMonitorLogger.increaseCount(TypeFilterRule.class, "filteredTriples");
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java 2008-08-22 15:52:22 UTC (rev 1128)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java 2008-08-23 12:07:03 UTC (rev 1129)
@@ -563,7 +563,7 @@
* here are some old functions, which were workarounds:
*
*
- * QUALITY: workaround for a sparql glitch {?a owl:subclassOf ?b} returns an
+ * workaround for a sparql glitch {?a owl:subclassOf ?b} returns an
* empty set on some endpoints. returns all direct subclasses of String concept
*
* @param concept An URI string with no quotes @return SortedSet of direct
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java 2008-08-22 15:52:22 UTC (rev 1128)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java 2008-08-23 12:07:03 UTC (rev 1129)
@@ -101,8 +101,10 @@
return getEndpointDBpedia();
} else if (name.equals("LOCALDBPEDIA")) {
return getEndpointLOCALDBpedia();
- } else if (name.equals("LOCALJOSECKI")) {
+ } else if (name.equals("LOCALJOSECKI") || name.equals("LOCALJOSEKI") ) {
return getEndpointlocalJoseki();
+ } else if (name.equals("LOCALJOSEKIBIBLE")||name.equals("LOCALJOSECKIBIBLE")) {
+ return getEndpointLocalJosekiBible();
} else if (name.equals("GOVTRACK")) {
return getEndpointGovTrack();
} else if (name.equals("SPARQLETTE")) {
@@ -183,6 +185,16 @@
return new SparqlEndpoint(u, new LinkedList<String>(), new LinkedList<String>());
}
+ public static SparqlEndpoint getEndpointLocalJosekiBible() {
+ URL u = null;
+ try {
+ u = new URL("http://localhost:2020/bible");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return new SparqlEndpoint(u, new LinkedList<String>(), new LinkedList<String>());
+ }
+
public static SparqlEndpoint getEndpointWorldFactBook() {
URL u = null;
try {
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-08-22 15:52:22 UTC (rev 1128)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-08-23 12:07:03 UTC (rev 1129)
@@ -78,8 +78,13 @@
//DEFAULTS
static int recursionDepthDefault = 1;
- static final boolean debug = false; //switches tupleaquisitor
- static final boolean debug2 = false; //switches sysex und rdf generation
+
+ //RBC
+ static final boolean debug = false;
+ static final boolean debugUseImprovedTupleAquisitor = debug && false; //switches tupleaquisitor
+ static final boolean debugExitAfterExtraction = debug && false; //switches sysex und rdf generation
+ static final boolean debugAdditionallyGenerateRDF = debug && true;
+
private boolean useCache=true;
// ConfigOptions
public URL url;
@@ -331,7 +336,7 @@
fw.close();
dumpFile = (new File(basedir + filename)).toURI().toURL();
- if(debug2){
+ if(debugAdditionallyGenerateRDF){
NT2RDF.convertNT2RDF(basedir + filename);
//System.exit(0);
}
@@ -351,7 +356,7 @@
e.printStackTrace();
}
logger.info("SparqlModul: ****Finished " + totalTime.getAndSet("") );
- if(debug2){
+ if(debugExitAfterExtraction){
File jamonlog = new File("log/jamon.html");
Files.createFile(jamonlog, MonitorFactory.getReport());
@@ -457,7 +462,7 @@
public TupleAquisitor getTupleAquisitor()
{
- if (debug) {
+ if (debugUseImprovedTupleAquisitor) {
return new SparqlTupleAquisitorImproved(getSparqlQueryMaker(), getSPARQLTasks(),recursionDepth);
}
else {
Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertRDFS.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertRDFS.java 2008-08-22 15:52:22 UTC (rev 1128)
+++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertRDFS.java 2008-08-23 12:07:03 UTC (rev 1129)
@@ -33,7 +33,7 @@
* @author Sebastian Hellmann
* Enables RDFS reasoning for the DL2SPARQL class
* by concept rewriting
- * //QUALITY use SPARQLtasks
+ *
*/
public class SparqlQueryDescriptionConvertRDFS {
Property changes on: trunk/src/dl-learner/org/dllearner/test
___________________________________________________________________
Modified: svn:ignore
- JamonTest.java
JenaAmpBug.java
+ JamonTest.java
JenaAmpBug.java
TestHeapSize.java
Modified: trunk/src/dl-learner/org/dllearner/utilities/datastructures/RDFNodeTuple.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/utilities/datastructures/RDFNodeTuple.java 2008-08-22 15:52:22 UTC (rev 1128)
+++ trunk/src/dl-learner/org/dllearner/utilities/datastructures/RDFNodeTuple.java 2008-08-23 12:07:03 UTC (rev 1129)
@@ -53,11 +53,11 @@
}
public boolean aPartContains(String partOf) {
- return !(a.toString().contains(partOf));
+ return a.toString().contains(partOf);
}
public boolean bPartContains(String partOf) {
- return (b.toString().contains(partOf));
+ return b.toString().contains(partOf);
}
}
Modified: trunk/src/dl-learner/org/dllearner/utilities/datastructures/SetManipulation.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/utilities/datastructures/SetManipulation.java 2008-08-22 15:52:22 UTC (rev 1128)
+++ trunk/src/dl-learner/org/dllearner/utilities/datastructures/SetManipulation.java 2008-08-23 12:07:03 UTC (rev 1129)
@@ -69,10 +69,10 @@
/**
* XXX
* getFirst n Elements from list.
- * changes the list!!!
+ * changes the list object!!!
* @param list
* @param nrElements
- * @return returns the list shrunken to size. it is an ARRAYLIST now
+ * @return returns the list shrunken to size.
*/
public static List getFirst(List list, int nrElements) {
int size;
Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java 2008-08-22 15:52:22 UTC (rev 1128)
+++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java 2008-08-23 12:07:03 UTC (rev 1129)
@@ -135,7 +135,7 @@
}
- // QUALITY: keep a while may still be needed
+ // keep a while may still be needed
/*public void dbpediaMakeNegativeExamplesFromRelatedInstances(String subject) {
// SortedSet<String> result = new TreeSet<String>();
Modified: trunk/src/dl-learner/org/dllearner/utilities/learn/SPARQLExtractionEvaluation.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/utilities/learn/SPARQLExtractionEvaluation.java 2008-08-22 15:52:22 UTC (rev 1128)
+++ trunk/src/dl-learner/org/dllearner/utilities/learn/SPARQLExtractionEvaluation.java 2008-08-23 12:07:03 UTC (rev 1129)
@@ -198,7 +198,7 @@
}
- //FIXME
+ //TODO: check whether this function is still needed
public static SortedSet<String> selectDBpediaConcepts(int number){
String query = "SELECT DISTINCT ?concept WHERE { \n" +
"[] a ?concept .FILTER (regex(str(?concept),'yago'))" +
Modified: trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java
===================================================================
--- trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java 2008-08-22 15:52:22 UTC (rev 1128)
+++ trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java 2008-08-23 12:07:03 UTC (rev 1129)
@@ -24,7 +24,6 @@
public static final String RDF_TYPE = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
public static final String RDFS_SUBCLASS_OF = "http://www.w3.org/2000/01/rdf-schema#subClassOf";
-
public static final String RDFS_CLASS = "http://www.w3.org/2000/01/rdf-schema#Class";
@@ -32,10 +31,22 @@
public static final String OWL_OBJECTPROPERTY = "http://www.w3.org/2002/07/owl#ObjectProperty";
public static final String OWL_DATATYPPROPERTY = "http://www.w3.org/2002/07/owl#DataTypeProperty";
public static final String OWL_CLASS = "http://www.w3.org/2002/07/owl#Class";
+ public static final String OWL_SUBCLASS_OF = "http://www.w3.org/2002/07/owl#subClassOf";
+
public static final String OWL_THING = "http://www.w3.org/2002/07/owl#Thing";
//OWL2 Namespace: http://www.w3.org/2006/12/owl2#
+ public static boolean isStringClassVocab (String possClass){
+ return (RDFS_CLASS.equalsIgnoreCase(possClass)
+ || OWL_CLASS.equalsIgnoreCase(possClass));
+
+ }
+ public static boolean isStringSubClassVocab (String possSubClass){
+ return (RDFS_SUBCLASS_OF.equalsIgnoreCase(possSubClass)
+ || OWL_SUBCLASS_OF.equalsIgnoreCase(possSubClass));
+
+ }
// public static final String RDF_TYPE = "";
// public static final String RDF_TYPE = "";
// public static final String RDF_TYPE = "";
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|