예제 #1
0
  public <E extends Entity> void save(E entity) {
    sessionFactory.getCurrentSession().saveOrUpdate(entity);

    for (AnnotationMetadata<DefaultHolder> defaultHolder :
        ContextUtil.getMRS().getAnnotationMetadata(entity.getEntityType(), DefaultHolder.class)) {
      processDefaultHolder(entity, defaultHolder);
    }
  }
  @Override
  public void start() {
    logger.info(
        "Started learning of "
            + axiomType.getName()
            + " axioms for "
            + OWLAPIUtils.getPrintName(entityToDescribe.getEntityType())
            + " "
            + entityToDescribe.toStringID()
            + "...");
    startTime = System.currentTimeMillis();

    currentlyBestAxioms = new TreeSet<EvaluatedAxiom<T>>();

    popularity = reasoner.getPopularity(entityToDescribe);
    if (popularity == 0) {
      logger.warn(
          "Cannot make "
              + axiomType.getName()
              + " axiom suggestions for empty "
              + OWLAPIUtils.getPrintName(entityToDescribe.getEntityType())
              + " "
              + entityToDescribe.toStringID());
      return;
    }

    if (returnOnlyNewAxioms) {
      getExistingAxioms();
    }

    if (useSampling) {
      generateSample();
    } else {
      qef = ksQef;
      reasoner = ksReasoner;
    }

    progressMonitor.learningStarted(axiomType);
    try {
      learnAxioms();
    } catch (Exception e) {
      progressMonitor.learningFailed(axiomType);
      throw e;
    } finally {
      progressMonitor.learningStopped(axiomType);
    }

    logger.info(
        "...finished learning of "
            + axiomType.getName()
            + " axioms for "
            + OWLAPIUtils.getPrintName(entityToDescribe.getEntityType())
            + " "
            + entityToDescribe.toStringID()
            + " in {}ms.",
        (System.currentTimeMillis() - startTime));
    if (this instanceof ObjectPropertyCharacteristicsAxiomLearner) {
      logger.info("Suggested axiom: " + currentlyBestAxioms.first());
    } else {
      logger.info("Found " + currentlyBestAxioms.size() + " axiom candidates.");
      if (!currentlyBestAxioms.isEmpty()) {
        logger.info("Best axiom candidate is " + currentlyBestAxioms.first());
      }
    }
  }