/*
   * (non-Javadoc)
   *
   * @see ru.iimm.ontology.OWL2UPOConverter.SubAxiom#getNewTitle()
   */
  @Override
  protected String generateTitle() {
    LOGGER.info("=== Generate title for SubAxiom:\n" + this.getSubAxOWL());
    String namedTitle = "";

    /* В название добавляем имена классов субавксиомы */
    for (OWLClass cls : this.getClsList()) {
      namedTitle += cls.getIRI().getFragment() + ConstantsOntConverter.UPO_TITLE_DELIMITER;
    }

    /* Формируем карту: свойство --- массив субаксиом [] */
    HashMap<IRI, ArrayList<SubAxiom>> map = this.getPropSubaxMap(this.getPrpFromAxList());

    /* Из карты формируем подзаголовки - для сложных субаксиом */
    for (IRI propIRI : map.keySet()) {
      for (SubAxiom subax : map.get(propIRI))
        // namedTitle += subax.getTitle()
        namedTitle +=
            propIRI.getFragment()
                + ConstantsOntConverter.UPO_PROP_VAL_DELIMITER
                + subax.getTitle()
                + ConstantsOntConverter.UPO_TITLE_DELIMITER;
    }

    /* Добавляем фрагмент имени от типизированных свойств */
    namedTitle = namedTitle + this.getDatatypePropNameFragment(this.getDtpPrpList());

    /* Отрезаем лишний делимитер (-) из конца аксиомы */
    namedTitle =
        namedTitle.length() > 0
            ? namedTitle.substring(
                0, namedTitle.lastIndexOf(ConstantsOntConverter.UPO_TITLE_DELIMITER))
            : namedTitle;

    /* Обрамляем скобками субаксиому */
    // namedTitle = namedTitle.length()>0 ? "[" + namedTitle + "]" : null;
    namedTitle = namedTitle.length() > 0 ? UPOont.getSBrackedString(namedTitle) : null;

    return namedTitle;
  }