code: def edges(self, source=None, relation=None, target=None):
          
          edgematch = lambda e: (
              (source is None or source == e.source) and
              (relation is None or relation == e.relation) and
              (target is None or target == e.target)
          )
          variables = self.variables()
          edges = [t for t in self._triples if t.target in variables]
          return list(filter(edgematch, edges))
docs: Return edges filtered by their *source*, *relation*, or *target*.
  
          Edges don't include terminal triples (node types or attributes).