@Override
  protected SemanticElementRelationship buildMessageModelObject(ClassDef classDef, RawRoot root) {

    SemanticElementRelationship msgElemRel = new SemanticElementRelationship();
    msgElemRel.setName(BuilderUtil.getNameAttribVal(classDef));
    msgElemRel.setDescription(BuilderUtil.getDescriptionAttribVal(classDef));
    msgElemRel.setRule(BuilderUtil.getRuleAttribVal(classDef));
    msgElemRel.setRuleExpressionLanguage(BuilderUtil.getRuleExprAttribVal(classDef));
    msgElemRel.setSourceIsInstance(BuilderUtil.getBooleanAttribVal(classDef, s_srcIsAttrib));
    msgElemRel.setTargetIsInstance(BuilderUtil.getBooleanAttribVal(classDef, s_targetIsAttrib));

    try {
      msgElemRel.setMinOccurs(BuilderUtil.getIntegerAttribVal(classDef, s_minAttrib));
    } catch (NumberFormatException ex) {
      String value = BuilderUtil.getAttribVal(classDef, s_minAttrib);
      Mdmi.INSTANCE
          .logger()
          .loge(
              ex,
              SemanticElementRelationshipBuilder.class.getName()
                  + ": Unable to parse '"
                  + s_minAttrib
                  + "' '"
                  + value
                  + "' as integer.");
    }

    try {
      msgElemRel.setMaxOccurs(BuilderUtil.getIntegerAttribVal(classDef, s_maxAttrib));
    } catch (NumberFormatException ex) {
      String value = BuilderUtil.getAttribVal(classDef, s_maxAttrib);
      Mdmi.INSTANCE
          .logger()
          .loge(
              ex,
              SemanticElementRelationshipBuilder.class.getName()
                  + ": Unable to parse '"
                  + s_maxAttrib
                  + "' '"
                  + value
                  + "' as integer.");
    }

    return msgElemRel;
  }