def __validation_property_domain(self, p):
        """
        if p.sub_property_of(q) then
        for every x in included_domains(p) we have x is subclass of some d in
        included_domains(q)
        """
        for x in p.included_domains():
            superclasses = x.super_classes_closure()
            for q in p.super_properties_closure():
                if x in q.included_domains():
                    logging.warning("Redundant domain :%s for :%s.", x.name(), p.name())
                    continue
                if not any(d == x or d in superclasses for d in q.included_domains()) and not any(
                        d == x or d in superclasses for s in q.super_properties_closure() for d in
                        s.included_domains()):
                    raise ValidationError("Domain {} of property {} isn't a subclass of any domain of "
                                          "superproperty {}".format(x.name(), p.name(), q.name()))
if p.sub_property_of(q) then
        for every x in included_domains(p) we have x is subclass of some d in
        included_domains(q)