NAME

AI::ExpertSystem::Advanced::KnowledgeDB::Base - Base class for knowledge DBs.

DESCRIPTION

All knowledge databases that AI::ExpertSystem::Advanced uses should extend from this class.

This base class implements the basic methods required for extracting the rules, causes, goals and questions from the a plain text knowledge database, eg, all the records remain in the application memory instead of a database engine such as MySQL or SQLite.

Attributes

rules

This hash has the rules contained in the knowledge database. It's populated when an instance of AI::ExpertSystem::Advanced::KnowledgeDB::Base is created.

TIP: There's no sense in filling this hash if you are going to be using a database engine such as MySQL, SQLite or others. The hash is useful if your knowledge database will remain in application memory.

questions

Similar and same concept of rules, but this will have a list (if available) of what questions should be done to certain facts.

Methods

read()

This method reads the knowledge database. This is the only method you need to define even if you are going to load the database in memory or if you are going to query it.

rule_goals($rule)

Returns all the goals (usually only one) of the given $rule.

The goals should be returned as a AI::ExpertSystem::Advanced::Dictionary.

NOTE: Rewrite this method if you are not going to use the rules hash (eg, you will use a database engine).

rule_causes($rule)

Returns all the causes of the given $rule.

Same as rule_goals(), the causes should be returned as a AI::ExpertSystem::Advanced::Dictionary.

NOTE: Rewrite this method if you are not going to use the rules hash (eg, you will use a database engine).

find_rule_by_goal($goal)

Looks for the first rule that has the given goal in its goals.

If a rule is found then its number is returned, otherwise undef is returned.

NOTE: Rewrite this method if you are not going to use the rules hash (eg, you will use a database engine).

get_question($fact)

Looks for a question about the given $fact. If a question exists then this is returned, otherwise undef is returned.

NOTE: Rewrite this method if you are not going to use the rules hash (eg, you will use a database engine).

get_next_rule($current_rule)

Returns the ID of the next rule. When there are no more rules to work then undef should be returned.

When it starts looking for the first rule, $current_rule value will be undef.

NOTE: Rewrite this method if you are not going to use the rules hash (eg, you will use a database engine).

AUTHOR

Pablo Fischer (pablo@pablo.com.mx).

COPYRIGHT

Copyright (C) 2010 by Pablo Fischer.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.