def fields(self, drs: DRS) -> DRS: """ Given a DRS, it configures it to field view (default) :param drs: the DRS to configure :return: the same DRS in the fields mode """ drs.set_fields_mode() return drs
def schema_neighbors_of(self, i_drs: DRS) -> DRS: o_drs = DRS([], Operation(OP.NONE)) o_drs = o_drs.absorb_provenance(i_drs) if i_drs.mode == DRSMode.TABLE: i_drs.set_fields_mode() for h in i_drs: fields_table = self.drs_from_table_hit(h) i_drs = i_drs.absorb(fields_table) for h in i_drs: hits = self.__network.get_hits_from_table(h.source_name) hits_drs = DRS([x for x in hits], Operation(OP.TABLE, params=[h])) o_drs = o_drs.absorb(hits_drs) return o_drs
def similar_content_to(self, i_drs: DRS) -> DRS: """ Given a DRS it returns another DRS that contains all fields similar to the fields of the input :param i_drs: the input DRS :return: DRS """ o_drs = DRS([], Operation(OP.NONE)) o_drs = o_drs.absorb_provenance(i_drs) if i_drs.mode == DRSMode.TABLE: i_drs.set_fields_mode() for h in i_drs: fields_table = self.drs_from_table_hit(h) i_drs = i_drs.absorb(fields_table) for h in i_drs: hits_drs = self.__network.neighbors_id(h, Relation.CONTENT_SIM) o_drs = o_drs.absorb(hits_drs) return o_drs
def pkfk_of(self, i_drs: DRS) -> DRS: """ Given a DRS it returns another DRS that contains all fields similar to the fields of the input :param i_drs: the input DRS :return: DRS """ # alternative provenance propagation o_drs = DRS([], Operation(OP.NONE)) o_drs = o_drs.absorb_provenance(i_drs) if i_drs.mode == DRSMode.TABLE: i_drs.set_fields_mode() for h in i_drs: fields_table = self.drs_from_table_hit(h) i_drs = i_drs.absorb(fields_table) # o_drs.extend_provenance(fields_drs) for h in i_drs: hits_drs = self.__network.neighbors_id(h, Relation.PKFK) o_drs = o_drs.absorb(hits_drs) # o_drs.extend_provenance(i_drs) return o_drs