docs: def bulk_load(self, **kwargs):
          """ Uploads data to the Blazegraph Triplestore that is stored in files
              that are in a local directory
  
              kwargs:
                  file_directory: a string path to the file directory
                  file_extensions: a list of file extensions to filter
                          example ['xml', 'rdf']. If none include all files
                  include_subfolders: as implied
                  namespace: the Blazegraph namespace to load the data
                  graph: uri of the graph to load the data. Default is None
                  create_namespace: False(default) or True will create the
                          namespace if it does not exist
          """
          namespace = kwargs.get('namespace', self.namespace)
          graph = kwargs.get('graph', self.graph)
          if kwargs.get('reset') == True:
              self.reset_namespace()
          file_directory = kwargs.get('file_directory', self.local_directory)
          file_extensions = kwargs.get('file_extensions', self.rdf_formats)
          root_dir = kwargs.get('root_dir', self.local_directory)
          file_list = list_files(file_directory,
                                 file_extensions,
                                 kwargs.get('include_subfolders', True),
                                 include_root=kwargs.get('include_root', False),
                                 root_dir=root_dir)
          path_parts = [' ']
          if self.container_dir:
              path_parts.append(self.container_dir)
          file_or_dirs = ",".join([os.path.join(os.path.join(*path_parts),file[1])
                                   for file in file_list]).strip()
          file_or_dirs = "/alliance_data"
          _params = BULK_LOADER_PARAMS.copy()
          params = {
                      'namespace': kwargs.get('namespace', self.namespace),
                      'file_or_dirs': file_or_dirs,
                   }
  
          _params.update(params)
          time_start = datetime.datetime.now()
  
          log.info(" starting load of '%s' files into namespace '%s'",
                   len(file_list),
                   params['namespace'])
          new_params = {key: json.dumps(value) \
                        for key, value in _params.items() \
                        if not isinstance(value, str)}
          new_params.update({key: value \
                             for key, value in _params.items() \
                             if isinstance(value, str)})
          data = BULK_LOADER_XML.format(**new_params)
          log.debug(data)
          url = os.path.join(self.url, 'dataloader')
          result = requests.post(url=url,
                                 headers={"Content-Type": 'application/xml'},
                                 data=data)
          failed_list = list_files(file_directory,
                                   ['fail'],
                                   kwargs.get('include_subfolders', True),
                                   include_root=kwargs.get('include_root', False),
                                   root_dir=root_dir)
          failed_list = [file for file in failed_list \
                         if file[0].split(".")[-2] in file_extensions]
          good_list = list_files(file_directory,
                                 ['good'],
                                 kwargs.get('include_subfolders', True),
                                 include_root=kwargs.get('include_root', False),
                                 root_dir=root_dir)
          log.info(" bulk_load results: %s\nThe following files successfully loaded: \n\t%s",
                   result.text,
                   "\n\t".join([os.path.splitext(file[1])[0] \
                                for file in good_list]))
          if failed_list:
              log.warning("The following files failed to load:\n\t%s",
                       "\n\t".join([file[1] for file in failed_list]))
              log.info(" Attempting load via alt method ***")
              for file in failed_list:
                  os.rename(os.path.join(root_dir, file[1]),
                            os.path.join(root_dir, os.path.splitext(file[1])[0]))
                  self.load_local_file(os.path.splitext(file[1])[0],
                                       namespace,
                                       graph)
          # restore file names
          files = list_files(file_directory,
                             ['good','fail'],
                             kwargs.get('include_subfolders', True),
                             include_root=kwargs.get('include_root', False),
                             root_dir=root_dir)
          [os.rename(os.path.join(root_dir, file[1]),
                     os.path.join(root_dir, os.path.splitext(file[1])[0])) \
           for file in files]