Instead of having the WG create dozens of specific extensions, it would be more fruitful if the WG would simply define extension points that allow anyone to contribute those extensions themselves - assuming this happens in a platform-independent and transparent way.
SPARQL functions (in FILTERs and assignments) already have a URI, but as far as I know SPARQL does not yet define a mechanism to resolve this URI to get some executable code.
Many real-world SPARQL queries make heavy use of built-in functions for tasks such as string processing and mathematical calculations. SPARQL comes with a pre-defined set of such built-in functions. However, in practice, these built-in libraries are frequently extended to solve specific problems that have not been anticipated by the language designers. Such extensions are typically implemented natively for a specific SPARQL execution engine, for example in Java. Needless to say, this is not a solution in the spirit of the (Semantic) Web, because it leads to a Tower of Babel with all kinds of dialects and platform-specific extensions.
We have proposed SPIN Functions as one possible extension mechanism for SPARQL, that allows anyone to derive new SPARQL functions by combining other SPARQL functions and query templates. In general, SPIN functions are Semantic Web resources that can be referenced by their URI to get a description of the function's arguments, return value and executable body. However, even this approach does not cover all possible use cases, because it is still limited by the lower-level SPARQL operations and functions. Many problems can only be solved with a general-purpose programming language.
Here is a simple example:
Existing Specification / Documentation
see implementation section.
Links to postponed Issues
submitted via email@example.com by Holger Knublauch, topquadrant.com , cf. http://lists.w3.org/Archives/Public/public-rdf-dawg-comments/2009Mar/0030.html