When seeking to attain mastery of rules engines (RE), you will experience an odd phenomenon. Others, upon hearing some details of your course of study, will react in a what initially appears to be a manner angrily dismissive of the topic itself. This is strange given the fundamental role that computation plays in literally everything we do, from a manifest perspective, with hardware computers, organic computers, and other.
Upon further interaction, and reflection, it quickly becomes apparent what motivates this reaction is fundamentally, the re-experience of a long inaccessible, perennial fear.
Continue reading “The perennial fear revealed by a rules engine”
Part of my quest to learn more about rules-engines involved the desire to find a really good approach for knowledge management. The short story is that when you work with a subject matter expert (SME), you need to find some good way to capture the domain data and behavior, the rules, actions, and everything else necessary to make sense of things. This need isn’t unique to knowledge engineering and AI, of course, all engineers face it, especially software engineers. Object-oriented analysis and design is one good approach, and there seems to be a lot of overlap. One interesting outcrop of the need is the Insurance Application Architecture, an OO model (and more) to help insurance companies manage their intellectual assets.
The client developed a custom tool to manage the concepts (although customizable tools like MagicDraw certainly are an option, too), and I had always wondered if there was some standard way of approaching that kind of problem. While researching rules-engines I was delighted to learn about knowledge engineering, the semantic web, and consequently ontological engineering and management.
Specifically, digging into the tool Protege-OWL, I found something quite similar to what I’d seen developed as custom. Although it is too soon to say they are equivelant, it is pretty interesting to find out. The fact that there is a Jess plugin (JessTab) to let you play, even better!
You know that advice “trust but verify”? It couldn’t be more true when it comes to the realm of applied or narrow artificial intelligence, specifically with respect to rules-engines. There is more dis-information out there on rules-engines than on any other tech topic that I’ve ever researched. It is really, really shocking the amount of inaccurate, confused, and just plain wrong information out there.
The problem with it is that it makes it harder for people who want to learn more about the topic by wasting their time and presenting the topic as very, very shallow and simplistic. It makes rules-engines very, very easy to blow off as sort of a joke and nothing more than pricey business rules engines. That is sad, too, because rules-engines provide a very nuanced and special programming style all their own that every programmer should at least learn.
In order to avoid this, I tried to diligently record all of the materials that I have found valuable, including Wikipedia pages. My hope in sharing them is that they provide some baseline for getting started, that worked for at least one person. My approach was to read and bookmark internally to the site, and also do research out of the site. It wasn’t a race, I took time to take it in, reading as many times as necessary for it to make sense, including re-reading it over as many days or weeks as I saw fit. The topics are grouped into sections that are somewhat logically related, and definitely do relate to one another, and try to help make it easier to access the topics in the following group.
Rules-engines comes from a rich computational heritage, but strangely get a fraction of a percentage of coverage even in comparison to seemingly fringe topics like Lisp, so I hope that you have as much fun reading as I did, it was really enlightening!
Part of my path to knowledge engineering mastering has been to read everything available out there today about the modern knowledge engineering landscape. IntelliFest graciously posted all of their presentations from 2010-2012, and all of them are helpful. The following, though, were particularly helpful to me, and I wanted to share which ones and why, they follow:
Continue reading “IntelliFest Favorite Presentations: 2010-2012”
Over the last few weeks nights and weekends I’ve played around with Jess studying up on rules engines and expert systems. The approach of focusing on the limited reality defined by the facts and rules in the universe of the engine along with letting go of control of sequencing are surprisingly freeing. Memories of event loops, OOAD, OOP, multimethods, state machines, horribly hand-written code, and event handlers all come to mind. It is fascinating to see how well some things can be simplified. It makes me wonder why we ever choose one approach over another. Supposedly we always use the best tool for the job; but in practice most of us learn one halfway decent approach (“tool”) once and end up using it forever. I suppose that is a human trait and not unique to problem solving with programming languages.