Currently, DBOWL supports all the Tbox reasonings implemented by RACER. In order to implement them, the information obtained from the DL reasoner is stored in the corresponding tables at load time. For example, in the database we store the equivalent classes for each class. Thus, we only need to query the database to evaluate the Tbox reasoning which evaluates if two classes are equivalent to each other or if a class is the equivalent classes of a specific class. We also use the DL reasoner to obtain the properties domain and range, which are sometimes not explicitly asserted by the ontology, but can be inferred. At query time, this information will be obtained by querying the database with a simple SQL query. Obviously, the performance of these Tbox reasonings, being sound and complete, is much better than in a description logic reasoner, like FaCT or RACER , which evaluate the reasoning each time in the main memory.
The Abox inference rules are implemented as function using only the information stored in the database. For every rule we define an algorithm for evaluating the rule. This algorithm computes the set of tuples generated for the rule and adds these tuples to the corresponding class or property. The algorithms create a SQL view for each class and property in the ontology which defines this set of tuples. In order to create the knowledge base, rules are evaluated in a fixed-point iteration until no new results are obtained.
The next figure shows the Abox reasoning currently supported by DBOWL.
Figure 1.Abox Reasoning supported by DBOWL.