use of org.openrdf.query.algebra.QueryModelNode in project incubator-rya by apache.
the class PrecompJoinOptimizerVarToConstTest method testContextFilterFourIndex.
@Test
public void testContextFilterFourIndex() throws Exception {
final SPARQLParser parser1 = new SPARQLParser();
final SPARQLParser parser3 = new SPARQLParser();
final SPARQLParser parser4 = new SPARQLParser();
final ParsedQuery pq1 = parser1.parseQuery(q19, null);
final ParsedQuery pq3 = parser3.parseQuery(q17, null);
final ParsedQuery pq4 = parser4.parseQuery(q18, null);
System.out.println("Query is " + pq1.getTupleExpr());
System.out.println("Indexes are " + pq3.getTupleExpr() + " , " + pq4.getTupleExpr());
final SimpleExternalTupleSet extTup2 = new SimpleExternalTupleSet(new Projection(pq3.getTupleExpr()));
final SimpleExternalTupleSet extTup3 = new SimpleExternalTupleSet(new Projection(pq4.getTupleExpr()));
final List<ExternalTupleSet> list = new ArrayList<ExternalTupleSet>();
list.add(extTup3);
list.add(extTup2);
final TupleExpr tup = pq1.getTupleExpr().clone();
final PCJOptimizer pcj = new PCJOptimizer(list, false, new AccumuloIndexSetProvider(new Configuration(), list));
pcj.optimize(tup, null, null);
System.out.println("Processed query is " + tup);
final Set<StatementPattern> qSet = Sets.newHashSet(StatementPatternCollector.process(pq1.getTupleExpr()));
final Set<QueryModelNode> eTupSet = PcjIntegrationTestingUtil.getTupleSets(tup);
Assert.assertEquals(2, eTupSet.size());
final Set<StatementPattern> set = Sets.newHashSet();
for (final QueryModelNode s : eTupSet) {
final Set<StatementPattern> tempSet = Sets.newHashSet(StatementPatternCollector.process(((ExternalTupleSet) s).getTupleExpr()));
set.addAll(tempSet);
}
Assert.assertTrue(qSet.containsAll(set));
}
use of org.openrdf.query.algebra.QueryModelNode in project incubator-rya by apache.
the class JoinSegmentPCJMatcherTest method testBasicSegment.
@Test
public void testBasicSegment() throws MalformedQueryException {
String query1 = //
"" + //
"SELECT ?e ?c ?l" + //
"{" + //
" ?e a ?c . " + //
" ?e <uri:talksTo> ?l . " + //
" ?e <http://www.w3.org/2000/01/rdf-schema#label> ?l " + //
"}";
String query2 = //
"" + //
"SELECT ?e ?c ?l" + //
"{" + //
" ?e a ?c . " + //
" ?e <uri:talksTo> ?l . " + //
"}";
SPARQLParser parser = new SPARQLParser();
ParsedQuery pq1 = parser.parseQuery(query1, null);
ParsedQuery pq2 = parser.parseQuery(query2, null);
TupleExpr te1 = pq1.getTupleExpr();
TupleExpr te2 = pq2.getTupleExpr();
Projection proj = (Projection) te1;
Join join = (Join) proj.getArg();
ExternalSetMatcher<ExternalTupleSet> jsm = pcjFactory.getMatcher(qFactory.getQuerySegment(join));
SimpleExternalTupleSet pcj = new SimpleExternalTupleSet((Projection) te2);
Assert.assertEquals(true, jsm.match(pcj));
TupleExpr te = jsm.getQuery();
Assert.assertEquals(new HashSet<QueryModelNode>(), jsm.getUnmatchedArgNodes());
Set<QueryModelNode> qNodes = QueryNodeGatherer.getNodes(te);
List<QueryModelNode> nodes = jsm.getOrderedNodes();
Set<QueryModelNode> nodeSet = new HashSet<>();
nodeSet.add(nodes.get(0));
nodeSet.add(pcj);
Assert.assertEquals(nodeSet, new HashSet<QueryModelNode>(nodes));
Assert.assertEquals(nodeSet, qNodes);
}
use of org.openrdf.query.algebra.QueryModelNode in project incubator-rya by apache.
the class VarConstQueryVariableNormalizerTest method queryConstFreeTextFilter.
@Test
public void queryConstFreeTextFilter() throws Exception {
SPARQLParser parser1 = new SPARQLParser();
SPARQLParser parser2 = new SPARQLParser();
ParsedQuery pq1 = parser1.parseQuery(q33, null);
ParsedQuery pq2 = parser2.parseQuery(q35, null);
System.out.println(pq1.getTupleExpr());
List<TupleExpr> normalize = QueryVariableNormalizer.getNormalizedIndex(pq1.getTupleExpr(), pq2.getTupleExpr());
Assert.assertEquals(2, normalize.size());
for (TupleExpr te : normalize) {
Assert.assertTrue(isTupleSubset(pq1.getTupleExpr(), te));
}
FilterCollector fc1 = new FilterCollector();
pq1.getTupleExpr().visit(fc1);
List<QueryModelNode> fList1 = fc1.getFilters();
for (TupleExpr te : normalize) {
FilterCollector fc2 = new FilterCollector();
te.visit(fc2);
List<QueryModelNode> fList2 = fc2.getFilters();
for (QueryModelNode q : fList2) {
Assert.assertTrue(fList1.contains(q));
}
}
}
use of org.openrdf.query.algebra.QueryModelNode in project incubator-rya by apache.
the class VarConstQueryVariableNormalizerTest method queryCompoundFilterMatch.
@Test
public void queryCompoundFilterMatch() throws Exception {
String q17 = //
"" + //
"SELECT ?j ?k ?l ?m ?n ?o " + //
"{" + //
" GRAPH ?z { " + //
" ?j <uri:talksTo> ?k . " + //
" FILTER ( ?k < ?l && (?m > ?n || ?o = ?j) ). " + //
" }" + //
"}";
// String q18 = ""//
// + "SELECT ?r ?s ?t ?u " //
// + "{" //
// + " GRAPH ?q { " //
// + " FILTER(bound(?r) && sameTerm(?s,?t)&&bound(?u)). " //
// + " ?t a ?u ."//
// + " }"//
// + "}";//
String q19 = //
"" + //
"SELECT ?a ?b ?c ?d ?f ?q ?g ?h " + //
"{" + //
" GRAPH ?x { " + //
" ?a a ?b ." + //
" ?b <http://www.w3.org/2000/01/rdf-schema#label> ?c ." + //
" ?d <uri:talksTo> \"5\" . " + //
" FILTER ( \"5\" < ?f && (?a > ?b || ?c = ?d) ). " + //
" FILTER(bound(?f) && sameTerm(?a,?b)&&bound(?q)). " + //
" FILTER(?g IN (1,2,3) && ?h NOT IN(5,6,7)). " + //
" ?h <http://www.w3.org/2000/01/rdf-schema#label> ?g. " + //
" ?b a ?q ." + //
" }" + //
"}";
// String q20 = ""//
// + "SELECT ?m ?n ?o " //
// + "{" //
// + " GRAPH ?q { " //
// + " FILTER(?m IN (1,?o,3) && ?n NOT IN(5,6,7)). " //
// + " ?n <http://www.w3.org/2000/01/rdf-schema#label> ?m. "//
// + " }"//
// + "}";//
SPARQLParser parser1 = new SPARQLParser();
SPARQLParser parser2 = new SPARQLParser();
ParsedQuery pq1 = parser1.parseQuery(q19, null);
ParsedQuery pq2 = parser2.parseQuery(q17, null);
List<TupleExpr> normalize = QueryVariableNormalizer.getNormalizedIndex(pq1.getTupleExpr(), pq2.getTupleExpr());
System.out.println(normalize);
Assert.assertEquals(1, normalize.size());
for (TupleExpr te : normalize) {
Assert.assertTrue(isTupleSubset(pq1.getTupleExpr(), te));
}
FilterCollector fc1 = new FilterCollector();
pq1.getTupleExpr().visit(fc1);
List<QueryModelNode> fList1 = fc1.getFilters();
for (TupleExpr te : normalize) {
FilterCollector fc2 = new FilterCollector();
te.visit(fc2);
List<QueryModelNode> fList2 = fc2.getFilters();
for (QueryModelNode q : fList2) {
Assert.assertTrue(fList1.contains(q));
}
}
}
use of org.openrdf.query.algebra.QueryModelNode in project incubator-rya by apache.
the class OptionalJoinSegmentPCJMatcherTest method testWithUnmatchedNodes.
@Test
public void testWithUnmatchedNodes() throws Exception {
String query1 = //
"" + //
"SELECT ?a ?b ?c ?d ?e" + //
"{" + //
" Filter(?a = <uri:s1>)" + //
" Filter(?b = <uri:s2>)" + " {?e <uri:p3> <uri:o2> } UNION {?d <uri:p4> <uri:o3>} ." + " ?a <uri:workAt> <uri:Company1> ." + //
" ?b <uri:talksTo> ?c . " + //
" OPTIONAL { ?b <uri:p1> ?c } . " + //
" ?b <uri:p2> <uri:o1> . " + //
"}";
String query2 = //
"" + //
"SELECT ?e ?c ?l" + //
"{" + //
" ?b <uri:talksTo> ?c . " + //
" OPTIONAL { ?b <uri:p1> ?c } . " + //
" ?b <uri:p2> <uri:o1> . " + //
" Filter(?b = <uri:s2>)" + //
"}";
SPARQLParser parser = new SPARQLParser();
ParsedQuery pq1 = parser.parseQuery(query1, null);
ParsedQuery pq2 = parser.parseQuery(query2, null);
TupleExpr te1 = pq1.getTupleExpr();
TupleExpr te2 = pq2.getTupleExpr();
Projection proj = (Projection) te1;
Join join = (Join) proj.getArg();
ExternalSetMatcher<ExternalTupleSet> jsm = pcjFactory.getMatcher(qFactory.getQuerySegment(join));
SimpleExternalTupleSet pcj = new SimpleExternalTupleSet((Projection) te2);
Assert.assertEquals(true, jsm.match(pcj));
TupleExpr te = jsm.getQuery();
Set<QueryModelNode> qNodes = LeftJoinQueryNodeGatherer.getNodes(te);
List<QueryModelNode> nodes = jsm.getOrderedNodes();
Assert.assertEquals(1, jsm.getUnmatchedArgNodes().size());
Assert.assertEquals(true, jsm.getUnmatchedArgNodes().contains(nodes.get(3)));
Set<QueryModelNode> nodeSet = new HashSet<>();
nodeSet.add(nodes.get(0));
nodeSet.add(nodes.get(2));
nodeSet.add(nodes.get(3));
nodeSet.add(pcj);
Assert.assertEquals(nodeSet, new HashSet<QueryModelNode>(nodes));
Assert.assertEquals(nodeSet, qNodes);
}
Aggregations