1.5.2. How Can I execute SPARQL queries containing '$' character using ISQL?
Assuming a SPARQL query should filter on the length of labels:
SELECT ?label FROM <http://mygraph.com> WHERE { ?s ?p ?label FILTER(regex(str(?label), "^.{1,256}$") ) }
ISQL uses '$ ' character as a prefix for macro names of its preprocessor. When '$ ' character is used in SPARQL query to be executed in ISQL, the character should be replaced with '$$ ' notation or an escape char + numeric code:
SQL> SPARQL SELECT ?label FROM <http://mygraph.com> WHERE { ?s ?p ?label FILTER(REGEX(str(?label), "^.{1,256}$$") ) }
Note also that the FILTER written in this way, finds ?label-s with length less than 256.
To achieve fast results, REGEX should be replaced with the bif:length function:
SQL> SPARQL SELECT ?label FROM <http://mygraph.com> WHERE { ?s ?p ?label FILTER (bif:length(str(?label))<= 256) }
In this way the SPARQL query execution can work much faster if the interoperability is not required and ?label-s are numerous.