SPARQL Extension Functions

semsol edited this page Mar 14, 2011 · 2 revisions

SPARQL can be extended with custom (URI-based) functions. ARC is based on MySQL and following the pattern below, you can add a variety of MySQL-specific functions to your SPARQL queries. (Note that these extensions are most probably not going to work in other SPARQL engines.)

The MySQL function namespace is

A specific function identifier:**concat **


PREFIX mysql: <> 
PREFIX foaf: <> 

SELECT ?person WHERE {
  ?person foaf:givenname ?n1 ;
          foaf:family_name ?n2 .
  FILTER (mysql:concat(?n1, " ", ?n2) = "Alec Tronnick") .

By default, extension functions are enabled in ARC's RDF Store class, but disabled in the Endpoint class, as they could introduce security risks. In order to activate them in your endpoint, add a store_allow_extension_functions option to your configuration array:

$config = array(
  'store_allow_extension_functions' => 1,

/* instantiation */
$ep = ARC2::getStoreEndpoint($config);