<!DOCTYPE html>
<html lang="en">
<head>
    

    <title>Apache Jena - Extensions in ARQ</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <link href="/css/bootstrap.min.css" rel="stylesheet" media="screen">
    <link href="/css/bootstrap-icons.css" rel="stylesheet" media="screen"><link rel="stylesheet" type="text/css" href="https://jena.apache.org/sass/jena.1b17c39a117e22b46db4c66f6395dc27c134a60377d87d2d5745b8600eb69722.css" integrity="sha256-GxfDmhF&#43;IrRttMZvY5XcJ8E0pgN32H0tV0W4YA62lyI=">
    <link rel="shortcut icon" href="/images/favicon.ico" />
    
</head>

<body>

<nav class="navbar navbar-expand-lg bg-body-tertiary" role="navigation">
    <div class="container">
        <div class="navbar-header">
            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <a class="navbar-brand" href="/index.html">
                <img class="logo-menu" src="/images/jena-logo/jena-logo-notext-small.png" alt="jena logo">Apache Jena</a>
        </div>

        <div class="collapse navbar-collapse" id="navbarNav">
            <ul class="navbar-nav me-auto mb-2 mb-lg-0">
                <li id="homepage" class="nav-item"><a class="nav-link" href="/index.html"><span class="bi-house"></span> Home</a></li>
                <li id="download" class="nav-item"><a class="nav-link" href="/download/index.cgi"><span class="bi-download"></span> Download</a></li>
                <li class="nav-item dropdown">
                    <a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false"><span class="bi-journal"></span> Learn <b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li class="dropdown-header">Tutorials</li>
                        <li><a class="dropdown-item" href="/tutorials/index.html">Overview</a></li>
                        <li><a class="dropdown-item"  href="/documentation/fuseki2/index.html">Fuseki Triplestore</a></li>
                        <li><a class="dropdown-item"  href="/documentation/notes/index.html">How-To's</a></li>
                        <li><a class="dropdown-item"  href="/documentation/query/manipulating_sparql_using_arq.html">Manipulating SPARQL using ARQ</a></li>
                        <li><a class="dropdown-item"  href="/tutorials/rdf_api.html">RDF core API tutorial</a></li>
                        <li><a class="dropdown-item"  href="/tutorials/sparql.html">SPARQL tutorial</a></li>
                        <li><a class="dropdown-item"  href="/tutorials/using_jena_with_eclipse.html">Using Jena with Eclipse</a></li>
                        <li class="dropdown-divider"></li>
                        <li class="dropdown-header">References</li>
                        <li><a class="dropdown-item"  href="/documentation/index.html">Overview</a></li>
                        <li><a class="dropdown-item"  href="/documentation/query/index.html">ARQ (SPARQL)</a></li>
                        <li><a class="dropdown-item"  href="/documentation/io/">RDF I/O</a></li>
                        <li><a class="dropdown-item"  href="/documentation/assembler/index.html">Assembler</a></li>
                        <li><a class="dropdown-item"  href="/documentation/tools/index.html">Command-line tools</a></li>
                        <li><a class="dropdown-item"  href="/documentation/rdfs/">Data with RDFS Inferencing</a></li>
                        <li><a class="dropdown-item"  href="/documentation/geosparql/index.html">GeoSPARQL</a></li>
                        <li><a class="dropdown-item"  href="/documentation/inference/index.html">Inference API</a></li>
                        <li><a class="dropdown-item"  href="/documentation/ontology/">Ontology API</a></li>
                        <li><a class="dropdown-item"  href="/documentation/permissions/index.html">Permissions</a></li>
                        <li><a class="dropdown-item"  href="/documentation/extras/querybuilder/index.html">Query Builder</a></li>
                        <li><a class="dropdown-item"  href="/documentation/rdf/index.html">RDF API</a></li>
                        <li><a class="dropdown-item"  href="/documentation/rdfconnection/">RDF Connection - SPARQL API</a></li>
                        <li><a class="dropdown-item"  href="/documentation/rdfstar/index.html">RDF-star</a></li>
                        <li><a class="dropdown-item"  href="/documentation/shacl/index.html">SHACL</a></li>
                        <li><a class="dropdown-item"  href="/documentation/shex/index.html">ShEx</a></li>
                        <li><a class="dropdown-item"  href="/documentation/tdb/index.html">TDB</a></li>
                        <li><a class="dropdown-item"  href="/documentation/tdb2/index.html">TDB2</a></li>
                        <li><a class="dropdown-item"  href="/documentation/query/text-query.html">Text Search</a></li>
                    </ul>
                </li>

                <li class="nav-item dropdown">
                    <a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false"><span class="bi-journal-code"></span> Javadoc <b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li><a class="dropdown-item" href="/documentation/javadoc.html">All Javadoc</a></li>
                        <li><a class="dropdown-item" href="/documentation/javadoc/arq/">ARQ</a></li>
                        <li><a class="dropdown-item" href="/documentation/javadoc/fuseki2/">Fuseki</a></li>
                        <li><a class="dropdown-item" href="/documentation/javadoc/geosparql/">GeoSPARQL</a></li>
                        <li><a class="dropdown-item" href="/documentation/javadoc/jena/">Jena Core</a></li>
                        <li><a class="dropdown-item" href="/documentation/javadoc/permissions/">Permissions</a></li>
                        <li><a class="dropdown-item" href="/documentation/javadoc/extras/querybuilder/">Query Builder</a></li>
                        <li><a class="dropdown-item" href="/documentation/javadoc/shacl/">SHACL</a></li>
                        <li><a class="dropdown-item" href="/documentation/javadoc/tdb/">TDB</a></li>
                        <li><a class="dropdown-item" href="/documentation/javadoc/text/">Text Search</a></li>
                    </ul>
                </li>
            </ul>
            <form class="d-flex" role="search" action="/search" method="GET">
                <div class="input-group">
                    <input class="form-control border-end-0 border m-0" type="search" name="q" id="search-query" placeholder="Search...." aria-label="Search" style="width: 10rem;">
                    <button class="btn btn-outline-secondary border-start-0 border" type="submit">
                        <i class="bi-search"></i>
                    </button>
                </div>
            </form>
            <ul class="navbar-nav">
                <li id="ask" class="nav-item"><a class="nav-link" href="/help_and_support/index.html" title="Ask"><span class="bi-patch-question"></span><span class="text-body d-none d-xxl-inline"> Ask</span></a></li>

                <li class="nav-item dropdown">
                    <a href="#" title="Get involved" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false"><span class="bi-megaphone"></span><span class="text-body d-none d-xxl-inline"> Get involved </span><b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li><a class="dropdown-item" href="/getting_involved/index.html">Contribute</a></li>
                        <li><a class="dropdown-item" href="/help_and_support/bugs_and_suggestions.html">Report a bug</a></li>
                        <li class="dropdown-divider"></li>
                        <li class="dropdown-header">Project</li>
                        <li><a class="dropdown-item" href="/about_jena/about.html">About Jena</a></li>
                        <li><a class="dropdown-item" href="/about_jena/architecture.html">Architecture</a></li>
                        <li><a class="dropdown-item" href="/about_jena/citing.html">Citing</a></li>
                        <li><a class="dropdown-item" href="/about_jena/team.html">Project team</a></li>
                        <li><a class="dropdown-item" href="/about_jena/contributions.html">Related projects</a></li>
                        <li><a class="dropdown-item" href="/about_jena/roadmap.html">Roadmap</a></li>
                        <li><a class="dropdown-item" href="/about_jena/security-advisories.html">Security Advisories</a></li>
                        <li class="dropdown-divider"></li>
                        <li class="dropdown-header">ASF</li>
                        <li><a class="dropdown-item" href="https://www.apache.org/">Apache Software Foundation</a></li>
                        <li><a class="dropdown-item" href="https://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li>
                        <li><a class="dropdown-item" href="https://www.apache.org/licenses/LICENSE-2.0">License</a></li>
                        <li><a class="dropdown-item" href="https://www.apache.org/security/">Security</a></li>
                        <li><a class="dropdown-item" href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
                    </ul>
                </li>
                
                
                
                
                <li class="nav-item" id="edit"><a class="nav-link" href="https://github.com/apache/jena-site/edit/main/source/documentation/query/extension.md" title="Edit this page on GitHub"><span class="bi-pencil-square"></span><span class="text-body d-none d-xxl-inline"> Edit this page</span></a></li>
            </ul>
        </div>
    </div>
</nav>

<div class="container">
    <div class="row">
        <div class="col-md-12">
            
            <div id="breadcrumbs">
                





<ol class="breadcrumb mt-4 p-2 bg-body-tertiary">
    
    
        
        
    
        
        
            
                <li class="breadcrumb-item"><a href='/documentation'>DOCUMENTATION</a></li>
            
            
        
    
        
        
            
                <li class="breadcrumb-item"><a href='/documentation/query'>QUERY</a></li>
            
            
        
    
        
        
            
                <li class="breadcrumb-item active">EXTENSION.HTML</li>
            
            
        
    
</ol>




            </div>
            <h1 class="title">Extensions in ARQ</h1>
            
            
<main class="d-flex flex-xl-row flex-column">
  
  <aside class="text-muted align-self-start mb-3 p-0 d-xl-none d-block">
    <h2 class="h6 sticky-top m-0 p-2 bg-body-tertiary">On this page</h2>
    <nav id="TableOfContents">
  <ul>
    <li><a href="#filter-functions">Filter Functions</a>
      <ul>
        <li><a href="#function-registry">Function Registry</a></li>
        <li><a href="#dynamically-loaded-functions">Dynamically Loaded Functions</a></li>
      </ul>
    </li>
    <li><a href="#property-functions">Property functions</a></li>
    <li><a href="#describe-handlers">DESCRIBE handlers</a></li>
    <li><a href="#blank-node-labels">Blank Node Labels</a></li>
  </ul>
</nav>
  </aside>
  <article class="flex-column me-lg-4">
    <p>There are several ways to extend the ARQ query engine within the
SPARQL syntax.</p>
<ul>
<li><a href="#value-functions">Expression Functions</a> - additional operations in
<code>FILTERS</code>, <code>BIND</code> and <code>SELECT</code> expressions.</li>
<li><a href="#property-functions">Property functions</a> - adding predicates
that introduce custom query stages</li>
<li><a href="#describe-handlers">DESCRIBE handlers</a></li>
<li>Support for
<a href="#match-blank-node-labels">finding blank nodes by label</a></li>
<li><a href="arq-query-eval.html">Extending query evaluation</a> for querying
different storage and inference systems</li>
</ul>
<p>Functions are standard part of SPARQL. ARQ provides
application-written functions and provides a
<a href="library-function.html">function library</a>. Applications can
<a href="writing_functions.html">write and register their own functions</a>.</p>
<p>Property functions provide a way to provide custom matching of
particular predicates. They enable triple matches to be calculated,
rather than just looked up in a RDF graph and they are a way to add
functionality and remain within SPARQL. ARQ has a
<a href="library-propfunc.html">property function library</a>. Applications
can
<a href="writing_propfuncs.html">write and register their own property functions</a>.</p>
<p>The <a href="/documentation/query/text-query.html/">free text support in ARQ</a> is provided by
<a href="http://lucene.apache.org/java/docs/index.html">Lucene</a>, using
property functions.</p>
<h2 id="filter-functions">Filter Functions</h2>
<p>A SPARQL custom function is implementation dependent. Most details
of the ARQ query engine do not have to be understood to write a
function; it is a matter of implementing one interface. This is
made simpler for many cases by a number of base classes that
provide much of the machinery needed.</p>
<h3 id="function-registry">Function Registry</h3>
<p>Functions can be installed into the function registry by the
application. The function registry is a mapping from URI to a
factory class for functions (each time a function is mentioned in a
query, a new instance is created) and there is an auto-factory
class so just registering a Java class will work. A function can
access the queried dataset.</p>
<h3 id="dynamically-loaded-functions">Dynamically Loaded Functions</h3>
<p>The ARQ function library uses this mechanism. The namespace of the
ARQ function library is <code>&lt;http://jena.apache.org/ARQ/function#&gt;</code>.</p>
<pre><code>PREFIX afn: &lt;http://jena.apache.org/ARQ/function#&gt;
PREFIX dc: &lt;http://purl.org/dc/elements/1.1/&gt;
SELECT ?v { 
    ?x dc:date ?date . 
    FILTER (?date &lt; afn:now() )
}
</code></pre>
<p>The afn:now returns the time the query started.</p>
<p>The expression functions in the ARQ distribution are described on the
<a href="library-function.html">expression function library page</a>.</p>
<p>URIs for functions in the (fake)
<a href="java-uri.html">URI scheme <code>java:</code></a> are dynamically loaded. The
class name forms the scheme specific part of the URI.</p>
<h2 id="property-functions">Property functions</h2>
<p>Property functions, sometimes called &ldquo;magic properties&rdquo;, are
properties that cause triple matching to happen by executing some
piece of code, determined by the property URI, and not by the usual
graph matching. They can be used to give certain kinds of inference
and rule processing. Some calculated properties have additional,
non-declarative requirements such as needing one of other of the
subject or object to be a query constant or a bound value, and not
able to generate all possibilities for that slot.</p>
<p>Property functions must have fixed URI for the predicate (it can&rsquo;t
be query variable). They may take a list for subject or object.</p>
<p>One common case is for access to collections (RDF lists) or
containers (rdf:Bag, rdf:Seq, rdf:Alt).</p>
<pre><code>PREFIX list: &lt;http://jena.apache.org/ARQ/list#&gt;
SELECT ?member { 
    ?x :p ?list .     # Some way to find the list 
    ?list list:member ?member .
}
</code></pre>
<p>which can also be written:</p>
<pre><code>PREFIX list: &lt;http://jena.apache.org/ARQ/list#&gt;
SELECT ?member { 
    ?x :p [ list:member ?member ] 
}
</code></pre>
<p>Likewise, RDF containers:</p>
<pre><code>PREFIX rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt;
SELECT ?member { 
    ?x :p ?bag .     # Some way to find the bag 
    ?bag rdfs:member ?member .
}
</code></pre>
<p>Property functions can also take lists in the subject or object
slot.</p>
<p>Code for properties can be dynamically loaded or pre-registered.
For example, <code>splitIRI</code> will take an IRI and assign the namespace
ad localname parts to variables (if the variables are already
bound, not constants are used, <code>splitIRI</code> will check the values).</p>
<pre><code>PREFIX xsd: &lt;http://www.w3.org/2001/XMLSchema#&gt;
PREFIX apf: &lt;java:org.apache.jena.query.pfunction.library.&gt;
SELECT ?namespace ?localname { 
    xsd:string apf:splitIRI (?namespace ?localname) 
}
</code></pre>
<p>Property functions might conflict with inference rules and it can
be turned off by the Java code:</p>
<pre><code> ARQ.setFalse(ARQ.enablePropertyFunctions) ;
</code></pre>
<p>or on a per instance basis:</p>
<pre><code> try(QueryExecution qExec = ... ) {
     qExec.getContext().setFalse(ARQ.enablePropertyFunctions) ;
     ...
 }
</code></pre>
<p>The property functions in the ARQ distribution are described on the
<a href="library-propfunc.html">property function library page</a>.</p>
<p>URIs for functions in the (fake)
<a href="java-uri.html">URI scheme <code>java:</code></a> are dynamically loaded. The
class name forms the scheme specific part of the URI.</p>
<h2 id="describe-handlers">DESCRIBE handlers</h2>
<p>The <code>DESCRIBE</code> result form in SPARQL does not define an exact form
of RDF to return. Instead, it allows the server or query processor
to return what it considers to be an appropriate description of the
resources located. This description will be specific to the domain,
data modelling or application.</p>
<p>ARQ comes with one built-in handler which calculates the blank node
closure of resources found. While suitable for many situations, it
is not general (for example, a <a href="http://www.foaf-project.org/">FOAF</a>
file usually consists of all blank nodes). ARQ allows the
application to replace or add handlers for producing <code>DESCRIBE</code>
result forms.</p>
<p>Application-specific handlers can be added to the
<code>DescribeHandlerRegistry</code>. The handler will be called for each
resource (not literals) identified by the <code>DESCRIBE</code> query.</p>
<h2 id="blank-node-labels">Blank Node Labels</h2>
<p>URIs from with scheme name &ldquo;_&rdquo; (which is illegal) are created as
blank node labels for directly accessing a blank node in the
queried graph or dataset. These are constant terms in the query -
not unnamed variables. Do not confuse these with the standard
qname-like notation for blank nodes in queries. This is not
portable - use with care.</p>
<pre><code>&lt;_:1234-5678-90&gt; # A blank node in the data

_:b0 # A blank node in the query - a variable
</code></pre>

  </article>
  
  <aside class="text-muted align-self-start mb-3 mb-xl-5 p-0 d-none d-xl-flex flex-column sticky-top">
    <h2 class="h6 sticky-top m-0 p-2 bg-body-tertiary">On this page</h2>
    <nav id="TableOfContents">
  <ul>
    <li><a href="#filter-functions">Filter Functions</a>
      <ul>
        <li><a href="#function-registry">Function Registry</a></li>
        <li><a href="#dynamically-loaded-functions">Dynamically Loaded Functions</a></li>
      </ul>
    </li>
    <li><a href="#property-functions">Property functions</a></li>
    <li><a href="#describe-handlers">DESCRIBE handlers</a></li>
    <li><a href="#blank-node-labels">Blank Node Labels</a></li>
  </ul>
</nav>
  </aside>
</main>

        </div>
    </div>
</div>

<footer class="bd-footer py-4 py-md-5 mt-4 mt-lg-5 bg-body-tertiary">
    <div class="container" style="font-size:80%" >
        <p>
            Copyright &copy; 2011&ndash;2024 The Apache Software Foundation, Licensed under the
            <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
        </p>
        <p>
            Apache Jena, Jena, the Apache Jena project logo, Apache and the Apache feather logos are trademarks of
            The Apache Software Foundation.
            <br/>
          <a href="https://privacy.apache.org/policies/privacy-policy-public.html"
             >Apache Software Foundation Privacy Policy</a>.
        </p>
    </div>
</footer>

<script src="/js/popper.min.js.js" type="text/javascript"></script>
<script src="/js/bootstrap.min.js" type="text/javascript"></script>
<script src="/js/improve.js" type="text/javascript"></script>

<script type="text/javascript">
(function() {
    'use strict'
    
    

    const links = document.querySelectorAll(`a[href="${window.location.pathname}"]`)
    if (links !== undefined && links !== null) {
        for (const link of links) {
            
            link.classList.add('active')
            let parentElement = link.parentElement
            let count = 0
            const levelsLimit = 4
            
            
            
            
            
            while (['UL', 'LI'].includes(parentElement.tagName) && count <= levelsLimit) {
                if (parentElement.tagName === 'LI') {
                    
                    
                    
                    parentElement.querySelector('a:first-child').classList.add('active')
                }
                parentElement = parentElement.parentElement
                count++
            }
        }
    }
})()
</script>

</body>
</html>
