docs: def convert_results(data, **kwargs):
      """ converts the results of a query to RdfDatatype instances
  
          args:
              data: a list of triples
      """
      if kwargs.get("multiprocessing", False):
          manager = SharedManager()
          manager.register("BaseRdfDataType", BaseRdfDataType)
          manager.register("Uri", Uri)
  
          data_l = len(data)
          group_size = data_l // pool_size
          if data_l % pool_size:
              group_size += 1
          split_data = [data[i:i + group_size]
                        for i in range(0, data_l, group_size)]
          output = manager.Queue()
          # output = manager.list()
          # output_data = POOL.map(convert_row, split_data)
          workers = [mp.Process(target=convert_batch, args=(item, output,))
                     for item in split_data]
          for worker in workers:
              # worker.Daemon = True
              worker.start()
          results = []
          while True:
              running = any(p.is_alive() for p in workers)
              while not output.empty():
                 results += output.get()
              if not running:
                  break
          print("Finished - workers not stoped")
          for worker in workers:
              worker.join()
          # pdb.set_trace()
          # return output
          for i in range(output.qsize()):
              results += output.get()
          return results
      else:
          return [{key:pyrdf(value) for key, value in row.items()}
                  for row in data]