Re: [EXTERNAL] Re: JESS: Ignore slots when matching lhs of rules

2011-11-11 Thread Hunter McMillen
This is what I thought it should be so I was confused when my rule wasn't
firing. Thank you for your response. Somehow magically this morning the
rule is firing as it should be. Ill attribute that to you :)

Thanks

On Fri, Nov 11, 2011 at 12:47 AM, Wolfgang Laun wrote:

> You need not worry about the object fields you don't care about when
> matching the "unit" fact in a rule. By definition, only slots used in the
> pattern matter; all others are literally "don't care".
>
> -W
>
>
> On 11 November 2011 04:57, Hunter McMillen  wrote:
>
>> Hi everyone,
>>
>>  I am trying to match the lhs of a rule using a template that has 112
>> slots that is defined from a Java class.
>>
>>  Here is the template definition (from show-deftemplates):
>>
>>  (deftemplate MAIN::unit
>> "$JAVA-OBJECT$ eisbot.proxy.model.Unit"
>> (declare (from-class eisbot.proxy.model.Unit)))
>>
>> Now every time that I encounter a unit object in my application I define
>> an instance of the unit to Jess from Java:
>>
>> engine.defclass("unit", "eisbot.proxy.model.Unit", null, true); (I only
>> do this the first time)
>>
>> Unit unit = //retrieve a unit
>> engine.definstance("unit", unit, false);
>>
>> All of this above is working as it should be, but now when I try to match
>> a unit in a rule I am having trouble:
>>
>> String unitSeen = "(defrule unitSeen " +
>>   "(unit (ID ?id) (typeID ?typeID)) " +
>>   "=> " +
>>   "(printout t \"Unit seen with ID: \" ?id
>> crlf))";
>>
>> engine.executeCommand(unitSeen);
>>
>> The problem is that the Unit class has 112 attributes, I am only listing
>> two ID and typeID, and there are probably only another handful that I care
>> about and need to use. Is there any way to ignore the rest of the slots in
>> the template, matching only on a few slots?
>>
>> Goal:
>>
>> The main goal of what I am trying to is that when I encounter a Unit in
>> my game application, I want to assert that unit object to Jess as a fact,
>> then match rules on the existence of a Unit. Right now I only want to match
>> on the existence of ANY unit, but later on the matches will be more
>> specific.
>>
>> Any help would be most appreciated.
>>
>> Thanks.
>> Hunter McMillen
>>
>
>


[EXTERNAL] Re: JESS: Ignore slots when matching lhs of rules

2011-11-11 Thread Wolfgang Laun
You need not worry about the object fields you don't care about when
matching the "unit" fact in a rule. By definition, only slots used in the
pattern matter; all others are literally "don't care".

-W

On 11 November 2011 04:57, Hunter McMillen  wrote:

> Hi everyone,
>
>  I am trying to match the lhs of a rule using a template that has 112
> slots that is defined from a Java class.
>
>  Here is the template definition (from show-deftemplates):
>
>  (deftemplate MAIN::unit
> "$JAVA-OBJECT$ eisbot.proxy.model.Unit"
> (declare (from-class eisbot.proxy.model.Unit)))
>
> Now every time that I encounter a unit object in my application I define
> an instance of the unit to Jess from Java:
>
> engine.defclass("unit", "eisbot.proxy.model.Unit", null, true); (I only do
> this the first time)
>
> Unit unit = //retrieve a unit
> engine.definstance("unit", unit, false);
>
> All of this above is working as it should be, but now when I try to match
> a unit in a rule I am having trouble:
>
> String unitSeen = "(defrule unitSeen " +
>   "(unit (ID ?id) (typeID ?typeID)) " +
>   "=> " +
>   "(printout t \"Unit seen with ID: \" ?id crlf))";
>
> engine.executeCommand(unitSeen);
>
> The problem is that the Unit class has 112 attributes, I am only listing
> two ID and typeID, and there are probably only another handful that I care
> about and need to use. Is there any way to ignore the rest of the slots in
> the template, matching only on a few slots?
>
> Goal:
>
> The main goal of what I am trying to is that when I encounter a Unit in my
> game application, I want to assert that unit object to Jess as a fact, then
> match rules on the existence of a Unit. Right now I only want to match on
> the existence of ANY unit, but later on the matches will be more specific.
>
> Any help would be most appreciated.
>
> Thanks.
> Hunter McMillen
>