public static void GetSparqlExpression(Expression expression, SparqlQueryBuilder queryBuilder) { var visitor = new SparqlGeneratorSelectExpressionTreeVisitor(queryBuilder); var resultExpression = visitor.VisitExpression(expression); if (resultExpression is SelectIdentifierVariableNameExpression) { var selectId = resultExpression as SelectIdentifierVariableNameExpression; var selectVar = queryBuilder.NextVariable(); queryBuilder.AddBindExpression("STRAFTER(STR(?" + selectId.Name + "), " + SparqlQueryBuilder.QuoteLiteralString(selectId.IdentifierPrefix) + ")", selectVar); queryBuilder.AddSelectVariable(selectVar); } else if (resultExpression is SelectVariableNameExpression) { queryBuilder.AddSelectVariable((resultExpression as SelectVariableNameExpression).Name); } }
public static void GetSparqlExpression(Expression expression, SparqlQueryBuilder queryBuilder) { var visitor = new SparqlGeneratorSelectExpressionTreeVisitor(queryBuilder); var resultExpression = visitor.VisitExpression(expression); if (resultExpression is SelectVariableNameExpression) { queryBuilder.AddSelectVariable((resultExpression as SelectVariableNameExpression).Name); } }
protected override Expression VisitMemberInitExpression(MemberInitExpression expression) { _queryBuilder.MemberInitExpression = expression; _queryBuilder.Constructor = expression.NewExpression.Constructor; foreach (var a in expression.NewExpression.Arguments) { var mappedExpression = VisitExpression(a); if (mappedExpression is SelectVariableNameExpression) { _queryBuilder.ConstructorArgs.Add((mappedExpression as SelectVariableNameExpression).Name); _queryBuilder.AddSelectVariable((mappedExpression as SelectVariableNameExpression).Name); } else { throw new NotSupportedException( String.Format( "Unable to map constructor expression to a SPARQL results variable. Only simple property expressions are currently supported. Invalid expression is: {0}", a)); } } var updatedBindings = new List <MemberBinding>(); foreach (var b in expression.Bindings) { updatedBindings.Add(VisitMemberBinding(b)); } #if WINDOWS_PHONE || PORTABLE var updatedExpression = Expression.MemberInit(expression.NewExpression, updatedBindings); #else var updatedExpression = expression.Update(expression.NewExpression, updatedBindings); #endif _queryBuilder.MemberInitExpression = updatedExpression; return(updatedExpression); }