text: 1. Navigate to the Object properties tab. Select the hasTopping property. 
  
  2. Click on the Add icon (+) next to Domains (intersection) in the Description view for hasTopping. 
  You will be presented with a window that shows several tabs. There are multiple ways to define domain 
  and range. For now we will use the simplest method (and the one most often used). Select the 
  ClassHierarchy tab. Then select Pizza from the class hierarchy. Your UI should look like figure 4.14. 
  Click on OK. You should now see Pizza underneath the Domains in the Description view. 
  
  3. Repeat step 2 but this time start by using the (+) icon next to the Ranges (intersection) in the 
  Description for hasTopping. This time select the class PizzaTopping as the range. 
  
  4. Synchronize the reasoner. Now select isToppingOf. You should see that the Domain and Range for 
  isToppingOf have been filled in by the reasoner (see figure 4.15). Since the two properties are inverses 
  the reasoner knows that the domain for one is the range for the other and vice versa. This is another 
  example of why frequently running the reasoner can save time and help maintain a valid model. Note that 
  these values are highlighted in yellow. Any information supplied by the reasoner rather than by the user is 
  highlighted in this way. 