public void validate(Property terminologyProperty) {
      if (this.type != null && !this.type.isEmpty()) {
         if (!this.type.equalsIgnoreCase(terminologyProperty.getType())) {
            logger.warn("Value type (" + this.type
                  + ") does not match the one given in the terminology("
                  + terminologyProperty.getType()
                  + ")! To guarantee interoperability please ckeck. However, kept provided type.");
         }
      } else {
         try {
            checkDatatype(this.content, terminologyProperty.getType());
            this.setType(terminologyProperty.getType());
            logger.info("Added type information to value.");
         } catch (Exception e) {
            logger
                  .warn("Value is not compatible with the type information the terminology suggests ("
                        + terminologyProperty.getType()
                        + "). Did not change anything, but please check");
         }
      }
      if (this.unit != null && !this.unit.isEmpty()) {
         if (!this.unit.equalsIgnoreCase(terminologyProperty.getUnit(0))) {
            logger.warn("Value unit (" + this.unit
                  + ") does not match the one given in the terminology("
                  + terminologyProperty.getUnit()
                  + ")! To guarantee interoperability please ckeck. However, kept provided unit.");
         }
      } else {
         if (terminologyProperty.getUnit() != null && !terminologyProperty.getUnit(0).isEmpty()) {
            this.setUnit(terminologyProperty.getUnit(0));
            logger.info("Added unit " + terminologyProperty.getUnit() + " information to value.");
         }
      }
   }