code: def _RDFClass(cls, table):
      
      rdf_cls_name = "OsqueryTable{}".format(hash(table.query))
      try:
        return cls._rdf_cls_cache[rdf_cls_name]
      except KeyError:
        pass
  
      rdf_cls = compatibility.MakeType(rdf_cls_name,
                                       (rdf_structs.RDFProtoStruct,), {})
  
      rdf_cls.AddDescriptor(
          rdf_structs.ProtoEmbedded(
              name="metadata", field_number=1, nested=ExportedMetadata))
  
      rdf_cls.AddDescriptor(
          rdf_structs.ProtoString(name="__query__", field_number=2))
  
      for idx, column in enumerate(table.header.columns):
        # It is possible that RDF column is named "metadata". To avoid name clash
        # we must rename it to `__metadata__`.
        if column.name == "metadata":
          name = "__metadata__"
        else:
          name = column.name
  
        descriptor = rdf_structs.ProtoString(name=name, field_number=idx + 3)
        rdf_cls.AddDescriptor(descriptor)
  
      cls._rdf_cls_cache[rdf_cls_name] = rdf_cls
      return rdf_cls
docs: Creates a dynamic RDF proto struct class for given osquery table.
  
      The fields of the proto will correspond to the columns of the table.
  
      Args:
        table: An osquery table for which the class is about to be generated.
  
      Returns:
        A class object corresponding to the given table.