use of org.apache.jena.sparql.syntax.ElementSubQuery in project jena by apache.
the class WhereHandlerTest method testMakeSubQueryFromSelectWithOutVar.
@Test
public void testMakeSubQueryFromSelectWithOutVar() {
SelectBuilder sb = new SelectBuilder().addWhere("?x", RDF.type, RDF.Alt);
ElementSubQuery esq = handler.makeSubQuery(sb);
Triple t1 = new Triple(NodeFactory.createVariable("x"), RDF.type.asNode(), RDF.Alt.asNode());
TriplePath tp = new TriplePath(t1);
ElementPathBlock epb = new ElementPathBlock();
epb.addTriple(tp);
Query q = new Query();
q.setQuerySelectType();
q.setQueryResultStar(true);
q.setQueryPattern(epb);
ElementSubQuery esq2 = new ElementSubQuery(q);
WhereValidator wv = new WhereValidator(esq2);
esq.visit(wv);
assertTrue(wv.matching);
}
use of org.apache.jena.sparql.syntax.ElementSubQuery in project jena by apache.
the class WhereHandler method makeSubQuery.
/**
* Convert a subquery into a subquery element.
*
* @param subQuery The sub query to convert
* @return THe converted element.
*/
public ElementSubQuery makeSubQuery(AbstractQueryBuilder<?> subQuery) {
Query q = new Query();
q.setQuerySelectType();
PrologHandler ph = new PrologHandler(query);
ph.addPrefixes(subQuery.getPrologHandler().getPrefixes());
HandlerBlock handlerBlock = new HandlerBlock(q);
handlerBlock.addAll(subQuery.getHandlerBlock());
// remove the prefix mappings from the sub query.
handlerBlock.getPrologHandler().clearPrefixes();
// make sure we have a query pattern before we start building.
if (q.getQueryPattern() == null) {
q.setQueryPattern(new ElementGroup());
}
handlerBlock.build();
return new ElementSubQuery(q);
}
use of org.apache.jena.sparql.syntax.ElementSubQuery in project jena by apache.
the class ElementRewriter method visit.
@Override
public void visit(ElementSubQuery el) {
Query q = AbstractQueryBuilder.clone(el.getQuery());
push(new ElementSubQuery(AbstractQueryBuilder.rewrite(q, values)));
}
use of org.apache.jena.sparql.syntax.ElementSubQuery in project jena by apache.
the class QuadIteratorBuilder method visit.
@Override
public void visit(ElementSubQuery el) {
final Query q = el.getQuery();
q.getQueryPattern().visit(this);
}
Aggregations