<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Ruleby - All</title>
    <link>http://ruleby.org/</link>
    <pubDate>Sun, 03 Aug 2008 19:24:51 GMT</pubDate>
    <description>Ruleby - All</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>Blog post - A DSL can change the way you think</title>
      <link>http://ruleby.org/blog/2</link>
      <guid>http://ruleby.org/blog/2</guid>
      <description>&lt;p&gt;A domain specific language (DSL) is often nothing more than a clever API. But in many cases, a DSL redefines how a programmer thinks about a program. That is the goal in the Ruleby project. Ruleby is a rule engine written entirely in Ruby. As such, it supports a DSL that is based on the Ruby language. This DSL gives programmers the ability to think about &amp;#8220;what&amp;#8221; a program is going to do, rather &amp;#8230;&lt;/p&gt;</description>
      <pubDate>Mon, 03 Sep 2007 14:30:42 GMT</pubDate>
    </item>
    <item>
      <title>Blog post - Ruleby: the Rule Engine for Ruby</title>
      <link>http://ruleby.org/blog/1</link>
      <guid>http://ruleby.org/blog/1</guid>
      <description>&lt;p&gt;Good programming depends on selecting the right tool for the job. In most cases imperative languages like Ruby, Java and C++ are good solutions. But they are not perfect. This article will present some of these cases and introduce a new tool that improves one imperative language: Ruby.&lt;/p&gt;


	&lt;h3&gt;Lessons from Dijkstra&lt;/h3&gt;


	&lt;p&gt;Imperative programming often results in complex code with a myriad of state tran&amp;#8230;&lt;/p&gt;</description>
      <pubDate>Mon, 03 Sep 2007 14:25:31 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>
  </channel>
</rss>
