load input into kb
read a query q, call kb.query(q) to get response(s)
output them
sub kb.query(s):
if query matches data in KB, return match(es)
for each rule:
if rule output (consequent) could match part of query:
kb.query(rule.inputs)
for each result, prepare more matches we could return
8 of 22 |