예제 #1
0
        protected override IEnumerable <string> execute(BeamGenerator generator)
        {
            var fullRelation = Get <PropertySetEvent>(p => IsDefined(p.SubstitutedValue.Concept) && IsDefined(p.Target.Instance?.Concept));

            if (fullRelation == null)
            {
                yield break;
            }

            var targetInstance = fullRelation.Target.Instance;

            if (targetInstance == null)
            {
                yield break;
            }

            var children = generator.GetInverseConceptValues(Concept2.InstanceOf, targetInstance);

            if (children.Any())
            {
                //TODO add learning for classes
                yield break;
            }

            var parameters = generator.GetParameterDefinitions(targetInstance);

            if (parameters.Any(p => p.Property == fullRelation.Target.Property))
            {
                //don't learn argument values
                yield break;
            }

            generator.Push(new StaticScoreEvent(0.1));
            var remember = RememberPropertyValue.Create(generator, fullRelation.Target, fullRelation.SubstitutedValue);

            YesNoPrompt.Generate(generator, remember, new ConceptInstance(Concept2.Nothing));
            yield return($"So you think, {singularWithProperty(fullRelation.Target.Instance)} ?");
        }