use of fr.lirmm.graphik.graal.core.DefaultAtom in project graal by graphik-team.
the class Atom2SubstitutionConverterTest method githubIssue2.
@Test
public void githubIssue2() throws ParseException {
// given
Predicate p = DefaultPredicateFactory.instance().create("p", 1);
Variable x = DefaultTermFactory.instance().createVariable("X");
Variable y = DefaultTermFactory.instance().createVariable("Y");
Atom queryAtom = new DefaultAtom(p, x);
List<Term> ansList = new LinkedList<>();
ansList.add(y);
// when
Converter<Atom, Substitution> converter = new Atom2SubstitutionConverter(queryAtom, ansList);
Substitution s = null;
try {
s = converter.convert(DlgpParser.parseAtom("p(a)."));
} catch (ConversionException e) {
fail();
}
// then
assertEquals(x, s.createImageOf(x));
assertEquals(y, s.createImageOf(y));
}
use of fr.lirmm.graphik.graal.core.DefaultAtom in project graal by graphik-team.
the class Atom2SubstitutionConverterTest method wrongUsage.
@Test
public void wrongUsage() throws ParseException {
// given
Predicate p = DefaultPredicateFactory.instance().create("p", 1);
Variable x = DefaultTermFactory.instance().createVariable("X");
Atom queryAtom = new DefaultAtom(p, x, x);
List<Term> ansList = new LinkedList<>();
ansList.add(x);
// when
Converter<Atom, Substitution> converter = new Atom2SubstitutionConverter(queryAtom, ansList);
Substitution s = null;
try {
s = converter.convert(DlgpParser.parseAtom("p(a, b)."));
} catch (ConversionException e) {
fail();
}
// then
Constant a = DefaultTermFactory.instance().createConstant("a");
System.out.println(s);
}
use of fr.lirmm.graphik.graal.core.DefaultAtom in project graal by graphik-team.
the class Atom2SubstitutionConverterTest method githubIssue2variantWithConstant.
@Test
public void githubIssue2variantWithConstant() throws ParseException {
// given
Predicate p = DefaultPredicateFactory.instance().create("p", 1);
Variable x = DefaultTermFactory.instance().createVariable("X");
Constant b = DefaultTermFactory.instance().createConstant("b");
Atom queryAtom = new DefaultAtom(p, x);
List<Term> ansList = new LinkedList<>();
ansList.add(x);
ansList.add(b);
// when
Converter<Atom, Substitution> converter = new Atom2SubstitutionConverter(queryAtom, ansList);
Substitution s = null;
try {
s = converter.convert(DlgpParser.parseAtom("p(a)."));
} catch (ConversionException e) {
fail();
}
// then
Constant a = DefaultTermFactory.instance().createConstant("a");
assertEquals(a, s.createImageOf(x));
assertEquals(b, s.createImageOf(b));
}
use of fr.lirmm.graphik.graal.core.DefaultAtom 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.core.DefaultAtom 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