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}$") )
  } 

View the results of the query execution on the LOD instance.

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}$$") )
  } 

View the results of the query execution on the LOD instance.

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.

View the results of the query execution on the LOD instance.

Related