![]() | Sets and Individuals in CYC® |
![]() | Uses of #$genls and #$isa |
![]() | Collections of Collections |
CYC® provides several mechanisms for this, but the simplest is the binary predicate #$disjointWith. For two (sets or) collections, C1 and C2:
(#$disjointWith C1 C2)
indicates that no instance of C1 can be an instance of C2. So,
(#$disjointWith #$Dog #$Ladybug)
would make it a contradiction to assert that any constant was both an instance of #$Dog and an instance of #$Ladybug.
Disjoining #$Dog and #$Ladybug in this way may makes for a clear example, but it would be a poor choice for the KB, since it is overly specific and implies a multitude of similar assertions. I.E. dogs are not ants, nor whales, nor planets, etc. It would be better to assert
(#$disjointWith #$Vertebrate #$Invertebrate)
and similar general propositions. Nevertheless, we would still require a large number of assertions to disjoin #$Dog with its "sibling" collections (such as #$Cat). Because of this awkwardness, most of the disjoins in the CYC® KB are performed with more general mechanisms using #$SiblingDisjointCollection (described in subsequent sections).
#$disjointWith is therefore only used in limited cases where a more general disjoin cannot be applied.
To see some examples, browse #$disjointWith and choose the Predicate Extent item to take you to the section showing assertions where #$disjointWith is in the predicate position. There are a few hundred assertions of this form in the #$BaseKB.