code: private Entity calculateNGromOTAnnotations(Entity inputEntity, Entity ontologyTermEntity) {
      OntologyTermHitEntity mapEntity =
          new OntologyTermHitEntity(ontologyTermEntity, ontologyTermHitMetaData);
      for (Entity annotationEntity :
          ontologyTermEntity.getEntities(OntologyTermMetadata.ONTOLOGY_TERM_DYNAMIC_ANNOTATION)) {
        String annotationName =
            annotationEntity.getString(OntologyTermDynamicAnnotationMetadata.NAME);
        String annotationValue =
            annotationEntity.getString(OntologyTermDynamicAnnotationMetadata.VALUE);
        for (String attributeName : inputEntity.getAttributeNames()) {
          if (StringUtils.isNotEmpty(inputEntity.getString(attributeName))
              && StringUtils.equalsIgnoreCase(attributeName, annotationName)
              && StringUtils.equalsIgnoreCase(
                  inputEntity.getString(attributeName), annotationValue)) {
            mapEntity.set(SCORE, 100d);
            mapEntity.set(COMBINED_SCORE, 100d);
            return mapEntity;
          }
        }
      }
      return mapEntity;
    }
docs: A helper function to check if the ontology term (OT) contains the ontology annotations provided
  in input. If the OT has the same annotation, the OT will be considered as a good match and the
  similarity scores 100 are allocated to the OT