??xml version="1.0" encoding="utf-8" standalone="yes"?>国产高清精品一区,亚洲欧美日韩久久,蜜臀久久99精品久久一区二区http://www.aygfsteel.com/ericwang/category/8340.htmlzh-cnTue, 27 Feb 2007 13:12:11 GMTTue, 27 Feb 2007 13:12:11 GMT60[转]Drools in Action http://www.aygfsteel.com/ericwang/archive/2006/03/11/34787.htmlDionDionSat, 11 Mar 2006 02:02:00 GMThttp://www.aygfsteel.com/ericwang/archive/2006/03/11/34787.htmlhttp://www.aygfsteel.com/ericwang/comments/34787.htmlhttp://www.aygfsteel.com/ericwang/archive/2006/03/11/34787.html#Feedback0http://www.aygfsteel.com/ericwang/comments/commentRss/34787.htmlhttp://www.aygfsteel.com/ericwang/services/trackbacks/34787.html阅读全文

Dion 2006-03-11 10:02 发表评论
]]>
[转]Drools目?/title><link>http://www.aygfsteel.com/ericwang/archive/2006/03/11/34784.html</link><dc:creator>Dion</dc:creator><author>Dion</author><pubDate>Sat, 11 Mar 2006 02:00:00 GMT</pubDate><guid>http://www.aygfsteel.com/ericwang/archive/2006/03/11/34784.html</guid><wfw:comment>http://www.aygfsteel.com/ericwang/comments/34784.html</wfw:comment><comments>http://www.aygfsteel.com/ericwang/archive/2006/03/11/34784.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ericwang/comments/commentRss/34784.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ericwang/services/trackbacks/34784.html</trackback:ping><description><![CDATA[<strong>内容提要</strong><br>       在本文的W一部分Q我讨则引擎如何帮助你从Y件的应用逻辑中分d商业规则逻辑Q以实现商业应用的灵zL。另外,我还介lJSRQ?4规则引擎 APIQ及(qing)其开源实现Drools目Q它是这一新技术的先驱。在W二部分Q我们将介绍一个规则引擎例子,q深入地研究Drools引擎?qing)其JSRQ?4 扩展的复杂性? <div><br><strong>Z么用规则引?/strong><br>       商业世界充满了关于变化的陈词滥调Q如M事物都会(x)改变Q唯一不变的是变化{等。而在技术领域里Q情冉|好相反。我们仍然在试图解决30q前软g业中同样 的一堆问题-Q也许比30q前q要多的问题。在q去的十q_(d)IT从业人员Ҏ(gu)在Y件方法学的大量文献中Q如快速Y件开发,极限~程Q敏捯Y件开发等Q它? 无一例外地强调灵zd变化的重要性?br>       但商业通常比开发团队所依赖的Y件过E和技术改变得更加q速。当商业{划人员试图重整IT部门Q以支持新的业务转型Ӟ仍然觉得很费劌Ӏ?/div> <div><br><strong>Lost in Translation</strong><br>       虽然IT团队反应q速,但他们通常带来"?sh)话效?――ITl商业计划的执行带来的阻力和它带来的利益一样多。不q的是,在开发团队完全理解商业决{规? q实C前,规则已经改变了。在软gq入?jng)场前,它已l过时了Q需要进行重构以满新的业务需求。如果你是一个开发h员,你会(x)知道我在说什么。再也没有比 在需求变动的情况下构造Y件让开发h员更沮的事情了。作Y件开发h员,你必L业务人员更了解业务,有时q要了解更多?br>       试想一下你是一位商业决{者。假如公司的成功依赖于你对于?jng)场势敏锐的洞察力Q它常常帮助你领先于竞争者利用变化的?jng)场环境获利。每天你都会(x)得到更多? 好的?jng)场信息Q但q不要紧。完成新产品开发可能需?Q?个月Q在此期_(d)对于?jng)场大胆和敏锐的z察和信息优势可能已l浪费了。而且Q当产品发布Ӟ有这 样几U可能:(x)产品没有什么吸引h的特性,预算支Q过了品的最?jng)_布期限,或三者兼而有之?br>       情况可能q会(x)更糟Q在完成产品开发时Q市(jng)场环境和规划产品开发时相比Q已l发生了Ҏ(gu)变化。现在你必须要遵守新的规则,你已l׃你的辚w优势Q而且? 计Y件的五h中的三h已经d了公司。你必须l接手的Ch重新讲解复杂的业务。如果事情不利Q你可能发现自己要对付一个缺文档,q且你完全不了解的遗 留应用?br>       你的战略在哪出现了问题?你在哪里应该可以做到更好Q最q的轻量UY件过E,如极限编E,敏捷软g开发等都在自动单元试和Y件功能优先的重要性? 除此之外Q还有其他的原则Q你的开发团队可能也很熟(zhn),q些原则可以帮助他们寚w求的变动作出q速反应ƈ~短目的开发周期。这些原则的大多敎ͼ如系l分 解,多年前就已经出现Qƈ得到了Javaq_的支持(如JMX{)(j)Q还有如面向对象和角色徏模,已经内徏在Java语言中?br>       但Java仍然是一门相当年ȝ语言Q而且Javaq_q远q没有完备。当前在JavaC֌Q一个引人注目的新技术是Q分d业决{者的商业决策逻辑和应 用开发者的技术决{,q把q些商业决策攑֜中心数据库,让它们能在运行时Q即商务旉Q可以动态地理和修攏V这是一个你值得考虑的策略?br>       Z么你的开发团队不得不象商业经理h一P在代码中包含复杂微妙的商业决{逻辑呢?你怎样才能向他们解释决{推理的微妙之处呢?你这样做是否谨慎呢?? 能不是。象bottom line一P某些东西在解释的q程中丢׃。ؓ(f)什么要冒这L(fng)风险Q让应用代码或测试代码错误地表达你的商业决策逻辑呢?如果q样做的话,你怎样(g)查它 们的正确性呢――难道你自己惛_?fn)如何编E和~写试代码Q或者你的客户会(x)Z试软gQ你一斚w要应付市(jng)场,一斚w要应付Y件代码,q实在太困难了?br>       如果能将q些商业决策规则集中地放在一个地方,以一U你可以理解的格式定义,让你可以直接理Q而不是散落在代码的各个角落,那该有多好。如果你能把商业 决策规则独立于你的Y件代码,让开发团队作出技术决{,你将?x)获得更多好处。你的项目开发周期会(x)更短QY件对于变动的需求更灉|?/div> <div><br><strong>规则引擎标准Java API</strong><br>       2003q?1月,JavaC֌通过了Java Rule Engine API规范QJSRQ?4Q的最后草案。这个新的API让开发h员在q行时访问和执行规则有了l一的标准方式。随着新规范品实现的成熟和推向市(jng)场,开? 团队可以从应用代码中抽取出商业决策逻辑?br>       q就需要新一代的理工具Q帮助商务经理h可以定义和细化Y件系l的行ؓ(f)。不必通过开发过E来修改应用Qƈ假定可以得到正确的结果,l理人将可以随时Ҏ(gu)需要修改决{规则,q进行测试?br>       但这需要开发h员在设计pȝ时作出某些改变,q可以得到合适的开发工兗?/div> <div><br><strong>分离商务和技术的x?/strong><br>       q是一个非常简单的例子Q从l理人的角度Q说明如何分d务和技术的x炏V?br>       你管理着一个反向投资基金。你公司计算机系l的一部分用于分析股票hQ收益和每股净资Qƈ在需要时向你提出预警。这个计机pȝ的工作是Q识别出PE比率比市(jng)场^均g的股,q标记出来以便进一步的(g)查?br>       你的IT部门拥有一大堆数据Qƈ开发了一pd你可以在规则中引用的单数据对象。现在,为简单v见,假设你是一名受q良好教育的Q了解技术的理人,你了解XML的基本知识,可以让你~写和修改简单的XML规则文g?br>       你的W一个规则是Q给道琼斯所有的股票估|q剔除P/E比率大于10的股(q有点过分简化,但这里只作ؓ(f)一个例子)(j)。保留下来的股票用来生一pd报表。对于这个简单的例子Q你的规则文件看h如下Q我们将?x)过头来讨论q个文g的结构)(j)Q?/div> <div><br><stock:overvalued><br>    <stock:index> DJIA </stock:index><br>    <stock:pe> over 10.0 </stock:pe><br></stock:overvalued></div> <div><br>       一个月后,你接C家巴西分析师公司的电(sh)话,雇䄦你的公司生成一pd巴西股市(jng)的报表,但他们有更严格的标准。而目前在巴西QP/E比率?jng)场q_值是个位 敎ͼ因此你用来评估被?jng)场低股的阈值需要改变。除了较低的P/E比率Q你的新客户q要求以Price-to-Book比率作ؓ(f)参考标准?br>       你启动规则编辑器Qƈ修改规则以匹配新的评估条件。现在,规则引擎剔除巴西股市(jng)中P/E比率大于6.5Q以?qing)Price to Book 比率于{于1的股。完成规则文件修改后Q看h如下Q?/div> <div><br><stock:overvalued><br>    <stock:index> Brazil </stock:index><br>    <stock:pe> over 6.5 </stock:pe><br>    <stock:pb> over 1.0 </stock:pb><br></stock:overvalued></div> <div><br>       你无需为此向开发团队作M解释。你无需{待他们开发或试E序。如果你的规则引擎的语义_强大Q让你描q工作数据,你可以随时按需修改商业规则?br>       如果限制因素是规则的定义语言和数据模型,你可以确信这两者将?x)标准化Qƈ出现先进的编辑器和工P以简化规则的定义Q保存和l护?br>       现在Q我希望你已l清楚以下的原则Q在q个例子中,哪只股票是否被选择是一个商务决{,而不是技术决{。决定将哪只股票交给你的分析师是l理人的逻辑 ―?logic of the bottom line"。经理h作出q些决策Qƈ可以按需定制应用。这些规则因此变成了一U控制界面,一U新的商业系l用L(fng)面?/div> <div><br><strong>使用Rule开?/strong><br>       如果在这个应用场景中Q你是一个开发h员,你的工作?x)稍微轻松一些。一旦你拥有了一U用于分析股的规则语言Q你可以取出数据对象q交l规则引擎执行。我们将?x)到规则语言的讨论,但现在我们l刚才的例子?br>       你的pȝ一pd的stock bean输入规则引擎。当规则执行后,你可以选出W合条g的股ƈ可以对它们作q一步处理。也许是把它们输入报表生成系l。分析师使用q些报表帮助他们? 析股?jng)。同Ӟ老板也可能让你用新的技术分析工Pq用Dow理论预测股市(jng)的底部和剙?br>       规则引擎可以让你的系l变得更单,因ؓ(f)你无需在代码中~写商务逻辑Q如怎样选择股票Q选择股票q程中奇怪的条gl合{。这些逻辑不再q入你的代码。你可以专注于数据模型?br>       现在可以q么认ؓ(f)Q通过从应用代码中剥离出易变的商业逻辑Q你的效率会(x)更高。但凡是L例外――简单应用可能ƈ不能从规则系l中L(fng)。但如果你开发一个大型系l,有很多易变的商业逻辑Q你可以考虑在应用中集成规则引擎?br>       除了从应用代码中剥离出商业决{逻辑外,规则引擎q有其他用处。有时候你需要应用成百上千的规则q行决策Qƈ且有上千个对象和q些规则一起用。很难想? 有什么先q的人工引擎可以处理q种情况。遇到这U情况,你需要一个极快的决策法或是大型机。大型机q不便宜Q但你可以非怾宜的得到效率和可伸羃? 最好的法?/div> <div><br><strong>Bob McWhirter的Drools目</strong><br>       现在Q我要介lDrools目QCharles Forgy Rete法的一个增强的Java语言实现。Drools是一个Bob McWhirter开发的开源项目,攑֜The Codehaus上。在我写q篇文章ӞDrools发表?.0-beata-14版。在CVS中,已完整地实现了JSR94 Rule Engine APIq提供了单元试代码?br>       Rete法是Charles Forgy?979q发明的Q是目前用于生pȝ的效率最高的法Q除了私有的Rete IIQ。Rete是唯一的,效率与执行规则数目无关的决策支持法。For the uninitiated, that means it can scale to incorporate and execute hundreds of thousands of rules in a manner which is an order of magnitude more efficient then the next best algorithm。Rete应用于生产系l已l有很多q了Q但在Java开源Y件中q没有得到广泛应用(讨论Rete法的文档参?a ><font color="#0d5d91">http://herzberg.ca.sandia.gov/jess/docs/61/rete.html</font></a>。)(j)?br>       除了应用了Rete核心法Q开源Y件License?00Q的Java实现之外QDroolsq提供了很多有用的特性。其中包括实CJSR94 API和创新的规则语义pȝQ这个语义系l可用来~写描述规则的语a。目前,Drools提供了三U语义模块――Python模块QJava模块? Groovy模块。本文余下部分集中讨论JSR94 APIQ我在W二文章中讨论语义pȝ?br>       作ؓ(f)使用javax.rules API的开发h员,你的目标是构造一个RuleExecutionSet对象Qƈ在运行时通过它获得一个RuleSession对象。ؓ(f)了简化这个过E, 我编写了一个规则引擎API的fa?adeQ可以用来解释代表Drools的DRL文g的InputStreamQƈ构造一? RuleExecutionSet对象?br>       在上面提CDrools的三U语义模块,我接下来使用它们重新~写上面的例子XML规则文g。这个例子中我选择Java模块。用Java模块重新~写的规则文件如下:(x)</div> <div><br><rule-set name="StockFlagger"<br>      xmlns="<a ><font color="#0d5d91">http://drools.org/rules</font></a>"<br>      xmlns:java="<a ><font color="#0d5d91">http://drools.org/semantics/java</font></a>"></div> <div>  <rule name="FlagAsUndervalued"><br>    <parameter identifier="stock"><br>      <java:class>org.codehaus.drools.example.Stock</java:class><br>    </parameter><br>    <java:condition>stock.getIndexName().equals("DJIA");</java:condition><br>    <java:condition>stock.getPE() > 10 </java:condition><br>    <java:consequence><br>      removeObject(stock);   ( 译注Q应该是retractObject(stock) )<br>    </java:consequence><br>  </rule><br></rule-set></div> <div><br>       现在的规则文件ƈ没有上面的简z明了。别担心Q我们将在下一文章讨义模块。现在,h意观察XML文g的结构。其中一个rule-set元素包含? 一个或多个rule元素Qrule元素又包含了parameterQcondition和consequence元素。Condition? consequence元素包含的内容和Java很象。注意,在这些元素中Q有些事你可以做Q有些事你不能做。目前,Drools使用 BeanShell2.0b1作ؓ(f)它的Java解释器。我在这里ƈ不想详细的讨论DRL文g和Java语义模块的语法。我们的目标是解释如何? Drools的JSR94 API?br>       在Drools目CVS的drools-jsr94模块中,单元试代码包含了一个ExampleRuleEngineFacade对象Q它Z Brian Topping的Dentaku目。这个fa?ade对象通过javax.rules APIQ创Z供RuleExecutionSet和RuleSession使用的一pd对象。它q没有完全包括了Drools引擎API的所有特性和l? 微差别,但可以作为新手用API的一个简单例子?br>      下面的代码片断显C如何用规则引擎的facade构造一个RuleExecutionSet对象Qƈ通过它获得一个RuleSession对象?/div> <div> </div> <div>import java.io.InputStream;<br>import javax.rules.*;<br>import org.drools.jsr94.rules.ExampleRuleEngineFacade;</div> <div>public class Example {<br>    private ExampleRuleEngineFacade engine;<br>    private StatelessRuleSession statelessSession;</div> <div>    /* place the rule file in the same package as this class */<br>    private String bindUri = "myRuleFile.drl"</div> <div>    public Example() {<br>        /* get your engine facade */<br>        engine = new ExampleRuleEngineFacade();</div> <div>        /* get your input stream */<br>        InputStream inputStream =<br>                Example.class.getResourceAsStream(bindUri);</div> <div>        /* build a RuleExecutionSet to the engine */<br>        engine.addRuleExecutionSet(bindUri, inputStream);</div> <div>        /* don't forget to close your InputStream! */<br>        inputStream.close();</div> <div>        /* get your runtime session */<br>        this.statelessSession = engine.getStatelessRuleSession(bindUri);<br>    }<br>    ...<br>}</div> <div><br>       在以上的例子代码中,你需要处理InputStream的IOException例外Q这里ؓ(f)了简单v见省略了。你要做的只是构建InputStream 对象Qƈ把它输入ExampleRuleEngineFacadeQ用来创Z个RuleExecutionSet对象。然后,你可以得C? StatelessRuleSessionQƈ用它来执行所有的规则。用StatelessRuleSession相对单。我们可以给上面的类d一 个方法,用来对一个对象列表执行规则:(x)</div> <div><br>public List getUndervalued(List stocks) {<br>    return statelessSession.executeRules(stocks);<br>}</div> <div><br>       该方法输入一个stock对象列表l规则引擎,然后使用规则评估输入的股对象,q剔除那些不W合价g估标准的股票。它是个单的例子Q但以说明问题?br>       在ExampleRuleEngineFacadecMQ代码会(x)E微有些复杂。ExampleRuleEngineFacadecdZ一? RuleServiceProvider对象Qƈ用它创徏RuleAdministratorQRuleExecutionSetProvider? RuleRuntime对象。RuleExecutionSetProvider负责解释InputStreamQƈ创徏一? RuleExecutionSet对象。RuleRuntime对象用来得到一个sessionQRuleAdministrator用来理所有的? 象。在往下是Drools核心APIQ它的核心是Rete法实现。我在这里不打算详细讨论Q但你可以看? ExampleRuleEngineFacade的代码?br>       现在你已l看C在商业和U研斚w使用规则引擎的一些例子,q对Drools目有了基本的了解。在下一文章里Q我讨论DRL文g的结构和Java? 义模块,让你可以~写自己的DRL文g。还向你解释如何编写你自己的语义模块,讨论salience和working memory的概c(din)?/div> <div><br><strong>资源</strong><br>· <a target="_blank"><font color="#0d5d91">Drools Project</font></a> <br>· <a target="_blank"><font color="#0d5d91">JSR-94 Specification</font></a></div> <div> </div> <div><strong>作?/strong></div> <div>      N. Alex Rupp is a freelance software architect and developer from Minneapolis, and the current JSR94 Lead for the Drools project.</div><img src ="http://www.aygfsteel.com/ericwang/aggbug/34784.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ericwang/" target="_blank">Dion</a> 2006-03-11 10:00 <a href="http://www.aygfsteel.com/ericwang/archive/2006/03/11/34784.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]Drools的配|文?/title><link>http://www.aygfsteel.com/ericwang/archive/2006/03/11/34785.html</link><dc:creator>Dion</dc:creator><author>Dion</author><pubDate>Sat, 11 Mar 2006 02:00:00 GMT</pubDate><guid>http://www.aygfsteel.com/ericwang/archive/2006/03/11/34785.html</guid><wfw:comment>http://www.aygfsteel.com/ericwang/comments/34785.html</wfw:comment><comments>http://www.aygfsteel.com/ericwang/archive/2006/03/11/34785.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ericwang/comments/commentRss/34785.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ericwang/services/trackbacks/34785.html</trackback:ping><description><![CDATA[<p>前几天跟着写了一个简单的例子.<br>觉得Drools的配|也没有什?<br>今天在运行house的例子的时? 无论怎么? L异常: 没有定义的SMF.<br>昄没有扑ֈ我定义的drools.config文g.<br>官方|站上是q样写地:<br>String droolsConfigProp = System.getProperty( "drools.conf" );<br><br>if ( droolsConfigProp != null )<br>{<br>    loadConfig( droolsConfigProp );<br>}<br><br>ClassLoader cl = Thread.currentThread( ).getContextClassLoader( ); if ( cl == null )<br>{<br>    cl = getClass( ).getClassLoader( );<br>}<br><br>Enumeration configUrls = cl.getResources( "META-INF/drools.conf" );<br><br>if ( !configUrls.hasMoreElements( ) )<br>{<br>    cl = getClass( ).getClassLoader( );<br>    configUrls = cl.getResources( "META-INF/drools.conf" );<br>}<br><br>if ( !configUrls.hasMoreElements( ) )<br>{<br>    cl = ClassLoader.getSystemClassLoader( );<br>    configUrls = cl.getResources( "META-INF/drools.conf" );<br>}<br><br>this.classLoader = cl;<br>while ( configUrls.hasMoreElements( ) )<br>{<br>    URL configUrl = (URL) configUrls.nextElement( );<br>    loadConfig( configUrl );<br>}</p> 好像每一个旮旯里面都找了, Z么没有找到我的呢?<br>System.getProperty指向的位|ƈ不一定和loadFromUrl位置一?呵呵.<img src ="http://www.aygfsteel.com/ericwang/aggbug/34785.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ericwang/" target="_blank">Dion</a> 2006-03-11 10:00 <a href="http://www.aygfsteel.com/ericwang/archive/2006/03/11/34785.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]使用Drools 的项目引?/title><link>http://www.aygfsteel.com/ericwang/archive/2006/03/11/34783.html</link><dc:creator>Dion</dc:creator><author>Dion</author><pubDate>Sat, 11 Mar 2006 01:59:00 GMT</pubDate><guid>http://www.aygfsteel.com/ericwang/archive/2006/03/11/34783.html</guid><wfw:comment>http://www.aygfsteel.com/ericwang/comments/34783.html</wfw:comment><comments>http://www.aygfsteel.com/ericwang/archive/2006/03/11/34783.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ericwang/comments/commentRss/34783.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ericwang/services/trackbacks/34783.html</trackback:ping><description><![CDATA[<p>一般情况下, 只显式引?</p> <ul><li>drools-all-2.0.jar</li><li>antlr-2.7.5.jar</li><li>xercesImpl-2.6.2.jar</li></ul> <p>可以了.当然ClassPath下也要用一些其他的jar.<br>下蝲位置: <a ><font color="#0d5d91">http://dist.codehaus.org/drools/distributions/drools-2.0-bin-withdeps.zip</font></a></p> <p>如果, 在DRL文g中定义了Java Function, q时候就要显式的引用:</p> <ul><li>janino-2.3.2.jar</li></ul> <p>q时? 引擎是需要janino把DRL中的java function描述转换成可执行的二q制代码(?)?</p><img src ="http://www.aygfsteel.com/ericwang/aggbug/34783.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ericwang/" target="_blank">Dion</a> 2006-03-11 09:59 <a href="http://www.aygfsteel.com/ericwang/archive/2006/03/11/34783.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]Open Source Rule Engines Written In Javahttp://www.aygfsteel.com/ericwang/archive/2006/03/11/34780.htmlDionDionSat, 11 Mar 2006 01:58:00 GMThttp://www.aygfsteel.com/ericwang/archive/2006/03/11/34780.htmlhttp://www.aygfsteel.com/ericwang/comments/34780.htmlhttp://www.aygfsteel.com/ericwang/archive/2006/03/11/34780.html#Feedback0http://www.aygfsteel.com/ericwang/comments/commentRss/34780.htmlhttp://www.aygfsteel.com/ericwang/services/trackbacks/34780.htmlOpen Source Rule Engines Written In Java
  • Drools The drools engine uses a modified form of the Rete algorithm called the Rete-OO algorithm. Internally it operates using the same concepts and methods as Forgy's original but adds some node types required for seemless integration with an object-oriented language.
  • OFBiz Rule Engine Backward chaining is supported. Original code base from "Building Parsers in Java" by Steven John Metsker.
  • Mandarax Based on backward reasoning. The easy integration of all kinds of data sources. E.g., database records can be easily integrated as sets of facts and reflection is used in order to integrate functionality available in the object model.
  • Algernon Efficient and concise KB traversal and retrieval. Straightforward access to ontology classes and instances. Supports both forward and backward chaining.
  • TyRuBa TyRuBa supports higher order logic programming: variables and compound terms are allowed everywhere in queries and rules, also in the position of a functor- or predicate-name. TyRuBa speeds up execution by making specialized copies of the rule-base for each query in the program. It does so incrementally while executing a logic program and builds an index for fast access to rules and facts in the rule base, tuned to the program that is running. The indexing techniques works also for higher-order logic. TyRuBa does 'tabling' of query results.
  • JTP Java Theorem Prover is based on a very simple and general reasoning architecture. The modular character of the architecture makes it easy to extend the system by adding new reasoning modules (reasoners), or by customizing or rearranging existing ones.
  • JEOPS JEOPS adds forward chaining, first-order production rules to Java through a set of classes designed to provide this language with some kind of declarative programming.
  • InfoSapient Semantics of business rules expressed using fuzzy logic.
  • JShop Simple Hierarchical Ordered Planner (SHOP) written in Java.
  • RDFExpert RDF-driven expert system shell. The RDFExpert software uses Brian McBride's JENA API and parser. A simple expert system shell that uses RDF for all of its input: knowledge base, inference rules and elements of the resolution strategy employed. It supports forward and backward chaining.
  • Jena 2 - Jena is a Java framework for writing Semantic Web applications. Jena2 has a reasoner subsystem which includes a generic rule based inference engine together with configured rule sets for RDFS and for the OWL/Lite subset of OWL Full. These reasoners can be used to construct inference models which show the RDF statements entailed by the data being reasoned over. The subsystem is designed to be extensible so that it should be possible to plug a range of external reasoners into Jena, though worked examples of doing so are left to a future release.
  • JLisa - JLisa is a powerful framework for building business rules accessible to Java and it is compatible with JSR-94. JLisa is more powerful than Clips because it has the expanded benefit of having all the features from common lisp available. These features are essential for multi-paradigm software development
  • Euler - Euler is a backward-chaining reasoner enhanced with Euler path detection and will tell you whether a given set of facts and rules supports a given conclusion. Things are described in N3.
  • JLog - JLog is an implementation of a Prolog interpreter, written in Java. It includes built-in source editor, query panels, online help, animation primitives, and a GUI debugger.
  • Pellet OWL Reasoner - Pellet is an open-source Java based OWL DL reasoner. It can be used in conjunction with either Jena or OWL API libraries. Pellet API provides functionalities to see the species validation, check consistency of ontologies, classify the taxonomy, check entailments and answer a subset of RDQL queries (known as ABox queries in DL terminology). Pellet is an OWL DL reasoner based on the tableaux algorithms developed for expressive Description Logics.
  • Prova - Prova is derived from Mandarax Java-based inference system developed by Jens Dietrich. Prova extends Mandarax by providing a proper language syntax, native syntax integration with Java, and agent messaging and reaction rules. The development of this language was supported by the grant provided within the EU project GeneStream. In the project, the language is used as a rules-based backbone for distributed web applications in biomedical data integration.


Dion 2006-03-11 09:58 发表评论
]]>
[转]Drools and Mandaraxhttp://www.aygfsteel.com/ericwang/archive/2006/03/11/34781.htmlDionDionSat, 11 Mar 2006 01:58:00 GMThttp://www.aygfsteel.com/ericwang/archive/2006/03/11/34781.htmlhttp://www.aygfsteel.com/ericwang/comments/34781.htmlhttp://www.aygfsteel.com/ericwang/archive/2006/03/11/34781.html#Feedback0http://www.aygfsteel.com/ericwang/comments/commentRss/34781.htmlhttp://www.aygfsteel.com/ericwang/services/trackbacks/34781.htmlDrools and Mandarax 两个目做了两g不同的事? 一个是Forward Chaining,另一个是 backward chaining. Drools 是forward chaining?  意味着 它对assert的对象反? 事g驱动? Mandarax ?backward chaining? ?prologue一? 你问它问? 它试囄你它知道的答? 举例来说, 在用Drools的时? 你可能会(x)先assert l它今天的日? 如果它发现有匚w的规则的?它会(x)用事件的方式通知?今天是你的生?. ?backward chaining 的系l? 你可能先? "今天是我的生日嘛?" pȝ?x)搜索它知道? 然后告诉你答?
For an excellent explanation of forward and backward chaining read Charles Forgey's recent articles at http://rulespower.com/ - Forward and Backward Chaining:
Parts 1, 2 and 3.

Dion 2006-03-11 09:58 发表评论
]]>
վ֩ģ壺 | | | ̨| | | | | º| | Ͳ| ػʵ| | ͩ| | | Ѱ| | ɽ| | | Ͼ| | | ͩ| | | ˫| غ| | | °| | ½| ˹| | | | ˮ| ̨| |