docs: def background_knowledge(self):
          '''
          Emits the background knowledge in prolog form for RSD.
          '''
          modeslist, getters = [self.mode(self.db.target_table, [('+', self.db.target_table)], head=True)], []
          for (table, ref_table) in self.db.connected.keys():
              if ref_table == self.db.target_table:
                  continue  # Skip backward connections
              modeslist.append(self.mode('%s_has_%s' % (table.lower(), ref_table), [('+', table), ('-', ref_table)]))
              getters.extend(self.connecting_clause(table, ref_table))
          for table, atts in self.db.cols.items():
              for att in atts:
                  if att == self.db.target_att and table == self.db.target_table or \
                                  att in self.db.fkeys[table] or att == self.db.pkeys[table]:
                      continue
                  modeslist.append(self.mode('%s_%s' % (table, att), [('+', table), ('-', att)]))
                  modeslist.append(self.mode('instantiate', [('+', att)]))
                  getters.extend(self.attribute_clause(table, att))
  
          return '\n'.join(modeslist + getters + self.user_settings() + self.dump_tables())