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 }, }); } } } }
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); }
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); }