示例#1
0
        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));
            }
        }
示例#2
0
        /// <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)));
        }
示例#3
0
        /// <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));
        }
示例#4
0
        /// <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));
            }
        }