public static bool TryCastLogicalExpression(this JObject jObject, out ILogicalExpression expression) { var text = jObject.ToString(); expression = null; if (Enum.TryParse <CompareGates>(jObject.TryGetValue <string>("$.compare"), out CompareGates compare)) { var filedName = jObject.TryGetValue <string>("$.fieldName"); var numValues = jObject.TryGetValues <decimal>("$.values"); if (numValues != null) { expression = new NumericalLogicalExpression(compare, filedName, numValues.ToArray()); return(true); } var strValues = jObject.TryGetValues <string>("$.values"); if (strValues != null) { expression = new StringLogicalExpression(compare, filedName, strValues.ToArray()); return(true); } return(false); } else { throw new OrgJoeyCastException("The enum type CompareGates cast error."); } }
public ClickHouseJoin(IFromExpression fromExpr, ILogicalExpression joinExpr, JoinType joinType = JoinType.Inner) { FromExpression = fromExpr; JoinType = joinType; JoinExpression = joinExpr; ResultColumns = new List <SelectResultColumn>(); }
public static bool TTEntails(ILogicalExpression kb, ILogicalExpression query) { var kbSymbols = kb.GetSymbols(); var querySymbols = query.GetSymbols(); kbSymbols.AddRange(querySymbols); return(TTCheckAll(kb, query, kbSymbols, new Dictionary <CellSymbol, bool>())); }
public IJsmExpression Evaluate(IServices services) { ILogicalExpression first = _first.LogicalEvaluate(services); ILogicalExpression last = _last.LogicalEvaluate(services); if (first is IConstExpression n1) { if (n1.Value != 0) { // (true || ??) => true return(ValueExpression.Create(0)); } if (last is IConstExpression n2) { if (n2.Value != 0) { // (false || true) => true return(ValueExpression.Create(0)); } else { // (false || false) => false return(ValueExpression.Create(1)); } } else { // (false || ??) => ?? return(_last); } } else if (last is IConstExpression n2) { if (n2.Value != 0) { // (?? || true) => true return(ValueExpression.Create(0)); } // (?? || true) => ?? return(first); } // (?? || ??) return(new LogOr(first, last)); }
private static bool TTCheckAll(ILogicalExpression kb, ILogicalExpression query, IReadOnlyList <CellSymbol> symbols, IDictionary <CellSymbol, bool> model) { if (symbols.Count == 0) { if (PLTrue(kb, model)) { bool res = PLTrue(query, model); return(res); } return(true); } CellSymbol p = symbols[0]; var rest = new List <CellSymbol>(symbols); rest.RemoveAt(0); return(TTCheckAll(kb, query, rest, Extend(p, true, model)) && TTCheckAll(kb, query, rest, Extend(p, false, model))); }
private static void MultiplyFactorizedExpression(ILogicalExpression targetLogical, object[] source) { if (targetLogical.Expressions.Enumerate <object>().Any()) { foreach (var targetSubGroup in targetLogical.Expressions.OfType <ILogicalExpression>()) { foreach (var sourceSubGroup in source.OfType <ILogicalExpression>()) { foreach (var expression in sourceSubGroup.Expressions) { targetSubGroup.AddExpression(expression); } } } } else { foreach (var expression in source) { targetLogical.AddExpression(expression); } } }
public Not(ILogicalExpression logic) { this.logic = logic; }
public void Add(ILogicalExpression logic) { logics.Add(logic); }
public static ILogicalExpression LogicalEvaluate(this ILogicalExpression expression, IServices services) { IJsmExpression jsm = expression.Evaluate(services); return((ILogicalExpression)jsm); }
private static bool PLTrue(ILogicalExpression expression, IDictionary <CellSymbol, bool> model) { return(expression.Eval(model)); }
public LogOr(ILogicalExpression first, ILogicalExpression last) { _first = first; _last = last; }
public void Tell(ILogicalExpression expr) { kb.Add(expr); }
public bool Ask(ILogicalExpression query) { return(Entailment.TTEntails(kb, query)); }