docs: def _get_curie_and_type_from_id(variant_id):
          """
          Given a variant id, our best guess at its curie and type (snp, haplotype, etc)
          'None' will be used for both curie and type  for IDs that we can't process
          :param variant_id:
          :return:
          """
          curie = None
          variant_type = None
  
          # remove space before hyphens
          variant_id = re.sub(r' -', '-', variant_id).strip()
          if re.search(r' x ', variant_id) or re.search(r',', variant_id):
              # TODO deal with rs1234 x rs234... (haplotypes?)
              LOG.warning("Cannot parse variant groups of this format: %s", variant_id)
          elif re.search(r';', variant_id):
              curie = ':haplotype_' + Source.hash_id(variant_id)   # deliberate 404
              variant_type = "haplotype"
          elif variant_id[:2] == 'rs':
              curie = 'dbSNP:' + variant_id.split('-')[0]
              # curie = re.sub(r'-.*$', '', curie).strip()
              variant_type = "snp"
              # remove the alteration
          elif variant_id[:3] == 'kgp':
              # http://www.1000genomes.org/faq/what-are-kgp-identifiers
              curie = ':kgp-' + variant_id   # deliberate 404
              variant_type = "snp"
          elif variant_id[:3] == 'chr':
              # like: chr10:106180121-G
              #
              variant_id = re.sub(r'-?', '-N', variant_id)
              variant_id = re.sub(r' ', '', variant_id)
              curie = ':gwas-' + re.sub(r':', '-', variant_id)   # deliberate 404
              variant_type = "snp"
          elif variant_id.strip() == '':
              pass
          else:
              LOG.warning("There's a snp id i can't manage: %s", variant_id)
  
          return curie, variant_type