Take the 2-minute tour ×
Database Administrators Stack Exchange is a question and answer site for database professionals who wish to improve their database skills and learn from others in the community. It's 100% free, no registration required.

Expert Systems are a branch of Artificial Intelligence. These systems try to capture knowledge of Experts via set of rules. Most of the rules are stated in natural language. But they need to be interpreted by rule engine therefore they are statements in the form of classic if-then-else.

IF 

THEN

ELSE

This specific expert system will hold substances and patients. Every rule give an advice according to patient's attributes , which is stored in database.

For example:

 IF (PatientWeight < 50 AND PatientSex = Male AND DaysInTreatment = 0)
 THEN SUBSTANCE_X = 10
 IF (PatientWeight < 50 AND PatientSex = Male AND DaysInTreatment > 0)
 THEN SUBSTANCE_X = 20 +  DaysInTreatment *5

I have never designed such a system. Can you give me some starting pointers to read? Or Any advice?

share|improve this question
add comment

2 Answers

In university, I took courses where we worked with, and then built our own (very simple) expert systems in Prolog. I can't think of an RDBMS implementation that would be easy, or elegant. Most of them would probably end up as an EAV schema (which would work - I've seen and used such systems, but they're not pretty). One of the first hits on google for "prolog expert system" is this: http://www.amzi.com/ExpertSystemsInProlog/ It looks long, but might be a good resource.

share|improve this answer
add comment
up vote 3 down vote accepted

After reading FrustratedWithFormsDesigner's answer , I decided to go with executable script approach.

An Expert System consists of following parts:

  • The rule base or knowledge base
  • Inference Engine
  • User Interface

I decided to use powershell engine as Inference Engine. Therefore all rules in knowledge base are powershell scripts. Inference Engine provides , patient's details to script and takes output.

My GUI shows scripts. Allow users to test , update scripts.

It is in my opinion only reasonable approach for a arbitrary rule based approach. I have chosen this since users will more likely want to change rules.

Following part is not related to database design issues, therefore not completely related to this question.

I decided to use powershell due to following reasons:

  • It is scripting language
  • It is easily embeddable in C#.Net, project's programming language
  • It is already installed in a lot of windows computers.

If project's programming language was java, I would have chosen groovy.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.