Claims
- 1. A method for providing inferencing services, comprising:
receiving a plurality of rules for a specified domain; identifying at least one precondition associated with the rules, each precondition representing an input used in executing the rules; identifying at least one postcondition associated with the rules, each postcondition representing an output from the execution of the rules; receiving an input value corresponding to the identified preconditions; and executing at least a portion of the rules using the input value to generate an output value, the output value corresponding to the identified postconditions.
- 2. The method of claim 1, wherein:
the rules comprise first rule; and one of the first rules invokes sub-inferencing by loading a second domain from a supplemental rulebase, wherein inferencing over the second domain's rules ends before execution of the first rules resumes.
- 3. The method of claim 1, wherein:
the rules comprise first rules; and one of the first rules invokes sub-inferencing by loading a second domain from the first rulebase, wherein inferencing over the second domain's rules ends before execution of the first rules resumes.
- 4. The method of claim 1, wherein the rules comprise first rules; and
further comprising executing of a plurality of second rules after execution of the first rules ends, wherein execution of the second rules uses the output value from the first rules as an input value for the second rules.
- 5. The method of claim 1, further comprising:
identifying a field as a retractable field; assigning a non-retractable value to the retractable field; assigning one or more retractable values to the retractable field; and retracting the retractable field to the non-retractable value.
- 6. The method of claim 1, further comprising:
receiving a second input value using a first communication handler after execution of the rules begins; and communicating the output value using a second communication handler before execution of the rules ends.
- 7. The method of claim 1, further comprising:
receiving information identifying a first field; identifying a first rule that assigned a final value to the first field; identifying a second field that caused the first rule to fire; and identifying a second rule that assigned a final value to the second field.
- 8. The method of claim 1, wherein executing at least a portion of the rules comprises determining whether to fire, fail, or pend a decision tree rule.
- 9. The method of claim 8, wherein pending the decision tree rule comprises identifying a binary statement that caused the decision tree rule to pend; and
further comprising unpending the decision tree rule and restarting execution at the binary statement that caused the decision tree rule to pend.
- 10. The method of claim 1, wherein executing at least a portion of the rules comprises enforcing monotonic reasoning as the rules are executed.
- 11. The method of claim 1, wherein the rules affect a final-valued field, wherein multiple values may be assigned to the final-valued field.
- 12. The method of claim 1, further comprising:
storing a read-only image of a rulebase containing the rules in a memory; and storing the input and output values in a client-specific information block in the memory.
- 13. The method of claim 1, wherein executing at least a portion of the rules comprises determining that the execution cannot be completed without a second input value for a particular field; and
further comprising receiving the second input value using at least one of an initialization handler and a rulebase containing the rules, the initialization handler operable to receive the second input value from a user or application, the rulebase operable to identify a last chance value for the particular field.
- 14. The method of claim 1, wherein executing at least a portion of the rules comprises determining whether a value assigned to a field violates a constraint; and
further comprising performing a violation action defined by the field if the value assigned to the field violates the constraint.
- 15. The method of claim 14, wherein the violation action comprises at least one of terminating the execution of the rules, assigning a substitute value to the field, and requesting a replacement value using an initialization handler.
- 16. The method of claim 1, wherein the rules form at least a portion of the specified domain in a binary rulebase, the domain identifying the precondition and the postcondition.
- 17. The method of claim 16, wherein the rulebase comprises one or more compiled XML documents defining the rules.
- 18. The method of claim 1, wherein executing at least a portion of the rules comprises either forward-chaining or backward-chaining the rules.
- 19. The method of claim 1, further comprising generating a rule snapshot, the rule snapshot identifying a current status of one of the rules and any fields associated with the rule that cause the rule to pend.
- 20. The method of claim 1, wherein executing at least a portion of the rules comprises executing at least a portion of the rules using an inference engine object.
- 21. The method of claim 20, wherein the inference engine object comprises a stateless inference engine object or a stateful inference engine object.
- 22. The method of claim 1, wherein receiving the plurality of rules comprises:
receiving a location associated with the rules; accessing the location, and retrieving the rules from the accessed location.
- 23. A system for providing inferencing services, comprising:
a memory operable to store a plurality of rules for a specified domain; and one or more processors collectively operable to:
identify a precondition associated with the rules, the precondition representing an input used in executing the rules; identify a postcondition associated with the rules, the postcondition representing an output from the execution of the rules; receive an input value corresponding to the precondition; and execute at least a portion of the rules using the input value to generate an output value, the output value corresponding to the postcondition.
- 24. The system of claim 23, wherein:
the rules comprise first rules forming at least a portion of a first rulebase; one of the first rules invokes sub-inferencing by loading a second domain from a supplemental rulebase, wherein inferencing over the second domain's rules ends before execution of the first rules resumes.
- 25. The system of claim 23, wherein:
the rules comprise first rules; and one of the first rules invokes sub-inferencing by loading a second domain from the first rulebase, wherein inferencing over the second domain's rules ends before execution of the first rules resumes.
- 26. The system of claim 23, wherein:
the rules comprise first rules; and the one or more processors are further collectively operable to execute a plurality of second rules after execution of the first rules ends, wherein execution of the second rules uses the output value from the first rules as an input value for the second rules.
- 27. The system of claim 23, wherein the one or more processors are further collectively operable to:
identify a field as a retractable field; assign a non-retractable value to the retractable field; assign one or more retractable values to the retractable field; and retract the retractable field to the non-retractable value.
- 28. The system of claim 23, wherein the one or more processors are further collectively operable to:
receive information identifying a first field; identify a first rule that assigned a final value to the first field; identify a second field that caused the first rule to fire; and identify a second rule that assigned a final value to the second field.
- 29. The system of claim 23, wherein the one or more processors are collectively operable to execute at least a portion of the rules by:
determining whether to fire, fail, or pend a decision tree rule, wherein pending the decision tree rule comprises identifying a binary statement that caused the decision tree rule to pend; and unpending the decision tree rule and restarting execution at the binary statement that caused the decision tree rule to pend.
- 30. The system of claim 23, wherein:
the one or more processors are collectively operable to execute at least a portion of the rules by determining that the execution cannot be completed without a second input value for a particular field; and the one or more processors are further collectively operable to receive the second input value using at least one of an initialization handler and a rulebase containing the rules, the initialization handler operable to receive the second input value from a user or application, the rulebase operable to identify a last chance value for the particular field.
- 31. The system of claim 23, wherein:
the one or more processors are collectively operable to execute at least a portion of the rules by determining whether a value assigned to a field violates a constraint; and the one or more processors are further collectively operable to perform a violation action defined by the field if the value assigned to the field violates the constraint.
- 32. The system of claim 23, the one or more processors are further collectively operable to generate a rule snapshot, the rule snapshot identifying a current status of one of the rules and any fields associated with the rule that cause the rule to pend.
- 33. Logic embodied on at least one computer readable medium and operable when executed to:
identify a precondition associated with a plurality of rules for a specified domain, the precondition representing an input used in executing the rules; identify a postcondition associated with the rules, the postcondition representing an output from the execution of the rules; receive an input value corresponding to the precondition; and execute at least a portion of the rules using the input value to generate an output value, the output value corresponding to the postcondition.
- 34. A system for providing inferencing services, comprising:
means for identifying a precondition associated with a plurality of rules for a specified domain, the precondition representing an input used in executing the rules; means for identifying a postcondition associated with the rules, the postcondition representing an output from the execution of the rules; means for receiving an input value corresponding to the precondition; and means for executing at least a portion of the rules using the input value to generate an output value, the output value corresponding to the postcondition.
- 35. A method for providing inferencing services, comprising:
communicating a plurality of rules for a specified domain to an inference engine, the rules associated with a precondition and a postcondition, the precondition representing an input used by the inference engine in executing the rules, the postcondition representing an output from the execution of the rules; communicating an input value corresponding to the precondition to the inference engine; and receiving an output value from the inference engine, the output value corresponding to the postcondition.
- 36. The method of claim 35, wherein communicating the plurality of rules to the inference engine comprises communicating at least one of a binary rulebase and a location of a rulebase to the inference engine.
- 37. The method of claim 36, wherein the location of the rulebase comprises a Uniform Resource Locator (URL).
- 38. The method of claim 35, wherein:
the output value comprises one of a plurality of output values; the inference engine comprises a stateless inference engine; and further comprising communicating a control object to the inference engine, the control object identifying whether the inference engine generates at least one of a plurality of output messages each identifying one of the output values, an output document identifying all of the output values, and a rule snapshot, the rule snapshot identifying a current status of one of the rules and any fields associated with the rule that cause the rule to pend.
- 39. The method of claim 35, wherein:
the output value comprises one of a plurality of output values; the inference engine comprises a stateful inference engine; and further comprising invoking at least function in the inference engine, the at least one function operable to at least one of identify one of the output values, identify all of the output values, generate a rule snapshot identifying a current status of one of the rules and any fields associated with the rule that cause the rule to pend, identify the rule that resolved one of the output values, assign a retractable value to a field used by the rules, assign a non-retractable value to a field used by the rules, and retract a value of a field used by the rules.
- 40. A method for providing inferencing services, comprising:
receiving a plurality of first rules for a specified domain comprising at least a portion of a first rulebase; loading the first rules into a memory; receiving a supplemental rulebase comprising a second rule; combining the second rule with the first rules in the memory; and executing at least a portion of the first and second rules to generate an output value.
- 41. The method of claim 40, further comprising:
receiving a second supplemental rulebase comprising a third rule; combining the third rule with the first rules in the memory; and executing at least a portion of the first and third rules to generate a second output value.
- 42. The method of claim 40, wherein the second rule operates only on data objects defined by the first rulebase.
- 43. The method of claim 40, wherein the first rulebase identifies whether the second rule can be used when the second rule conflicts with the first rules.
- 44. The method of claim 40, wherein the first rulebase and the supplemental rulebase comprise binary rulebases.
- 45. A system for providing inferencing services, comprising:
a memory operable to store a plurality of first rules for a specified domain, the plurality of first rules comprising at least a portion of a first rulebase; and one or more processors collectively operable to:
receive a supplemental rulebase comprising a second rule; combine the second rule with the first rules in the memory; and execute at least a portion of the first and second rules to generate an output value.
- 46. The system of claim 45, wherein the second rule operates only on data objects defined by the first rulebase.
- 47. The system of claim 45, wherein the first rulebase identifies whether the second rule can be used when the second rule conflicts with the first rules.
- 48. The system of claim 45, wherein the first rulebase and the supplemental rulebase comprise binary rulebases.
- 49. Logic embodied on at least one computer readable medium and operable when executed to:
receive a plurality of first rules for a specified domain, the plurality of first rules comprising at least a portion of a first rulebase; load the first rules into a memory; receive a supplemental rulebase comprising a second rule; combine the second rule with the first rules in the memory; and execute at least a portion of the first and second rules to generate an output value.
- 50. A method for providing inferencing services, comprising:
communicating a plurality of first rules for a specified domain, the plurality of first rules comprising at least a portion of a first rulebase to an inference engine; communicating a supplemental rulebase comprising a second rule to the inference engine; allowing the inference engine to combine the second rule with the first rules in the memory; and receiving from the inference engine an output value, the inference engine operable to execute at least a portion of the first and second rules to generate the output value.
- 51. The method of claim 50, wherein communicating the plurality of first rules to the inference engine comprises communicating at least one of a binary rulebase containing the first rules and a location of a rulebase containing the first rules to the inference engine.
- 52. A method for providing inferencing services, comprising:
executing at least a portion of a plurality of rules for a specified domain, at least one of the rules comprising an expression; pending one of the rules when a field needed to resolve the expression in the rule has an unknown value; identifying a binary statement associated with the expression that caused the decision tree rule to pend; assigning a known value to the field that caused the rule to pend; unpending the rule; and restarting execution of the rule at the identified binary statement.
- 53. The method of claim 52, wherein at least one of the rules comprises a decision tree rule, the expression in the decision tree rule dividing the decision tree rule into at least two subtrees.
- 54. A system for providing inferencing services, comprising:
a memory operable to store a plurality of rules for a specified domain, at least one of the rules comprising an expression; and one or more processors collectively operable to:
execute at least a portion of the rules; pend one of the rules when a field needed to resolve the expression in the rule has an unknown value; identify a binary statement associated with the expression that caused the decision tree rule to pend; assign a known value to the field that caused the rule to pend; unpend the rule; and restart execution of the rule at the identified binary statement.
- 55. The system of claim 54, wherein at least one of the rules comprises a decision tree rule, the expression in the decision tree rule dividing the decision tree rule into at least two subtrees.
- 56. Logic embodied on at least one computer readable medium and operable when executed to:
execute at least a portion of a plurality of rules for a specified domain, at least one of the rules comprising an expression; pend one of the rules when a field needed to resolve the expression in the rule has an unknown value; identify a binary statement associated with the expression that caused the decision tree rule to pend; assign a known value to the field that caused the rule to pend; unpend the rule; and restart execution of the rule at the identified binary statement.
RELATED APPLICATIONS
[0001] This application claims priority to U.S. Provisional Application No. 60/373,823 filed Apr. 19, 2002, and entitled “System and Method for Providing Inferencing Services”, which is incorporated by reference herein. This application is related to U.S. patent application Ser. No. ______ filed Apr. 18, 2003 by Peter Herrera, et. al. and entitled “System and Method for Building a Rulebase” (attorney docket 063170.2538).
Provisional Applications (1)
|
Number |
Date |
Country |
|
60373823 |
Apr 2002 |
US |