Ok, Thanks (and my apologies for not having remembered to search in specifications).
Miguel On 04 Sep 2014, at 12:19, Andy Seaborne <a...@apache.org> wrote: > On 03/09/14 15:02, Miguel Bento Alves wrote: >> Hi Andy, >> >> My idea is replace any “&” by a internal valid variable, ensuring that this >> variable does not exist in command. For instance, >> … >> group by ?x >> having (count(1) >=&n) >> \\\SPARQL). >> ... >> >> will be replaced by >> >> group by ?x >> having (count(1) >=?OV_A8y7AbAA) >> \\\SPARQL). >> >> After I parse the command and I extract all variables used. If miss some >> variable that I replace I assume that was done a bad replacement (in a >> string, for instance) and this replacement is canceled. >> >> >>> An alternative is to replace occurrence of a named variable, ?n >> I start by this approach but seems very difficult and not clear what is >> external variables and what is not. >> >> It will be very useful for an answer to this question: >> Which are the valid chars for a variable name? Is there any place where this >> is defined? > > http://www.w3.org/TR/sparql11-query/#rVARNAME > >> >> Miguel >> >> >> On 03 Sep 2014, at 11:38, Andy Seaborne <a...@apache.org> wrote: >> >>> On 02/09/14 23:49, Miguel Bento Alves wrote: >>>> Hi Andy, >>>> >>>> &n is illegal SPARQL, ok, but that does not means that can be used to >>>> refer a outer variable? The symbol “&” can appear in a SPARQL command >>>> (excepting in a String)? >>> >>> If yo udo it that way, then you must replace the &n before passing the >>> string to the SPARQL parser otherwise it won't parse. >>> >>> An alternative is to replace occurrence of a named variable, ?n >>> >>> It depends on the details of "refer to an outer variable" means. >>> >>> If it is that the outer variable can have a number of values then it's >>> either a join of the results of the query and a table of values from the >>> rest of the rule matching or it's a repeated execution with different >>> values of ?n. >>> >>> Straight substitution of ?n for a string value, passing to the parser and >>> executing is close but can end up in different results depending on whether >>> ?n is used nested inside the query, either unprojected from a subquery >>> (it's a different variable) or in nested OPTIONALs (substitution can >>> violates bottom-up execution semantics). >>> >>> It's easier to let the execution engine worry about this. >>> >>> You can use an initial binding for repeated execution. That avoids the >>> nested different definition problems. Or add a VALUES clause to the query. >>> >>>> >>>> and the symbol “$”? >>>> >>>> BTW, I almost finished the development of an engine to evaluate rules >>>> that combines rules terms with sparql commands. To finish, I only >>>> need to define the special char to make reference to outer variables >>>> (for now, and to develop the engine, I'm using a non-valid char). >>>> >>>> Miguel >>>> >>> >>> Andy