Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 99206c49 authored by Federico Ulliana's avatar Federico Ulliana
Browse files

merged with branch add explanation module

parent 147048b0
No related branches found
No related tags found
No related merge requests found
Pipeline #1117899 failed
package fr.boreal.explanation.explainers;
import fr.boreal.explanation.api.AtomicQueryExplanationEnumerator;
import fr.boreal.explanation.ruleFactories.StaticGRIRuleTransformer;
import fr.boreal.explanation.solving_enumerating.gmus_processors.FactSupportGMUSProcessor;
import fr.boreal.model.kb.api.KnowledgeBase;
/**
* Computes kb-support explanations for a knowledge base and a ground atomic query
*/
public class FactSupportExplainer extends AbstractStaticGRIBasedExplainer implements AtomicQueryExplanationEnumerator<KnowledgeBase> {
KnowledgeBase gri;
StaticGRIRuleTransformer ruleTransformer;
/**
* Sets the initial KB and compute the GRI
*
* @param kb the current kb
*/
public FactSupportExplainer(KnowledgeBase kb) {
super(kb);
}
@Override
FactSupportGMUSProcessor getGMUSProcessor() {
return new FactSupportGMUSProcessor();
}
}
package fr.boreal.explanation.ruleFactories;
import fr.boreal.model.kb.api.RuleBase;
import fr.boreal.model.kb.impl.RuleBaseImpl;
import fr.boreal.model.rule.api.FORule;
import fr.boreal.model.rule.api.Rule;
import java.util.Collection;
import java.util.LinkedHashSet;
public record RuleTransformationRecord(Collection<FORule> nodeBuildingRules, Collection<FORule> edgeBuildingRules,
Collection<FORule> relTracingRules){
public RuleBase getStaticRuleBase() {
Collection<FORule> temp = new LinkedHashSet<>();
temp.addAll(this.nodeBuildingRules);
temp.addAll(this.edgeBuildingRules);
return new RuleBaseImpl(temp);
}
public RuleBase getDynamicRuleBase() {
Collection<FORule> temp = new LinkedHashSet<>();
temp.addAll(this.relTracingRules);
return new RuleBaseImpl(temp);
}
}
...@@ -133,7 +133,7 @@ public class ChaseStaticGRIRuleTransformerTest { ...@@ -133,7 +133,7 @@ public class ChaseStaticGRIRuleTransformerTest {
RuleBase ruleBase = new RuleBaseImpl(List.of(TestData.r1,TestData.r9)); RuleBase ruleBase = new RuleBaseImpl(List.of(TestData.r1,TestData.r9));
KnowledgeBase kb = new KnowledgeBaseImpl(factBase, ruleBase); KnowledgeBase kb = new KnowledgeBaseImpl(factBase, ruleBase);
KnowledgeBase transformedKB = new KnowledgeBaseImpl(factBase, factory.createTransformedRB(kb)); KnowledgeBase transformedKB = new KnowledgeBaseImpl(factBase, factory.createTransformedRB(kb).getAllRules());
TestData.chase(transformedKB); TestData.chase(transformedKB);
// System.out.println(transformedKB.getFactBase()); // System.out.println(transformedKB.getFactBase());
......
...@@ -170,7 +170,7 @@ public class RELTracerTest { ...@@ -170,7 +170,7 @@ public class RELTracerTest {
StaticGRIRuleTransformer ruleTransformerFactory = pair.getRight(); StaticGRIRuleTransformer ruleTransformerFactory = pair.getRight();
RELTracer tracer = new RELTracer(); RELTracer tracer = new RELTracer();
FactBase filteredGRI = tracer.computeQueryRelevant(gri, ruleTransformerFactory, query); FactBase filteredGRI = tracer.computeQueryRelevant(gri, query);
StoredFunctionalTerm fpa = ruleTransformerFactory.createFnTermIdentifier(TestData.pa); StoredFunctionalTerm fpa = ruleTransformerFactory.createFnTermIdentifier(TestData.pa);
Atom RELpa = new AtomImpl(ruleTransformerFactory.REL, fpa); Atom RELpa = new AtomImpl(ruleTransformerFactory.REL, fpa);
......
...@@ -36,8 +36,8 @@ public class KBSupportExplainerTest { ...@@ -36,8 +36,8 @@ public class KBSupportExplainerTest {
RuleBase ruleBase = new RuleBaseImpl(List.of(TestData.r1,TestData.r10, TestData.r11)); RuleBase ruleBase = new RuleBaseImpl(List.of(TestData.r1,TestData.r10, TestData.r11));
KnowledgeBase kb = new KnowledgeBaseImpl(factBase, ruleBase); KnowledgeBase kb = new KnowledgeBaseImpl(factBase, ruleBase);
explainer = new KBSupportExplainer(kb); explainer = new KBSupportExplainer_KBGRI(kb);
Set<KnowledgeBase> explanations = explainer.explain(query); Set<KnowledgeBase> explanations = explainer.getAllExplanations(query);
FactBase expectedFactBase1 = new SimpleInMemoryGraphStore(Set.of(TestData.pa)); FactBase expectedFactBase1 = new SimpleInMemoryGraphStore(Set.of(TestData.pa));
RuleBase expectedRuleBase1 = new RuleBaseImpl(Set.of(TestData.r1, TestData.r10)); RuleBase expectedRuleBase1 = new RuleBaseImpl(Set.of(TestData.r1, TestData.r10));
...@@ -56,8 +56,8 @@ public class KBSupportExplainerTest { ...@@ -56,8 +56,8 @@ public class KBSupportExplainerTest {
RuleBase ruleBase = new RuleBaseImpl(List.of(TestData.r1,TestData.r10, TestData.r11)); RuleBase ruleBase = new RuleBaseImpl(List.of(TestData.r1,TestData.r10, TestData.r11));
KnowledgeBase kb = new KnowledgeBaseImpl(factBase, ruleBase); KnowledgeBase kb = new KnowledgeBaseImpl(factBase, ruleBase);
explainer = new KBSupportExplainer(kb); explainer = new KBSupportExplainer_KBGRI(kb);
Set<KnowledgeBase> explanations = explainer.explain(query); Set<KnowledgeBase> explanations = explainer.getAllExplanations(query);
FactBase expectedFactBase1 = new SimpleInMemoryGraphStore(Set.of(TestData.pa)); FactBase expectedFactBase1 = new SimpleInMemoryGraphStore(Set.of(TestData.pa));
RuleBase expectedRuleBase1 = new RuleBaseImpl(Set.of(TestData.r1)); RuleBase expectedRuleBase1 = new RuleBaseImpl(Set.of(TestData.r1));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment