From: <dc...@us...> - 2013-07-16 05:25:44
|
Revision: 4020 http://sourceforge.net/p/dl-learner/code/4020 Author: dcherix Date: 2013-07-16 05:25:41 +0000 (Tue, 16 Jul 2013) Log Message: ----------- Added a simple possibility to configure via a webpage for sparqr Modified Paths: -------------- trunk/interfaces/src/main/java/org/dllearner/server/Rest.java trunk/interfaces/src/main/webapp/WEB-INF/web.xml Added Paths: ----------- trunk/interfaces/src/main/java/org/dllearner/server/ConfGeneratorServlet.java trunk/interfaces/src/main/resources/config.template Added: trunk/interfaces/src/main/java/org/dllearner/server/ConfGeneratorServlet.java =================================================================== --- trunk/interfaces/src/main/java/org/dllearner/server/ConfGeneratorServlet.java (rev 0) +++ trunk/interfaces/src/main/java/org/dllearner/server/ConfGeneratorServlet.java 2013-07-16 05:25:41 UTC (rev 4020) @@ -0,0 +1,221 @@ +/** + * + */ +package org.dllearner.server; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.URLDecoder; +import java.util.Collections; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; +import java.util.TreeMap; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang.exception.ExceptionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author didier + * + */ +public class ConfGeneratorServlet extends HttpServlet { + + private Logger logger = LoggerFactory.getLogger(ConfGeneratorServlet.class); + + private String template; + + public ConfGeneratorServlet() { + BufferedReader input = new BufferedReader(new InputStreamReader(ConfGeneratorServlet.class + .getClassLoader().getResourceAsStream("config.template"))); + StringBuilder builder = new StringBuilder(); + try { + while (input.ready()) { + builder.append(input.readLine()); + builder.append("\n"); + } + } catch (IOException e) { + logger.error("", ExceptionUtils.getRootCause(e)); + } finally { + try { + input.close(); + } catch (IOException e) { + logger.error("", ExceptionUtils.getRootCause(e)); + } + } + template = builder.toString(); + } + + /* + * (non-Javadoc) + * + * @see + * javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest + * , javax.servlet.http.HttpServletResponse) + */ + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, + IOException { + handle(req, resp); + } + + /* + * (non-Javadoc) + * + * @see + * javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest + * , javax.servlet.http.HttpServletResponse) + */ + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + handle(req, resp); + } + + /** + * @param req + * @param resp + */ + private void handle(HttpServletRequest req, HttpServletResponse resp) { + String tmp = template; + try { + String[] pos, neg = null; + if (!Rest.isSet("pos", req)) { + System.out.println("blub"); + req.getRequestDispatcher("/WEB-INF/sparqr.html").forward(req, resp); + return; + } else { + pos = URLDecoder.decode(req.getParameter("pos"), "UTF-8").split(","); + if (Rest.isSet("neg", req)) { + neg = URLDecoder.decode(req.getParameter("neg"), "UTF-8").split(","); + } + } + StringBuilder posStr = new StringBuilder(); + StringBuilder negStr = new StringBuilder(); + StringBuilder instances = new StringBuilder(); + + if (neg != null) { + tmp=tmp.replace("<LPTYPE>", "\"posNegStandard\""); + for (int i = 0; i < neg.length; i++) { + if (i > 0) { + negStr.append(",\n"); + instances.append(",\n"); + } + negStr.append("\""); + negStr.append(neg[i].replaceAll("\"|\n|\\s", "")); + negStr.append("\""); + instances.append("\""); + instances.append(neg[i].replaceAll("\"|\n|\\s", "")); + instances.append("\""); + } + } else { + tmp=tmp.replace("<LPTYPE>", "\"posOnlyLP\""); + tmp=tmp.replace("lp.negativeExamples = {\n<NEGATIVES>\n} ", ""); + } + + for (int i = 0; i < pos.length; i++) { + if (i > 0) { + posStr.append(",\n"); + } + if (instances.length() > 0) { + instances.append(",\n"); + } + posStr.append("\""); + posStr.append(pos[i].replaceAll("\"|\n|\\s", "")); + posStr.append("\""); + instances.append("\""); + instances.append(pos[i].replaceAll("\"|\n|\\s", "")); + instances.append("\""); + } + tmp=tmp.replace("<INSTANCES>", instances.toString()); + tmp=tmp.replace("<POSITIVES>", posStr.toString()); + tmp=tmp.replace("<NEGATIVES>", negStr.toString()); + Map<String, String[]> additionalParams = new HashMap<String, String[]>(); + additionalParams.put("conf", new String[]{tmp}); + System.out.println(tmp); + ModifiableWrappedRequest request = new ModifiableWrappedRequest(req, additionalParams); + request.getRequestDispatcher("/rest").forward(request, resp); + } catch (ServletException e) { + logger.error("", ExceptionUtils.getRootCause(e)); + try { + resp.sendError(500, ExceptionUtils.getRootCause(e).toString()); + } catch (IOException e1) { + logger.error("", ExceptionUtils.getRootCause(e1)); + } + } catch (IOException e) { + logger.error("", ExceptionUtils.getRootCause(e)); + try { + resp.sendError(500, ExceptionUtils.getRootCause(e).toString()); + } catch (IOException e1) { + logger.error("", ExceptionUtils.getRootCause(e1)); + } + } + } + + public class ModifiableWrappedRequest extends HttpServletRequestWrapper + { + private final Map<String, String[]> modifiableParameters; + private Map<String, String[]> allParameters = null; + + /** + * Create a new request wrapper that will merge additional parameters into + * the request object without prematurely reading parameters from the + * original request. + * + * @param request + * @param additionalParams + */ + public ModifiableWrappedRequest(final HttpServletRequest request, + final Map<String, String[]> additionalParams) + { + super(request); + modifiableParameters = new TreeMap<String, String[]>(); + modifiableParameters.putAll(additionalParams); + } + + @Override + public String getParameter(final String name) + { + String[] strings = getParameterMap().get(name); + if (strings != null) + { + return strings[0]; + } + return super.getParameter(name); + } + + @Override + public Map<String, String[]> getParameterMap() + { + if (allParameters == null) + { + allParameters = new TreeMap<String, String[]>(); + allParameters.putAll(super.getParameterMap()); + allParameters.putAll(modifiableParameters); + } + //Return an unmodifiable collection because we need to uphold the interface contract. + return Collections.unmodifiableMap(allParameters); + } + + @Override + public Enumeration<String> getParameterNames() + { + return Collections.enumeration(getParameterMap().keySet()); + } + + @Override + public String[] getParameterValues(final String name) + { + return getParameterMap().get(name); + } + } + +} Property changes on: trunk/interfaces/src/main/java/org/dllearner/server/ConfGeneratorServlet.java ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Modified: trunk/interfaces/src/main/java/org/dllearner/server/Rest.java =================================================================== --- trunk/interfaces/src/main/java/org/dllearner/server/Rest.java 2013-07-15 16:32:53 UTC (rev 4019) +++ trunk/interfaces/src/main/java/org/dllearner/server/Rest.java 2013-07-16 05:25:41 UTC (rev 4020) @@ -23,6 +23,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; +import java.net.URLDecoder; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; @@ -58,10 +59,10 @@ int limit = 5; if (!isSet("conf", httpServletRequest)) { // throw new IllegalArgumentException("Missing parameter: conf is required. "); - httpServletResponse.sendError(400, "Missing parameter: conf is required. "); + httpServletRequest.getRequestDispatcher("/WEB-INF/sparqr.html").forward(httpServletRequest, httpServletResponse); return; } else { - conf = httpServletRequest.getParameter("conf"); + conf = URLDecoder.decode(httpServletRequest.getParameter("conf")); if (isSet("limit", httpServletRequest)) { limit = Integer.parseInt(httpServletRequest.getParameter("limit")); } Added: trunk/interfaces/src/main/resources/config.template =================================================================== --- trunk/interfaces/src/main/resources/config.template (rev 0) +++ trunk/interfaces/src/main/resources/config.template 2013-07-16 05:25:41 UTC (rev 4020) @@ -0,0 +1,47 @@ +sparql.type = "sparqls" +sparql.endpointURL = "http://dbpedia.org/sparql" +sparql.defaultGraphURI = "http://dbpedia.org" +sparql.recursionDepth = 2 +sparql.ontologySchemaUrls = {"http://downloads.dbpedia.org/3.6/dbpedia_3.6.owl" } +sparql.aboxfilter = "FILTER ( +!isLiteral(?o) && +!regex(str(?p), 'http://dbpedia.org/property/website') && +!regex(str(?p), 'http://dbpedia.org/property/wikipage') && +!regex(str(?p), 'http://dbpedia.org/property/wikiPageUsesTemplate') && +!regex(str(?p), 'http://dbpedia.org/property/reference') && +!regex(str(?p), 'http://www.w3.org/2004/02/skos/core') && +!regex(str(?p), 'http://www.w3.org/2002/07/owl#sameAs') && +!regex(str(?p), 'http://xmlns.com/foaf/0.1/') && +!regex(str(?p), 'http://dbpedia.org/property/wordnet_type') && +!regex(str(?p), 'http://dbpedia.org/property/wikilink') && +regex(str(?o), '^http://dbpedia.org/resource/') +) " +sparql.tboxfilter = "FILTER ( !regex(str(?class), '^http://upload.wikimedia.org/wikipedia') && +!regex(str(?class), '^http://dbpedia.org/resource/Template') && +!regex(str(?class), '^http://dbpedia.org/resource/Category:') && +!regex(str(?class), '^http://umbel.org/umbel/') && +!regex(str(?class), '^http://dbpedia.org/class/yago') + ) . " +sparql.instances = { +<INSTANCES> + } +reasoner.type = "fast instance checker" +reasoner.sources = {sparql} +lp.type = <LPTYPE> +lp.positiveExamples = { +<POSITIVES> +} +lp.negativeExamples = { +<NEGATIVES> +} +lp.reasoner = reasoner +op.type = "rho" +op.useNegation = false +op.useAllConstructor = false +op.useCardinalityRestrictions = false +op.useHasValueConstructor = true +op.reasoner = reasoner +alg.type = "ocel" +alg.reasoner = reasoner +alg.maxExecutionTimeInSeconds = 30 +alg.noisePercentage = 10.0 \ No newline at end of file Modified: trunk/interfaces/src/main/webapp/WEB-INF/web.xml =================================================================== --- trunk/interfaces/src/main/webapp/WEB-INF/web.xml 2013-07-15 16:32:53 UTC (rev 4019) +++ trunk/interfaces/src/main/webapp/WEB-INF/web.xml 2013-07-16 05:25:41 UTC (rev 4020) @@ -14,8 +14,18 @@ <servlet-name>rest</servlet-name> <url-pattern>/rest</url-pattern> </servlet-mapping> + + <servlet> + <servlet-name>conf</servlet-name> + <servlet-class>org.dllearner.server.ConfGeneratorServlet</servlet-class> + </servlet> + <servlet-mapping> + <servlet-name>conf</servlet-name> + <url-pattern>/conf</url-pattern> + </servlet-mapping> + <servlet> <servlet-name>NKEGeizhals</servlet-name> <servlet-class>org.dllearner.server.NKEGeizhals</servlet-class> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |