[erlang-questions] Erlang and artificial intelligence: new article on trapexit
Corrado Santoro
csanto@REDACTED
Tue Jul 17 17:38:35 CEST 2007
Hi Mike,
what a long list of questions!! .... :)
French, Mike wrote:
> Interesting - you should link to your slides:
Done :)
> How does your system perform ? Have you run any standard benchmarks ?
> How does your system scale to large knowledge base and/or large rule sets ?
Currently, ERESYE implements the basic RETE algorithm, with no
particular optimizations. We are going to perform a set of benchmarks to
evaluate performances and scalability. As a preliminary result, I can
say that the "sieve" algorithm performs by executing approax 200
rules/second.
> What possibility is there for fine-grain concurrency in a RETE system ?
AFAIK, concurrency in RETE is hard and active rules are executed
sequentially: the basic problem is that if you have rules A and B
waiting for execution, the code in A could invalidate B that has to be
no more executed; if you run A and B in parallel, you cannot control
such a situation. But as far as I remember, there should be some papers
on parallelising RETE. Francesca maybe remembers some of them??
> How could you stream facts into the server in non-Erlang format (XML) ?
Well... decide a DTD, parse your XML file using xmerl, generate tuples
and populate your ERESYE KB.
> How could you load and update rules at runtime from non-Erlang format (XML)
> ?
> i.e. interpret rules, or on-the-fly compilation and loading of rules.
See below. But you need a language to express the action to be done.
Indeed the code of a rule can contain not only statements to assert or
retract a fact, but also standard pieces of Erlang code.
> Queries are a bit like dynamic rules, where the results are not asserted to
> the knowledge base but streamed back to the client.
Queries are not dynamic rules: in current implementation, the overall KB
is filtered using the given template.
> So having a dynamic rule
> compilation system would support optimized streaming queries,
> including event correlation and temporal pattern matching.
But ERESYE supports dynamic rules, even if there isn't an explicit API.
Function "wait_and_retract" waits for the assertion of a fact with a
given template and atomically retracts it. Such a functionality is
achieved by dynamically adding a rule and then removing it.
> Is your system still under active development ?
Yes, even if not at a constant rate.
> e.g. in your presentation you mention adding negation
Negation is supported in ERESYE; the issue is that the syntax is not so
elegant.
> What is the software license ?
We release it with GPLv3.
> P.S. Good discussion of the Java Drools rule engine
> design, implementation and benchmarking here:
Thank you very much!!!
All the best,
--Corrado
--
==================================================================
Eng. Corrado Santoro, Ph.D.
University of Catania - ITALY - Engineering Faculty
Tel: +39 095 7382380 VoIP: sip:7035@REDACTED
Personal Home Page: http://www.diit.unict.it/users/csanto
NUXI Home Page: http://nuxi.diit.unict.it
==================================================================
More information about the erlang-questions
mailing list