コード例 #1
0
ファイル: SetModule.cs プロジェクト: CourageAndrey/AI
        private static void checkMultiValues(
            ICollection <SignValueStatement> statements,
            ITextContainer result,
            ISemanticNetwork semanticNetwork)
        {
            var clasifications = semanticNetwork.Statements.OfType <IsStatement>().ToList();

            foreach (var concept in semanticNetwork.Concepts)
            {
                var parents = clasifications.GetParentsOneLevel(concept);
                foreach (var sign in HasSignStatement.GetSigns(semanticNetwork.Statements, concept, true))
                {
                    if (statements.FirstOrDefault(sv => sv.Concept == concept && sv.Sign == sign.Sign) == null &&
                        parents.Select(p => SignValueStatement.GetSignValue(semanticNetwork.Statements, p, sign.Sign)).Count(r => r != null) > 1)
                    {
                        result.Append(
                            language => language.GetExtension <ILanguageSetModule>().Statements.Consistency.ErrorMultipleSignValue,
                            new Dictionary <String, IKnowledge>
                        {
                            { Semantics.Localization.Strings.ParamConcept, concept },
                            { Strings.ParamSign, sign.Sign },
                        });
                    }
                }
            }
        }
コード例 #2
0
ファイル: WhatQuestion.cs プロジェクト: CourageAndrey/AI
        private List <SignValueStatement> getDifferenceBetweenAncestorAndDescendant(List <IStatement> allStatements, IsStatement isStatement)
        {
            var difference = new List <SignValueStatement>();

            foreach (var sign in HasSignStatement.GetSigns(allStatements, isStatement.Ancestor, false))
            {
                var signValue = SignValueStatement.GetSignValue(allStatements, Concept, sign.Sign);
                if (signValue != null)
                {
                    difference.Add(signValue);
                }
            }
            return(difference);
        }
コード例 #3
0
        public void TestBuildingHasSignStatement()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new SemanticNetwork(language);

            var concept = ConceptCreationHelper.CreateConcept();
            var sign    = ConceptCreationHelper.CreateConcept();

            sign.WithAttribute(IsSignAttribute.Value);

            // act
            var statementByConstuctor         = new HasSignStatement(null, concept, sign);
            var statementByBuilderFromConcept = semanticNetwork.DeclareThat(concept).HasSign(sign);
            var statementByBuilderFromSign    = semanticNetwork.DeclareThat(sign).IsSignOf(concept);

            // assert
            Assert.AreEqual(statementByConstuctor, statementByBuilderFromConcept);
            Assert.AreEqual(statementByConstuctor, statementByBuilderFromSign);
        }