Inference is one of the ways that semantic technology simplifies information systems. Many of the manual assertions that must be made in the traditional systems can happen automatically in a semantic model. The more things you can infer, the fewer you need to assert, which greatly simplifies the system. Another way semantic technology reduces complexity is that it reuses predefined concepts through composition. This might sound a lot like the inheritance concept that is widely used in object oriented programming, but it is not. Let’s say that we want to define a trip to the doctor as an event that happens in a clinic. We would call that concept a ‘patient visit.’ Like object-oriented inheritance, the patient visit will inherit some of the attributes associated with the event, such as the date. Unlike object-oriented inheritance, the clinic concept contributes to the definition of what a patient visit is, but the patient visit doesn’t inherit any of the attributes of a clinic. A visit isn’t a type of clinic, yet the clinic is part of the definition of ‘patient visit.’ Semantic concepts are like words that can be assembled in an infinite number of ways. Objects in object-oriented programming are more like phrases; they can definitely be reused but with many more limitations. Reusing classes and properties significantly reduces the number of attributes required to model a business process, so we have much more flexibility in how concepts can be reused.