One of the main advantages of a structured ontology like that used in Cyc is the fact that knowledge can be inherited, allowing for much more efficient representation. For instance:
The predicate #$genls is just one of a class of predicates with special code support which are used for this kind of transitive reasoning. These predicates are calle “SBHL” predicates and form the basis of most hierarchical reasoning that takes place in Cyc. “SBHL” stands for “subsumption-based heuristic layer”. It can be thought of as one of the largest and most important of our HL modules. The implementation of SBHL is built around a set of graphs which act as a cache for the information stored in these predicates.
E.g., inheritance through #$genlMt will be triggered ‘automatically’ for a given Query Mt (the query will look in all genlMts of the query mt), and in attempting to satisfy an #$ist literal. Inheritance through #$genls will be triggered ‘automatically’ when querying #$genls, #$isa, and certain more complex relations built from these — such as #$disjointWith. It will also be triggered by the canonicalizer (during asserting and querying) to enforce certain constraints on relations state which involve an ‘isa’ or ‘genls’ constraint. E.g.:
#$arg1Isa, etc. #$arg1Genls, etc. #$resultIsa #$resultGenl #$interArgIsa1-2, etc. #$ist (for genlMt)
Other SBHL predicates include #$genlPreds, #$genlAttributes, and #$genlMt, as well as predicates for denoting instance relations like #$isa.
In all other cases such reasoning is not triggered ‘automatically’, but occurs only if the appropriate #$transitiveViaArg or #$transitiveViaArgInverse assertion is made on the predicate. For example, given the assertion:
(sellsProductType Adidas-CommercialOrganization AthleticShoe)
(sellsProductType Adidas-CommercialOrganization Shoe)
Query was not proven
because the following is not asserted:
(transitiveViaArg sellsProductType genls 2)
and there is no rule expressing this relationship.