I’m about to start building an expert system. Or maybe I might call it a "knowledge base", or a "rule based system". It’s not an "AI", as at least in its early life it won’t have any self-learning capability, but will just take largely existing guidance from master technicians, and stick some code behind it to deliver the right advice at the right time. Expert system is a good term, or so I thought…
It’s a while since I built a rule engine, and I’ve never truly designed an expert system before, so I thought it might be a good idea to do some reading and understand the state of the art. That’s when the the trouble started. My client recommended a book on analysis for knowledge based systems, which I managed to track down for 1p + postage (that should have warned me). I got through most of the introduction, but statements such as "these new-fangled 4GLs might be interesting" and "we don’t hold with this iterative development malarkey" (I paraphrase slightly, but not much) made me realise that the "state of the art" documented was at least a generation old. The book has a few sound ideas about data structure, but pretty much everything it says about technology or process is irrelevant.
Back on Amazon, and I tried searching for "expert system", "knowledge base" and "rule based system". That generates a few hits, but nothing of any substance younger than about 12 years old, nothing on Kindle, and prices varying dramatically between a few pence and the best part of £100, both indications of "this is an old, rare book" and neither tempting me to make a punt. It doesn’t help that the summaries tend to be a list of technologies I’ve never heard of, and few seem to be focused on re-usable concepts and techniques.
OK, I thought. There’s obviously just a new term and I don’t know it. Wikipedia wasn’t much help, observing that the term "expert system" has largely gone out of use, and offering two opposing views why. Either expert systems became discredited and no-one does them any longer (I don’t believe that), or they just became "business as usual" (quite possible, but a good reason why you might write a book about them, not the opposite). No indication of the "modern" term, and few recent references.
Phone a friend. I emailed a couple of friends both of whom are quite knowledgeable in a breadth of IT topics hoping that one of them might say "Oh yes, we now just call them XXX". Nope. Both suggested AI and one suggested "cognitive computing", but as I’ve already observed, that’s a fundamentally different topic. Beyond that both were just suggesting the same terms I’d already tried.
Googling a practical question such as "rule based systems in .NET" produces a few hits and suggests that the state of technology support is pretty good. For example, Microsoft put the "Windows Workflow Foundation" into .NET in about 2008, and this includes a powerful rule engine which is perfectly reusable in its own right. So the technology is there, but again there’s not much general information on how to use it.
This appears to be a case where fashion is getting in the way. If something works, but is not "in", then authors don’t want to write about it, and editors don’t actively commission material. If the "thing" is something where the technology has improved, but not in a "sexy" way, then it goes unreflected in deeper or third party literature. Maybe that explains why Oracle seem driven to rename all their technologies every couple of years, it’s their way of attracting at least a modicum of interest even if it does confuse the hell out of developers trying to work out what has changed, and what really hasn’t.
So be it. I’m going to build a rule-based expert system knowledge base, and I don’t care if that’s not the modern term. It’s just frustrating that no-one seems to have written about how to do this with 2015 technology…