Beispiel #1
0
        private void tryFillSubjectBy(IncompleteRelationEvent evt, InstanceActiveEvent instanceActiveEvt, int distancePenalty)
        {
            if (!CanSubstituteSubject(evt, instanceActiveEvt.Instance))
            {
                return;
            }

            var isKnown = IsKnownPropertyOf(instanceActiveEvt.Instance, evt.Property);

            var filledEvt = evt.SubstituteSubject(instanceActiveEvt.Instance);

            // subject activation is not closed
            if (isKnown)
            {
                Push(new StaticScoreEvent(0.1));
            }
            Push(new CloseEvent(evt));
            Push(filledEvt);
            Pop();
            Pop();
            if (isKnown)
            {
                Pop();
            }
        }
Beispiel #2
0
 protected override void handleOnActiveSubstitution(InstanceActiveEvent evt)
 {
     if (!_isSubstitutionDisabled)
     {
         base.handleOnActiveSubstitution(evt);
     }
 }
Beispiel #3
0
        private void tryFillValueBy(IncompleteRelationEvent evt, InstanceActiveEvent instanceActiveEvt, int distancePenalty, bool addScore = true)
        {
            if (!CanSubstituteValue(evt, instanceActiveEvt.Instance))
            {
                return;
            }

            var isKnownValue = IsValueOf(evt.Property, instanceActiveEvt.Instance);
            var filledEvt    = evt.SubstituteValue(instanceActiveEvt.Instance);

            if (addScore)
            {
                Push(new PropertySetScoreEvent(filledEvt, distancePenalty));
            }
            if (isKnownValue)
            {
                Push(new StaticScoreEvent(0.1));
            }

            Push(new CloseEvent(instanceActiveEvt));
            Push(new CloseEvent(evt));
            Push(filledEvt);
            Pop();
            Pop();
            Pop();

            if (isKnownValue)
            {
                Pop();
            }
            if (addScore)
            {
                Pop();
            }
        }
Beispiel #4
0
        protected virtual void handleOnActiveSubstitution(InstanceActiveEvent evt)
        {
            // we have a complete instance - lets look where it can be put into
            tryAsSubstitution(evt);
            tryAsPropertyValueActivation(evt);

            //instance can be left without being substituted anywhere
            PushSelf();
        }
Beispiel #5
0
        private void tryAsSubstitution(InstanceActiveEvent evt)
        {
            var distancePenalty = 0;

            foreach (var part in GetIncompleteTurnInformationParts())
            {
                tryToFillBy(part, evt, distancePenalty);
                distancePenalty += 1;
            }
        }
Beispiel #6
0
        private void tryAsPropertyValueActivation(InstanceActiveEvent evt)
        {
            var properties = GetPointingProperties(evt.Instance.Concept);

            foreach (var property in properties)
            {
                if (property == Concept2.Property)
                {
                    continue;
                }

                //try to interpret as an implicit property
                var part = new IncompleteRelationEvent(null, property, null);
                tryFillValueBy(part, evt, 0, addScore: false);
            }
        }
        internal override void Visit(InstanceActiveEvent evt)
        {
            var completeInstance = evt.Instance;

            _conceptCallbacks.TryGetValue(completeInstance.Concept, out var executor);
            if (executor == null)
            {
                //executor is not defined
                base.Visit(evt);
            }
            else
            {
                //we have got action to execute
                Push(new CloseEvent(evt));
                Push(new StaticScoreEvent(0.05));
                executor(completeInstance, this);
            }
        }
Beispiel #8
0
 internal virtual void Visit(InstanceActiveEvent evt)
 {
     handleOnActiveSubstitution(evt);
 }
Beispiel #9
0
 private void tryToFillBy(IncompleteRelationEvent evt, InstanceActiveEvent instanceActiveEvt, int distancePenalty)
 {
     tryFillSubjectBy(evt, instanceActiveEvt, distancePenalty);
     tryFillValueBy(evt, instanceActiveEvt, distancePenalty);
 }