code: def _process_trait_mappings(self, raw, limit=None):
          
          if self.test_mode:
              graph = self.testgraph
          else:
              graph = self.graph
          line_counter = 0
          model = Model(graph)
  
          with open(raw, 'r') as csvfile:
              filereader = csv.reader(csvfile, delimiter=',', quotechar='\"')
              next(filereader, None)  # skip header line
              for row in filereader:
                  line_counter += 1
                  # need to skip the last line
                  if len(row) < 8:
                      LOG.info("skipping line %d: %s", line_counter, '\t'.join(row))
                      continue
                  (vto_id, pto_id, cmo_id, ato_column, species, trait_class,
                   trait_type, qtl_count) = row
  
                  ato_id = re.sub(
                      r'ATO #', 'AQTLTrait:', re.sub(
                          r'\].*', '', re.sub(r'\[', '', ato_column)))
                  ato_id = ato_id.strip()
  
                  ato_label = re.sub(r'.*\]\s*', '', ato_column)
  
                  model.addClassToGraph(ato_id, ato_label.strip())
  
                  if re.match(r'VT:.*', vto_id):
                      model.addClassToGraph(vto_id, None)
                      model.addEquivalentClass(ato_id, vto_id)
                  if re.match(r'LPT:.*', pto_id):
                      model.addClassToGraph(pto_id, None)
                      model.addXref(ato_id, pto_id)
                  if re.match(r'CMO:.*', cmo_id):
                      model.addClassToGraph(cmo_id, None)
                      model.addXref(ato_id, cmo_id)
  
          LOG.info("Done with trait mappings")
          return
docs: This method mapps traits from/to ...
  
          Triples created:
  
          :param limit:
          :return: