protected override void onInstanceActivated(ConceptInstance instance, BeamGenerator generator) { var parameterValue = generator.GetValue(instance, _parameter); var relevantInstances = getRelevantInstances(instance, parameterValue.Concept, generator).ToArray(); foreach (var relevantInstance in relevantInstances) { //avoid reference circles if (relevantInstance.Concept == instance.Concept) { continue; } if (!generator.IsDefined(relevantInstance.Concept)) { continue; } //try tunnel instances between turns generator.Push(new StaticScoreEvent(0.05)); generator.Push(new InstanceReferencedEvent(relevantInstance)); generator.Pop(); generator.Pop(); } }
protected override void onInstanceActivated(ConceptInstance instance, BeamGenerator generator) { var target = generator.GetValue(instance, Concept2.Target); var targetProperty = generator.GetValue(instance, Concept2.TargetProperty); var subject = generator.GetValue(instance, Concept2.Subject); var generalTarget = new PropertySetTarget(target.Concept, targetProperty.Concept); var setEvent = new PropertySetEvent(generalTarget, subject); generator.Push(new ExportEvent(setEvent)); generator.Push(setEvent); if (generator.IsDefined(instance.Concept)) { generator.Push(new InstanceOutputEvent(instance)); } }