Hi,
Owlready allows the creation of all usual OWL constructs, including restrictions (i.e. Forall / Exist) and logical operations (or, and, not).
See the doc here :
https://owlready2.readthedocs.io/en/latest/restriction.html#logical-operators-intersection-union-and-complementConstructs are not Python classes, so they cannot be instanciated directly. But you can create an individual of an "anonymous" construct as follows:
class A(Thing): pass
class B(Thing): pass
individual = Thing()
individual.is_a.append(A & B)
Jiba