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(); } }
protected override void handleOnActiveSubstitution(InstanceActiveEvent evt) { if (!_isSubstitutionDisabled) { base.handleOnActiveSubstitution(evt); } }
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(); } }
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(); }
private void tryAsSubstitution(InstanceActiveEvent evt) { var distancePenalty = 0; foreach (var part in GetIncompleteTurnInformationParts()) { tryToFillBy(part, evt, distancePenalty); distancePenalty += 1; } }
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); } }
internal virtual void Visit(InstanceActiveEvent evt) { handleOnActiveSubstitution(evt); }
private void tryToFillBy(IncompleteRelationEvent evt, InstanceActiveEvent instanceActiveEvt, int distancePenalty) { tryFillSubjectBy(evt, instanceActiveEvt, distancePenalty); tryFillValueBy(evt, instanceActiveEvt, distancePenalty); }