Owlready removes the ".owl" at the end of the IRI, because the ontology IRI (as defined in the ontology itself) does not include ".owl". However, this prevent loading the ontology if it is imported by another one, as you noticed.
To fix the problem, in the development version of Owlready, when the IRI itself does not yield an OWL file, I've automatically added .owl, .rdf or .xml to ontology IRI. Thus, you can now use the true IRI of the ontology (without .owl):
Owlready2 is now able to open the imported ontology by trying out the three file extensions.
Is it possible to add the file extension in the owl:imports property in the output owl file? This will make other applications, i.e. Protege, to open the owl file exported from owlready2.
I understand the ontology IRI is without the ".owl", but the owl:imports property can also associates with the ontology location which specifies where the ontology is to be imported for the case where the ontology IRI is different from the ontology location. Although ideally the ontology IRI should be the same as the ontology location.
I fully agree that the ontology IRI should be the same as the ontology location, however, it is not the case for CWRC :-(
Using owl:import to indicate the ontology URL instead of its IRI is problematic, because it requires to store the URL in addition to the IRI -- but how to store this additional data in the quadstore without adding e.g. an annotation on the ontology, and thus modifying it ? The only solution would be to add a new table in the database specifically for that case...