[RuleML-all] Multiple Assertions and Avoiding Recursion with
RuleML& NxBRE
David Dossot
david at dossot.net
Mon Nov 19 09:26:19 AST 2007
Hi Don,
NxBRE only support a limited scope of RuleML (namely the Naf Datalog
sub-language) and, does not support multiple assertions.
Concerning "another situation", you should read the important note at the
end of paragraph 3.2.4 of NxBRE's user guide.
Best,
David
On Nov 18, 2007 8:17 PM, Boley, Harold <Harold.Boley at nrc-cnrc.gc.ca> wrote:
> Hi Don, NxBRE Developers, and All,
>
> The RuleML-2007 paper "Are Your Rules Online? Four Web Rule Essentials":
> http://www.ruleml.org/talks/RuleEssentials-talk.ppt
> http://www.cs.unb.ca/~boley/papers/RuleEssentials.pdf<http://www.cs.unb.ca/%7Eboley/papers/RuleEssentials.pdf>
> explains (much of) these examples, valid w.r.t. the RuleML 0.91 XSDs:
> http://www.ruleml.org/usecases/essentials
>
> The above are, however, only examples for Derivation RuleML:
> http://www.ruleml.org/modularization/#Model
>
> The logic variables used in Derivation RuleML cannot be updated except
> consistently specialized. E.g., in hornlogeq the conjunctive query
> corresponding to ?x=0, ?x=1 fails, but ?x=?y, ?x=1 succeeds.
>
> You can derive multiple atoms by using a conjunction in a rule
> conclusion,
> as allowed in some RuleML sublanguages. FOL RuleML even allows
> disjunctions
> in the conclusions of rules: http://www.ruleml.org/fol/#Disjunctions.
> Because
> of this, and to allow stripe skipping, we make the <And> vs. <Or>
> distinction
> explicit in the <head>.
>
> Your example <head> would thus become:
>
> <head>
> <And>
> <Atom>
> <Rel>RelDerived 1</Rel>
> <Var>entity</Var>
> <Ind>DerivedValue 1</Ind>
> </Atom>
> <Atom>
> <Rel>RelDerived 2</Rel>
> <Var>entity</Var>
> <Ind>DerivedValue 2</Ind>
> </Atom>
> </And>
> </head>
>
> With stripe skipping, your first rule would then become:
>
> <Implies>
> <Atom>
> <Rel>RelBase</Rel>
> <Var>entity</Var>
> <Ind>BaseValue</Ind>
> </Atom>
> <And>
> <Atom>
> <Rel>RelDerived 1</Rel>
> <Var>entity</Var>
> <Ind>DerivedValue 1</Ind>
> </Atom>
> <Atom>
> <Rel>RelDerived 2</Rel>
> <Var>entity</Var>
> <Ind>DerivedValue 2</Ind>
> </Atom>
> </And>
> </Implies>
>
> Perhaps a NxBRE developer can clarify the update rule in "another
> situation".
>
> Regarding actions such as updates, please stay tuned to Reaction RuleML:
> http://ibis.in.tum.de/research/ReactionRuleML
> http://mail.ruleml.org/pipermail/reaction-tg (mailing list)
>
> Best,
> Harold
>
>
> -----Original Message-----
> From: ruleml-all-bounces at ruleml.org
> [mailto:ruleml-all-bounces at ruleml.org] On Behalf Of dhuffkc at hotmail.com
> Sent: November 16, 2007 12:01 PM
> To: ruleml-all at ruleml.org
> Subject: [RuleML-all] Multiple Assertions and Avoiding Recursion with
> RuleML& NxBRE
>
> Pardon the basic questions. I am using the NxBRE .NET engine, but my
> questions are primarily RuleML-related. If there's a "RuleML by
> Example"
> resource available or a better forum to post I'd love to know about it.
>
> Can I assert multiple new facts for the same condition (multiple heads
> for one body)? Something like:
>
> <Implies>
> <head>
> <Atom>
> <Rel>RelDerived 1</Rel>
> <Var>entity</Var>
> <Ind>DerivedValue 1</Ind>
> </Atom>
> <Atom>
> <Rel>RelDerived 2</Rel>
> <Var>entity</Var>
> <Ind>DerivedValue 2</Ind>
> </Atom>
> </head>
> <body>
> <Atom>
> <Rel>RelBase</Rel>
> <Var>entity</Var>
> <Ind>BaseValue</Ind>
> </Atom>
> </body>
> </Implies>
>
> In another situation, I am deriving a new fact, then have rules that
> modify that fact. I only want to apply the modified rules once, however
> the second implication continues to run:
>
> <!-- assert new fact based on value of existing fact --> <Implies>
> <Atom>
> <Rel>Rel1</Rel>
> <Var>entity</Var>
> <Var>v1</Var>
> </Atom>
> <Atom>
> <Rel>NewRel</Rel>
> <Var>entity</Var>
> <Ind uri="nxbre://expression">{var:v1}</Ind>
> </Atom>
> </Implies>
>
> <!-- if Rel2(entity,i2) AND NewRel(entity,newValue), modify new fact
> NewRel(entity,newValue+1) only once -->
> <Implies>
> <And>
> <Atom>
> <Rel>Rel2</Rel>
> <Var>entity</Var>
> <Ind>i2</Ind>
> </Atom>
> <Atom>
> <Rel>NewRel</Rel>
> <Var>entity</Var>
> <Var>newValue</Var>
> </Atom>
> </And>
> <Atom>
> <Rel>NewRel</Rel>
> <Var>entity</Var>
> <Ind uri="nxbre://expression">{var:newValue} + 1</Ind>
> </Atom>
> </Implies>
>
>
> This is probably clear as mud, but any assistance is appreciated.
>
> Regards,
>
> Don Huff
>
> _______________________________________________
> RuleML-all mailing list
> RuleML-all at ruleml.org
> http://mail.ruleml.org/mailman/listinfo/ruleml-all
> _______________________________________________
> RuleML-all mailing list
> RuleML-all at ruleml.org
> http://mail.ruleml.org/mailman/listinfo/ruleml-all
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.ruleml.org/pipermail/ruleml-all/attachments/20071119/49fb2244/attachment.htm
More information about the RuleML-all
mailing list