docs: def _process_dbxref(self):
          """
          We bring in the dbxref identifiers and store them in a hashmap for
          lookup in other functions.
          Note that some dbxrefs aren't mapped to identifiers.
          For example, 5004018 is mapped to a string,
              "endosome & imaginal disc epithelial cell | somatic clone..."
          In those cases, there just isn't a dbxref that's used
          when referencing with a cvterm; it'll just use the internal key.
  
          :return:
  
          """
  
          raw = '/'.join((self.rawdir, 'dbxref'))
          LOG.info("processing dbxrefs")
          line_counter = 0
  
          with open(raw, 'r') as f:
              filereader = csv.reader(f, delimiter='\t', quotechar='\"')
              f.readline()  # read the header row; skip
              for line in filereader:
                  (dbxref_id, db_id, accession, version, description, url) = line
                  # dbxref_id	db_id	accession	version	description	url
                  # 1	2	SO:0000000	""
  
                  accession = accession.strip()
                  db_id = db_id.strip()
                  if accession != '' and db_id in self.localtt:
                      # scrub some identifiers here
                      mch = re.match(
                          r'(doi|SO|GO|FBcv|FBbt_root|FBdv|FBgn|FBdv_root|FlyBase|FBbt):',
                          accession)
                      if mch:
                          accession = re.sub(mch.group(1)+r'\:', '', accession)
                      elif re.match(
                              r'(FlyBase miscellaneous CV|cell_lineprop|relationship type|FBgn$)',
                              accession):
                          continue
                      elif re.match(r'\:', accession):  # starts with a colon
                          accession = re.sub(r'\:', '', accession)
                      elif re.search(r'\s', accession):
                          # skip anything with a space
                          # LOG.debug(
                          #   'dbxref %s accession has a space: %s', dbxref_id, accession)
                          continue
  
                      if re.match(r'http', accession):
                          did = accession
                      else:
                          prefix = self.localtt[db_id]
                          did = ':'.join((prefix, accession))
                          if re.search(r'\:', accession) and prefix != 'DOI':
                              LOG.warning('id %s may be malformed; skipping', did)
  
                      self.dbxrefs[dbxref_id] = {db_id: did}
  
                  elif url != '':
                      self.dbxrefs[dbxref_id] = {db_id: url.strip()}
                  else:
                      continue
  
                  # the following are some special cases that we scrub
                  if int(db_id) == 2 and accession.strip() == 'transgenic_transposon':
                      # transgenic_transposable_element
                      self.dbxrefs[dbxref_id] = {
                          db_id: self.globaltt['transgenic_transposable_element']}
  
                  line_counter += 1
  
          return