private IEnumerable <ConceptInstance> getRelevantInstances(ConceptInstance instance, Concept2 relevanceCriterion, BeamGenerator beam) { var relevantCandidates = beam.GetInstances(); foreach (var relevantCandidate in relevantCandidates) { if (relevantCandidate == instance) { // prevent self reference continue; } var values = beam.GetPropertyValues(relevantCandidate); var isRelevant = relevantCandidate.Concept == relevanceCriterion || values.Any(v => v.Key == relevanceCriterion || v.Value.Concept == relevanceCriterion); if (isRelevant) { yield return(relevantCandidate); } } }