private HashSet <NodeReference> findDomain(NodeReference generalNode) { //TODO this has to be refactored out var domains = new HashSet <NodeReference>(); foreach (var question in _questions.Values) { var featureNode = question.GetFeatureNode(generalNode, Graph); domains.UnionWith(Graph.GetForwardTargets(new[] { featureNode }, new[] { Edge.Incoming("en.label"), Edge.Incoming("P31") })); } /* var edges = Graph.GetNeighbours(new NodeReference("Q30"),100).ToArray();*/ return(domains); }
internal void ExtendBy(IEnumerable <Edge> edges) { var extended = Graph.GetForwardTargets(ActiveNodes, edges); _accumulator.Clear(); _accumulator.UnionWith(extended); }
private IEnumerable <TraceNode2> getCommonTraceNodes(NodeReference answerCandidate, MultiTraceLog2 pattern) { var compatibleTraces = new List <TraceNode2>(); var filteredTraces = getFilteredTraces(pattern); foreach (var node in filteredTraces) { if (node.PreviousNode == null) { if (node.CurrentNodes.Contains(answerCandidate)) { //candidate matches directly as an answer compatibleTraces.Add(node); } } else { var tracePath = node.Path; if (_graph.GetForwardTargets(new[] { answerCandidate }, tracePath).Any()) { compatibleTraces.Add(node); } } } return(compatibleTraces); }
internal HashSet <NodeReference> FindSet(NodeReference constraintNode, ComposedGraph graph) { return(new HashSet <NodeReference>(graph.GetForwardTargets(new[] { constraintNode }, Path))); }
/// <summary> /// Make transition from layer to a next one along the given edge. /// </summary> private HashSet <NodeReference> makeLayerTransition(HashSet <NodeReference> layer, Edge edge) { return(Graph.GetForwardTargets(layer, new[] { edge.Reversed() })); }
internal IEnumerable <NodeReference> FindTargets(ComposedGraph graph) { var path = OriginalTrace.Path.ToArray(); return(graph.GetForwardTargets(new[] { Substitution }, path).ToArray()); }
private HashSet <NodeReference> getSimilarNodes(NodeReference node) { return(new HashSet <NodeReference>(Graph.GetForwardTargets(new[] { node }, new[] { Edge.Outcoming(Graph.IsEdge), Edge.Incoming(Graph.IsEdge) }))); }