docs: def is_legal_subject(self, c: OntologyClass) -> bool:
          """
          is_legal_subject(c) = true if
          - c in included_domains(self) or
          - super_classes_closure(c) intersection included_domains(self) is not empty
  
          There is no need to check the included_domains(super_properties_closure(self)) because
          included_domains(super_properties_closure(self)) is subset of super_classes_closure(included_domains(self))
  
          Args:
              c:
  
          Returns:
  
          """
          domains = self.included_domains()
          return c and (not domains or c in domains or c.super_classes_closure() & domains)