text: The Data properties tab also shows some new properties: 
  
  • The hasDiscount data property has a domain of Customer and a range of xsd:decimal. This 
  
  records the discount (if any) that the Customer will get on their next purchase. 
  
  • The numberOfPizzasPurchased data property has a domain of Customer and a range of 
  
  xsd:integer. It records the number of Pizzas that each customer has purchased. 
  
  • The ssn property has a domain of Employee and a range of xsd:string. It maps from an 
  
  Employee to their social security number. In the United States this is a number that all employers 
  must have in order to process things such as insurance contributions and tax information. 
  
  • The hasPhone data property has a domain of Person and a range of xsd:string. 
  
  Most of these data properties have additional constraints in addition to their ranges. For example, a 
  discount can only be between 0 and 1 and a phone number and social security number must correspond to 
  a certain format. 
  
  Many of these constraints could be expressed via DL axioms that define the range. However, for reasons 
  that will be discussed below, it is often better to represent data integrity constraints using the SHACL 
  language rather than as DL axioms. The general rule of thumb is that DL axioms are for reasoning and 
  SHACL is for data integrity constraints. Of course, this begs the question what is the difference between 
  reasoning and integrity constraints and the distinction is by nature a fuzzy one. However, there are 
  guidelines that we will discuss in the section on SHACL which we hope will help shed some light on the 
  difference. 