public Stream<TRelationshipTemplate> getExternalRelations(TNodeTemplate matchingNode, RefinementCandidate candidate, TTopologyTemplate topology) { return topology.getRelationshipTemplates().stream() .filter(relationship -> // all relationships which have the matchingNode as source or target // -> \pi_1(rm_x) = \pi_2(sgm_i) matchingNode.getId().equals(relationship.getSourceElement().getRef().getId()) || matchingNode.getId().equals(relationship.getTargetElement().getRef().getId()) ).filter(relationship -> { // ignore all relationships which are part of the sub-graph // \nexists sgm_y \in sgms : \pi_1(sgm_y) = r_j return candidate.getDetectorGraph().edgeSet() .stream() .noneMatch(toscaEdge -> { ToscaEdge edgeCorrespondence = candidate.getGraphMapping().getEdgeCorrespondence(toscaEdge, false); return edgeCorrespondence.getTemplate().equals(relationship); }); }); }
refinement.getDetectorGraph().edgeSet() .forEach(edge -> { TRelationshipTemplate tRelationshipTemplate = refinement.getGraphMapping().getEdgeCorrespondence(edge, false).getTemplate(); topology.getNodeTemplateOrRelationshipTemplate() .remove(tRelationshipTemplate);