Ejemplo n.º 1
0
        public override void VisitJoinClause(Remotion.Linq.Clauses.JoinClause joinClause, QueryModel queryModel, int index)
        {
            _isInstanceQuery = false;
            _queryBuilder.AddFromPart(joinClause);
            var inner = SparqlGeneratorWhereExpressionTreeVisitor.GetSparqlExpression(joinClause.InnerKeySelector, _queryBuilder);
            var outer = SparqlGeneratorWhereExpressionTreeVisitor.GetSparqlExpression(joinClause.OuterKeySelector, _queryBuilder);

            if (inner is SelectVariableNameExpression && outer is SelectVariableNameExpression)
            {
                var innerVar = inner as SelectVariableNameExpression;
                var outerVar = outer as SelectVariableNameExpression;
                if (innerVar.BindingType == VariableBindingType.Literal ||
                    outerVar.BindingType == VariableBindingType.Literal)
                {
                    _queryBuilder.AddFilterExpression(string.Format("(?{0}=?{1})", innerVar.Name, outerVar.Name));
                }
                else
                {
                    _queryBuilder.AddFilterExpression(string.Format("(sameTerm(?{0}, ?{1}))", innerVar.Name, outerVar.Name));
                }
            }
            else
            {
                throw new NotSupportedException(
                          String.Format("No support for joining expressions of type {0} and {1}", inner.NodeType,
                                        outer.NodeType));
            }
        }
 private string GetExpressionVariable(Expression expression)
 {
     if (expression is QuerySourceReferenceExpression)
     {
         var querySource = expression as QuerySourceReferenceExpression;
         Expression mappedExpression;
         _queryBuilder.TryGetQuerySourceMapping(querySource.ReferencedQuerySource, out mappedExpression);
         if (mappedExpression is SelectVariableNameExpression)
             return (mappedExpression as SelectVariableNameExpression).Name;
     }
     var selector = SparqlGeneratorWhereExpressionTreeVisitor.GetSparqlExpression(expression, _queryBuilder);
     if (selector is SelectVariableNameExpression) return (selector as SelectVariableNameExpression).Name;
     return null;
 }
 public override void VisitAdditionalFromClause(Remotion.Linq.Clauses.AdditionalFromClause fromClause, QueryModel queryModel, int index)
 {
     _isInstanceQuery = false;
     var fromVar = _queryBuilder.AddFromPart(fromClause);
     if (!(fromClause.FromExpression is ConstantExpression))
     {
         var fromExpression =
             SparqlGeneratorWhereExpressionTreeVisitor.GetSparqlExpression(fromClause.FromExpression,
                                                                           _queryBuilder);
         if (fromExpression is SelectVariableNameExpression)
         {
             _queryBuilder.RenameVariable((fromExpression as SelectVariableNameExpression).Name,fromVar);
         }
     }
     base.VisitAdditionalFromClause(fromClause, queryModel, index);
 }
 public override void VisitOrdering(Remotion.Linq.Clauses.Ordering ordering, QueryModel queryModel, Remotion.Linq.Clauses.OrderByClause orderByClause, int index)
 {
     _isInstanceQuery = false;
     var selector = SparqlGeneratorWhereExpressionTreeVisitor.GetSparqlExpression(ordering.Expression,
                                                                                  _queryBuilder);
     if (selector is SelectVariableNameExpression)
     {
         var selectorVar = selector as SelectVariableNameExpression;
         _queryBuilder.AddOrdering(new SparqlOrdering("?" + selectorVar.Name, ordering.OrderingDirection));
     }
     else
     {
         throw new NotSupportedException(
             String.Format("LINQ-to-SPARQL does not currently support ordering by the expression '{0}'", ordering.Expression));
     }
     base.VisitOrdering(ordering, queryModel, orderByClause, index);
 }
Ejemplo n.º 5
0
        private string GetExpressionVariable(Expression expression)
        {
            if (expression is QuerySourceReferenceExpression)
            {
                var        querySource = expression as QuerySourceReferenceExpression;
                Expression mappedExpression;
                _queryBuilder.TryGetQuerySourceMapping(querySource.ReferencedQuerySource, out mappedExpression);
                if (mappedExpression is SelectVariableNameExpression)
                {
                    return((mappedExpression as SelectVariableNameExpression).Name);
                }
            }
            var selector = SparqlGeneratorWhereExpressionTreeVisitor.GetSparqlExpression(expression, _queryBuilder, _context.FilterOptimizationEnabled);

            if (selector is SelectVariableNameExpression)
            {
                return((selector as SelectVariableNameExpression).Name);
            }
            return(null);
        }
Ejemplo n.º 6
0
 public override void VisitWhereClause(Remotion.Linq.Clauses.WhereClause whereClause, QueryModel queryModel, int index)
 {
     SparqlGeneratorWhereExpressionTreeVisitor.GetSparqlExpression(whereClause.Predicate, _queryBuilder);
     base.VisitWhereClause(whereClause, queryModel, index);
 }