Making owl:ObjectProperty a subclass of owl:Class alows any object property to be the object of the owl:range and the owl:domain predicate. In "Paul takes Paul's car to reach Paul's office" therefore the predicate "takes" can be used as a owl:range and a owl:domain. Moreover, members of object properties can be used as anonymous individuals.
The following statement should be thus become possible in OWL2 syntax:
DataPropertyAssertion (rdf:ID (ObjectPropertyAssertion (:takes :Paul :PaulsCar) _:L1)
ObjectPropertyAssertion (:toReach _:L1 :PaulsOffice)
Based on this approach the number of classes and object properties is reduced by 25% and the number of associations triples by approx. 33%