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); }
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); }
public override void VisitWhereClause(Remotion.Linq.Clauses.WhereClause whereClause, QueryModel queryModel, int index) { SparqlGeneratorWhereExpressionTreeVisitor.GetSparqlExpression(whereClause.Predicate, _queryBuilder); base.VisitWhereClause(whereClause, queryModel, index); }