public void SparqlDateTimeEquality(String x, String y, bool equals) { IGraph g = new Graph(); INode dateTime1 = g.CreateLiteralNode(x, UriFactory.Create(XmlSpecsHelper.XmlSchemaDataTypeDateTime)); INode dateTime2 = g.CreateLiteralNode(y, UriFactory.Create(XmlSpecsHelper.XmlSchemaDataTypeDateTime)); if (equals) { Assert.IsTrue(SparqlSpecsHelper.DateTimeEquality(dateTime1, dateTime2)); Assert.IsTrue(SparqlSpecsHelper.DateTimeEquality(dateTime2, dateTime1)); Assert.IsTrue(SparqlSpecsHelper.Equality(dateTime1, dateTime2)); Assert.IsTrue(SparqlSpecsHelper.Equality(dateTime2, dateTime1)); Assert.IsFalse(SparqlSpecsHelper.Inequality(dateTime1, dateTime2)); Assert.IsFalse(SparqlSpecsHelper.Inequality(dateTime2, dateTime1)); } else { Assert.IsFalse(SparqlSpecsHelper.DateTimeEquality(dateTime1, dateTime2)); Assert.IsFalse(SparqlSpecsHelper.DateTimeEquality(dateTime2, dateTime1)); Assert.IsFalse(SparqlSpecsHelper.Equality(dateTime1, dateTime2)); Assert.IsFalse(SparqlSpecsHelper.Equality(dateTime2, dateTime1)); Assert.IsTrue(SparqlSpecsHelper.Inequality(dateTime1, dateTime2)); Assert.IsTrue(SparqlSpecsHelper.Inequality(dateTime2, dateTime1)); } }
/// <summary> /// Evaluates the expression /// </summary> /// <param name="context">Evaluation Context</param> /// <param name="bindingID">Binding ID</param> /// <returns></returns> public override IValuedNode Evaluate(SparqlEvaluationContext context, int bindingID) { IValuedNode x = this._leftExpr.Evaluate(context, bindingID); IValuedNode y = this._rightExpr.Evaluate(context, bindingID); return(new BooleanNode(null, SparqlSpecsHelper.Equality(x, y))); }
/// <summary> /// Computes the Effective Boolean Value of this Expression as evaluated for a given Binding /// </summary> /// <param name="context">Evaluation Context</param> /// <param name="bindingID">Binding ID</param> /// <returns></returns> public override bool EffectiveBooleanValue(SparqlEvaluationContext context, int bindingID) { INode x = this._leftExpr.Value(context, bindingID); INode y = this._rightExpr.Value(context, bindingID); return(SparqlSpecsHelper.Equality(x, y)); }
/// <summary> /// Evaluates the expression. /// </summary> /// <param name="context">Evaluation Context.</param> /// <param name="bindingID">Binding ID.</param> /// <returns></returns> public override IValuedNode Evaluate(SparqlEvaluationContext context, int bindingID) { INode result = _expr.Evaluate(context, bindingID); if (result != null) { if (_expressions.Count == 0) { return(new BooleanNode(null, true)); } // Have to use SPARQL Value Equality here // If any expressions error and nothing in the set matches then an error is thrown bool errors = false; foreach (ISparqlExpression expr in _expressions) { try { INode temp = expr.Evaluate(context, bindingID); if (SparqlSpecsHelper.Equality(result, temp)) { return(new BooleanNode(null, false)); } } catch { errors = true; } } if (errors) { throw new RdfQueryException("One/more expressions in a Set function failed to evaluate"); } else { return(new BooleanNode(null, true)); } } else { return(new BooleanNode(null, true)); } }