Hi Dave:

Thanks for the reply, I am pretty sure I am doing it right, but as you said
I have to test a small case first and then I will let you know.

Thanks.


On Mon, Jun 16, 2014 at 5:19 AM, Dave Reynolds <[email protected]>
wrote:

> On 15/06/14 07:09, Adeeb Noor wrote:
>
>> Hi All:
>>
>> I have been trying to use the backward jena rule engine was not able to
>> for
>> some reasons. I have already applied the forward one and works just fine.
>>
>> Here is the code:
>>
>> public class Ruleset {
>>
>> private List<Rule> rules = null;
>>
>> private GenericRuleReasoner reasoner = null;
>>
>> public Ruleset (String rulesSource){
>>
>>   this.rules = Rule.rulesFromURL(rulesSource);
>>
>>   this.reasoner = new GenericRuleReasoner(rules);
>>
>>   reasoner.setOWLTranslation(true);
>>
>>   reasoner.setTransitiveClosureCaching(true);}
>>
>> public InfModel applyto(Model mode){
>>
>>    return ModelFactory.createInfModel(reasoner, mode);
>>
>> }
>>
>>   public static void main(String[] args) {
>>
>> Ruleset rule = new Ruleset (rulepath);
>>
>>    InfModel infmodel = rule.applyto(data.tdb);}
>>
>>
>> and here is my forward rule:
>>
>> [test1: (?drug2 ddids:drug_is_metabolized_by_enzyme ddidd:C1176140)
>>
>> ->(?drug2 rdf:type ddids:hasInteraction)]
>>
>> After running the rule above, I got result. However, when I tried to make
>> the same rule backward, I got nothing
>>
>> [test2: (?drug2 rdf:type ddids:hasInteraction)
>>
>> <-
>> (?drug2 ddids:drug_is_metabolized_by_enzyme ddidd:C1176140) ]
>>
>> Am I doing something wrong here ?
>>
>
> Nothing obvious.
>
> Your code as shown doesn't seem to set the ruleMode so it should be
> defaulting to "hybrid" which means both forward and backward rules are
> supported.
>
> Presumably you have other rules so there can be "layering" interactions
> where some deductions are made by backward rules instead of forward rules
> and so not visible to the forward rules. That can cause a forward rule to
> not fire in cases where a backward rule would. However, the other way
> round, a backward rule not working where an equivalent forward rule does,
> can't be due to layering.
>
> The thing to do will be to create a minimal test case:
>   - reduce your data to a minimum (e.g. just one assertion matching
> ddids:drug_is_metabolized_by_enzyme ddidd:C1176140)
>   - cut your rule set to a minimum (e.g. just that rule)
>   - create a minimal standalone driver code
>
> Hopefully you will find that works and you can then work back up to see
> where the problem arises in your real system.
>
> If that minimal test fails then you have a runnable test case you can
> share with us.
>
> Dave
>
>


-- 
Adeeb Noor
Ph.D. Candidate
Dept of Computer Science
University of Colorado at Boulder
Cell: 571-484-3303
Email: [email protected]

Reply via email to