You can present some fairly complex conditional sentences in OWL using the general axioms of a subclass. Let's look at a few examples. If you are trying to make something a little easier, say
Students with at least five dogs have at least one cat.
which is an abbreviation for the quantified conditional expression "For all x, if x is a student with at least five dogs, then x has at least one cat, you can do this in OWL with
(Student and hasPet min 5 Dog) subClassOf (hasPet some Cat)
These are both expressions of an anonymous class, but you can define some equivalent classes to simplify some things:
StudentWithAtLeastFiveDogs equivalentClass (Student and hasPet min 5 Dogs) CatOwner equivalentClass (hasPet some Cat) StudentWithAtLeastFiveDogs subClassOf CatOwner
Now your example was Bob - a student, if Bob has 5 dogs, then he has at least 1 cat. There are two sentences. The first is easy to code
Bob a Student
The second is a bit more complicated. You say that Bob is a member of a class of things that, if they have at least five dogs, they have at least one cat. A (material) conditional "If P, then Q" is logically equivalent to a disjunction "(not P) or Q". Therefore, we say that Bob is a member of the class of things that either do not have at least five points or have at least one cat. For this class expression
(not (hasPet min 5 Dog)) or (hasPet some Cat)
Now our knowledge of Bob is such that
Bob a Student Bob a (not (hasPet min 5 Dog)) or (hasPet some Cat)
You can define an equivalent class for this anonymous class expression, but I doubt it will display very naturally in most languages. Here is the ontology containing this knowledge about Bob (in N3 format):
@prefix : <http://www.example.com/example
The same approach can be used for data type properties and their value restrictions. For example, to say that "if Bob weighs at least 60 kg, then he is at least 180 cm high," we can say that Bob is an element of the class of things, which if they weigh at least 60 kg, then they, by at least 180 cm in height or, equivalently, a class of things that either have no weight of at least 60 kg or a height of at least 180 cm. In Manchester syntax, the class expression looks like
(not (hasWeight some int[>= 60])) or (hasHeight some int[>= 180])
The corresponding part of the N3 ontology serialization:
:Bob a [ a owl:Class ; owl:unionOf ([ a owl:Class ; owl:complementOf [ a owl:Restriction ; owl:onProperty :hasWeight ; owl:someValuesFrom [ a rdfs:Datatype ; owl:onDatatype xsd:int ; owl:withRestrictions ([ xsd:minInclusive 60 ]) ] ] ] [ a owl:Restriction ; owl:onProperty :hasHeight ; owl:someValuesFrom [ a rdfs:Datatype ; owl:onDatatype xsd:int ; owl:withRestrictions ([ xsd:minInclusive 180 ]) ] ]) ] .