public String getMetricAdvice(int sessionId) {
   String metric = "";
   logger.info("" + sessionId);
   LimesUser lu = UserManager.getInstance().getUser(sessionId);
   System.out.println(lu);
   KBInfo sourceInfo = createKBInfo(lu.getSourceMap());
   KBInfo targetInfo = createKBInfo(lu.getTargetMap());
   if (sourceInfo.prefixes == null) sourceInfo.prefixes = new HashMap<String, String>();
   if (targetInfo.prefixes == null) targetInfo.prefixes = new HashMap<String, String>();
   //		sourceInfo.prefixes.put("rdf", PrefixHelper.getURI("rdf"));
   //		sourceInfo.prefixes.put("dbp", PrefixHelper.getURI("dbp"));
   //		sourceInfo.prefixes.put("rdfs", PrefixHelper.getURI("rdfs"));
   //		targetInfo.prefixes.put("rdf", PrefixHelper.getURI("rdf"));
   //		targetInfo.prefixes.put("dbp", PrefixHelper.getURI("dbp"));
   //		targetInfo.prefixes.put("rdfs", PrefixHelper.getURI("rdfs"));
   logger.info("getMetricAdvice(): Getting caches...");
   HybridCache sC = HybridCache.getData(sourceInfo);
   HybridCache tC = HybridCache.getData(targetInfo);
   logger.info("getMetricAdvice(): Start SelfConfig...");
   MeshBasedSelfConfigurator mbsc = new MeshBasedSelfConfigurator(sC, tC, 0.6, 0.5);
   List<SimpleClassifier> classifierList = mbsc.getBestInitialClassifiers();
   if (classifierList.size() > 0) {
     classifierList = mbsc.learnClassifer(classifierList);
   }
   ComplexClassifier compC = mbsc.getZoomedHillTop(5, 5, classifierList);
   metric = this.generateMetric(compC.classifiers, "", sourceInfo, targetInfo);
   lu.setNoUsageTime(0);
   logger.info("getMetricAdvice(): metric=\n" + metric);
   return metric;
 }
  public void getMapping(int mailAddress) {

    LimesUser le = UserManager.getInstance().getUser(mailAddress);
    le.addPropertyChangeListener(UserManager.getInstance());

    HashMap<String, Object> source;

    source = le.getSourceMap();

    HashMap<String, Object> target = le.getTargetMap();
    HashMap<String, Object> metric = le.getMetricMap();

    KBInfo sourceInfo = createKBInfo(source);
    KBInfo targetInfo = createKBInfo(target);
    // get metric

    String metricExpr = (String) metric.get("metric");
    Double accThreshold = (Double) metric.get("accthreshold");
    Double verThreshold = (Double) metric.get("verthreshold");
    le.calculateMapping(sourceInfo, targetInfo, metricExpr, accThreshold, verThreshold);
    le.setNoUsageTime(0);
  }
 public String fetchTargetData(int sessionId) {
   LimesUser lu = UserManager.getInstance().getUser(sessionId);
   return JsonParser.parseJavaToJSON(lu.getTargetMap());
 }