From: <ku...@us...> - 2008-08-04 17:18:13
|
Revision: 1049 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1049&view=rev Author: kurzum Date: 2008-08-04 17:17:58 +0000 (Mon, 04 Aug 2008) Log Message: ----------- tested some new improvements, which showed that further experimentation is necessary Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java trunk/src/dl-learner/org/dllearner/scripts/WikipediaCategoryCleaner.java trunk/src/dl-learner/org/dllearner/test/FilterTest.java trunk/src/dl-learner/org/dllearner/utilities/datastructures/SetManipulation.java trunk/src/dl-learner/org/dllearner/utilities/datastructures/StringTuple.java trunk/src/dl-learner/org/dllearner/utilities/statistics/SimpleClock.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/test/rules/ trunk/src/dl-learner/org/dllearner/test/rules/FilterRule.java trunk/src/dl-learner/org/dllearner/test/rules/ReplacementRule.java trunk/src/dl-learner/org/dllearner/test/rules/RuleExecutor.java trunk/src/dl-learner/org/dllearner/test/rules/SimpleObjectFilterRule.java trunk/src/dl-learner/org/dllearner/test/rules/SimplePredicateFilterRule.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java 2008-08-04 11:34:25 UTC (rev 1048) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java 2008-08-04 17:17:58 UTC (rev 1049) @@ -24,6 +24,7 @@ import java.util.TreeSet; import org.apache.log4j.Logger; +import org.dllearner.utilities.datastructures.StringTuple; import com.hp.hpl.jena.query.ResultSet; import com.hp.hpl.jena.query.ResultSetFactory; @@ -381,7 +382,29 @@ + object + " \n" + "} " + limit(sparqlResultLimit); return queryAsSet(sparqlQueryString, variable); } + + + public SortedSet<StringTuple> queryAsTuple(String subject, boolean filterLiterals) { + ResultSetRewindable rs = null; + String p = "predicate"; + String o = "object"; + String lits = (filterLiterals)? ".FILTER (!isLiteral(?"+o+"))." : ""; + String sparqlQueryString = "SELECT * WHERE { <"+subject+"> ?"+p+" ?"+o+" "+lits+" } "; + + 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, p, o); + } + /** * little higher level, executes query ,returns all resources for a * variable. @@ -428,9 +451,13 @@ public String query(String sparqlQueryString) { String jsonString; if (cache == null) { + SparqlQuery sq = new SparqlQuery(sparqlQueryString, sparqlEndpoint); + //SimpleClock sc = new SimpleClock(); sq.send(); + //sc.printAndSet("querysend"); jsonString = sq.getJson(); + } else { jsonString = cache.executeSparqlQuery(new SparqlQuery( sparqlQueryString, sparqlEndpoint)); @@ -464,7 +491,23 @@ return result; } + + private static SortedSet<StringTuple> getTuplesFromResultSet( + ResultSetRewindable rs, String predicate, String object) { + final SortedSet<StringTuple> returnSet = new TreeSet<StringTuple>(); + //SimpleClock sc = new SimpleClock(); + @SuppressWarnings("unchecked") + final List<ResultBinding> l = ResultSetFormatter.toList(rs); + for (ResultBinding resultBinding : l) { + returnSet.add(new StringTuple(resultBinding.get(predicate).toString(),resultBinding.get(object).toString())); + } + //sc.printAndSet("allTuples"); + rs.reset(); + //sc.printAndSet("reset"); + return returnSet; + } + public SparqlEndpoint getSparqlEndpoint() { return sparqlEndpoint; } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-08-04 11:34:25 UTC (rev 1048) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-08-04 17:17:58 UTC (rev 1049) @@ -278,15 +278,8 @@ * @return JSON representation of the result set. */ public static String convertResultSetToJSON(ResultSetRewindable resultSet) { - // if (rs == null) - // this.send(); - //ResultSetRewindable rsRewind = ResultSetFactory.makeRewindable(resultSet); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ResultSetFormatter.outputAsJSON(baos, resultSet); - // possible Jena bug: Jena modifies the result set during - // JSON transformation, so we need to get it back - //rsRewind. - //resultSet = convertJSONtoResultSet(baos.toString()); resultSet.reset(); try { return baos.toString("UTF-8"); Modified: trunk/src/dl-learner/org/dllearner/scripts/WikipediaCategoryCleaner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/WikipediaCategoryCleaner.java 2008-08-04 11:34:25 UTC (rev 1048) +++ trunk/src/dl-learner/org/dllearner/scripts/WikipediaCategoryCleaner.java 2008-08-04 17:17:58 UTC (rev 1049) @@ -46,6 +46,7 @@ import org.dllearner.scripts.improveWikipedia.ConceptSPARQLReEvaluator; import org.dllearner.scripts.improveWikipedia.ConceptSelector; import org.dllearner.scripts.improveWikipedia.WikipediaCategoryTasks; +import org.dllearner.utilities.datastructures.SetManipulation; import org.dllearner.utilities.examples.AutomaticNegativeExampleFinderSPARQL; import org.dllearner.utilities.examples.AutomaticPositiveExampleFinderSPARQL; import org.dllearner.utilities.learn.LearnSPARQLConfiguration; @@ -172,11 +173,11 @@ private static void collectResults(WikipediaCategoryTasks wikiTasks) { //logger.setLevel(Level.DEBUG); - printSet("fullpos", wikiTasks.getFullPositiveSet()); + SetManipulation.printSet("fullpos", wikiTasks.getFullPositiveSet(), logger); - printSet("cleanedpos", wikiTasks.getCleanedPositiveSet()); + SetManipulation.printSet("cleanedpos", wikiTasks.getCleanedPositiveSet(), logger); - printSet("wrongindividuals", wikiTasks.getDefinitelyWrongIndividuals()); + SetManipulation.printSet("wrongindividuals", wikiTasks.getDefinitelyWrongIndividuals(), logger); } @@ -269,21 +270,15 @@ SortedSet correctIndividuals, SortedSet wrongIndividuals, int numberOfConcepts) { - printSet("full Individual set: ", fullSet); + SetManipulation.printSet("full Individual set: ", fullSet, logger); - printSet("correct Individuals: ", correctIndividuals); - printSet("incorrect Individuals: ", wrongIndividuals); + SetManipulation.printSet("correct Individuals: ", correctIndividuals, logger); + SetManipulation.printSet("incorrect Individuals: ", wrongIndividuals, logger); logger.info("reevaluated " + numberOfConcepts + " found Concepts"); logger.info("END OF PHASE 1 **********************"); } - private static void printSet(String s, SortedSet set) { - if(logger.getLevel().equals(Level.DEBUG)){ - logger.info(s +" ["+ set.size()+"]: "+set); - }else{ - logger.info(s +" ["+ set.size()+"]"); - } - - } + + private static void setup() { // SETUP cache and sparqltasks Modified: trunk/src/dl-learner/org/dllearner/test/FilterTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/FilterTest.java 2008-08-04 11:34:25 UTC (rev 1048) +++ trunk/src/dl-learner/org/dllearner/test/FilterTest.java 2008-08-04 17:17:58 UTC (rev 1049) @@ -1,35 +1,158 @@ package org.dllearner.test; -import org.dllearner.kb.sparql.Cache; +import java.util.SortedSet; +import java.util.TreeSet; + 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; public class FilterTest { + + private static SPARQLTasks st; + private static String subject = "http://dbpedia.org/resource/%22Big%22_Ron"; + static int howmany = 150; + static SimpleClock sc = new SimpleClock(); + + static String qlong="SELECT * WHERE { <http://dbpedia.org/resource/%22Big%22_Ron> ?predicate ?object. FILTER( (!isLiteral(?object))&&( ( !regex(str(?predicate), 'http://dbpedia.org/property/relatedInstance') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/website') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/owner') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/wikiPageUsesTemplate') ) &&( !regex(str(?predicate), 'http://www.w3.org/2002/07/owl#sameAs') ) &&( !regex(str(?predicate), 'http://xmlns.com/foaf/0.1/') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/standard') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/wikipage') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/reference') ) &&( !regex(str(?predicate), 'http://www.w3.org/2004/02/skos/core') ))&&( ( !regex(str(?object), 'http://xmlns.com/foaf/0.1/') ) &&( !regex(str(?object), 'http://upload.wikimedia.org/wikipedia') ) &&( !regex(str(?object), 'http://www4.wiwiss.fu-berlin.de/flickrwrappr') ) &&( !regex(str(?object), 'http://dbpedia.org/resource/Template') ) &&( !regex(str(?object), 'http://upload.wikimedia.org/wikipedia/commons') ) &&( !regex(str(?object), 'http://www.w3.org/2006/03/wn/wn20/instances/synset') ) &&( !regex(str(?object), 'http://dbpedia.org/resource/Category:') ) &&( !regex(str(?object), 'http://www.w3.org/2004/02/skos/core') ) &&( !regex(str(?object), 'http://www.geonames.org') ))).}"; + /*static String qextralong="SELECT * WHERE { <http://dbpedia.org/resource/%22Big%22_Ron> ?predicate ?object. FILTER( (!isLiteral(?object))&&( ( !regex(str(?predicate), 'http://dbpedia.org/property/relatedInstance') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/website') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/owner') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/wikiPageUsesTemplate') ) &&( !regex(str(?predicate), 'http://www.w3.org/2002/07/owl#sameAs') ) &&( !regex(str(?predicate), 'http://xmlns.com/foaf/0.1/') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/standard') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/wikipage') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/reference') ) &&( !regex(str(?predicate), 'http://www.w3.org/2004/02/skos/core') ))&&( ( !regex(str(?object), 'http://xmlns.com/foaf/0.1/') ) &&( !regex(str(?object), 'http://upload.wikimedia.org/wikipedia') ) &&( !regex(str(?object), 'http://www4.wiwiss.fu-berlin.de/flickrwrappr') ) &&( !regex(str(?object), 'http://dbpedia.org/resource/Template') ) &&( !regex(str(?object), 'http://upload.wikimedia.org/wikipedia/commons') ) &&( !regex(str(?object), 'http://www.w3.org/2006/03/wn/wn20/instances/synset') ) &&( !regex(str(?object), 'http://dbpedia.org/resource/Category:') ) &&( !regex(str(?object), 'http://www.w3.org/2004/02/skos/core') ) &&( !regex(str(?object), 'http://www.geonames.org') )))." + + "OPTIONAL { ?object ?p2 ?o2. FILTER( (!isLiteral(?o2))&&( ( !regex(str(?p2), 'http://dbpedia.org/property/relatedInstance') ) &&( !regex(str(?p2), 'http://dbpedia.org/property/website') ) &&( !regex(str(?p2), 'http://dbpedia.org/property/owner') ) &&( !regex(str(?p2), 'http://dbpedia.org/property/wikiPageUsesTemplate') ) &&( !regex(str(?p2), 'http://www.w3.org/2002/07/owl#sameAs') ) &&( !regex(str(?p2), 'http://xmlns.com/foaf/0.1/') ) &&( !regex(str(?p2), 'http://dbpedia.org/property/standard') ) &&( !regex(str(?p2), 'http://dbpedia.org/property/wikipage') ) &&( !regex(str(?p2), 'http://dbpedia.org/property/reference') ) &&( !regex(str(?p2), 'http://www.w3.org/2004/02/skos/core') ))&&( ( !regex(str(?o2), 'http://xmlns.com/foaf/0.1/') ) &&( !regex(str(?o2), 'http://upload.wikimedia.org/wikipedia') ) &&( !regex(str(?o2), 'http://www4.wiwiss.fu-berlin.de/flickrwrappr') ) &&( !regex(str(?o2), 'http://dbpedia.org/resource/Template') ) &&( !regex(str(?o2), 'http://upload.wikimedia.org/wikipedia/commons') ) &&( !regex(str(?o2), 'http://www.w3.org/2006/03/wn/wn20/instances/synset') ) &&( !regex(str(?o2), 'http://dbpedia.org/resource/Category:') ) &&( !regex(str(?o2), 'http://www.w3.org/2004/02/skos/core') ) &&( !regex(str(?o2), 'http://www.geonames.org') ))).}}"; + */ + static String qextralong="SELECT * WHERE { { <http://dbpedia.org/resource/Angela_Merkel> ?predicate ?object. FILTER( (!isLiteral(?object))&&( ( !regex(str(?predicate), 'http://dbpedia.org/property/relatedInstance') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/website') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/owner') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/wikiPageUsesTemplate') ) &&( !regex(str(?predicate), 'http://www.w3.org/2002/07/owl#sameAs') ) &&( !regex(str(?predicate), 'http://xmlns.com/foaf/0.1/') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/standard') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/wikipage') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/reference') ) &&( !regex(str(?predicate), 'http://www.w3.org/2004/02/skos/core') ))&&( ( !regex(str(?object), 'http://xmlns.com/foaf/0.1/') ) &&( !regex(str(?object), 'http://upload.wikimedia.org/wikipedia') ) &&( !regex(str(?object), 'http://www4.wiwiss.fu-berlin.de/flickrwrappr') ) &&( !regex(str(?object), 'http://dbpedia.org/resource/Template') ) &&( !regex(str(?object), 'http://upload.wikimedia.org/wikipedia/commons') ) &&( !regex(str(?object), 'http://www.w3.org/2006/03/wn/wn20/instances/synset') ) &&( !regex(str(?object), 'http://dbpedia.org/resource/Category:') ) &&( !regex(str(?object), 'http://www.w3.org/2004/02/skos/core') ) &&( !regex(str(?object), 'http://www.geonames.org') ))).}" + + "OPTIONAL { ?object ?p2 ?o2. FILTER( (!isLiteral(?o2))&&( ( !regex(str(?p2), 'http://dbpedia.org/property/relatedInstance') ) &&( !regex(str(?p2), 'http://dbpedia.org/property/website') ) &&( !regex(str(?p2), 'http://dbpedia.org/property/owner') ) &&( !regex(str(?p2), 'http://dbpedia.org/property/wikiPageUsesTemplate') ) &&( !regex(str(?p2), 'http://www.w3.org/2002/07/owl#sameAs') ) &&( !regex(str(?p2), 'http://xmlns.com/foaf/0.1/') ) &&( !regex(str(?p2), 'http://dbpedia.org/property/standard') ) &&( !regex(str(?p2), 'http://dbpedia.org/property/wikipage') ) &&( !regex(str(?p2), 'http://dbpedia.org/property/reference') ) &&( !regex(str(?p2), 'http://www.w3.org/2004/02/skos/core') ))&&( ( !regex(str(?o2), 'http://xmlns.com/foaf/0.1/') ) &&( !regex(str(?o2), 'http://upload.wikimedia.org/wikipedia') ) &&( !regex(str(?o2), 'http://www4.wiwiss.fu-berlin.de/flickrwrappr') ) &&( !regex(str(?o2), 'http://dbpedia.org/resource/Template') ) &&( !regex(str(?o2), 'http://upload.wikimedia.org/wikipedia/commons') ) &&( !regex(str(?o2), 'http://www.w3.org/2006/03/wn/wn20/instances/synset') ) &&( !regex(str(?o2), 'http://dbpedia.org/resource/Category:') ) &&( !regex(str(?o2), 'http://www.w3.org/2004/02/skos/core') ) &&( !regex(str(?o2), 'http://www.geonames.org') ))).}}"; + + + static String qshort="SELECT * WHERE { <http://dbpedia.org/resource/%22Big%22_Ron> ?predicate ?object. FILTER (!isLiteral(?object)).}"; + static String sshort="SELECT * WHERE { <http://dbpedia.org/resource/%22Big%22_Ron> ?predicate ?object }"; + static String qextrashort="SELECT * WHERE { <http://dbpedia.org/resource/Angela_Merkel> ?predicate ?object. FILTER (!isLiteral(?object)). OPTIONAL { ?object ?p2 ?o2 FILTER (!isLiteral(?o2))}}"; + + /** * @param args */ public static void main(String[] args) { - // TODO Auto-generated method stub - String qlong="SELECT * WHERE { <http://dbpedia.org/resource/%22Big%22_Ron> ?predicate ?object. FILTER( (!isLiteral(?object))&&( ( !regex(str(?predicate), 'http://dbpedia.org/property/relatedInstance') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/website') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/owner') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/wikiPageUsesTemplate') ) &&( !regex(str(?predicate), 'http://www.w3.org/2002/07/owl#sameAs') ) &&( !regex(str(?predicate), 'http://xmlns.com/foaf/0.1/') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/standard') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/wikipage') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/reference') ) &&( !regex(str(?predicate), 'http://www.w3.org/2004/02/skos/core') ))&&( ( !regex(str(?object), 'http://xmlns.com/foaf/0.1/') ) &&( !regex(str(?object), 'http://upload.wikimedia.org/wikipedia') ) &&( !regex(str(?object), 'http://www4.wiwiss.fu-berlin.de/flickrwrappr') ) &&( !regex(str(?object), 'http://dbpedia.org/resource/Template') ) &&( !regex(str(?object), 'http://upload.wikimedia.org/wikipedia/commons') ) &&( !regex(str(?object), 'http://www.w3.org/2006/03/wn/wn20/instances/synset') ) &&( !regex(str(?object), 'http://dbpedia.org/resource/Category:') ) &&( !regex(str(?object), 'http://www.w3.org/2004/02/skos/core') ) &&( !regex(str(?object), 'http://www.geonames.org') ))).}"; - String qshort="SELECT * WHERE { <http://dbpedia.org/resource/%22Big%22_Ron> ?predicate ?object. FILTER (!isLiteral(?object)).}"; + // System.out.println(qextralong); + + // System.out.println(qextrashort); - SimpleClock sc = new SimpleClock(); - SPARQLTasks st = new SPARQLTasks(Cache.getPersistentCache(), SparqlEndpoint.getEndpointDBpedia()); + st = new SPARQLTasks( SparqlEndpoint.getEndpointDBpedia()); + st.queryAsTuple(subject, true); + st.query(qlong); + st.query(qextralong); + st.query(sshort); + // st.query(qextrashort); + System.out.println(qextrashort); + System.exit(0); + // st.query(qextrashort); + //System.out.println(qextralong); - for (int i = 0; i < 10; i++) { - st.query(qshort); + //String qlong="SELECT * WHERE { <http://dbpedia.org/resource/%22Big%22_Ron> ?predicate ?object. FILTER( (!isLiteral(?object))&&( ( !regex(str(?predicate), 'http://dbpedia.org/property/relatedInstance') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/website') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/owner') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/wikiPageUsesTemplate') ) &&( !regex(str(?predicate), 'http://www.w3.org/2002/07/owl#sameAs') ) &&( !regex(str(?predicate), 'http://xmlns.com/foaf/0.1/') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/standard') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/wikipage') ) &&( !regex(str(?predicate), 'http://dbpedia.org/property/reference') ) &&( !regex(str(?predicate), 'http://www.w3.org/2004/02/skos/core') ))&&( ( !regex(str(?object), 'http://xmlns.com/foaf/0.1/') ) &&( !regex(str(?object), 'http://upload.wikimedia.org/wikipedia') ) &&( !regex(str(?object), 'http://www4.wiwiss.fu-berlin.de/flickrwrappr') ) &&( !regex(str(?object), 'http://dbpedia.org/resource/Template') ) &&( !regex(str(?object), 'http://upload.wikimedia.org/wikipedia/commons') ) &&( !regex(str(?object), 'http://www.w3.org/2006/03/wn/wn20/instances/synset') ) &&( !regex(str(?object), 'http://dbpedia.org/resource/Category:') ) &&( !regex(str(?object), 'http://www.w3.org/2004/02/skos/core') ) )).}"; + + + //testLong(); + + //testShortWithFilter(); + //testShort(); + testLong(); + testExtraLong(); + //testExtraShort(); + //testShort(); + //testLong(); + //testShortWithFilter(); + + + /*sc.reset(); + for (int i = 0; i < howmany; i++) { + st.query(sshort); } - sc.printAndSet("long "); + sc.printAndSet("supershort "); + */ - for (int i = 0; i < 10; i++) { + } + + static void testShort(){ + SortedSet<StringTuple> tupleset = new TreeSet<StringTuple>(); + sc.reset(); + for (int i = 0; i < howmany; i++) { + + tupleset = st.queryAsTuple(subject, true); + + } + SetManipulation.printSet("before", tupleset); + + sc.printAndSet("SHORT "); + + } + + static void testLong(){ + sc.reset(); + for (int i = 0; i < howmany; i++) { st.query(qlong); } + sc.printAndSet("long "); + } + + static void testExtraLong(){ + sc.reset(); + for (int i = 0; i < howmany; i++) { + st.query(qextralong); + } + sc.printAndSet("extraLong "); + } + + static void testExtraShort(){ + sc.reset(); + for (int i = 0; i < howmany; i++) { + st.query(qextrashort); + } + sc.printAndSet("qextrashort "); + } + + static void testShortWithFilter(){ + SortedSet<StringTuple> tupleset = new TreeSet<StringTuple>(); + SortedSet<StringTuple> afterfilter= new TreeSet<StringTuple>(); + RuleExecutor re = new RuleExecutor(); - sc.printAndSet("short "); + + re.addFilterRule(new SimplePredicateFilterRule( "http://dbpedia.org/property/relatedInstance" )); + re.addFilterRule(new SimplePredicateFilterRule( "http://dbpedia.org/property/website")); + re.addFilterRule(new SimplePredicateFilterRule("http://dbpedia.org/property/owner" )); + re.addFilterRule(new SimplePredicateFilterRule("http://dbpedia.org/property/wikiPageUsesTemplate" )); + re.addFilterRule(new SimplePredicateFilterRule("http://www.w3.org/2002/07/owl#sameAs" )); + re.addFilterRule(new SimplePredicateFilterRule("http://xmlns.com/foaf/0.1/" )); + re.addFilterRule(new SimplePredicateFilterRule("http://dbpedia.org/property/standard")); + re.addFilterRule(new SimplePredicateFilterRule("http://dbpedia.org/property/wikipage")); + re.addFilterRule(new SimplePredicateFilterRule("http://dbpedia.org/property/reference")); + re.addFilterRule(new SimplePredicateFilterRule("http://www.w3.org/2004/02/skos/core")); + re.addFilterRule(new SimpleObjectFilterRule("http://xmlns.com/foaf/0.1/" )); + re.addFilterRule(new SimpleObjectFilterRule( "http://upload.wikimedia.org/wikipedia")); + re.addFilterRule(new SimpleObjectFilterRule( "http://www4.wiwiss.fu-berlin.de/flickrwrappr")); + re.addFilterRule(new SimpleObjectFilterRule("http://dbpedia.org/resource/Template" )); + re.addFilterRule(new SimpleObjectFilterRule( "http://upload.wikimedia.org/wikipedia/commons")); + re.addFilterRule(new SimpleObjectFilterRule("http://www.w3.org/2006/03/wn/wn20/instances/synset" )); + re.addFilterRule(new SimpleObjectFilterRule("http://dbpedia.org/resource/Category:" )); + 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); + } + sc.printAndSet("SHORT with filter"); + SetManipulation.printSet("before", tupleset); + SetManipulation.printSet("after", afterfilter); } } Added: trunk/src/dl-learner/org/dllearner/test/rules/FilterRule.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/rules/FilterRule.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/test/rules/FilterRule.java 2008-08-04 17:17:58 UTC (rev 1049) @@ -0,0 +1,10 @@ +package org.dllearner.test.rules; + +import org.dllearner.utilities.datastructures.StringTuple; + +public abstract class FilterRule { + + + public abstract boolean keepTuple(String subject, StringTuple tuple); + +} Added: trunk/src/dl-learner/org/dllearner/test/rules/ReplacementRule.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/rules/ReplacementRule.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/test/rules/ReplacementRule.java 2008-08-04 17:17:58 UTC (rev 1049) @@ -0,0 +1,8 @@ +package org.dllearner.test.rules; + +import org.dllearner.utilities.datastructures.StringTuple; + +public abstract class ReplacementRule { + + public abstract StringTuple applyRule(String subject, StringTuple tuple); +} Added: trunk/src/dl-learner/org/dllearner/test/rules/RuleExecutor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/rules/RuleExecutor.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/test/rules/RuleExecutor.java 2008-08-04 17:17:58 UTC (rev 1049) @@ -0,0 +1,45 @@ +package org.dllearner.test.rules; + +import java.util.ArrayList; +import java.util.List; +import java.util.SortedSet; +import java.util.TreeSet; + +import org.dllearner.utilities.datastructures.StringTuple; + +public class RuleExecutor { + + List<ReplacementRule> replacementRules = new ArrayList<ReplacementRule>(); + List<FilterRule> filterRule = new ArrayList<FilterRule>(); + + public RuleExecutor() { + super(); + } + + private boolean keepTuple(String subject, StringTuple tuple) { + + for (int i = 0; i < filterRule.size(); i++) { + FilterRule fr = filterRule.get(i); + if (!(fr.keepTuple(subject, tuple))) { + return false; + } + + } + return true; + } + + public SortedSet<StringTuple> filterTuples(String subject, SortedSet<StringTuple> tuples){ + SortedSet<StringTuple> returnSet = new TreeSet<StringTuple>(); + for (StringTuple tuple : tuples) { + if(keepTuple(subject, tuple)) { + returnSet.add(tuple); + } + } + return returnSet; + } + + public void addFilterRule(FilterRule fr){ + filterRule.add(fr); + } + +} Added: trunk/src/dl-learner/org/dllearner/test/rules/SimpleObjectFilterRule.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/rules/SimpleObjectFilterRule.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/test/rules/SimpleObjectFilterRule.java 2008-08-04 17:17:58 UTC (rev 1049) @@ -0,0 +1,23 @@ +package org.dllearner.test.rules; + +import org.dllearner.utilities.datastructures.StringTuple; + +public class SimpleObjectFilterRule extends FilterRule{ + + String objectFilter; + + public SimpleObjectFilterRule(String objectFilter) { + super(); + this.objectFilter = objectFilter; + } + + + @Override + public boolean keepTuple(String subject, StringTuple tuple) { + return !(tuple.b.contains(objectFilter)); + } + + + + +} Added: trunk/src/dl-learner/org/dllearner/test/rules/SimplePredicateFilterRule.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/rules/SimplePredicateFilterRule.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/test/rules/SimplePredicateFilterRule.java 2008-08-04 17:17:58 UTC (rev 1049) @@ -0,0 +1,23 @@ +package org.dllearner.test.rules; + +import org.dllearner.utilities.datastructures.StringTuple; + +public class SimplePredicateFilterRule extends FilterRule{ + + String predicateFilter; + + + public SimplePredicateFilterRule(String predicateFilter) { + super(); + this.predicateFilter = predicateFilter; + } + + @Override + public boolean keepTuple(String subject, StringTuple tuple) { + return !(tuple.a.contains(predicateFilter)); + } + + + + +} Modified: trunk/src/dl-learner/org/dllearner/utilities/datastructures/SetManipulation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/datastructures/SetManipulation.java 2008-08-04 11:34:25 UTC (rev 1048) +++ trunk/src/dl-learner/org/dllearner/utilities/datastructures/SetManipulation.java 2008-08-04 17:17:58 UTC (rev 1049) @@ -5,6 +5,8 @@ import java.util.SortedSet; import java.util.TreeSet; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; import org.dllearner.core.owl.Individual; public class SetManipulation { @@ -87,4 +89,18 @@ } return ret; } + + public static void printSet(String s, SortedSet set, Logger logger) { + if(logger.getLevel().equals(Level.DEBUG)){ + logger.info(s +" ["+ set.size()+"]: "+set); + }else{ + logger.info(s +" ["+ set.size()+"]"); + } + + } + + public static void printSet(String s, SortedSet set) { + System.out.println(s +" ["+ set.size()+"]: "+set); + + } } Modified: trunk/src/dl-learner/org/dllearner/utilities/datastructures/StringTuple.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/datastructures/StringTuple.java 2008-08-04 11:34:25 UTC (rev 1048) +++ trunk/src/dl-learner/org/dllearner/utilities/datastructures/StringTuple.java 2008-08-04 17:17:58 UTC (rev 1049) @@ -24,7 +24,7 @@ * Also used as pre form, if you want to create triple, that have the same subject * @author Sebastian Hellmann */ -public class StringTuple { +public class StringTuple implements Comparable<StringTuple>{ public String a; public String b; @@ -40,10 +40,14 @@ } public boolean equals(StringTuple t) { - if (a.equals(t.a) && b.equals(t.b)) - return true; - else - return false; + return ((b.equals(t.b)) && (a.equals(t.a))); } + + public int compareTo(StringTuple t){ + int comp = a.compareTo(t.a); + if( comp == 0 ){ + return b.compareTo(t.b); + }else return comp; + } } Modified: trunk/src/dl-learner/org/dllearner/utilities/statistics/SimpleClock.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/statistics/SimpleClock.java 2008-08-04 11:34:25 UTC (rev 1048) +++ trunk/src/dl-learner/org/dllearner/utilities/statistics/SimpleClock.java 2008-08-04 17:17:58 UTC (rev 1049) @@ -57,9 +57,19 @@ } + /** + * resets the clock + */ public void setTime() { time=System.currentTimeMillis(); } + /** + * resets the clock + */ + public void reset() { + setTime(); + } + public long getTime() { long now=System.currentTimeMillis(); return now-time; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |