use of fr.lirmm.graphik.graal.api.core.Substitution in project graal by graphik-team.
the class ConjunctiveQueryFixedBugTest method GraphAtomSetQuery.
/**
* Query using an DefaultInMemoryGraphAtomSet.
*
* @param h
* @param store
*/
@Theory
public void GraphAtomSetQuery(Homomorphism<ConjunctiveQuery, AtomSet> h, AtomSet store) {
try {
InMemoryAtomSet atomset = new DefaultInMemoryGraphStore();
atomset.add(DlgpParser.parseAtom("<P>(X)."));
ConjunctiveQuery query = new DefaultConjunctiveQuery(atomset);
CloseableIterator<Substitution> subReader;
subReader = h.execute(query, store);
Assert.assertFalse(subReader.hasNext());
subReader.close();
} catch (Exception e) {
Assert.assertTrue(e.getMessage(), false);
}
}
use of fr.lirmm.graphik.graal.api.core.Substitution in project graal by graphik-team.
the class ConjunctiveQueryWithCompilation method issue35.
@Theory
public void issue35(Homomorphism<ConjunctiveQuery, AtomSet> hh, RulesCompilationFactory factory, AtomSet store) throws Exception {
Assume.assumeFalse(store instanceof TripleStore);
Assume.assumeTrue(hh instanceof HomomorphismWithCompilation);
HomomorphismWithCompilation<ConjunctiveQuery, AtomSet> h = (HomomorphismWithCompilation<ConjunctiveQuery, AtomSet>) hh;
store.addAll(DlgpParser.parseAtomSet("<P>(a,a), <R>(a,b,b)."));
RuleSet rules = new LinkedListRuleSet();
rules.add(DlgpParser.parseRule("<Q>(X,Y,X) :- <P>(X,Y)."));
ConjunctiveQuery query = DlgpParser.parseQuery("? :- <Q>(X,Y,Y), <R>(X,Y,Z).");
RulesCompilation comp = factory.create();
comp.compile(rules.iterator());
StaticChase.executeChase(store, rules);
CloseableIterator<Substitution> results = h.execute(new DefaultConjunctiveQuery(query), store, comp);
Assert.assertFalse(results.hasNext());
results.close();
}
use of fr.lirmm.graphik.graal.api.core.Substitution in project graal by graphik-team.
the class MSAProperty method translateRuleToMSA.
public static List<Rule> translateRuleToMSA(final Rule r) {
List<Rule> result = new LinkedList<Rule>();
Substitution s = buildMSASubstitution(r);
DefaultRule r2 = new DefaultRule(r);
/*r2.setBody(r.getBody());
r2.setHead(r.getHead());*/
for (Term yi : r2.getExistentials()) {
Predicate Fir = GraalConstant.freshPredicate(1);
DefaultAtom f = new DefaultAtom(Fir);
f.setTerm(0, yi);
r2.getHead().add(f);
for (Term xj : r2.getFrontier()) {
DefaultAtom ss = new DefaultAtom(S);
ss.setTerm(0, xj);
ss.setTerm(1, yi);
r2.getHead().add(ss);
}
DefaultRule r3 = new DefaultRule();
DefaultAtom f1 = new DefaultAtom(Fir);
f1.setTerm(0, DefaultTermFactory.instance().createVariable("X1"));
DefaultAtom f2 = new DefaultAtom(Fir);
f2.setTerm(0, DefaultTermFactory.instance().createVariable("X2"));
DefaultAtom d = new DefaultAtom(D);
d.setTerm(0, DefaultTermFactory.instance().createVariable("X1"));
d.setTerm(1, DefaultTermFactory.instance().createVariable("X2"));
r3.getBody().add(f1);
r3.getBody().add(d);
r3.getBody().add(f2);
DefaultAtom c = new DefaultAtom(C);
c.setTerm(0, FAKE);
r3.getHead().add(c);
result.add(r3);
}
r2.setHead(s.createImageOf(r2.getHead()));
result.add(r2);
return result;
}
use of fr.lirmm.graphik.graal.api.core.Substitution in project graal by graphik-team.
the class ResultSet2SubstitutionConverter method convert.
// /////////////////////////////////////////////////////////////////////////
// PUBLIC METHODS
// /////////////////////////////////////////////////////////////////////////
@Override
public Substitution convert(ResultSet result) throws ConversionException {
try {
Substitution substitution = new TreeMapSubstitution();
if (!ans.isEmpty()) {
for (Term t : ans) {
if (t.isVariable()) {
int i = result.findColumn(t.getLabel());
int type = result.getMetaData().getColumnType(i);
String value = result.getString(i);
Term substitut = this.queryTranslator.createTermFromColumnType(type, value);
substitution.put((Variable) t, substitut);
}
}
}
return substitution;
} catch (SQLException e) {
throw new ConversionException(e);
} catch (AtomSetException e) {
throw new ConversionException(e);
}
}
use of fr.lirmm.graphik.graal.api.core.Substitution in project graal by graphik-team.
the class ConjunctiveQueryTest method noAnswerQueryTest3.
/**
* Test a query without answer
*/
@Theory
public void noAnswerQueryTest3(Homomorphism<ConjunctiveQuery, AtomSet> h, AtomSet store) {
try {
store.addAll(DlgpParser.parseAtomSet("<P>(a,b), <R>(c,c)."));
ConjunctiveQuery query = DlgpParser.parseQuery("?(Y,X) :- <P>(a,X), <Q>(X,Y).");
CloseableIterator<Substitution> subReader;
subReader = h.execute(query, store);
Assert.assertFalse(subReader.hasNext());
subReader.close();
} catch (Exception e) {
Assert.assertTrue(e.getMessage(), false);
}
}
Aggregations