Mercurial > repos > shellac > guppy_basecaller
diff env/lib/python3.7/site-packages/rdflib/plugins/sparql/evalutils.py @ 5:9b1c78e6ba9c draft default tip
"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
author | shellac |
---|---|
date | Mon, 01 Jun 2020 08:59:25 -0400 (2020-06-01) |
parents | 79f47841a781 |
children |
line wrap: on
line diff
--- a/env/lib/python3.7/site-packages/rdflib/plugins/sparql/evalutils.py Thu May 14 16:47:39 2020 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,125 +0,0 @@ -import collections - -from rdflib.term import Variable, Literal, BNode, URIRef - -from rdflib.plugins.sparql.operators import EBV -from rdflib.plugins.sparql.parserutils import Expr, CompValue, value -from rdflib.plugins.sparql.sparql import SPARQLError, NotBoundError - - -def _diff(a, b, expr): - res = set() - - for x in a: - if all(not x.compatible(y) or not _ebv(expr, x.merge(y)) for y in b): - res.add(x) - - return res - - -def _minus(a, b): - for x in a: - if all((not x.compatible(y)) or x.disjointDomain(y) for y in b): - yield x - - - -def _join(a, b): - for x in a: - for y in b: - if x.compatible(y): - yield x.merge(y) - - -def _ebv(expr, ctx): - - """ - Return true/false for the given expr - Either the expr is itself true/false - or evaluates to something, with the given ctx - - an error is false - """ - - try: - return EBV(expr) - except SPARQLError: - pass - if isinstance(expr, Expr): - try: - return EBV(expr.eval(ctx)) - except SPARQLError: - return False # filter error == False - elif isinstance(expr, CompValue): - raise Exception( - "Weird - filter got a CompValue without evalfn! %r" % expr) - elif isinstance(expr, Variable): - try: - return EBV(ctx[expr]) - except: - return False - return False - - -def _eval(expr, ctx, raise_not_bound_error=True): - if isinstance(expr, (Literal, URIRef)): - return expr - if isinstance(expr, Expr): - return expr.eval(ctx) - elif isinstance(expr, Variable): - try: - return ctx[expr] - except KeyError: - if raise_not_bound_error: - raise NotBoundError("Variable %s is not bound" % expr) - else: - return None - elif isinstance(expr, CompValue): - raise Exception( - "Weird - _eval got a CompValue without evalfn! %r" % expr) - else: - raise Exception("Cannot eval thing: %s (%s)" % (expr, type(expr))) - - -def _filter(a, expr): - for c in a: - if _ebv(expr, c): - yield c - - -def _fillTemplate(template, solution): - - """ - For construct/deleteWhere and friends - - Fill a triple template with instantiated variables - """ - - bnodeMap = collections.defaultdict(BNode) - for t in template: - s, p, o = t - - _s = solution.get(s) - _p = solution.get(p) - _o = solution.get(o) - - # instantiate new bnodes for each solution - _s, _p, _o = [bnodeMap[x] if isinstance( - x, BNode) else y for x, y in zip(t, (_s, _p, _o))] - - if _s is not None and \ - _p is not None and \ - _o is not None: - - yield (_s, _p, _o) - -def _val(v): - """ utilitity for ordering things""" - if isinstance(v, Variable): - return (0, v) - elif isinstance(v, BNode): - return (1, v) - elif isinstance(v, URIRef): - return (2, v) - elif isinstance(v, Literal): - return (3, v)