From: <jen...@us...> - 2009-05-27 09:53:32
|
Revision: 1772 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1772&view=rev Author: jenslehmann Date: 2009-05-27 09:53:20 +0000 (Wed, 27 May 2009) Log Message: ----------- matching refined further Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaLinkedGeoData.java trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaPoint.java trunk/src/dl-learner/org/dllearner/scripts/matching/Evaluation.java trunk/src/dl-learner/org/dllearner/scripts/matching/LearnOSMClasses.java Modified: trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2009-05-26 14:22:14 UTC (rev 1771) +++ trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2009-05-27 09:53:20 UTC (rev 1772) @@ -458,7 +458,8 @@ Individual i = ((ObjectValueRestriction)description).getIndividual(); ObjectProperty op = (ObjectProperty) ((ObjectValueRestriction)description).getRestrictedPropertyExpression(); - return opPos.get(op).get(individual).contains(i); + Set<Individual> inds = opPos.get(op).get(individual); + return inds == null ? false : inds.contains(i); } else if (description instanceof BooleanValueRestriction) { DatatypeProperty dp = ((BooleanValueRestriction) description) .getRestrictedPropertyExpresssion(); Modified: trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaLinkedGeoData.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaLinkedGeoData.java 2009-05-26 14:22:14 UTC (rev 1771) +++ trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaLinkedGeoData.java 2009-05-27 09:53:20 UTC (rev 1772) @@ -74,7 +74,8 @@ public static SparqlEndpoint dbpediaEndpoint = SparqlEndpoint.getEndpointLOCALDBpedia(); private static SPARQLTasks dbpedia = new SPARQLTasks(new Cache("cache/dbpedia_file/"), dbpediaEndpoint); private static SparqlEndpoint geoDataEndpoint = SparqlEndpoint.getEndpointLOCALGeoData(); - private static SPARQLTasks lgd = new SPARQLTasks(new Cache("cache/lgd/"), geoDataEndpoint); +// private static SPARQLTasks lgd = new SPARQLTasks(new Cache("cache/lgd/"), geoDataEndpoint); + private static SPARQLTasks lgd = new SPARQLTasks(geoDataEndpoint); private static Map<POIClass, Integer> noMatchPerClass = new HashMap<POIClass, Integer>(); private static Map<POIClass, Integer> matchPerClass = new HashMap<POIClass, Integer>(); @@ -363,6 +364,9 @@ queryStr += "?point <http://linkedgeodata.org/vocabulary#name> ?name ."; queryStr += "OPTIONAL { ?point <http://linkedgeodata.org/vocabulary#name%25en> ?name_en } ."; queryStr += "OPTIONAL { ?point <http://linkedgeodata.org/vocabulary#name_int> ?name_int } ."; + // filter out ways => we assume that it is always better to match a point and not a way + // (if there is a way, there should also be a point but not vice versa) + queryStr += "FILTER (?point LIKE <http://linkedgeodata.org/triplify/node/%>) ."; queryStr += "}"; // SparqlQuery query = new SparqlQuery(queryStr, geoDataEndpoint); @@ -410,6 +414,7 @@ double distanceScore = Math.pow(frac-1,4); double score = 0.8 * stringSimilarity + 0.2 * distanceScore; +// if(qs.getResource("point").toString().contains("/way/"); if(score > highestScore) { highestScore = score; Modified: trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaPoint.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaPoint.java 2009-05-26 14:22:14 UTC (rev 1771) +++ trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaPoint.java 2009-05-27 09:53:20 UTC (rev 1772) @@ -157,12 +157,22 @@ return POIClass.CITY; } else if(clazz.equals("http://dbpedia.org/ontology/Lake")) { return POIClass.LAKE; + } else if(clazz.equals("http://umbel.org/umbel/sc/Lake")) { + return POIClass.LAKE; } else if(clazz.equals("http://dbpedia.org/ontology/University")) { return POIClass.UNIVERSITY; } else if(clazz.equals("http://dbpedia.org/ontology/School")) { return POIClass.SCHOOL; + } else if(clazz.equals("http://umbel.org/umbel/sc/SchoolInstitution")) { + return POIClass.SCHOOL; + } else if(clazz.equals("http://umbel.org/umbel/sc/HighSchool")) { + return POIClass.SCHOOL; } else if(clazz.equals("http://dbpedia.org/ontology/Country")) { return POIClass.COUNTRY; + } else if(clazz.equals("http://umbel.org/umbel/sc/Country")) { + return POIClass.COUNTRY; + } else if(clazz.equals("http://umbel.org/umbel/sc/IndependentCountry")) { + return POIClass.COUNTRY; } else if(clazz.equals("http://dbpedia.org/ontology/Airport")) { return POIClass.AIRPORT; } else if(clazz.equals("http://umbel.org/umbel/sc/Airfield")) { @@ -171,18 +181,28 @@ return POIClass.RAILWAY_STATION; } else if(clazz.equals("http://dbpedia.org/ontology/Stadium")) { return POIClass.STADIUM; + } else if(clazz.equals("http://umbel.org/umbel/sc/Stadium")) { + return POIClass.STADIUM; } else if(clazz.equals("http://dbpedia.org/ontology/Island")) { return POIClass.ISLAND; } else if(clazz.equals("http://dbpedia.org/ontology/River")) { return POIClass.RIVER; + } else if(clazz.equals("http://umbel.org/umbel/sc/River")) { + return POIClass.RIVER; } else if(clazz.equals("http://dbpedia.org/ontology/Bridge")) { return POIClass.BRIDGE; + } else if(clazz.equals("http://umbel.org/umbel/sc/Bridge")) { + return POIClass.BRIDGE; } else if(clazz.equals("http://dbpedia.org/ontology/Mountain")) { return POIClass.MOUNTAIN; } else if(clazz.equals("http://umbel.org/umbel/sc/Mountain")) { return POIClass.MOUNTAIN; } else if(clazz.equals("http://dbpedia.org/ontology/Lighthouse")) { return POIClass.LIGHT_HOUSE; + } else if(clazz.equals("http://umbel.org/umbel/sc/Lighthouse")) { + return POIClass.LIGHT_HOUSE; + } else if(clazz.equals("http://dbpedia.org/ontology/RadioStation")) { + return POIClass.RADIO_STATION; } } return null; Modified: trunk/src/dl-learner/org/dllearner/scripts/matching/Evaluation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/matching/Evaluation.java 2009-05-26 14:22:14 UTC (rev 1771) +++ trunk/src/dl-learner/org/dllearner/scripts/matching/Evaluation.java 2009-05-27 09:53:20 UTC (rev 1772) @@ -86,6 +86,10 @@ // logger.trace("searching match for " + match.getKey() + "..."); + // we make the assumption that we always want to match against nodes + if(match.getValue().toString().contains("/way/")) + continue; + DBpediaPoint dbpediaPoint = null; try { dbpediaPoint = new DBpediaPoint(match.getKey()); Modified: trunk/src/dl-learner/org/dllearner/scripts/matching/LearnOSMClasses.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/matching/LearnOSMClasses.java 2009-05-26 14:22:14 UTC (rev 1771) +++ trunk/src/dl-learner/org/dllearner/scripts/matching/LearnOSMClasses.java 2009-05-27 09:53:20 UTC (rev 1772) @@ -69,16 +69,17 @@ URI dbpediaURI = match.getKey(); URI lgdURI = match.getValue(); // test whether the dbpediaURI is a city - String query = "ASK {<"+dbpediaURI+"> a <http://dbpedia.org/ontology/City>}"; - boolean isCity = dbpedia.ask(query); - if(!isCity) { - // DBpedia ontology does not capture all cities, so we also use UMBEL, YAGO - String query2 = "ASK {<"+dbpediaURI+"> a ?x . FILTER(?x LIKE <%City%>) }"; - String query3 = "ASK {<"+dbpediaURI+"> a ?x . FILTER(?x LIKE <%Cities%>) }"; - isCity = dbpedia.ask(query2) || dbpedia.ask(query3); - } +// String query = "ASK {<"+dbpediaURI+"> a <http://dbpedia.org/ontology/City>}"; + String query = "ASK {<"+dbpediaURI+"> a <http://dbpedia.org/ontology/Organisation>}"; + boolean isInClass = dbpedia.ask(query); +// if(!isCity) { +// // DBpedia ontology does not capture all cities, so we also use UMBEL, YAGO +// String query2 = "ASK {<"+dbpediaURI+"> a ?x . FILTER(?x LIKE <%City%>) }"; +// String query3 = "ASK {<"+dbpediaURI+"> a ?x . FILTER(?x LIKE <%Cities%>) }"; +// isCity = dbpedia.ask(query2) || dbpedia.ask(query3); +// } // System.out.println(isCity + " " + lgdURI); - if(isCity) { + if(isInClass) { positives.add(lgdURI.toString()); System.out.println("+\""+lgdURI+"\""); } else { @@ -121,9 +122,9 @@ celoe.getConfigurator().setUseDoubleDatatypes(false); celoe.getConfigurator().setUseNegation(false); celoe.getConfigurator().setUseHasValueConstructor(true); - celoe.getConfigurator().setValueFrequencyThreshold(10); - celoe.getConfigurator().setMaxExecutionTimeInSeconds(1000); - celoe.getConfigurator().setNoisePercentage(0.1); + celoe.getConfigurator().setValueFrequencyThreshold(3); + celoe.getConfigurator().setMaxExecutionTimeInSeconds(100); + celoe.getConfigurator().setNoisePercentage(0.2); celoe.init(); // debugging This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |