docs: def _process_feature_dbxref(self, limit):
          """
          This is the mapping between the flybase features and external
          repositories. Generally we want to leave the flybase feature id
          as the primary identifier. But we need to make the equivalences/sameAs.
  
          :param limit:
          :return:
  
          """
          if self.test_mode:
              graph = self.testgraph
          else:
              graph = self.graph
          model = Model(graph)
          line_counter = 0
          raw = '/'.join((self.rawdir, 'feature_dbxref'))
          LOG.info("processing feature_dbxref mappings")
          with open(raw, 'r') as f:
              f.readline()  # read the header row; skip
              filereader = csv.reader(f, delimiter='\t', quotechar='\"')
              for line in filereader:
  
                  (feature_dbxref_id, feature_id, dbxref_id, is_current) = line
  
                  # 431890	3091292	596211	t
                  # 2	9	55044	t
                  # 3	9	55045	t
                  # 437595	4551668	277309	t
                  # 437596	4551662	277307	t
  
                  if is_current == 'f':
                      # not sure what to do with it?
                      continue
  
                  feature_key = feature_id
  
                  if self.test_mode and int(feature_key) not in \
                          self.test_keys['gene'] + self.test_keys['allele']:
                      continue
  
                  if feature_key not in self.idhash['feature']:
                      # some features may not be found in the hash
                      # if they are "analysis features"
                      # LOG.debug("Feature %s not found in hash", feature_key)
                      continue
                  feature_id = self.idhash['feature'][feature_key]
                  dbxref_key = dbxref_id
                  dbxrefs = self.dbxrefs.get(dbxref_key)
  
                  if dbxrefs is not None:
                      for d in dbxrefs:
                          # need to filter based on db ?
                          # TODO make other species' identifiers primary??
                          # instead of flybase?
                          did = dbxrefs.get(d)
                          if did.endswith('&class=protein'):
                              did = did[0:len(dbxrefs)-15]
                          # don't make something sameAs itself
                          if did == feature_id:
                              continue
                          dlabel = self.label_hash.get(did)
                          if re.search(r'FB(gn|og)', feature_id):
                              # only want to add equivalences for fly things
                              if not re.match(r'OMIM', did):
                                  # these are only omim diseases, not genes;
                                  # we shouldn't be adding these here anyway
                                  # model.addClassToGraph(did, dlabel)
                                  # model.addXref(feature_id, did)
                                  pass  # True  # that
                          elif did is not None and dlabel is not None \
                                  and feature_id is not None:
                              model.addIndividualToGraph(did, dlabel)
                              model.addXref(feature_id, did)
                          line_counter += 1
  
                  if not self.test_mode \
                          and limit is not None and line_counter > limit:
                      break
  
                  # FIXME - some flybase genes are xrefed to OMIM diseases!!!!!!
                  # for example,
                  # FBog0000375495 xref to omim 601181 (gene)
                  # and 608033 (phenotype)
  
          return