/**
   * Связывает концепт-субаксиому с другими концептами в ОПП.
   *
   * @param sbAx суаксиома
   * @param sbAxInd экземпляр субаксиомы
   */
  private void bindingConceptOfComplexSubAxiomWithOther(
      OWLNamedIndividual sbAxInd, UserPresenOnt upo) {
    /*
     * связать концепт субаксиомы с объектными и типизированными свойствами
     * классов субаксиомы разобраться с объектными свойсвами внутри аксиомы
     * ! Решил убрать привязку объектных свойств классов в субаксиоме к ней
     * т.к. ранее убрал привязку к классам (простым субаксиомам) по
     * домену/радиусу свойства
     */

    LOGGER.info("   ===bindingConceptOfComplexSubAxiomWithOther================");
    LOGGER.info("   Subaxiom:<" + this.getTitle() + ">");
    /*
     * Убираем привязку объектных свойств
     * LOGGER.info("   =Binding sbAx with obj properties:"); for
     * (Iterator<PairOfIRI> it = sbAx.getIteratorOfObjectPropertyList();
     * it.hasNext();) { PairOfIRI pair = (PairOfIRI) it.next();
     * LOGGER.info("   ObjPrp:"+ pair.fIRI + " Val:" + pair.sIRI);
     * this.makeObjPrpOBetweenElements(sbAxInd.getIRI(), pair.fIRI,
     * pair.sIRI, false); }
     */
    LOGGER.info("   =Binding sbAx with dtp properties:");
    for (Iterator<PairOfIRI> it = this.getIteratorOfDataPropertyList(); it.hasNext(); ) {
      PairOfIRI pair = (PairOfIRI) it.next();
      LOGGER.info("   DtpPrp:" + pair.getFirst() + " Val:" + pair.getFirst());
      /*
       * Добавляем новый концеп-радиус т.к. старый (если существует)
       * связан с другим СКОС концептом, а договорились что у радиусов
       * будем генерить новый
       */
      OWLNamedIndividual newRange = upo.addDatatypeRangeToUPO(pair.getFirst(), pair.getFirst());
      upo.makeObjPrpOBetweenElements(sbAxInd.getIRI(), pair.getFirst(), newRange.getIRI(), false);
    }

    /* * Привязывем к субаксиоме ее именованные классы */
    for (ArrayList<IRI> prpAndCls : this.getBindedClassList()) {
      // Карта пар: свойство --> именованный класс (входящий в субаксиому
      // * и потому привязываемый к ней).
      IRI clsIndIRI = upo.getConceptOfSubAxiomFromUPObyIRIinHiddenLabel(prpAndCls.get(1));
      IRI prpIRI = prpAndCls.get(0);
      upo.makeObjPrpOBetweenElements(sbAxInd.getIRI(), prpIRI, clsIndIRI, false);
    }

    /* Привязываем субаксиомы */
    LOGGER.info("   =Binding sbAx with other Subaxiom:");
    for (Iterator<PrpIRIandSubAxiom> it = this.getIteratorOfprpFromAxList(); it.hasNext(); ) {
      PrpIRIandSubAxiom pair = (PrpIRIandSubAxiom) it.next();
      LOGGER.info("   PRP:" + pair.propIRI + " SbAx:" + pair.subax.getTitle());
      OWLNamedIndividual newSbAx = pair.subax.addRelatedSubAxiom(sbAxInd, pair.propIRI, upo);
      /*-
      OWLNamedIndividual newSbAx = this.addSubAxiom(pair.subax);
      this.makeObjPrpOBetweenElements(sbAxInd.getIRI(), pair.propIRI, newSbAx.getIRI(), false);
      */
      LOGGER.info("	Subaxiom:" + newSbAx.toString());
    }
    LOGGER.info("   ===END-bindingConceptOfComplexSubAxiomWithOther================");
  }
 /**
  * Возвращает фрагмент названия субаксиомы из ее типизированных свойств и из диапазонов.
  *
  * @param propDomainPairList
  * @return
  */
 private String getDatatypePropNameFragment(ArrayList<PairOfIRI> propDomainPairList) {
   String fragment = "";
   for (PairOfIRI pairOfIRI : propDomainPairList) {
     // fragment = fragment + pairOfIRI.fIRI.getFragment()
     // +"{"+pairOfIRI.sIRI.getFragment()+"}" +
     // ConstantsOntConverter.UPO_TITLE_DELIMITER;
     fragment =
         fragment
             + pairOfIRI.getFirst().getFragment()
             + UPOont.getFBrackedString(pairOfIRI.getFirst().getFragment())
             + ConstantsOntConverter.UPO_TITLE_DELIMITER;
   }
   return fragment;
 }