And we need to have a fair amount of stability there. This is partially handled by the notion of project inclusion. But Protege also takes the view that adding a domain is also an assertion about the class. Which means that, while editing in Protege, we simply forbid certain legal RDF operations. When importing RDF that was generated by some other mechanism, we attempt to guess the domain from the set of instances that take values.
Range feels broken.
The idea that there can only be a single class which defines the range of a property, over all domains that the property is bound to, is very restrictive. This property can take, as values, instances from the following list of classes. We've changed the mapping since 1.3, however. This is a class definition. Some support for some sort of facet-like property would be very nice.