use of fr.lirmm.graphik.graal.api.core.Predicate in project graal by graphik-team.
the class AtomTest method testDefaultAtomPredicateListOfTerm.
/**
* Test method for
* {@link fr.lirmm.graphik.graal.core.DefaultAtom#DefaultAtom(fr.lirmm.graphik.graal.api.core.Predicate, java.util.List)}.
*/
@Theory
public void testDefaultAtomPredicateListOfTerm(AtomFactory factory) {
// given
Predicate p = TestUtils.p;
List<Term> terms = new ArrayList<>();
terms.add(TestUtils.A);
terms.add(TestUtils.X);
// when
Atom a = factory.create(p, terms);
// then
Assert.assertEquals(p, a.getPredicate());
Assert.assertEquals(TestUtils.A, a.getTerm(0));
Assert.assertEquals(TestUtils.X, a.getTerm(1));
}
use of fr.lirmm.graphik.graal.api.core.Predicate in project graal by graphik-team.
the class AtomTest method testDefaultAtomPredicate.
/**
* Test method for
* {@link fr.lirmm.graphik.graal.core.DefaultAtom#DefaultAtom(fr.lirmm.graphik.graal.api.core.Predicate)}.
*/
@Theory
public void testDefaultAtomPredicate(AtomFactory factory) {
// given
Predicate p = TestUtils.p;
// when
Atom a = factory.create(p);
// then
Assert.assertEquals(p, a.getPredicate());
Assert.assertNull(a.getTerm(0));
Assert.assertNull(a.getTerm(1));
}
use of fr.lirmm.graphik.graal.api.core.Predicate in project graal by graphik-team.
the class AtomTest method testDefaultAtomPredicateTermArray.
/**
* Test method for
* {@link fr.lirmm.graphik.graal.core.DefaultAtom#DefaultAtom(fr.lirmm.graphik.graal.api.core.Predicate, fr.lirmm.graphik.graal.api.core.Term[])}.
*/
@Theory
public void testDefaultAtomPredicateTermArray(AtomFactory factory) {
// given
Predicate p = TestUtils.p;
// when
Atom a = factory.create(p, TestUtils.A, TestUtils.X);
// then
Assert.assertEquals(p, a.getPredicate());
Assert.assertEquals(TestUtils.A, a.getTerm(0));
Assert.assertEquals(TestUtils.X, a.getTerm(1));
}
use of fr.lirmm.graphik.graal.api.core.Predicate in project graal by graphik-team.
the class IDCompilation method getRewritingOf.
/**
* Return all possible rewritings of this Atom by this compilation.
*/
@Override
public Collection<Pair<Atom, Substitution>> getRewritingOf(Atom atom) {
TreeSet<Pair<Atom, Substitution>> res = new TreeSet<Pair<Atom, Substitution>>();
res.add(new ImmutablePair<Atom, Substitution>(atom, DefaultSubstitutionFactory.instance().createSubstitution()));
Predicate predH = atom.getPredicate();
Map<Predicate, LinkedList<IDCondition>> condH = this.conditions.get(predH);
if (condH != null) {
LinkedList<IDCondition> conds;
Predicate predB;
for (Map.Entry<Predicate, LinkedList<IDCondition>> entry : condH.entrySet()) {
predB = entry.getKey();
conds = entry.getValue();
for (IDCondition cond : conds) {
Pair<List<Term>, Substitution> ret = cond.generateBody(atom.getTerms());
if (ret != null) {
List<Term> generatedBody = ret.getLeft();
res.add(new ImmutablePair<Atom, Substitution>(new DefaultAtom(predB, generatedBody), ret.getRight()));
}
}
}
}
return res;
}
use of fr.lirmm.graphik.graal.api.core.Predicate in project graal by graphik-team.
the class IDCompilation method getSaturation.
// /////////////////////////////////////////////////////////////////////////
// METHODS
// /////////////////////////////////////////////////////////////////////////
@Override
public Iterable<Rule> getSaturation() {
LinkedListRuleSet saturation = new LinkedListRuleSet();
Map<Predicate, TreeMap<List<Integer>, InMemoryAtomSet>> newMap = new TreeMap<Predicate, TreeMap<List<Integer>, InMemoryAtomSet>>();
// p -> q
Predicate p, q;
for (Map.Entry<Predicate, TreeMap<Predicate, LinkedList<IDCondition>>> e : this.conditions.entrySet()) {
q = e.getKey();
for (Map.Entry<Predicate, LinkedList<IDCondition>> map : e.getValue().entrySet()) {
p = map.getKey();
TreeMap<List<Integer>, InMemoryAtomSet> head = newMap.get(p);
if (head == null) {
head = new TreeMap<List<Integer>, InMemoryAtomSet>(new ListComparator<Integer>());
newMap.put(p, head);
}
for (IDCondition conditionPQ : map.getValue()) {
InMemoryAtomSet atomSet = head.get(conditionPQ.getBody());
if (atomSet == null) {
atomSet = new LinkedListAtomSet();
head.put(conditionPQ.getBody(), atomSet);
}
atomSet.add(new DefaultAtom(q, conditionPQ.generateHead()));
}
}
}
for (Map.Entry<Predicate, TreeMap<List<Integer>, InMemoryAtomSet>> e1 : newMap.entrySet()) {
p = e1.getKey();
for (Map.Entry<List<Integer>, InMemoryAtomSet> e2 : e1.getValue().entrySet()) {
List<Term> terms = new LinkedList<Term>();
for (Integer i : e2.getKey()) {
terms.add(DefaultTermFactory.instance().createVariable("X" + i));
}
InMemoryAtomSet body = new LinkedListAtomSet();
body.add(new DefaultAtom(p, terms));
saturation.add(DefaultRuleFactory.instance().create(body, e2.getValue()));
}
}
return saturation;
}
Aggregations