docs: def parse(self, limit=None):
          """
          MPD data is delivered in four separate csv files and one xml file,
          which we process iteratively and write out as
          one large graph.
  
          :param limit:
          :return:
          """
          if limit is not None:
              LOG.info("Only parsing first %s rows fo each file", str(limit))
  
          LOG.info("Parsing files...")
  
          self._process_straininfo(limit)
          # the following will provide us the hash-lookups
          # These must be processed in a specific order
  
          # mapping between assays and ontology terms
          self._process_ontology_mappings_file(limit)
          # this is the metadata about the measurements
          self._process_measurements_file(limit)
          # get all the measurements per strain
          self._process_strainmeans_file(limit)
  
          # The following will use the hash populated above
          # to lookup the ids when filling in the graph
          self._fill_provenance_graph(limit)
  
          LOG.info("Finished parsing.")
          return