<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Drools &#8211; Getting Your Feet Wet with Open Source</title>
	<atom:link href="http://pathfindersoftware.com/2006/04/drools_getting_/feed/" rel="self" type="application/rss+xml" />
	<link>http://pathfindersoftware.com/2006/04/drools_getting_/</link>
	<description>The Fastest Way to Launch Successful Software</description>
	<lastBuildDate>Thu, 19 Jan 2012 16:36:03 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Which rule is better</title>
		<link>http://pathfindersoftware.com/2006/04/drools_getting_/#comment-5093</link>
		<dc:creator>Which rule is better</dc:creator>
		<pubDate>Tue, 06 Nov 2007 23:22:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.pathf.com/blogs/2006/04/drools_getting_/#comment-5093</guid>
		<description>&lt;p&gt;If I have 5000 rules total. But I can group them into 20 or more rule sets. So I can create over 20 working memory and call them at run time.&lt;/p&gt;

&lt;p&gt;In that case, which engine is better, drool or jess.&lt;/p&gt;

&lt;p&gt;I compared between jess7 and drool 2 with 100 rules and call them 10000 times separately. It turns out drool 2 is faster. Not sure it&#039;s correct result or not&lt;/p&gt;</description>
		<content:encoded><![CDATA[<p>If I have 5000 rules total. But I can group them into 20 or more rule sets. So I can create over 20 working memory and call them at run time.</p>
<p>In that case, which engine is better, drool or jess.</p>
<p>I compared between jess7 and drool 2 with 100 rules and call them 10000 times separately. It turns out drool 2 is faster. Not sure it&#8217;s correct result or not</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Lin</title>
		<link>http://pathfindersoftware.com/2006/04/drools_getting_/#comment-5092</link>
		<dc:creator>Peter Lin</dc:creator>
		<pubDate>Wed, 05 Apr 2006 18:47:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.pathf.com/blogs/2006/04/drools_getting_/#comment-5092</guid>
		<description>&lt;p&gt;Sadly, you&#039;re 100% correct about the literature on RETE. I&#039;ve probably read over 50 research papers on RETE and most of the suck. Many of them gloss over important details like why a betaNode needs to take a list of fact on the left-input and a single fact on the right-input. Doorenbos&#039; RETE-UL is one of the better papers, though it is still difficult for people to understand. Even though I work on rule engines, I have to read and re-read it to get the subtle details.&lt;/p&gt;

&lt;p&gt;I&#039;m generally a loud mouth about RETE for this reason. Many people have a hard time figuring out what RETE really is. Hopefully once I am done with the section on RETE for the new Drools3 manual, it will be a bit easier to understand. Not sure I can accomplish that, but I&#039;m making an attempt.&lt;/p&gt;

&lt;p&gt;peter&lt;/p&gt;</description>
		<content:encoded><![CDATA[<p>Sadly, you&#8217;re 100% correct about the literature on RETE. I&#8217;ve probably read over 50 research papers on RETE and most of the suck. Many of them gloss over important details like why a betaNode needs to take a list of fact on the left-input and a single fact on the right-input. Doorenbos&#8217; RETE-UL is one of the better papers, though it is still difficult for people to understand. Even though I work on rule engines, I have to read and re-read it to get the subtle details.</p>
<p>I&#8217;m generally a loud mouth about RETE for this reason. Many people have a hard time figuring out what RETE really is. Hopefully once I am done with the section on RETE for the new Drools3 manual, it will be a bit easier to understand. Not sure I can accomplish that, but I&#8217;m making an attempt.</p>
<p>peter</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dietrich Kappe</title>
		<link>http://pathfindersoftware.com/2006/04/drools_getting_/#comment-5091</link>
		<dc:creator>Dietrich Kappe</dc:creator>
		<pubDate>Wed, 05 Apr 2006 18:20:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.pathf.com/blogs/2006/04/drools_getting_/#comment-5091</guid>
		<description>&lt;p&gt;Peter,&lt;/p&gt;

&lt;p&gt;thanks for clarrifying this. Clearly my reading of the drools2 source code was superficial. But I think this points out why in fact so many commercial vendors have a hard time implementing RETE properly (or at all).&lt;/p&gt;

&lt;p&gt;In their defense, the literature on the RETE algorithm isn&#039;t exactly brimming with charm and friendliness. I have most of Forgy&#039;s papers as well as the various books and articles on Jess and Clips, but I have yet to see one that would make sense to a 12th-grader.&lt;/p&gt;</description>
		<content:encoded><![CDATA[<p>Peter,</p>
<p>thanks for clarrifying this. Clearly my reading of the drools2 source code was superficial. But I think this points out why in fact so many commercial vendors have a hard time implementing RETE properly (or at all).</p>
<p>In their defense, the literature on the RETE algorithm isn&#8217;t exactly brimming with charm and friendliness. I have most of Forgy&#8217;s papers as well as the various books and articles on Jess and Clips, but I have yet to see one that would make sense to a 12th-grader.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Lin</title>
		<link>http://pathfindersoftware.com/2006/04/drools_getting_/#comment-5090</link>
		<dc:creator>Peter Lin</dc:creator>
		<pubDate>Wed, 05 Apr 2006 17:48:11 +0000</pubDate>
		<guid isPermaLink="false">http://www.pathf.com/blogs/2006/04/drools_getting_/#comment-5090</guid>
		<description>&lt;p&gt;I thought this might interest you.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://woolfel.blogspot.com/2006/03/jess6-vs-drools3-vs-clips-623.html&quot; rel=&quot;nofollow&quot;&gt;http://woolfel.blogspot.com/2006/03/jess6-vs-drools3-vs-clips-623.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I did a quick comparison in March between JESS, Clips and Drools3. The results aren&#039;t final, but using the new RETE core, drools3 is now faster than clips6.2.&lt;/p&gt;</description>
		<content:encoded><![CDATA[<p>I thought this might interest you.</p>
<p><a href="http://woolfel.blogspot.com/2006/03/jess6-vs-drools3-vs-clips-623.html" rel="nofollow">http://woolfel.blogspot.com/2006/03/jess6-vs-drools3-vs-clips-623.html</a></p>
<p>I did a quick comparison in March between JESS, Clips and Drools3. The results aren&#8217;t final, but using the new RETE core, drools3 is now faster than clips6.2.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Lin</title>
		<link>http://pathfindersoftware.com/2006/04/drools_getting_/#comment-5089</link>
		<dc:creator>Peter Lin</dc:creator>
		<pubDate>Wed, 05 Apr 2006 17:42:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.pathf.com/blogs/2006/04/drools_getting_/#comment-5089</guid>
		<description>&lt;p&gt;One reason Drools3 is a complete rewrite is that drools2 was only forward chaining. You can ask Mark and michael to verify that. I spent quite a bit of time in 2004 with Mark to figure out exactly where Drools2 differs from RETE. Drools3 core is based on a clean implementation of RETE I donated in 2005.&lt;/p&gt;

&lt;p&gt;There are a couple of differences between drools2 and drools3.&lt;/p&gt;

&lt;p&gt;I. drools2 did not store alpha memories. this affects retract and modify performance&lt;/p&gt;

&lt;p&gt;II. drools2 beta node performed joins arbitrarily and the design took a list of facts for both left and right input. In drools3, the right input is a single fact and the left is still a list of facts&lt;/p&gt;

&lt;p&gt;III. drools2 compiled the rules such that it didn&#039;t follow Forgy&#039;s description of the compilation algorithm. I have an old blog that describes this in detail, but I&#039;m too lazy to dig it up&lt;/p&gt;

&lt;p&gt;There are a few other differences which make drools2 a simple forward chaining engine. At one point, Mark revised the documentation on drools website to state drools2 &quot;is inspired RETE, but does not conform to strict RETE.&quot; Once work on Drools3 started, the was revised I believe. I don&#039;t keep track of the website changes, but it was changed several times since december 2004.&lt;/p&gt;

&lt;p&gt;One very easy way to prove that drools2 isn&#039;t RETE is to load 200 rules and compare the results to 50 rules. There are actually many engines out there claiming to be RETE, but are not. For example, pychinko, and jena2 both claim to be RETE, but they are not. Neither exhibit the scalability of RETE when the number of rules increase or facts change during the inference cycle. I have several dozen blog entries that explains how and why pychinko and jena2 do not satisfy RETE algorithm.&lt;/p&gt;

&lt;p&gt;I hope this clarifies things.&lt;/p&gt;</description>
		<content:encoded><![CDATA[<p>One reason Drools3 is a complete rewrite is that drools2 was only forward chaining. You can ask Mark and michael to verify that. I spent quite a bit of time in 2004 with Mark to figure out exactly where Drools2 differs from RETE. Drools3 core is based on a clean implementation of RETE I donated in 2005.</p>
<p>There are a couple of differences between drools2 and drools3.</p>
<p>I. drools2 did not store alpha memories. this affects retract and modify performance</p>
<p>II. drools2 beta node performed joins arbitrarily and the design took a list of facts for both left and right input. In drools3, the right input is a single fact and the left is still a list of facts</p>
<p>III. drools2 compiled the rules such that it didn&#8217;t follow Forgy&#8217;s description of the compilation algorithm. I have an old blog that describes this in detail, but I&#8217;m too lazy to dig it up</p>
<p>There are a few other differences which make drools2 a simple forward chaining engine. At one point, Mark revised the documentation on drools website to state drools2 &#8220;is inspired RETE, but does not conform to strict RETE.&#8221; Once work on Drools3 started, the was revised I believe. I don&#8217;t keep track of the website changes, but it was changed several times since december 2004.</p>
<p>One very easy way to prove that drools2 isn&#8217;t RETE is to load 200 rules and compare the results to 50 rules. There are actually many engines out there claiming to be RETE, but are not. For example, pychinko, and jena2 both claim to be RETE, but they are not. Neither exhibit the scalability of RETE when the number of rules increase or facts change during the inference cycle. I have several dozen blog entries that explains how and why pychinko and jena2 do not satisfy RETE algorithm.</p>
<p>I hope this clarifies things.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dietrich Kappe</title>
		<link>http://pathfindersoftware.com/2006/04/drools_getting_/#comment-5088</link>
		<dc:creator>Dietrich Kappe</dc:creator>
		<pubDate>Tue, 04 Apr 2006 21:12:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.pathf.com/blogs/2006/04/drools_getting_/#comment-5088</guid>
		<description>&lt;p&gt;Peter,&lt;/p&gt;

&lt;p&gt;I&#039;m not sure you&#039;re correct. I&#039;ve been through the Drools source code. It&#039;s described as RETE-OO in the docs and bears enough resemblance to other RETE implementations I&#039;ve seen to look like RETE. Specifically, it is building a network of conditionals and join nodes and has working memory and conflict resolution and all that good RETE jazz.&lt;/p&gt;

&lt;p&gt;I know it has issues and doesn&#039;t support full first order logic. I&#039;ll accept that it might not be a good or complete implementation of RETE. What, though, makes you say that is isn&#039;t RETE at all but instead a &quot;simple forward chaining implementation?&quot;&lt;/p&gt;

&lt;p&gt;As for pseudo natural language, I&#039;ll grant you that it can be useful in certain limited circumstances, but I&#039;ve seen it lead to spaghetti code results if used improperly.&lt;/p&gt;</description>
		<content:encoded><![CDATA[<p>Peter,</p>
<p>I&#8217;m not sure you&#8217;re correct. I&#8217;ve been through the Drools source code. It&#8217;s described as RETE-OO in the docs and bears enough resemblance to other RETE implementations I&#8217;ve seen to look like RETE. Specifically, it is building a network of conditionals and join nodes and has working memory and conflict resolution and all that good RETE jazz.</p>
<p>I know it has issues and doesn&#8217;t support full first order logic. I&#8217;ll accept that it might not be a good or complete implementation of RETE. What, though, makes you say that is isn&#8217;t RETE at all but instead a &#8220;simple forward chaining implementation?&#8221;</p>
<p>As for pseudo natural language, I&#8217;ll grant you that it can be useful in certain limited circumstances, but I&#8217;ve seen it lead to spaghetti code results if used improperly.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Lin</title>
		<link>http://pathfindersoftware.com/2006/04/drools_getting_/#comment-5087</link>
		<dc:creator>Peter Lin</dc:creator>
		<pubDate>Tue, 04 Apr 2006 20:55:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.pathf.com/blogs/2006/04/drools_getting_/#comment-5087</guid>
		<description>&lt;p&gt;There&#039;s a slight error in your post. Drools 2 is not RETE. It is a simple forward chaining implementation and has major issues at the number of rules goes over 100. Drools 3 is full RETE and does support things like First Order Logic and truth maintenance. The old drools language is also being replaced with a newer CLIPS inspired language.&lt;/p&gt;

&lt;p&gt;Pseudo-natural language is useful for narrowly defined domains like regulatory compliance. Things like 1940Act, FSA and other govern regulations. Other areas where pseudo-natural language works well is mortgage and lending scenarios. In those cases though, it&#039;s really just a form of DSL (domain specific language).&lt;/p&gt;

&lt;p&gt;It not like other pseudo-natural language attempts like &quot;constrained english&quot; which some researchers are working on.&lt;/p&gt;

&lt;p&gt;peter&lt;/p&gt;</description>
		<content:encoded><![CDATA[<p>There&#8217;s a slight error in your post. Drools 2 is not RETE. It is a simple forward chaining implementation and has major issues at the number of rules goes over 100. Drools 3 is full RETE and does support things like First Order Logic and truth maintenance. The old drools language is also being replaced with a newer CLIPS inspired language.</p>
<p>Pseudo-natural language is useful for narrowly defined domains like regulatory compliance. Things like 1940Act, FSA and other govern regulations. Other areas where pseudo-natural language works well is mortgage and lending scenarios. In those cases though, it&#8217;s really just a form of DSL (domain specific language).</p>
<p>It not like other pseudo-natural language attempts like &#8220;constrained english&#8221; which some researchers are working on.</p>
<p>peter</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic (User agent is rejected)
Page Caching using memcached (User agent is rejected)

Served from: pathfindersoftware.com @ 2012-02-09 23:20:43 -->
