Aggregating constraints and/or preferences using an inference engine and enhanced scripting language
First Claim
Patent Images
1. A computer program product for tailoring execution of a software program based on aggregated information, said computer program product embodied on a computer-readable medium and comprising:
- computer-readable program code means for programmatically transforming one or more rules expressed in an enhanced scripting language into rules expressed in an existing scripting language, wherein said enhanced scripting language comprises said existing scripting language with an additional notational element added in selected rules to signify a need for said programmatic transformation prior to processing said selected rules;
computer-readable program code means for using an inferencing rule-based inference engine to process said programmatically transformed rules expressed in said existing scripting language by applying said programmatically transformed rules to a plurality of facts in a fact database to determine an aggregated result from said plurality of facts, wherein said facts specify constraints or preferences pertaining to a context of a target user;
computer-readable program code means for providing said aggregated result to said software program; and
computer-readable program code means for subsequently using said provided aggregated result as an input to tailor execution of said software program based on said context of said target user.
3 Assignments
0 Petitions
Accused Products
Abstract
A method, system, and computer program product for aggregating constraints and/or preferences using an inference engine and an enhanced scripting language. Values of multiple factors and the interrelationships between the factors and their values are aggregated, and the result is used to tailor or direct the processing of a software program. This approach enables representing complex decisions in a straightforward manner, and avoids the need to modify the software program to account for new factors and/or new values thereof.
103 Citations
24 Claims
-
1. A computer program product for tailoring execution of a software program based on aggregated information, said computer program product embodied on a computer-readable medium and comprising:
-
computer-readable program code means for programmatically transforming one or more rules expressed in an enhanced scripting language into rules expressed in an existing scripting language, wherein said enhanced scripting language comprises said existing scripting language with an additional notational element added in selected rules to signify a need for said programmatic transformation prior to processing said selected rules;
computer-readable program code means for using an inferencing rule-based inference engine to process said programmatically transformed rules expressed in said existing scripting language by applying said programmatically transformed rules to a plurality of facts in a fact database to determine an aggregated result from said plurality of facts, wherein said facts specify constraints or preferences pertaining to a context of a target user;
computer-readable program code means for providing said aggregated result to said software program; and
computer-readable program code means for subsequently using said provided aggregated result as an input to tailor execution of said software program based on said context of said target user. - View Dependent Claims (2, 3, 4, 5, 6, 7, 22)
computer-readable program code means for programmatically locating each of said notational elements in each of said selected rules;
computer-readable program code means for programmatically replacing said located notational elements with a value-searching syntax when said located notation element was in a premise of one of said selected rules; and
computer-readable program code means for programmatically replacing said located notational elements with a value-setting syntax when said located notation element was in a conclusion of one of said selected rules.
-
-
3. The computer program product according to claim 2, wherein said notational element is a “
- @”
character.
- @”
-
4. The computer program product according to claim 1, further comprising computer-readable program code means for compiling said transformed rules prior to operation of said computer-readable program code means for using an inferencing rule-based inference engine.
-
5. The computer program product according to claim 4, wherein said existing scripting language is NetRexx.
-
6. The computer program product according to claim 1, wherein said inference engine is a backward chaining inference engine.
-
7. The computer program product according to claim 1, wherein said inference engine is a forward chaining inference engine.
-
22. The computer program product according to claim 1, wherein said computer-readable program code means for using an inferencing rule-based inferencing engine further comprises:
-
computer-readable program code means for attempting to resolve any value-searching syntax contained in a particular rule being applied, further comprising;
computer-readable program code means for retrieving a value from said fact database, if the value appears in said fact database in association with a fact name specified in said value-searching syntax; and
computer-readable program code means for substituting said retrieved value into said particular rule in place of said value-searching syntax if said value appeared in said fact database in association with said specified fact name, and leaving said value-searching syntax in place in said particular rule otherwise; and
computer-readable program code means for attempting to resolve any value-setting syntax contained in said particular rule being applied, further comprising;
computer-readable program code means for creating a new fact in said fact database, if all conditions in a premise of said particular rule being applied are true, wherein said created new fact specifies a fact name taken from said value-setting syntax in association with a fact value taken from said value-setting syntax.
-
-
8. A system for tailoring execution of a software program based on aggregated information, comprising:
-
means for programmatically transforming one or more rules expressed in an enhanced scripting language into rules expressed in an existing scripting language, wherein said enhanced scripting language comprises said existing scripting language with an additional notational element added in selected rules to signify a need for said programmatic transformation prior to processing said selected rules;
means for using an inferencing rule-based inference engine to process said programmatically transformed rules expressed in said existing scripting language by applying said programmatically transformed rules to a plurality of facts in a fact database to determine an aggregated result from said plurality of facts, wherein said facts specify constraints or preferences pertaining to a context of a target user;
means for providing said aggregated result to said software program; and
means for subsequently using said provided aggregated result as an input to tailor execution of said software program based on said context of said target user. - View Dependent Claims (9, 10, 11, 12, 13, 14, 23)
means for programmatically locating each of said notational elements in each of said selected rules;
means for programmatically replacing said located notational elements with a value-searching syntax when said located notation element was in a premise of one of said selected rules; and
means for programmatically replacing said located notational elements with a value-setting syntax when said located notation element was in a conclusion of one of said selected rules.
-
-
10. The system according to claim 9, wherein said notational element is a “
- @”
character.
- @”
-
11. The system according to claim 8, further comprising means for compiling said transformed rules prior to operation of said means for using an inferencing rule-based inferencing engine.
-
12. The system according to claim 11, wherein said existing scripting language is NetRexx.
-
13. The system according to claim 8, wherein said inference engine is a backward chaining inference engine.
-
14. The system according to claim 8, wherein said inference engine is a forward chaining inference engine.
-
23. The system according to claim 8, wherein said means for using an inferencing rule-based inferencing engine further comprises:
-
means for attempting to resolve any value-searching syntax contained in a particular rule being applied, further comprising;
means for retrieving a value from said fact database, if the value appears in said fact database in association with a fact name specified in said value-searching syntax; and
means for substituting said retrieved value into said particular rule in place of said value-searching syntax if said value appeared in said fact database in association with said specified fact name, and leaving said value-searching syntax in place in said particular rule otherwise; and
means for attempting to resolve any value-setting syntax contained in said particular rule being applied, further comprising;
means for creating a new fact in said fact database, if all conditions in a premise of said particular rule being applied are true, wherein said created new fact specifies a fact name taken from said value-setting syntax in association with a fact value taken from said value-setting syntax.
-
-
15. A method for tailoring execution of a software program based on aggregated information, comprising the steps of:
-
programmatically transforming one or more rules expressed in an enhanced scripting language into rules expressed in an existing scripting language, wherein said enhanced scripting language comprises said existing scripting language with an additional notational element added in selected rules to signify a need for said programmatic transformation prior to processing said selected rules;
using an inferencing rule-based inference engine to process said programmatically transformed rules expressed in said existing scripting language by applying said programmatically transformed rules to a plurality of facts in a fact database to determine an aggregated result from said plurality of facts, wherein said facts specify constraints or preferences pertaining to a context of a target user;
providing said aggregated result to said software program; and
subsequently using said provided aggregated result as an input to tailor execution of said software program based on said context of said target user. - View Dependent Claims (16, 17, 18, 19, 20, 21, 24)
programmatically locating each of said notational elements in each of said selected rules;
programmatically replacing said located notational elements with a value-searching syntax when said located notation element was in a premise of one of said selected rules; and
programmatically replacing said located notational elements with a value-setting syntax when said located notation element was in a conclusion of one of said selected rules.
-
-
17. The method according to claim 16, wherein said notational element is a “
- @”
character.
- @”
-
18. The method according to claim 15, further comprising the step of compiling said transformed rules prior to operation of said step of using an inferencing rule-based inferencing engine.
-
19. The method according to claim 18, wherein said existing scripting language is NetRexx.
-
20. The method according to claim 15, wherein said inference engine is a backward chaining inference engine.
-
21. The method according to claim 15, wherein said inference engine is a forward chaining inference engine.
-
24. The method according to claim 15, wherein said step of using an inferencing rule-based inferencing engine further comprises the steps of:
-
attempting to resolve any value-searching syntax contained in a particular rule being applied, further comprising the steps of;
retrieving a value from said fact database, if the value appears in said fact database in association with a fact name specified in said value-searching syntax; and
substituting said retrieved value into said particular rule in place of said value-searching syntax if said value appeared in said fact database in association with said specified fact name, and leaving said value-searching syntax in place in said particular rule otherwise; and
attempting to resolve any value-setting syntax contained in said particular rule being applied, further comprising the step of;
creating a new fact in said fact database, if all conditions in a premise of said particular rule being applied are true, wherein said created new fact specifies a fact name taken from said value-setting syntax in association with a fact value taken from said value-setting syntax.
-
Specification