docs: def get_dataset_schema(self, dataset_name, owner=None):
          """ Given a dataset name, it returns a BedParser coherent with the schema of it
  
          :param dataset_name: a dataset name on the repository
          :param owner: (optional) who owns the dataset. If it is not specified, the current user
                 is used. For public dataset use 'public'.
          :return: a BedParser
          """
  
          if isinstance(owner, str):
              owner = owner.lower()
              dataset_name = owner + "." + dataset_name
  
          url = self.address + "/datasets/" + dataset_name+"/schema"
          header = self.__check_authentication()
          response = requests.get(url, headers=header)
          if response.status_code != 200:
              raise ValueError("Code {}: {}".format(response.status_code, response.json().get("error")))
  
          response = response.json()
          name = response.get("name")
          schemaType = response.get("type")
          coordinates_system = response.get("coordinate_system")
          fields = response.get("fields")
  
          i = 0
          chrPos, startPos, stopPos, strandPos = None, None, None, None
          otherPos = []
          if schemaType == GTF:
              chrPos = 0  # seqname
              startPos = 3  # start
              stopPos = 4  # end
              strandPos = 6  # strand
              otherPos = [(1, 'source', 'string'), (2, 'feature', 'string'),
                          (5, 'score', 'float'), (7, 'frame', 'string')]
  
              for field in fields:
                  fieldName = field.get("name")
                  fieldType = field.get("type").lower()
                  if fieldName.lower() not in {'seqname', 'start', 'end', 'strand',
                                       'source', 'feature', 'score', 'frame'}:
                      otherPos.append((i, fieldName, fieldType))
                  i += 1
  
          else:
              for field in fields:
                  fieldName = field.get("name")
                  fieldType = field.get("type").lower()
  
                  if fieldName.lower() in chr_aliases and chrPos is None:
                      chrPos = i
                  elif fieldName.lower() in start_aliases and startPos is None:
                      startPos = i
                  elif fieldName.lower() in stop_aliases and stopPos is None:
                      stopPos = i
                  elif fieldName.lower() in strand_aliases and strandPos is None:
                      strandPos = i
                  else:  # other positions
                      otherPos.append((i, fieldName, fieldType))
                  i += 1
          if len(otherPos) == 0:
              otherPos = None
  
          return RegionParser(chrPos=chrPos,
                              startPos=startPos,
                              stopPos=stopPos,
                              strandPos=strandPos,
                              otherPos=otherPos,
                              schema_format=schemaType,
                              coordinate_system=coordinates_system,
                              delimiter="\t", parser_name=name)