<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Ruleby - Wiki</title>
    <link>http://ruleby.org/</link>
    <pubDate>Sun, 03 Aug 2008 19:24:51 GMT</pubDate>
    <description>Ruleby - Wiki</description>
    <item>
      <title>Wiki - Ruleby</title>
      <link>http://ruleby.org/wiki/Ruleby</link>
      <guid>http://ruleby.org/wiki/Ruleby</guid>
      <description>&lt;p&gt;Ruleby is a rule engine written in the Ruby language. It is a system for executing a set of IF-THEN statements known as production rules. These rules are matched to objects using the forward chaining Rete algorithm.  Ruleby provides an internal Domain Specific Language (DSL) for building the productions that make up a Ruleby program.&lt;/p&gt;


	&lt;p&gt;If you are just getting started, take a look at the &amp;#8220;Quic&amp;#8230;&lt;/p&gt;</description>
      <pubDate>Sun, 03 Aug 2008 19:24:51 GMT</pubDate>
    </item>
    <item>
      <title>Wiki - Quick Start</title>
      <link>http://ruleby.org/wiki/Quick+Start</link>
      <guid>http://ruleby.org/wiki/Quick+Start</guid>
      <description>&lt;p&gt;This page provides a brief tutorial on how to get up and running with Ruleby.&lt;/p&gt;


	&lt;p&gt;First, make sure you have Ruby installed.&lt;/p&gt;


	&lt;h2&gt;Installing the Gem&lt;/h2&gt;


	&lt;p&gt;Download the Ruleby Gem from RubyForge, and install the Gem with the following command&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;gem install ruleby&lt;/code&gt;&lt;/pre&gt;


	&lt;h2&gt;Downloading the Source&lt;/h2&gt;


	&lt;p&gt;Install an Git, and enter the following command&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;git clone git://github.com/mattup/ruleby.git&lt;/code&gt;&lt;/pre&gt;


	&lt;p&gt;...&lt;/p&gt;</description>
      <pubDate>Mon, 23 Jun 2008 20:15:37 GMT</pubDate>
    </item>
    <item>
      <title>Wiki - Ferrari</title>
      <link>http://ruleby.org/wiki/Ferrari</link>
      <guid>http://ruleby.org/wiki/Ferrari</guid>
      <description>Ferrari is one of the syntaxes in &lt;a href="http://ruleby.org/wiki/The+Ruleby+DSL"&gt;The Ruleby DSL&lt;/a&gt;. It defines four parameters for the &amp;#8216;rule&amp;#8217; method:
	&lt;ol&gt;
	&lt;li&gt;An optional &lt;code&gt;Symbol&lt;/code&gt; that is a unique identifier for the rule &lt;/li&gt;
		&lt;li&gt;An optional &lt;code&gt;Hash&lt;/code&gt; that contains rule attributes (such as priority)&lt;/li&gt;
		&lt;li&gt;A variable number of &lt;code&gt;Arrays&lt;/code&gt; representing patterns (the &#8220;left hand side&#8221;)&lt;/li&gt;
		&lt;li&gt;A block that will be executed if the rule is satisfied (the &#8220;right hand sid&amp;#8230;&lt;/li&gt;
	&lt;/ol&gt;</description>
      <pubDate>Sun, 09 Dec 2007 01:33:04 GMT</pubDate>
    </item>
    <item>
      <title>Wiki - Le Tigre</title>
      <link>http://ruleby.org/wiki/Le+Tigre</link>
      <guid>http://ruleby.org/wiki/Le+Tigre</guid>
      <description>Le Tigre is one of the syntaxes in &lt;a href="http://ruleby.org/wiki/The+Ruleby+DSL"&gt;The Ruleby DSL&lt;/a&gt;.  It defines four parameters for the rule method:
	&lt;ol&gt;
	&lt;li&gt;An optional &lt;code&gt;Symbol&lt;/code&gt; that is a unique identifier for the rule&lt;/li&gt;
		&lt;li&gt;An optional &lt;code&gt;Hash&lt;/code&gt; that contains rule attribute (such as priority)&lt;/li&gt;
		&lt;li&gt;A variable number of &lt;code&gt;Strings&lt;/code&gt; representing patterns (the &#8220;left hand side&#8221;)&lt;/li&gt;
		&lt;li&gt;A block that will be executed if the rule is satisfied (the &#8220;right hand side&amp;#8230;&lt;/li&gt;
	&lt;/ol&gt;</description>
      <pubDate>Sun, 09 Dec 2007 01:31:59 GMT</pubDate>
    </item>
    <item>
      <title>Wiki - Interface Description</title>
      <link>http://ruleby.org/wiki/Interface+Description</link>
      <guid>http://ruleby.org/wiki/Interface+Description</guid>
      <description>&lt;p&gt;Ruleby provides a pure Ruby Domain Specific Language (DSL) for defining rules, and asserting facts to the system. This interface takes advantage of the language features in Ruby that make it a good base for creating DSLs.&lt;/p&gt;


	&lt;p&gt;The following figure is an example of a Ruleby rule.&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;rule [m.status == :HELLO] do |v|
  puts v[:m].message
end&lt;/code&gt;&lt;/pre&gt;


	&lt;p&gt;In this example, the left hand side of the prod&amp;#8230;&lt;/p&gt;</description>
      <pubDate>Sun, 09 Dec 2007 01:30:35 GMT</pubDate>
    </item>
    <item>
      <title>Wiki - Benchmarks</title>
      <link>http://ruleby.org/wiki/Benchmarks</link>
      <guid>http://ruleby.org/wiki/Benchmarks</guid>
      <description>&lt;h1&gt;Miss Manners&lt;/h1&gt;


	&lt;p&gt;Ruleby supports the standard &#8220;Miss Manners&#8221; rule engine benchmark. This performance test, as described in &lt;em&gt;Effects of Database Size on Rule System Performance: Five Case Studies&lt;/em&gt; [&lt;a href="http://www.sigmod.org/vldb/conf/1991/P287.PDF"&gt;PDF&lt;/a&gt;], uses a depth-first search to determine the alternating seating arrangements of males and females with one common hobby.&lt;/p&gt;


	&lt;h3&gt;Disclaimer&lt;/h3&gt;


	&lt;p&gt;Miss M&amp;#8230;&lt;/p&gt;</description>
      <pubDate>Fri, 21 Sep 2007 20:12:59 GMT</pubDate>
    </item>
    <item>
      <title>Wiki - The Ruleby DSL</title>
      <link>http://ruleby.org/wiki/The+Ruleby+DSL</link>
      <guid>http://ruleby.org/wiki/The+Ruleby+DSL</guid>
      <description>&lt;p&gt;All rules in Ruleby are created using the &amp;#8216;rule&amp;#8217; method.  This method is dynamic in that the arguments it takes can vary.  It accepts three different syntaxes, and will detect which is being used when it is invoked.&lt;/p&gt;


The three syntaxes are:
	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://ruleby.org/wiki/Ferrari"&gt;Ferrari&lt;/a&gt; (Array based)&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://ruleby.org/wiki/Le+Tigre"&gt;Le Tigre&lt;/a&gt; (String based)&lt;/li&gt;
		&lt;li&gt;Blue Steel (Block based)&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;It is important to note that most rule engines do not consi&amp;#8230;&lt;/p&gt;</description>
      <pubDate>Sun, 02 Sep 2007 22:41:43 GMT</pubDate>
    </item>
    <item>
      <title>Wiki - Technical Description</title>
      <link>http://ruleby.org/wiki/Technical+Description</link>
      <guid>http://ruleby.org/wiki/Technical+Description</guid>
      <description>&lt;h2&gt;Rules&lt;/h2&gt;


	&lt;p&gt;Each rule in a Ruleby program is made up of a pattern, and an action. The pattern is the left hand side (LHS) of the if-then production, and the action is the right hand side (RHS).&lt;/p&gt;


	&lt;p&gt;The pattern (LHS) is actually made up of one or more sub-patterns. Each pattern either checks that an object exists in working memory, or that an object does not exist in working memory. If there are m&amp;#8230;&lt;/p&gt;</description>
      <pubDate>Tue, 28 Aug 2007 18:52:04 GMT</pubDate>
    </item>
    <item>
      <title>Wiki - FAQ</title>
      <link>http://ruleby.org/wiki/FAQ</link>
      <guid>http://ruleby.org/wiki/FAQ</guid>
      <description>&lt;p&gt;&lt;strong&gt;What makes Ruleby different from other Ruby rules engines?&lt;/strong&gt;&lt;br/&gt;
Ruleby implements the forward chaining Rete algorithm for pattern matching. This gives Ruleby a significant advantage when it comes to speed and scalability.&lt;/p&gt;


	&lt;p&gt;The Rete algorithm creates a network of nodes where each node corresponds to a pattern in the left-hand-side of a rule. Therefore, it&amp;#8217;s performance is theoretically ind&amp;#8230;&lt;/p&gt;</description>
      <pubDate>Tue, 28 Aug 2007 18:50:58 GMT</pubDate>
    </item>
  </channel>
</rss>
