Query: prefix rdf: prefix : prefix rdfs: prefix mf: prefix qt: prefix dawgt: prefix ut: prefix sd: SELECT DISTINCT ?testiri ?name ?queryTest ?dataInput ?dataOutput ?dataInputExist ?graphDataInputExist ?serviceDataInputExist ?dataOutputExist ?graphDataOutputExist WHERE { GRAPH { # VALUES ?testiri {} ?manifest a mf:Manifest ; mf:entries ?collection . ?collection rdf:rest*/rdf:first ?testiri . ?testiri a mf:UpdateEvaluationTest ; mf:name ?name ; dawgt:approval dawgt:Approved ; mf:action ?action. ?action ut:request ?queryTest . OPTIONAL { ?action ut:data ?dataInput . } OPTIONAL { ?action ut:graphData ?graphDataInput . } OPTIONAL { ?action ut:serviceData ?serviceDataInput . } OPTIONAL { ?testiri mf:result ?result . ?result ut:data ?dataOutput . } OPTIONAL { ?testiri mf:result ?result . ?result ut:graphData ?graphDataOutput . } BIND(BOUND(?dataInput) AS ?dataInputExist) BIND(BOUND(?graphDataInput) AS ?graphDataInputExist) BIND(BOUND(?serviceDataInput) AS ?serviceDataInputExist) BIND(BOUND(?dataOutput) AS ?dataOutputExist) BIND(BOUND(?graphDataOutput) AS ?graphDataOutputExist) } } ORDER BY ?testiri with query plan: prefix rdf: prefix : prefix rdfs: prefix mf: prefix qt: prefix dawgt: prefix ut: prefix sd: Slice(offset=0, limit=1000) [#2] `─ OrderBy(ASC(?testiri), offset=0, limit=1000) [#2] `─ Distinct [#2] `─ Projection(?testiri, ?name, ?queryTest, ?dataInput, ?dataOutput, ?dataInputExist, ?graphDataInputExist, ?serviceDataInputExist, ?dataOutputExist, ?graphDataOutputExist) [#2] `─ Bind(Bound(?dataInput) AS ?dataInputExist) (Bound(?graphDataInput) AS ?graphDataInputExist) (Bound(?serviceDataInput) AS ?serviceDataInputExist) (Bound(?dataOutput) AS ?dataOutputExist) (Bound(?graphDataOutput) AS ?graphDataOutputExist) sortedBy=?action [#2] `─ HashJoinOuter(?testiri) [#2] +─ HashJoinOuter(?testiri) [#2] │ +─ MergeJoinOuter(?action) [#2] │ │ +─ MergeJoinOuter(?action) [#2] │ │ │ +─ MergeJoinOuter(?action) [#2] │ │ │ │ +─ MergeJoin(?action) [#2] │ │ │ │ │ +─ Scan[PSOC](?action, ut:request, ?queryTest){} [#150] │ │ │ │ │ `─ Sort(?action) [#4] │ │ │ │ │ `─ MergeJoin(?testiri) [#4] │ │ │ │ │ +─ MergeJoin(?testiri) [#448] │ │ │ │ │ │ +─ Scan[PSOC](?testiri, mf:action, ?action){} [#319] │ │ │ │ │ │ `─ MergeJoin(?testiri) [#123] │ │ │ │ │ │ +─ Scan[PSOC](?testiri, mf:name, ?name){} [#227] │ │ │ │ │ │ `─ MergeJoin(?testiri) [#115] │ │ │ │ │ │ +─ Scan[POSC](?testiri, dawgt:approval, dawgt:Approved){} [#217] │ │ │ │ │ │ `─ Scan[POSC](?testiri, rdf:type, mf:UpdateEvaluationTest){} [#38] │ │ │ │ │ `─ Sort(?testiri) [#7] │ │ │ │ │ `─ MergeJoin(?gkdoippw) [#7] │ │ │ │ │ +─ Scan[PSOC](?gkdoippw, rdf:first, ?testiri){} [#503] │ │ │ │ │ `─ Sort(?gkdoippw) [#30] │ │ │ │ │ `─ PropertyPath(?collection -> ?gkdoippw in , minLength=0, no start nodes) [#30] │ │ │ │ │ +─ MergeJoin(?manifest) [#13] │ │ │ │ │ │ +─ Scan[POSC](?manifest, rdf:type, mf:Manifest){} [#2] │ │ │ │ │ │ `─ Scan[PSOC](?manifest, mf:entries, ?collection){} [#27] │ │ │ │ │ `─ Scan[POSC](?collection, rdf:rest, ?gkdoippw){} [#503] │ │ │ │ `─ Scan[PSOC](?action, ut:data, ?dataInput){} [#277] │ │ │ `─ Scan[PSOC](?action, ut:graphData, ?graphDataInput){} [#357] │ │ `─ Scan[PSOC](?action, ut:serviceData, ?serviceDataInput){} [#1] │ `─ MergeJoin(?result) [#52] │ +─ Scan[POSC](?testiri, mf:result, ?result){} [#255] │ `─ Scan[PSOC](?result, ut:data, ?dataOutput){} [#277] `─ MergeJoin(?result) [#73] +─ Scan[POSC](?testiri, mf:result, ?result){} [#255] `─ Scan[PSOC](?result, ut:graphData, ?graphDataOutput){} [#357] Succeeded, 8 results, 5239 ms