Skip to content

Commit be16dfe

Browse files
committed
more sparql generators
1 parent 42cd5a6 commit be16dfe

File tree

2 files changed

+11
-13
lines changed

2 files changed

+11
-13
lines changed

rdflib/plugins/sparql/evaluate.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ def evalUnion(ctx, union):
121121

122122

123123
def evalMinus(ctx, minus):
124-
a = set(evalPart(ctx, minus.p1))
124+
a = evalPart(ctx, minus.p1)
125125
b = set(evalPart(ctx, minus.p2))
126126
return _minus(a, b)
127127

@@ -164,7 +164,7 @@ def evalGraph(ctx, part):
164164
ctx = ctx.clone()
165165
graph = ctx[part.term]
166166
if graph is None:
167-
res = []
167+
168168
for graph in ctx.dataset.contexts():
169169

170170
# in SPARQL the default graph is NOT a named graph
@@ -174,12 +174,13 @@ def evalGraph(ctx, part):
174174
c = ctx.pushGraph(graph)
175175
c = c.push()
176176
graphSolution = [{part.term: graph.identifier}]
177-
res += _join(evalPart(c, part.p), graphSolution)
177+
for x in _join(evalPart(c, part.p), graphSolution):
178+
yield x
178179

179-
return res
180180
else:
181181
c = ctx.pushGraph(ctx.dataset.get_context(graph))
182-
return evalPart(c, part.p)
182+
for x in evalPart(c, part.p):
183+
yield x
183184

184185

185186
def evalValues(ctx, part):
@@ -287,17 +288,16 @@ def evalAggregateJoin(ctx, agg):
287288
p = evalPart(ctx, agg.p)
288289
# p is always a Group, we always get a dict back
289290

290-
res = []
291291
for row in p:
292292
bindings = {}
293293
for a in agg.A:
294294
evalAgg(a, p[row], bindings)
295295

296-
res.append(FrozenBindings(ctx, bindings))
296+
yield FrozenBindings(ctx, bindings)
297297

298298
if len(p) == 0:
299-
res.append(FrozenBindings(ctx))
300-
return res
299+
yield FrozenBindings(ctx)
300+
301301

302302

303303
def evalOrderBy(ctx, part):
@@ -431,7 +431,7 @@ def evalQuery(graph, query, initBindings, base=None):
431431
if firstDefault:
432432
# replace current default graph
433433
dg = ctx.dataset.get_context(BNode())
434-
ctx = c.pushGraph(dg)
434+
ctx = ctx.pushGraph(dg)
435435
firstDefault = True
436436

437437
ctx.load(d.default, default=True)

rdflib/plugins/sparql/evalutils.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,10 @@ def _diff(a, b, expr):
1818

1919

2020
def _minus(a, b):
21-
res = set()
2221
for x in a:
2322
if all((not x.compatible(y)) or x.disjointDomain(y) for y in b):
24-
res.add(x)
23+
yield x
2524

26-
return res
2725

2826

2927
def _join(a, b):

0 commit comments

Comments
 (0)