code: def get_statements(self, reprocess=False):
          
          if self._statements is None or reprocess:
              # Handle the case that there is no content.
              if self.content is None:
                  self._statements = []
                  return []
  
              # Map to the different processors.
              if self.reader == ReachReader.name:
                  if self.format == formats.JSON:
                      # Process the reach json into statements.
                      json_str = json.dumps(self.content)
                      processor = reach.process_json_str(json_str)
                  else:
                      raise ReadingError("Incorrect format for Reach output: %s."
                                         % self.format)
              elif self.reader == SparserReader.name:
                  if self.format == formats.JSON:
                      # Process the sparser content into statements
                      processor = sparser.process_json_dict(self.content)
                      if processor is not None:
                          processor.set_statements_pmid(None)
                  else:
                      raise ReadingError("Sparser should only ever be JSON, not "
                                         "%s." % self.format)
              elif self.reader == TripsReader.name:
                  processor = trips.process_xml(self.content)
              else:
                  raise ReadingError("Unknown reader: %s." % self.reader)
  
              # Get the statements from the processor, if it was resolved.
              if processor is None:
                  logger.error("Production of statements from %s failed for %s."
                               % (self.reader, self.content_id))
                  stmts = []
              else:
                  stmts = processor.statements
              self._statements = stmts[:]
          else:
              stmts = self._statements[:]
          return stmts
docs: General method to create statements.