CS 6795 Semantic Web Techniques

Project 5: RACSA and j-DREW BU


Update j-DREW BU to properly handle calls to Boolean internal functions with ground inputs. Use the convention that if a goal is selected that has a first character in its name ‘$’ then it is not handled through resolution, but rather it is handled as a “built-in” function.  Whenever you put a new rule into the newRuleDiscTree check before you put it in, check whether the first goal in the rule is a built-in or not. If it is a built-in, evaluate it, giving back either true or false.  For this project, assume that the first goal will always be ground.  (see Project 6 for lifting this restriction). The string representing the rule is available via the function rule.toString(). Given this string, analyse it and if the goal is asking something that is true, remove the goal, and parse the remaining string using DCFileParser.parseDefiniteClause(), to get the rule that you can place into the discrimination tree.  If the goal is not asking something true, then do not put the rule into the discrimination tree.  For example suppose someone is adding the rule a :- $lessThan(45,72), b, c. Then your code would identify the first goal, determine that $lessThan(45,72) is true, and instead add the rule a :- b, c. If the goal were not true, your code would just ignore the rule and not add it to the new rules.

With this ability to evaluate ground built-ins, replace the Mandarax engine with your j-DREW BU engine in a possibly simplified version of RACSA (see http://www.dfki.de/racsa/sources ).


Maintained by Bruce Spencer