Hi Daniel,
How are you measuring the leak?
It is important to look at the heap used and not the total heap allocated
to the JVM process. What I've done in the past with JESS is write a
function that uses java's runtime class to get actual memory used stats.
Runtime rt =
is it's
very tough. The simplest approach is to generate facts for each rule,
assert those facts and check the rule fired. Beyond that, you'd have to
analyze the RETE network to calculate the rule dependency graph and compare
the rules fired against the dependency graph.
peter lin
On Thu, Jun 6, 2013
Back in 2002-2003 I used JESS to build a pre-trade compliance engine
for a trading platform.
JESS is a fantastic expert system shell. Like any other tool, the key
is taking time to learn how to use it. Logic programming is different
than imperative or OOP. The benefit is the result of how JESS is
I'll second that advice. There's other resources on TMS. I've used
this page in the past, which provides a high level explanation of
different types of TMS
http://www.cis.temple.edu/~ingargio/cis587/readings/tms.html. Read as
much as you can on TMS if that's critical to your research. ACMQueue
is
implemented in jess? Do you solely rely on the Rete memory nodes and tokens
for this purpose?
On Fri, Jun 10, 2011 at 1:21 AM, Peter Lin wool...@gmail.com wrote:
By performance of RETE what are you referring to?
There are many aspects of RETE, which one must study carefully. It's
good that you're
Although it may be obvious to some people, I thought I'd mention
this well known lesson.
Do not load huge knowledge base into memory. This lesson is well
documented in existing literature on knowledge base systems. it's also
been discussed on JESS mailing list numerous times over the years, so
I
on the performance of the
Rete.
Lastly, I am not doing an RDF based mapping; rather, I follow the method of
Description Logic Programs for translating each Class/Property of OWL into
its corresponding template.
--Oli.
On Fri, Jun 10, 2011 at 12:03 AM, Peter Lin wool...@gmail.com wrote:
Although it may
I've also pondered the idea of clojure + jess with others.
The benefits of doing full LISP is powerful, even if a significant
percent of the users will never use features beyond the existing CLIPS
functionality. The other benefit I see with clojure is the
transactional memory. The STM model is
By temporal operators, what are you referring to?
it's pretty easy to add a function in JESS that does date comparison
and then use them in a rule.
for example, in the past I've implemented functions like between-time
that takes 3 input values. another example is eq-hour that just checks
if a
I read the paper when it first came out. The arguments proposed in the
paper are only applicable to rule engines that are object-oriented in
design and not applicable to expert system shells like JESS, Clips or
ART.
The limitations are the result of the design of the rule engine and
not a
In the interest of exploration and education, here's a few random thoughts.
The approach wolfgang mentions is an old knowledge base technique. I
like to use it for data that is constant-like. Things like code
reference tables. One example of this is auto insurance rating. Many
companies rate
edson is a member of drools team for those who don't know.
On Sat, Jan 1, 2011 at 6:01 PM, dc tech dctech1...@gmail.com wrote:
Thank's Edson. Will check it out.
Drools seems to have come a long compared to when I last looked at it -
given that you have a foot in both camps, any wisdom and
A production rule engine like JESS is an inference engine.
Business process engine is not an inference engine
A validation rule engine is not an inference engine
A workflow engine is not an inference engine
There's many definitions for rule engine and many vendors claim their
bpm, workflow, or
The only way to get around java collection limitations would be to
use AspectJ and weave in java beans property change support. You'd
have to assert each list to jess.rete. Not sure if that will work, but
it's a thought.
peter
On Fri, Mar 19, 2010 at 8:31 AM, Ernest Friedman-Hill
Said and I did something similar to this several years back. What I
did was I wrote a JMS client and passed messages between engine
instances via JMS.
I've been thinking about making that code available to others on my
jess contrib project site. I'm happy to clean it up and post if others
find it
If I understand the rules correctly. the example is using a fact to
define intervals. Doing it that way incurs a huge cost, since the
engine has to retract the fact at the end of the time window.
It would be more efficient to write a time function(s) and use them in
the LHS. That avoids hammering
you can use the match function to see the matches
the other option is to calculate the average cost of the RETE network
to get an estimated cost.
peter
On Wed, Sep 30, 2009 at 11:21 AM, jo etaoi...@yahoo.com wrote:
Is there a way to coax some statistics out of jess to see the impact of
the simplest solution is to start JESS with the appropriate heap settings
-Xms256m -Xmx1024m
the default heap in java is 64mb
peter
On Mon, Sep 14, 2009 at 9:42 AM, jo etaoi...@yahoo.com wrote:
Hi
I got following error, which surprises me as I try to keep the amount of
facts to a minimum.
free to email me
directly.
peter lin
To unsubscribe, send the words 'unsubscribe jess-users y...@address.com'
in the BODY of a message to majord...@sandia.gov, NOT to the list
(use your own address!) List problems? Notify owner
that's pretty cool.
I did something similar a few years back for a W3C demo using JMS to
remotely execute rules in JESS
peter
On Fri, Jun 19, 2009 at 1:56 PM, Lorenzo Miguel Elguea
Fernandezlelg...@up.edu.mx wrote:
Hi,
excuse my english...
i have a proyect, to use services over instant
This is just my bias opinion, but the bigger issue is this. Rule
programming is logic programming. Therefore you need to think in those
terms. What you need to do is check if the item is already in the box
before firing the rule. That can be done with either TESTCE.
The rule you have tells the
unfortunately, JSR94 is very limited and isn't worth the hassle. it's
really there so that vendors can check off JSR94 from their list.
JSR94 really has no value, so just use JESS API directly.
peter
2009/5/8 Henschel, Jörg j.hensc...@itcampus.de:
I'm trying to use Jess in a JSR-94
writing your own rule engine wrapper is simple, so that is definitely
a better solution than using JSR94.
I've done that several times since 2000.
On Fri, May 8, 2009 at 9:59 AM, Wolfgang Laun wolfgang.l...@gmail.com wrote:
Harsh words have been said about JSR-94, which I won't repeat here.
JESS simply loads the file and forgets about it.
If you want to monitor a file, you'll have to do that yourself and
then call clear and batch. If you don't want to reload the entire
file, you'll have to maintain state and keep track of the last line
and then only assert the new facts.
why not
Instead of modifying the existing file, why not create a new file?
that way you can just load each new file at the set interval?
the other approach I've used in the past is to sent facts to JESS
using JMS messaging
peter
On Wed, Mar 11, 2009 at 1:00 PM, Jason Morris jason.c.mor...@gmail.com
If you're talking about dynamically loading rules at runtime and doing
fuzzy reasoning. You'll find that using drools in compiled mode won't
scale very well due to PermGen issues with SUN and IBM JDK.
In a dynamic environment, the system could add tens of thousands of
rules over a long period of
A couple of important things to consider.
By default drools uses compiled mode, which means it compiles code to
pure java when the ruleset is loaded.
To be fair, you'd have to run Drools in interpreted mode and force
drools to use mvel to evaluate the mod test.
the other option is to write a
without a sample of the rules, it's difficult to know what is happening.
peter
On Wed, Feb 18, 2009 at 6:21 PM, Lars Ermert lar...@web.de wrote:
Hello,
i am currently writing a paper about the applicability of JESS as a
Event Stream Processing Engine to evaluate its usefulness as a solution
without seeing an example of the rules, it's hard to know what is going on.
if you provide an example, it will be easier for others to provide tips
peter
On Mon, Nov 17, 2008 at 3:53 AM, Jessica Kampmann
[EMAIL PROTECTED] wrote:
Dear all,
i have performance problems asserting 11000 Facts in
I haven't tried running the rules, but the second format doesn't mean
the same thing as the first format.
normally, if I start a rule with a NOT CE, I have it match against a
literal value. Having a NOT CE that declares a binding isn't really
valid, if I'm not mistaken.
peter
On Mon, Nov 17,
what about implementing the approach Paul Haley used in ART for
backward chaining?
http://haleyai.com/wordpress/2008/03/11/goals-and-backward-chaining-using-the-rete-algorithm/
paul recently posted his old paper on his blog.
peter
On Tue, Aug 26, 2008 at 12:40 PM, Ernest Friedman-Hill
[EMAIL
if I understand what you're trying to do, you will need to use method
cal in the test pattern like
the catch is function-fact.func needs to return boolean true/false if
you want to use it in the LHS.
peter
On Thu, Aug 14, 2008 at 11:23 AM, Hal Hildebrand
[EMAIL PROTECTED] wrote:
I would like
I'm not aware of any that came close. I don't know if anyone tried to
extend JESS for modal logic. If you want to discuss this further, feel
free to email me directly.
peter
On Thu, Aug 7, 2008 at 5:07 AM, Martijn Tromm [EMAIL PROTECTED] wrote:
Thanks for you answer and sorry for my late
by modal operators, what do you mean? Do you mean modal logic?
http://en.wikipedia.org/wiki/Modal_logic
Are you looking for temporal logic support, or modal logic support.
I'm not an expert on modal logic, but many people have tried to
implement a general purpose modal logic engine. to my
The idea of adding annotations for JESS goes back several years, so I
don't think anyone questions the value of using it. The question is
really about backward compatability for those stuck with jdk1.4.2.
a few years back I ported JESS to .NET and added support for
attributes, which is the .NET
using annotation isn't hard. The only issue is backward compatability
for those stuck using IBM jdk 1.4. even with things like backport, it
may still leave some people out.
I know several people still stuck on IBM jdk1.4.
peter
On Tue, Jul 15, 2008 at 11:54 PM, Skeptic 2000 [EMAIL PROTECTED]
I could be wrong, but the restriction is needed because of the java
dot notation functionality.
http://www.jessrules.com/jess/docs/71/rules.html#patterns_simple
Jess (defrule two-same-age-different-name
?person1 - (person)
?person2 - (person {age == person1.age lastName !=
-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
On Behalf Of Peter Lin
Sent: Monday, July 14, 2008 12:43 PM
To: jess-users@sandia.gov
Subject: Re: JESS: Slot name restrictions
I could be wrong, but the restriction is needed because of the java
dot notation functionality.
http
In the past, what I've done is have a generic function, which logs
which rule + facts fired. In my case, the business user writes/edits
rules through a custom rule editor. I wrote a rule compiler to compile
the business rules to executable JESS rules. When I generate the rule,
every action calls
the example confuses me a bit. If I had to do the same thing the rule
might look like this.
(defrule assignBed
?patient - (patient
(id ?p)
(unit ?u)
(bed ?b:(eq ?b 0) ) ;; if the patient hasn't been assinged.
assuming unassigned is zero
)
(care-unit
(id
.
peter
On Wed, Jun 25, 2008 at 1:50 AM, Michael Smith
[EMAIL PROTECTED] wrote:
On Jun 24, 2008, at 8:53 AM, Peter Lin wrote:
I'm going to disagree that NRL is an anti-pattern.
OK.
It all depends on how you use it.
Agreed... though since I having a tendency to be querolous, I'd
change how
I'm going to disagree that NRL is an anti-pattern. It all depends on
how you use it. I've successfully designed and built custom business
rule languages in the past. The key is keeping the domain well defined
and narrow. Don't try to make a DSL that is a general purpose
language.
For example, say
I've done this before using a custom domain specific language. What I
did was define a syntax and grammar for a business rule language,
which was then compiled and stored as RuleML. At execution time, I
translated the RuleML to JESS clips.
in terms of storage, the rules were stored in the dsl
the solution looks pretty pretty straight forward. it could probably
be generalized to allow for n number of lathes.
peter
On Fri, Jun 20, 2008 at 3:02 AM, Jason Morris [EMAIL PROTECTED] wrote:
Hi All,
Peter Lin sent me a manual for Xpress-MP (a Fair Isaac product), since we'd
been
is
different, and you have to choose which machines to operate and for how long
and / or which workers to assign to which machines.
All in all, I was pretty happy with my solution :-)
On Fri, Jun 20, 2008 at 8:55 AM, Peter Lin [EMAIL PROTECTED] wrote:
the solution looks pretty pretty straight forward
Here's my 2 cents on visual rule programming.
Building a visual programming tool for rules is feasible, but it
depends on the scope. Take lego mindstorm for example. It uses icons
to denote an action or sensor, when the program is load on the
mindstorm control, it's converted to executable code.
that's one of the performance limitations with full fact replication
approach for distributed pattern matching. In a situation where a
significant percent of the facts always change, the most optimal method is
to replicate just the indexes. Most modern RETE implementation like JESS
already index
mnoor
On Wed, Feb 20, 2008 at 2:43 PM, Peter Lin [EMAIL PROTECTED] wrote:
that's one of the performance limitations with full fact replication
approach for distributed pattern matching. In a situation where a
significant percent of the facts always change, the most optimal method
sounds like the rule is handling join/fork from a BPM graph?
On Feb 20, 2008 10:24 AM, Hal Hildebrand [EMAIL PROTECTED] wrote:
I only posted an abstraction to figure out my problem, leaving out the
other details. What I'm doing is essentially modeling workflow which
manages to some target
I believe you need to use
(length$ multifield-expression)
and then do a test to compare the two lengths. so the rule might look like
this
(defrule myrule
(foo
(my-list ?list1)
)
(foo
(my-list ?list2)
)
(test (eq (length$ ?list1) (length$ ?list2) ) )
=
In theory it is possible to build a distributed RETE rule engine. The catch
is no rule engine today supports that capability. I filed a patent for it
back in 2003/2004. anyone interested in details can email me directly.
peter lin
On Feb 6, 2008 11:57 AM, Mohd. Noor [EMAIL PROTECTED] wrote:
Hi
What I tend to do is to write a specific function to handle cases
where a rule uses numerous nested functions. This way, it's reusable
and avoid using the accelerator.
On 6/22/05, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote:
I think Negoita, Cristian wrote:
Hi *,
I'm considering
you really should write a function to do this and make it more
generic. doing a line for line translation from java to JESS isn't
desirable.
write a custom function that implements the UserFunction interface and
put your jdbc code in there.
peter
On Wed, 2 Mar 2005 05:45:25 -0800 (PST), sivan
You may want to contact the computer science department at UMass
Amherst. I know the CKC group work on a similar tool for emergency
rooms using rule engines. If I remember correctly, they used rule
engines to recommend potential treatments and help diagnose patients.
The project was a
, load up 20 engines and measure how much RAM it
takes. Then stress test it under varying loads. Once I get a base line
of how my rules + JESS perform, I then do a real application test and
see what is realistic.
peter lin
On Tue, 14 Dec 2004 14:13:31 -0800 (PST), [EMAIL PROTECTED]
[EMAIL PROTECTED
final and a couple others
are minor.
peter
-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, December 31, 2002 10:24 AM
To: [EMAIL PROTECTED]
Subject: Re: JESS: RE: Jess and C#
I think Peter Lin wrote:
[Charset iso-8859-1 unsupported, filtering to ASCII
56 matches
Mail list logo