Mercurial > code > home > repos > homeauto
changeset 1619:e24058ae4806
support CB.apply(returnBoundStatementsOnly)
author | drewp@bigasterisk.com |
---|---|
date | Wed, 08 Sep 2021 18:39:12 -0700 |
parents | e105032b0e3d |
children | 92f8deb59735 |
files | service/mqtt_to_rdf/candidate_binding.py |
diffstat | 1 files changed, 8 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/service/mqtt_to_rdf/candidate_binding.py Mon Sep 06 23:26:07 2021 -0700 +++ b/service/mqtt_to_rdf/candidate_binding.py Wed Sep 08 18:39:12 2021 -0700 @@ -16,20 +16,24 @@ b = " ".join("%s=%s" % (k, v) for k, v in sorted(self.binding.items())) return f'CandidateBinding({b})' - def apply(self, g: Union[Graph, Iterable[Triple]]) -> Iterator[Triple]: + def apply(self, g: Union[Graph, Iterable[Triple]], returnBoundStatementsOnly=True) -> Iterator[Triple]: for stmt in g: try: - bound = (self._applyTerm(stmt[0]), self._applyTerm(stmt[1]), self._applyTerm(stmt[2])) + bound = ( + self._applyTerm(stmt[0], returnBoundStatementsOnly), + self._applyTerm(stmt[1], returnBoundStatementsOnly), + self._applyTerm(stmt[2], returnBoundStatementsOnly)) except BindingUnknown: continue yield bound - def _applyTerm(self, term: Node): + def _applyTerm(self, term: Node, failUnbound=True): if isinstance(term, (Variable, BNode)): if term in self.binding: return self.binding[term] else: - raise BindingUnknown() + if failUnbound: + raise BindingUnknown() return term def addNewBindings(self, newBindings: 'CandidateBinding'):