The term completeness as applied to knowledge bases refers to two different concepts.
In formal logic, a knowledge base KB is complete if there is no formula ñ such that KB â ñ and KB â ìñ.
Example of knowledge base with incomplete knowledge:
KB := { A ⨠B }
Then we have KB â A and KB â ìA.
In some cases, a consistent knowledge base can be made complete with the closed world assumptionâÂÂthat is, adding all not-entailed literals as negations to the knowledge base. In the above example though, this would not work because it would make the knowledge base inconsistent:
KB' = { A ⨠B, ìA, ìB }
In the case where KB := { P(a), Q(a), Q(b) }, KB â P(b) and KB â ìP(b), so, with the closed world assumption, KB' = { P(a), ìP(b), Q(a), Q(b) }, where KB' ⨠ìP(b).
In data management, completeness is metaknowledge that can be asserted for parts of the KB via completeness assertions.
As example, a knowledge base may contain complete information for predicates R and S, while nothing is asserted for predicate T. Then consider the following queries:
Q1 :- R(x), S(x) Q2 :- R(x), T(x)
For Query 1, the knowledge base would return a complete answer, as only predicates that are themselves complete are intersected. For Query 2, no such conclusion could be made, as predicate T is potentially incomplete.