Artificial Intelligence Headlines Rules Fest '11
by Mark Proctor
rulesfest.org
<http://cts.vresp.com/c/?VisionArtsCommunicat/f913bd11ad/11698b4526/821eed...>
/A conference by developers for developers/
Forward this message to a friend
<http://oi.vresp.com/f2af/v4/send_to_friend.html?ch=f913bd11ad&lid=1471764...>
October 24-27, 2011 • Burlingame, CA • Rules Fest 2011
*Calling all /developers, engineers, programmers, and architects/ who
use reasoning technologies to build products and services*
------------------------------------------------------------------------
Rules Fest Announces
*Dr. Andrew Ng, Director of the Artificial Intelligence Lab at Stanford*
& an expert in Machine Learning
will round out the 2011 Rules Fest Conference Agenda
------------------------------------------------------------------------
Rules Fest, the /International Conference on Reasoning Technologies/,
was established 3 years ago to present a technical forum by developers,
for developers ... the people who are chartered with /computational
reasoning/, the most applied category of artificial intelligence, to
further technology development. Given the exhilarating, and sometimes
frightening, pace with which technology evolves and its fickle and
unpredictable propensity to do so, Rules Fest has diversified its
technology portfolio to include powering the semantic web, controlling
autonomous agents, and adding intelligence to a myriad of mobile apps.
In addition, cloud-based technology offers a value not previously
available in the history of computing: data and mechanics are ever-more
accessible to developers, making the cloud more practical and efficient.
These topics will be presented and discussed -- formally and socially --
at the Rules Fest 2011 conference.
*Rules Fest attendees develop Apps That Think.™* /Are you one of us?/
We invite you to join the Rules Fest Community
<mailto:brenda@visionartscommunications.com?subject=Join%20Rules%20Fest%20Community&body=Please%20add%20me%20to%20your%20communications%20distributions.%0A%0AMy%20company%20is%3A%0A%0AMy%20title%20is%3A>:
the developers, inventors and managers
<http://cts.vresp.com/c/?VisionArtsCommunicat/f913bd11ad/11698b4526/255f7c...>
responsible for delivering the innovation and technology that keeps
moving the ball forward. In addition to the annual conference held in
October, we are developing webinars, papers, virtual boot camps and
others tools to share ideas and information within the community.
*2011 conference keynotes focus on artificial intelligence
<http://cts.vresp.com/c/?VisionArtsCommunicat/f913bd11ad/11698b4526/ebf9cc...>*
Keynote speakers for Rules Fest 2011 include thought leaders in the area
of artificial intelligence: *Paul Haley* who will present a Roadmap for
Rules, Semantics, and Business
<http://cts.vresp.com/c/?VisionArtsCommunicat/f913bd11ad/11698b4526/b1f56d...>;*Dr.
Said Tabet*, who will discuss Semantic Technologies and the Cloud: Rules
for the Next Generation
<http://cts.vresp.com/c/?VisionArtsCommunicat/f913bd11ad/11698b4526/c39c00...>;
and *Dr.Andrew Ng*, whose Machine Learning and other AI programs
presented by Stanford faculty have generated nearly 200,000
registrations this month.
A special early bird package for the October 24-27 conference at the
Hyatt Regency Burlingame (just sHyatt Regency Burlingameouth of San
Francisco) is available for registrants, including:
* Full conference access: 30 programs
<http://cts.vresp.com/c/?VisionArtsCommunicat/f913bd11ad/11698b4526/9e2324...>,
breakfast/lunch/snack each day, free access to the nightly Founders
Lounge, free wifi during conference, exhibit, career center access
(including posting your resume);
* One boot camp: technical, hands-on sessions
* Four nights at the Hyatt Regency Burlingame, including access to the
fitness center, Knuckles Sports Lounge, shuttle to shopping and easy
access to San Francisco via BART from the airport;
* Conference shirt (golf or tee)
* 10% discount off from next year's registration
Register now
<http://cts.vresp.com/c/?VisionArtsCommunicat/f913bd11ad/11698b4526/869520...>
to take advantage of the early bird discount.
Conference General Admission registration is available for $449 for
those who do not need a hotel. Special early pricing for individual boot
camps is also available at a cost of $249 per session. A discounted rate
of $149/nigh
<http://cts.vresp.com/c/?VisionArtsCommunicat/f913bd11ad/11698b4526/5c7d25...>t
is offered by the Hyatt Regency Burlingame until September 30, 2011.
Confused about reasoning technologies? Review the wikipedia posting
<http://cts.vresp.com/c/?VisionArtsCommunicat/f913bd11ad/11698b4526/8145f4...>
to see where your interests lay or what system types may apply to your
requirements.
Join the dialogue:
LinkedIn.com: Groups - Rules Fest
<http://cts.vresp.com/c/?VisionArtsCommunicat/f913bd11ad/11698b4526/2413f1...>
LinkedIn Groups: Rules Fest
Like us on Facebook: Rules Fest
<http://cts.vresp.com/c/?VisionArtsCommunicat/f913bd11ad/11698b4526/a4a384...>
Like us on Facebook: Rules Fest
Follow us on Twitter
<http://cts.vresp.com/c/?VisionArtsCommunicat/f913bd11ad/11698b4526/49551d...>
Follow us on Twitter: @rulesfest
Rules Fest is a conference for all levels of skills. Unsure about Rules
Fest
<http://cts.vresp.com/c/?VisionArtsCommunicat/f913bd11ad/11698b4526/ad3b2a...>?
Need more info? Contact us
<mailto:info@rulesfest.org?subject=Need%20more%20info%20about%20Rules%20Fest>.
------------------------------------------------------------------------
Red Hat|JBoss is a Super Platinum sponsor of Rules Fest 2011
*Red Hat|JBoss is a Super Platinum sponsor of Rules Fest 2011*
------------------------------------------------------------------------
Click to view this email in a browser
<http://hosted.verticalresponse.com/756695/f913bd11ad/1471764023/11698b4526/>
If you no longer wish to receive these emails, please reply to this
message with "Unsubscribe" in the subject line or simply click on the
following link: Unsubscribe
<http://cts.vresp.com/u?f913bd11ad/11698b4526/mlpftw>
------------------------------------------------------------------------
Rules Fest Association, Inc.
4616 W. Sahara Ave #379
Las Vegas, NV 89102
US
Read <http://www.verticalresponse.com/content/pm_policy.html> the
VerticalResponse marketing policy.
Try Email Marketing with VerticalResponse!
<http://www.verticalresponse.com/landing/ef/?mm/f913bd11ad>
13 years, 4 months
accumulate to acc
by Mark Proctor
We are looking to tighten up accumulate, using a new keyword to
differentiate. It will use ; for separation, to follow a similar form to
a 'for' loop.
acc( CE*;
<func>*;
<guard>? )
so something like:
acc( $o : Order();
$min : min( $o.value ),
$max : max($o.value);
$min > 100 && $max < 100 )
I have wondered if we could use pipes on our functions, to be able to
pass the results of one function into another - just not sure how that
will work or look yet.
func(...) in func(...)
func(...) | func(...)
Mark
13 years, 4 months
Another mvel problem - see user list, today
by Wolfgang Laun
I'll not create any JIRAs for problems that come and go with the presence
and absence of dialect "mvel".
After one of those, Mark has urged me to create another JIRA for MVEL, and
this I just won't do. For me, as a *Drools *user, this project *Drools *has
adopted MVEL as a vehicle for primary expression and statement evaluation;
since 5.2.0 it seems that I don't have a choice for some parts of the Drools
language. For me, this means that the full responsibility now rests with the
Drools team - I cannot simply work around by sticking with 'dialect "java"'.
Sorry if this sounds harsh and egocentric, but what I've heard about MVEL
maintainer's non-eagerness for fixing bugs hasn't inspired me to do
otherwise. (Since this is hearsay, I should add the politically correct
statement: "innocent until proven otherwise".)
Regards
Wolfgang
13 years, 4 months
else
by Mark Proctor
We have been looking into designs around else, so here are our initial
brain storming ideas, which aims at doing more than just else, but
handling signal processing like situations. "else" is always triggerd by
the failure of a left propagation. In effect an named "else" block is
just another terminal node that will result in an activation on the
agenda. It will have access to declarations prior to the failure of
propagation in the network.
// Possible syntaxes
[name] ( CE+ ) // no symbol
[name] | ( CE+ )
[name] < ( CE+ )
1)
when
[name1] < Person( name == "darth" ) // works on patterns
A()
then
....
then.name1
...
end
2)
when
$p : Person( )
[name1] < eval( $p.name == "darth" ) // works on evals
A()
then
....
then.name1
...
end
3)
when
[name1] < ( Person( name == "darth" ) and Address( city == "death
star" ) // works on groups
A()
then
....
then.name1
...
end
This could actuall be extended to have inline "then" too. In this case
when their is a success propagation on that node it will result in an
activation placed on the agenda that has access to all the prior bound
declarations.
1)
when
Person( name == "darth" ) > [name1] // works on patterns
A()
then
....
then.name1
...
end
2)
when
$p : Person( )
eval( $p.name == "darth" ) > [name1] // works on evals
A()
then
....
then.name1
...
end
3)
when
( Person( name == "darth" ) and Address( city == "death star" ) >
[name1] // works on groups
A()
then
....
then.name1
...
end
This can be used with 'or'
when
( A() > [a1] or
B() > [b1] or
C() > [c1] )
D()
then
...
then.a1
....
then.b1
....
then.c1
...
end
It's a little tricker but in theory we can do this before/afer the 'or' too
This can be used with 'or'
when
[x1] < ( A() > [a1] or
B() > [b1] or
C() > [c1] )
D()
then
...
then.a1
....
then.b1
....
then.c1
...
then.x1
....
end
We could allow [name] as just an inline creation to an activation that
always passes, which with 'or' could provide a "default".
when
[x1] < ( A() > [a1] or
B() > [b1] or
C() > [c1] or
[default] )
D()
then
Of course both could be supported at the same time
[afailed] < A() > [asuccess]
We could further allow just an inline code block, isntead of an inline
reference to a block {...code here...} instead of [name1].
We can also use this to do switch like operations, for erlang style
signal processing, although i'd like to see an improvemet to the syntax
here, just not sure what it would be...
$o : Object() from stream
( A() > [a] from $o or
B() > [b] from $o or
C() > [c] from $o )
Where as 'or' currently works like java's "|" single operator, i.e. all
logical branches are tested. We could add a short cut or operationr
'sor' that would work like "||", so once the first CE matches in an 'or'
block the rest are igored. We could even consider an 'xor' ....
Finally there is no reason why we couldn't allow other CE's after the <.
Which would provide for very rich signal processing. For instance. If
A() fails, it'll propagate to B, if B() fails it'll activate [a1]
[a1] < B() < A()
This can be nested and using using parenthesis to show groupings.
( [a1] < B() > [b2] ) < A()
Anyway more food for thought, enjoy :)
Mark
13 years, 4 months
Re: [rules-dev] [rules-users] What would you call a Fact that is only evaluated once?
by Wolfgang Laun
One term (probably too long) would be "interjection".
A more pictorial word is "flake", which (thinking of snowflake) provides an
inkling for the fast fade away.
-W
On 12 August 2011 12:00, Mark Proctor <mproctor(a)codehaus.org> wrote:
> What would you call a fact that is inserted once and the conflict set
> computed (the rules that can fire). The fact is then retracted so no
> more matches can take place, but the conflict set itself is allowed to
> fire (assuming their other facts remain true).
>
> I think this is quite a common use case and most users will handle this
> via a lower salience and retracting the fact manually, but I think it's
> useful enough to build in as a keyword on type declaration. We just need
> a name for it :)
>
> Mark
>
>
> _______________________________________________
> rules-users mailing list
> rules-users(a)lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
13 years, 4 months
What would you call a Fact that is only evaluated once?
by Mark Proctor
On 12/08/2011 11:00, Mark Proctor wrote:
> What would you call a fact that is inserted once and the conflict set
> computed (the rules that can fire). The fact is then retracted so no
> more matches can take place, but the conflict set itself is allowed to
> fire (assuming their other facts remain true).
>
> I think this is quite a common use case and most users will handle this
> via a lower salience and retracting the fact manually, but I think it's
> useful enough to build in as a keyword on type declaration. We just need
> a name for it :)
>
> Mark
ignore on user list, was meant for dev list. sorry.
>
>
> _______________________________________________
> rules-users mailing list
> rules-users(a)lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
13 years, 4 months
Labels on the blog
by Geoffrey De Smet
Hi Guys,
I 've found a way to clean up the labels on the blog efficiently.
I don't think anyone finds the current list of labels useful:
http://blog.athico.com/
About half the labels have 1 post.
But I do think that people would like to get all the posts related to 1
project (for example "Guvnor").
So I propose that I clean it up to these labels:
* Expert
* Fusion
* Planner
* jBPM
* Integration
* Guvnor
* Tools
* Chance
* Other
* Event (= this one is special as http://www.jboss.org/events might
recognize that one)
That would make it easy to get all rule engine (label = "Expert")
related posts.
--
With kind regards,
Geoffrey De Smet
13 years, 4 months
Declarative Agenda
by Mark Proctor
I just got a first cut working for "declarative agenda". The idea here
is rules can control which rule can or cannot fire. Because this is
highly experimental it is off by default and users must explicitely
enable it, it will stay this way until we are happy with the solution.
My hope is that it will provide a more declarative approach to execution
control; which will enable more readable and maintainable rules compared
to using magic salience values and in some circumstances control objects..
KnowledgeBaseConfiguration kconf =
KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
kconf.setOption( DeclarativeAgendaOption.ENABLED );
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(
kconf );
The basic idea is:
-All matched rule's Activations are inserted into WorkingMemory as
facts. So you can now match against an Activation the rules metadata and
declarations are available as -fields on the Activation object.
-You can use the kcontext.block( $a ) for the current rule to block the
selected activation. Only when that rule becomes false will the
activation be elegible for firing. If it is already elebible for firing
and is later blocked, it will be removed from the agenda until it is
unblocked.
-An activation may have multiple blockers, all blockers must became
false, so they are removed to enable the activation to fire
-kcontext.unblockAll( $a ) is an over-ride rule that will remove all
blockers regardless
-@activationListener('direct') allows a rule to fire as soon as it's
matched, this is to be used for rules that block/unblock activations, it
is not desirable for these rules to have side effects that impact else
where. The name may change later, this is actually part of the pluggable
terminal node handlers I made, which is an "internal" feature for the
moment.
I should be committing this later today, and will send a follow up email
once it hits HEAD, but here is a unit test. It uses a control role to
stop all rules with metadata declaring the rules to be in the "sales"
department. Only when that control rule becomes false can they fire.
package org.domain.test
import org.drools.runtime.rule.Activation
global java.util.List list
dialect 'mvel'
rule rule1 @department('sales')
when
$s : String( this == 'go1' )
then
list.add( kcontext.rule.name + ':' + $s );
end
rule rule2 @department('sales')
when
$s : String( this == 'go1' )
then
list.add( kcontext.rule.name + ':' + $s );
end
rule rule3 @department('sales')
when
$s : String( this == 'go1' )
then
list.add( kcontext.rule.name + ':' + $s );
end
rule blockerAllSalesRules @activationListener('direct')
when
$s : String( this == 'go2' )
$i : Activation( department == 'sales' )
then
list.add( $i.rule.name + ':' + $s );
kcontext.block( $i );
end
KnowledgeBaseConfiguration kconf =
KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
kconf.setOption( DeclarativeAgendaOption.ENABLED );
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase( kconf );
kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
List list = new ArrayList();
ksession.setGlobal( "list", list);
ksession.insert( "go1" );
FactHandle go2 = ksession.insert( "go2" );
ksession.fireAllRules();
assertEquals( 3, list.size() ); // none of the rules 1-3 fire, as they
are blocked.
assertTrue( list.contains( "rule1:go2" ));
assertTrue( list.contains( "rule2:go2" ));
assertTrue( list.contains( "rule3:go2" ));
list.clear();
ksession.retract( go2 ); // the blocker rule is nolonger true, so rules
1-3 can now fire.
ksession.fireAllRules();
assertEquals( 3, list.size() );
assertTrue( list.contains( "rule1:go1" ));
assertTrue( list.contains( "rule2:go1" ));
assertTrue( list.contains( "rule3:go1" ));
ksession.dispose();
13 years, 4 months