How To |
One of the great advantages of a declarative system such as Knowledge Fusion is its ability to determine the order in which rules are evaluated. Consider a DFA file that has 3 classes, a bolt class and a nut class, and a parent class that makes one instance of each. The bolt class and the nut class can easily cross-reference each other's attributes.
For example, the Nut Height depends on the Bolt Diameter and the Bolt Length depends on the Nut Height. If this is done correctly, it does not create a cross-reference. Solutions to most engineering systems involve this kind of interdependency.
(child) Nut: { class, the_nut, Hole_Dia, Bolt:Diameter: }; (child) Bolt: { class, the_bolt, Diameter: 0.375, Nut_Hgt, Nut:Height: };
The nut class has an attribute named "Height", which is a function of nut's Hole_Dia.
When cross-referencing like this, be sure to pass attribute or parameter values, not instances. A circular reference occurs if you attempt to pass the instance of the nut into the bolt class and an instance of the bolt into the nut class.