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 test_drs_field_iteration(self): print(self._testMethodName) h1 = Hit(0, "dba", "table_a", "a", -1) h2 = Hit(1, "dba", "table_a", "b", -1) h3 = Hit(2, "dba", "table_b", "c", -1) h4 = Hit(3, "dba", "table_b", "d", -1) drs = DRS([h1, h2, h3, h4], Operation(OP.ORIGIN)) drs.set_fields_mode() for el in drs: print(str(el)) self.assertTrue(True)
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