java:
URI schemeARQ uses URIs of the form <java:package.class>
to provide
dynamic loading of code for value
functions and property functions.
ARQ loads the class when needed. For functions and property functions, it also
wraps it in the necessary factory code. A new instance of the function or
property function is created for each mention of the name in each query.
Any classes loaded by ARQ must already be on the java classpath. ARQ does not create any new class loaders, nor modify the Java class path in any way. The class path must be set up to include any class files or jar files for dynamically loaded code.
Classes can be mor conveniently named in queries using SPARQL PREFIX
es
but because dots can't appear in the local part of a prefixed name, all the
package name and the final dot must be in the PREFIX
declaration.
PREFIX fn: <java:org.example.functions.> # Including the final dot ... FILTER fn:alter(?x) ...
All code loading is performed via the MappedLoader
class. Before
actually loading the code, the mapped loader applies any transformation of URIs.
For example, the ARQ function library has a namespace of <http://jena.hpl.hp.com/ARQ/function#>
and resides in the Java package com.hp.hpl.jena.sparql.function.library. The
mapped loader includes a partial rewrite rule turning http URLs starting with
that namespace into java: URIs using the package name.