My last posting Designing An Ontology In OWL - Using A Domain Or Range dealt with the domain and range values on properties. Consider a class Author and a property is_author_of that has a domain of Author. This means that it maps Authors to the thing that they authored. Using the property, therefore, allows an inference engine to determine that an individual is of type Author because it has the property is_author_of.
By setting a domain or range, you cause an inferential consequence that individuals linked using the property have a specific type. On the other hand, what if you want to say that an Author is the author of something? You can do this using a Restriction.
<owl:Class rdf:ID="Author">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#is_author_of"/>
<owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
<owl:Class rdf:ID="Author">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#is_author_of"/>
<owl:someValuesFrom rdf:resource="&owl;Thing"/>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
Designing An Ontology In OWL - Using A Domain Or Range