calls to the DL reasoner (except for consistency checks in the union of environments,
see 5.2, or in the updates of the set of assumed individuals, as we will see in the second
step). However, in a real execution of the DS some literals in the rule antecedents may be
instantiated thanks to these DL reasoner calls. In order to fill this gap in the simulation,
some new rules derived from the ontology axioms and already existing rules are added
to the set of rules. In particular, the generation of new rules is related to the presence of
deduced literals in the rules. Sometimes, a rule adds a new fact to the FB that matches
a literal in another rule’s antecedent; in that case, we will say in the simulation that
the first rule can be chained with the literal. In other cases, a rule adds a new fact to
the FB that does not match directly a literal in a rule antecedent, but it actually does
it indirectly, because the new fact allows the DL reasoner to deduce another fact that
does match the literal. For the purpose of simulating properly this kind of inference
situations, the set of rules must be pre-processed. Next, we will explain how the new
rules are computed from the ontology axioms and already existing rules:
Deducing the literal ¬Instance(ID1, C):
According to the syntactical restrictions explained in 3.2, no rules can deduce directly
this kind of literals, but DS actually can indirectly deduce it these ways:
1. R(ID1, ID2), ¬subclass(C, Domain(R)) → ¬Instance(ID1, C)
2. R(ID2, ID1), ¬subclass(C, Range(R)) → ¬Instance(ID1, C)
Where R is any property. Thus, in each rule whose antecedent contains a conjunction
c where the deducible literal ¬Instance(ID1, C) occurs, the conjunction c will be
replaced with the new conjunctions:
Substitute(c, ”¬Instance(ID1, C)”, ”R(ID1, ID2), ¬subclass(C, Domain(R))”) and,
Substitute(c, ”¬Instance(ID1, C)”, ”R(ID2, ID1), ¬subclass(C, Range(R))”)
where the function Substitute(c, s1, s2) returns the conjunction resulting from replac-
ing the string s1 with the string s2 in the conjunction c.
Deducing the literal Instance(ID, C):
Following an analogous reasoning to the previous replacement, in each rule whose an-
tecedent contains a conjunction c where the deducible literal Instance(ID1, C) oc-
curs, two new conjunctions must be added:
Substitute(c, ”Instance(ID1, C)”, ”R(ID1, ID2), subclass(C, Domain(R))”) and,
Substitute(c, ”Instance(ID1, C)”, ”R(ID2, ID1), subclass(C, Range(R))”) .
Furthermore, given that any individual a that is instance of a class A is also instance
of any superclass of A, then another conjunction must be added:
Substitute(c, ”Instance(ID1, C)”, ”Instance(ID1, C1), subclass(C1, C)”)
Deducing transitive object properties:
If the object property R is defined to be transitive, then in each rule whose antecedent
contains a conjunction c where the deducible literal R(ID1, ID2) occurs, the new con-
junction must be added:
Substitute(c, ”R(ID1, ID2)”, ”R(ID1, ?X), R(?X, ID2”) st. the variable X does not occur
in the conjunction c.
Deducing symmetric object properties:
If the object property R is defined to be symmetric, then in each rule whose antecedent
contains a conjunction c where the deducible literal R(ID1, ID2) occurs, the new con-
25