def isLinked(self, source=None, target=None, relation=_marker, state=_marker, context=_marker, maxDepth=1, minDepth=None, filter=None, transitivity=None): tokenize = self.relationIndex.tokenizeQuery query = {} _update_query(query, relation, state, context) if source is not None: query['source'] = source if target is not None: targetQuery = tokenize({'target': target}) else: targetQuery = None return self.relationIndex.isLinked( tokenize(query), maxDepth, filter and ResolvingFilter(filter, self), targetQuery, targetFilter=minDepthFilter(minDepth), transitiveQueriesFactory=transitivity) elif target is not None: query['target'] = target return self.relationIndex.isLinked( tokenize(query), maxDepth, filter and ResolvingFilter(filter, self), targetFilter=minDepthFilter(minDepth), transitiveQueriesFactory=transitivity) else: raise ValueError( 'at least one of `source` and `target` must be provided')
def findRelationshipTokens(self, source=None, target=None, relation=_marker, state=_marker, context=_marker, maxDepth=1, minDepth=None, filter=None, transitivity=None): tokenize = self.relationIndex.tokenizeQuery query = {} _update_query(query, relation, state, context) if source is not None: query['source'] = source if target is not None: targetQuery = tokenize({'target': target}) else: targetQuery = None res = self.relationIndex.findRelationshipTokenChains( tokenize(query), maxDepth, filter and ResolvingFilter(filter, self), targetQuery, targetFilter=minDepthFilter(minDepth), transitiveQueriesFactory=transitivity) return self._forward(res) elif target is not None: query['target'] = target res = self.relationIndex.findRelationshipTokenChains( tokenize(query), maxDepth, filter and ResolvingFilter(filter, self), targetFilter=minDepthFilter(minDepth), transitiveQueriesFactory=transitivity) return self._reverse(res) elif relation is not _marker or context is not _marker: res = self.relationIndex.findRelationshipTokenChains( tokenize(query), maxDepth, filter and ResolvingFilter(filter, self), targetFilter=minDepthFilter(minDepth), transitiveQueriesFactory=transitivity) return self._reverse(res) else: raise ValueError( 'at least one of `source`, `target`, `relation`, or `context` ' 'must be provided')
def findSourceTokens(self, target, relation=_marker, state=_marker, context=_marker, maxDepth=1, minDepth=None, filter=None, transitivity=None): query = {'target': target} _update_query(query, relation, state, context) return self.relationIndex.findValueTokens( 'source', self.relationIndex.tokenizeQuery(query), maxDepth, filter and ResolvingFilter(filter, self), targetFilter=minDepthFilter(minDepth), transitiveQueriesFactory=transitivity)