Search in sources :

Example 41 with Rule

use of fr.lirmm.graphik.graal.api.core.Rule in project graal by graphik-team.

the class DefaultKnowledgeBaseTest method testDefaultKnowledgeBaseAtomSetRuleSet.

/**
 * Test method for
 * {@link fr.lirmm.graphik.graal.kb.DefaultKnowledgeBase#DefaultKnowledgeBase(fr.lirmm.graphik.graal.api.core.AtomSet, fr.lirmm.graphik.graal.api.core.RuleSet)}.
 * @throws AtomSetException
 * @throws ParseException
 */
@Test
public void testDefaultKnowledgeBaseAtomSetRuleSet() throws AtomSetException, ParseException {
    Atom aa = DlgpParser.parseAtom("q(a).");
    Atom ab = DlgpParser.parseAtom("q(b).");
    Atom ac = DlgpParser.parseAtom("q(c).");
    Rule r = DlgpParser.parseRule("[R1] p(x) :- q(X).");
    NegativeConstraint nc = DlgpParser.parseNegativeConstraint("[NC] ! :- q(X), p(X).");
    AtomSet store = new DefaultInMemoryGraphStore();
    store.add(aa);
    store.add(ab);
    store.add(ac);
    RuleSet ruleset = new LinkedListRuleSet();
    ruleset.add(r);
    ruleset.add(nc);
    KnowledgeBase kb = new DefaultKnowledgeBase(store, ruleset);
    Assert.assertTrue(kb.getOntology().contains(r));
    Assert.assertTrue(kb.getOntology().contains(nc));
    Assert.assertTrue(kb.getFacts().contains(aa));
    Assert.assertTrue(kb.getFacts().contains(ab));
    Assert.assertTrue(kb.getFacts().contains(ac));
    kb.close();
}
Also used : RuleSet(fr.lirmm.graphik.graal.api.core.RuleSet) LinkedListRuleSet(fr.lirmm.graphik.graal.core.ruleset.LinkedListRuleSet) KnowledgeBase(fr.lirmm.graphik.graal.api.kb.KnowledgeBase) AtomSet(fr.lirmm.graphik.graal.api.core.AtomSet) Rule(fr.lirmm.graphik.graal.api.core.Rule) DefaultInMemoryGraphStore(fr.lirmm.graphik.graal.core.atomset.graph.DefaultInMemoryGraphStore) LinkedListRuleSet(fr.lirmm.graphik.graal.core.ruleset.LinkedListRuleSet) Atom(fr.lirmm.graphik.graal.api.core.Atom) NegativeConstraint(fr.lirmm.graphik.graal.api.core.NegativeConstraint) Test(org.junit.Test)

Example 42 with Rule

use of fr.lirmm.graphik.graal.api.core.Rule in project graal by graphik-team.

the class Analyser method ruleProperties.

public List<Map<String, Integer>> ruleProperties() {
    if (this.ruleProperties == null) {
        this.ruleProperties = new LinkedList<Map<String, Integer>>();
        for (Rule r : this.ruleSet) {
            AnalyserRuleSet subAnalyser = new AnalyserRuleSet(r);
            this.ruleProperties.add(computeProperties(subAnalyser));
        }
    }
    return this.ruleProperties;
}
Also used : AnalyserRuleSet(fr.lirmm.graphik.graal.rulesetanalyser.util.AnalyserRuleSet) Rule(fr.lirmm.graphik.graal.api.core.Rule) TreeMap(java.util.TreeMap) Map(java.util.Map)

Example 43 with Rule

use of fr.lirmm.graphik.graal.api.core.Rule in project graal by graphik-team.

the class MFAProperty method translateToMFA.

public static RuleSet translateToMFA(Iterable<Rule> rules) {
    RuleSet R = new LinkedListRuleSet();
    for (Rule r : rules) {
        for (Rule r2 : translateRuleToMFA(r)) R.add(r2);
    }
    DefaultRule rule = new DefaultRule();
    Atom s = new DefaultAtom(S);
    s.setTerm(0, DefaultTermFactory.instance().createVariable("X1"));
    s.setTerm(1, DefaultTermFactory.instance().createVariable("X2"));
    Atom d = new DefaultAtom(D);
    d.setTerm(0, DefaultTermFactory.instance().createVariable("X1"));
    d.setTerm(1, DefaultTermFactory.instance().createVariable("X2"));
    rule.getBody().add(s);
    rule.getHead().add(d);
    R.add(rule);
    s = new DefaultAtom(S);
    d = new DefaultAtom(D);
    Atom d2 = new DefaultAtom(D);
    d.setTerm(0, DefaultTermFactory.instance().createVariable("X1"));
    d.setTerm(1, DefaultTermFactory.instance().createVariable("X2"));
    s.setTerm(0, DefaultTermFactory.instance().createVariable("X2"));
    s.setTerm(1, DefaultTermFactory.instance().createVariable("X3"));
    d2.setTerm(0, DefaultTermFactory.instance().createVariable("X1"));
    d2.setTerm(1, DefaultTermFactory.instance().createVariable("X3"));
    rule = new DefaultRule();
    rule.getBody().add(d);
    rule.getBody().add(s);
    rule.getHead().add(d2);
    R.add(rule);
    return R;
}
Also used : DefaultRule(fr.lirmm.graphik.graal.core.DefaultRule) AnalyserRuleSet(fr.lirmm.graphik.graal.rulesetanalyser.util.AnalyserRuleSet) RuleSet(fr.lirmm.graphik.graal.api.core.RuleSet) LinkedListRuleSet(fr.lirmm.graphik.graal.core.ruleset.LinkedListRuleSet) DefaultAtom(fr.lirmm.graphik.graal.core.DefaultAtom) LinkedListRuleSet(fr.lirmm.graphik.graal.core.ruleset.LinkedListRuleSet) Rule(fr.lirmm.graphik.graal.api.core.Rule) DefaultRule(fr.lirmm.graphik.graal.core.DefaultRule) DefaultAtom(fr.lirmm.graphik.graal.core.DefaultAtom) Atom(fr.lirmm.graphik.graal.api.core.Atom)

Example 44 with Rule

use of fr.lirmm.graphik.graal.api.core.Rule in project graal by graphik-team.

the class KBBuilderTest method testAddRule.

/**
 * Test method for {@link fr.lirmm.graphik.graal.kb.KBBuilder#add(fr.lirmm.graphik.graal.api.core.Rule)}.
 * @throws ParseException
 */
@Test
public void testAddRule() throws ParseException {
    // Given
    KBBuilder kbb = new KBBuilder();
    Rule r1 = DlgpParser.parseRule("[R1] p(X) :- q(X).");
    // When
    kbb.add(r1);
    KnowledgeBase kb = kbb.build();
    // Then
    Assert.assertEquals(r1, kb.getRule("R1"));
    Assert.assertEquals(1, kb.getOntology().size());
}
Also used : KnowledgeBase(fr.lirmm.graphik.graal.api.kb.KnowledgeBase) Rule(fr.lirmm.graphik.graal.api.core.Rule) Test(org.junit.Test)

Example 45 with Rule

use of fr.lirmm.graphik.graal.api.core.Rule in project graal by graphik-team.

the class JointlyAffectedPositionSet method step2.

/**
 * for each rule and for each variable x that occurs only at affected
 * positions in its body, all positions q[j] in its head where occurs x are
 * affected.
 */
protected void step2() {
    InMemoryAtomSet body;
    boolean isAffected;
    int i;
    CloseableIteratorWithoutException<Atom> atomIt;
    Iterator<Term> termIt;
    Atom a;
    Term t;
    boolean fixPoint = false;
    while (!fixPoint) {
        fixPoint = true;
        for (Rule rule : ruleSet) {
            body = rule.getBody();
            for (Variable term : rule.getBody().getVariables()) {
                isAffected = true;
                atomIt = body.iterator();
                while (atomIt.hasNext() && isAffected) {
                    i = -1;
                    a = atomIt.next();
                    termIt = a.iterator();
                    while (termIt.hasNext() && isAffected) {
                        ++i;
                        t = termIt.next();
                        if (term.equals(t)) {
                            if (!isAffected(a.getPredicate(), i)) {
                                isAffected = false;
                            }
                        }
                    }
                }
                if (isAffected) {
                    if (this.affectInHead(rule, term)) {
                        fixPoint = false;
                    }
                }
            }
        }
    }
}
Also used : Variable(fr.lirmm.graphik.graal.api.core.Variable) InMemoryAtomSet(fr.lirmm.graphik.graal.api.core.InMemoryAtomSet) Term(fr.lirmm.graphik.graal.api.core.Term) Rule(fr.lirmm.graphik.graal.api.core.Rule) Atom(fr.lirmm.graphik.graal.api.core.Atom)

Aggregations

Rule (fr.lirmm.graphik.graal.api.core.Rule)141 Test (org.junit.Test)87 Atom (fr.lirmm.graphik.graal.api.core.Atom)64 OWL2Parser (fr.lirmm.graphik.graal.io.owl.OWL2Parser)52 DefaultNegativeConstraint (fr.lirmm.graphik.graal.core.DefaultNegativeConstraint)49 InMemoryAtomSet (fr.lirmm.graphik.graal.api.core.InMemoryAtomSet)26 Substitution (fr.lirmm.graphik.graal.api.core.Substitution)23 LinkedList (java.util.LinkedList)19 IteratorException (fr.lirmm.graphik.util.stream.IteratorException)16 Term (fr.lirmm.graphik.graal.api.core.Term)15 Prefix (fr.lirmm.graphik.util.Prefix)14 CloseableIteratorWithoutException (fr.lirmm.graphik.util.stream.CloseableIteratorWithoutException)14 OWL2ParserException (fr.lirmm.graphik.graal.io.owl.OWL2ParserException)13 Predicate (fr.lirmm.graphik.graal.api.core.Predicate)9 DefaultAtom (fr.lirmm.graphik.graal.core.DefaultAtom)9 AtomSet (fr.lirmm.graphik.graal.api.core.AtomSet)7 KnowledgeBase (fr.lirmm.graphik.graal.api.kb.KnowledgeBase)7 DefaultRule (fr.lirmm.graphik.graal.core.DefaultRule)7 ConjunctiveQuery (fr.lirmm.graphik.graal.api.core.ConjunctiveQuery)6 Variable (fr.lirmm.graphik.graal.api.core.Variable)6