Sunday, 2 May 2010

Intelligent services and REST

AI is a broad subject. On the one hand there's the world of Algorithms, measures of uncertainty, different models of learning, and on the other there's the problem of accessibitity.
Basically, how do you simplify AI tools so that they have the maximum useability?

We've had a suite of Rule based tools for most of the last decade with a simple-ish interface.
You cab data mine by preparing data in XML, preparing a spec, also in XML, and by firing the data and the spec at the data mining engine you create a rule set, (you've guessed it, in XML) and a bunch of performance figures showing how well the mining run worked.

Similarly you can test a rule set for logical holes (lacunae) using our lacuna project by firing a rule set at it and getting back the report.

And finaly, simples of all, you can use a rule set to make an inference by presenting data in XML to the inference engine, the rule set, and retrieve a new copy of the data with the results inserted in the appropriate points.

Up until now we've used SOAP web services to access these facilities, but it's finally dawned on us that a REST type interface makes more sense. Scientio's website is implemented in Asp.Net MVC, and the new version in MVC V 2, making lots of use of RIA services.

RIA Services implements the Odata spec in the newest version, which makes creating RestFul interfaces really easy.

So with MVC we can create a directory structure that follows REST practices. For instance,

online/XmlMiner/Edit/

will bring up the rule editor on that selected rule set, while:

RuleService/infer?&

will perform an inference on previously loaded data and rule sets.

We've extended this metaphor to all the services we provide in the upcoming revised Scientio site.

No comments: