<docbook><section><title>VirtTipsAndTricksSPARQL11BuiltInF</title><para> </para>
<title> Virtuoso SPARQL 1.1.
 Built-In Functions Usage Examples</title> Virtuoso SPARQL 1.1.
 Built-In Functions Usage Examples
<bridgehead class="http://www.w3.org/1999/xhtml:h2">What?</bridgehead>
 This guide contains Virtuoso SPARQL 1.1.
 Built-In Functions Usage Examples Usage example queries which you can run against any SPARQL endpoint that supports SPARQL 1.1 and the ability to allow a verified user perform INSERT operations.<bridgehead class="http://www.w3.org/1999/xhtml:h2">Why?</bridgehead>
 Using built-In functions provides flexibility to build accurate and complex queries.<bridgehead class="http://www.w3.org/1999/xhtml:h2">How?</bridgehead>
<para>Here are examples showcasing Virtuoso&#39;s support for this functionality:</para>
<bridgehead class="http://www.w3.org/1999/xhtml:h3">Functions on RDF Terms</bridgehead>
<itemizedlist mark="bullet" spacing="compact"><listitem><emphasis>isNumeric</emphasis>: <ulink url="http://bit.ly/X5ZawI">See live results</ulink> <programlisting>SELECT *
WHERE 
  { 
    ?x ?t ?o . 
    FILTER isNumeric(?o) 
  }
LIMIT 10  
</programlisting></listitem>
</itemizedlist><bridgehead class="http://www.w3.org/1999/xhtml:h3">Functions on Strings</bridgehead>
<itemizedlist mark="bullet" spacing="compact"><listitem><emphasis>STRDT</emphasis>: <ulink url="http://bit.ly/XPpVGs">See live results</ulink> <programlisting>SELECT  ?o, STRDT(&quot;123&quot;, xsd:integer)
WHERE 
  { 
    ?x ?t ?o . 
  }
LIMIT 10  
</programlisting></listitem>
<listitem><emphasis>STRLANG</emphasis>: <ulink url="http://bit.ly/VmEenq">See live results</ulink> <programlisting>SELECT  ?o, STRLANG(&quot;chat&quot;, &quot;en&quot;)
WHERE 
  { 
    ?x ?t ?o . 
  }
LIMIT 10  
</programlisting></listitem>
<listitem><emphasis>STRLEN</emphasis>: <ulink url="http://bit.ly/14qoF1P">See live results</ulink> <programlisting>SELECT  ?o, STRLEN(?t)
WHERE 
  { 
    ?x ?t ?o . 
  }
LIMIT 10  
</programlisting></listitem>
<listitem><emphasis>SUBSTR</emphasis>: <ulink url="http://bit.ly/1Nz9PfV">See live results</ulink> **** <programlisting>SELECT DISTINCT ?name1 
WHERE
  {
    ?x &lt;http://xmlns.com/foaf/0.1/name&gt; ?name1 .
    ?x &lt;http://xmlns.com/foaf/0.1/mbox&gt; ?mbox1 .
    ?y &lt;http://xmlns.com/foaf/0.1/name&gt; ?name2 .
    ?y &lt;http://xmlns.com/foaf/0.1/mbox&gt; ?mbox2 .
    FILTER (?mbox1 = ?mbox2 &amp;&amp; ?name1 != ?name2) .
    FILTER( bif:length(str(?name1)) &gt; 2 &amp;&amp; SUBSTR(?name1, 1) LIKE  &quot;%Kingsley%&quot; )
  }
LIMIT 10
</programlisting></listitem>
<listitem><emphasis>UCASE</emphasis>: <ulink url="http://bit.ly/1JAMSaT">See live results</ulink> <programlisting>SELECT UCASE(?name1 )
WHERE
  {
    ?x &lt;http://xmlns.com/foaf/0.1/name&gt; ?name1 .
  }
LIMIT 10
</programlisting></listitem>
<listitem><emphasis>LCASE</emphasis>: <ulink url="http://bit.ly/1GQLtbS1">See live results</ulink> <programlisting>SELECT LCASE(?name1 )
WHERE
  {
    ?x &lt;http://xmlns.com/foaf/0.1/name&gt; ?name1 .
  }
LIMIT 10
</programlisting></listitem>
<listitem><emphasis>strStarts</emphasis>: <ulink url="http://bit.ly/1Hy8gOu">See live results</ulink> <programlisting>SELECT ?name1 
WHERE
  {
    ?x &lt;http://xmlns.com/foaf/0.1/name&gt; ?name1 .
    FILTER ( strStarts(?name1, &quot;Kingsley&quot;) ).
  }
LIMIT 10
</programlisting></listitem>
<listitem><emphasis>strEnds</emphasis>: <ulink url="http://bit.ly/1FUNDGB">See live results</ulink> <programlisting>PREFIX foaf: &lt;http://xmlns.com/foaf/0.1/&gt;
SELECT distinct ?name1 
WHERE
  {
    ?x foaf:name ?name1 .
    ?x foaf:mbox ?mbox1 .
   FILTER ( strEnds(?name1, &quot;hen&quot;) ).
  }
LIMIT 10
</programlisting></listitem>
<listitem><emphasis>encode_for_uri</emphasis>: <ulink url="http://bit.ly/1JALipk">See live results</ulink> <programlisting>SELECT encode_for_uri(?name1) as ?name
WHERE
  {
   ?x &lt;http://xmlns.com/foaf/0.1/name&gt; ?name1 .
    FILTER ( bif:contains(?name1, &quot;France&quot;) ).
  }
LIMIT 10
</programlisting></listitem>
<listitem><emphasis>contains</emphasis>: <ulink url="http://bit.ly/1oxy85a">See live results</ulink> <programlisting>SELECT *
WHERE
  {
    ?s ?p ?o .
    FILTER (if (isliteral(?o),  contains(str(?o), &quot;Virtuoso&quot;), false))
  }
LIMIT 10
</programlisting></listitem>
<listitem><emphasis>concat</emphasis>: <ulink url="http://bit.ly/1zkMZoY">See live results</ulink> <programlisting>SELECT concat (?name1 ,?name2 )
WHERE
 {
   ?x &lt;http://xmlns.com/foaf/0.1/name&gt; ?name1 .
   ?x &lt;http://xmlns.com/foaf/0.1/mbox&gt; ?mbox1 .
   ?y &lt;http://xmlns.com/foaf/0.1/name&gt; ?name2 .
   ?y &lt;http://xmlns.com/foaf/0.1/mbox&gt; ?mbox2 .
   FILTER (?mbox1 = ?mbox2 &amp;&amp; ?name1 != ?name2) .
   FILTER ( contains(?name1, &quot;Dan&quot;) ).
 }
LIMIT 10
</programlisting></listitem>
<listitem><emphasis>langMatches</emphasis>: <ulink url="http://bit.ly/1hnvTYg">See live results</ulink> <programlisting>SELECT ?title
WHERE 
  { 
    ?x &lt;http://purl.org/dc/elements/1.1/title&gt; ?title . 
    FILTER langMatches( lang(?title), &quot;EN&quot; ) 
  }
LIMIT 10
</programlisting></listitem>
<listitem><emphasis>regex</emphasis>: <ulink url="http://bit.ly/Wvgz5K">See live results</ulink> <programlisting>SELECT ?name
WHERE 
  { 
    ?x &lt;http://xmlns.com/foaf/0.1/name&gt;  ?name . 
    FILTER regex(?name, &quot;^ali&quot;, &quot;i&quot;) . 
  }
LIMIT 10
</programlisting></listitem>
</itemizedlist><bridgehead class="http://www.w3.org/1999/xhtml:h3">Functions on Numerics</bridgehead>
<itemizedlist mark="bullet" spacing="compact"><listitem><emphasis>round</emphasis>: <ulink url="http://bit.ly/14qpOXh">See live results</ulink> <programlisting>SELECT  round(?o) 
WHERE
  {
    ?s a ?c .
    ?s geo:geometry ?geo .
    ?s ?p ?o .
    FILTER ( bif:isnumeric(?o) )
  }
LIMIT 10
</programlisting></listitem>
<listitem><emphasis>abs</emphasis>: <ulink url="http://bit.ly/XI03LQ">See live results</ulink> <programlisting>SELECT abs (?o) ?geo 
WHERE
  {
    ?s a ?c .
    ?s geo:geometry ?geo .
    ?s ?p ?o .
    FILTER (bif:isnumeric(?o) )
  }
LIMIT 10
</programlisting></listitem>
<listitem><emphasis>ceil</emphasis>: <ulink url="http://bit.ly/117XiWS">See live results</ulink> <programlisting>SELECT ceil (?o)
WHERE
  {
    ?s a ?c .
    ?s geo:geometry ?geo .
    ?s ?p ?o .
    FILTER (bif:isnumeric(?o) )
  }
LIMIT 10
</programlisting></listitem>
<listitem><emphasis>floor</emphasis>: <ulink url="http://bit.ly/126XTNt">See live results</ulink> <programlisting>SELECT floor(?o)
WHERE
  {
    ?s a ?c .
    ?s geo:geometry ?geo .
    ?s ?p ?o .
    FILTER (bif:isnumeric(?o) )
  }
LIMIT 10
</programlisting></listitem>
<listitem><emphasis>rand</emphasis>: <ulink url="http://bit.ly/14rT5lj">See live results</ulink> <programlisting>SELECT  floor(?o) rand ()
WHERE
  {
    ?s a ?c .
    ?s geo:geometry ?geo .
    ?s ?p ?o .
    FILTER (bif:isnumeric(?o) )
  }
LIMIT 10
</programlisting> </listitem>
</itemizedlist><bridgehead class="http://www.w3.org/1999/xhtml:h3">Functions on Dates and Times</bridgehead>
 <itemizedlist mark="bullet" spacing="compact"><listitem><emphasis>now</emphasis>: <ulink url="http://bit.ly/1CWJOA4">See live results</ulink> <programlisting>SELECT now()
WHERE 
  {
    ?s ?p ?o
  }
LIMIT 1
</programlisting></listitem>
<listitem><emphasis>year</emphasis>: <ulink url="http://bit.ly/1waxzRP">See live results</ulink> <programlisting>SELECT year(&quot;2011-01-10T14:45:13.815-05:00&quot;^^xsd:dateTime)
WHERE 
  {
    ?s ?p ?o
  }
LIMIT 1
</programlisting></listitem>
<listitem><emphasis>month</emphasis>: <ulink url="http://bit.ly/ZGV4na">See live results</ulink> <programlisting>SELECT month (&quot;2011-01-10T14:45:13.815-05:00&quot;^^xsd:dateTime)
WHERE 
  {
    ?s ?p ?o
  }
LIMIT 1
</programlisting></listitem>
<listitem><emphasis>day</emphasis>: <ulink url="http://bit.ly/1t5hbzU">See live results</ulink> <programlisting>SELECT day(&quot;2011-01-10T14:45:13.815-05:00&quot;^^xsd:dateTime)
WHERE 
  {
    ?s ?p ?o
  }
LIMIT 1
</programlisting></listitem>
<listitem><emphasis>hours</emphasis>: <ulink url="http://bit.ly/1zkNi2Q">See live results</ulink> <programlisting>SELECT hours(&quot;2011-01-10T14:45:13.815-05:00&quot;^^xsd:dateTime)
WHERE 
  {
    ?s ?p ?o
  }
LIMIT 1
</programlisting></listitem>
<listitem><emphasis>minutes</emphasis>: <ulink url="http://bit.ly/1t5hdYI">See live results</ulink> <programlisting>SELECT minutes(&quot;2011-01-10T14:45:13.815-05:00&quot;^^xsd:dateTime)
WHERE 
  {
    ?s ?p ?o
  }
LIMIT 1
</programlisting></listitem>
<listitem><emphasis>seconds</emphasis>: <ulink url="http://bit.ly/10oe4bp">See live results</ulink> <programlisting>SELECT seconds (&quot;2011-01-10T14:45:13.815-05:00&quot;^^xsd:dateTime)
WHERE 
  {
    ?s ?p ?o
  }
LIMIT 1
</programlisting></listitem>
<listitem><emphasis>TIMEZONE</emphasis>: <ulink url="http://bit.ly/1tfTogz">See live results</ulink> <programlisting>SELECT TIMEZONE (&quot;2011-01-10T14:45:13.815-05:00&quot;^^xsd:dateTime)
WHERE 
  {
    ?s ?p ?o
  }
LIMIT 1
</programlisting></listitem>
<listitem><emphasis>tz</emphasis>: <ulink url="http://bit.ly/ZNWY5S">See live results</ulink> <programlisting>SELECT tz(&quot;2011-01-10T14:45:13.815-05:00&quot;^^xsd:dateTime)
WHERE 
  {
    ?s ?p ?o
  }
LIMIT 1
</programlisting> </listitem>
</itemizedlist><bridgehead class="http://www.w3.org/1999/xhtml:h3">Hash Functions</bridgehead>
<itemizedlist mark="bullet" spacing="compact"><listitem><emphasis>MD5</emphasis>: <ulink url="http://bit.ly/1x9GAau">See live results</ulink> <programlisting>SELECT MD5 (&#39;test&#39;)
WHERE 
  {
    ?s ?p ?o
  }
LIMIT 1
</programlisting></listitem>
<listitem><emphasis>SHA1</emphasis>: <ulink url="http://bit.ly/1t5hpan">See live results</ulink> <programlisting>SELECT SHA1 (&#39;test&#39;)
WHERE 
  {
    ?s ?p ?o
  }
LIMIT 1
</programlisting></listitem>
<listitem><emphasis>SHA256</emphasis>: <ulink url="http://bit.ly/1t5hqed">See live results</ulink> <programlisting>SELECT SHA256 (&#39;test&#39;)
WHERE 
  {
    ?s ?p ?o
  }
LIMIT 1
</programlisting></listitem>
<listitem><emphasis>SHA384</emphasis>: <ulink url="http://bit.ly/1wtOddL">See live results</ulink> <programlisting>SELECT SHA384(&#39;test&#39;)
WHERE 
  {
    ?s ?p ?o
  }
LIMIT 1
</programlisting></listitem>
<listitem><emphasis>SHA512</emphasis>: <ulink url="http://bit.ly/VlnjQo">See live results</ulink> <programlisting>SELECT SHA512(&#39;test&#39;)
WHERE 
  {
    ?s ?p ?o
  }
LIMIT 1
</programlisting></listitem>
</itemizedlist><para> </para>
<bridgehead class="http://www.w3.org/1999/xhtml:h2">Related</bridgehead>
<itemizedlist mark="bullet" spacing="compact"><listitem><ulink url="http://www.w3.org/TR/sparql11-query/#SparqlOps">SPARQL 1.1. Functions Definitions</ulink> </listitem>
<listitem><ulink url="http://www.w3.org/TR/rdf-sparql-protocol/">SPARQL Protocol (HTTP based Query Service)</ulink> </listitem>
<listitem><ulink url="VirtTipsAndTricksGuide">Virtuoso Tips and Tricks Collection</ulink> </listitem>
<listitem><ulink url="VirtTipsAndTricksSPARQL11FeaturesExamplesCollection">Virtuoso SPARQL 1.1 Usage Examples Collection</ulink> </listitem>
<listitem><ulink url="http://virtuoso.openlinksw.com/tutorials/sparql/SPARQL_Tutorials_Part_9/SPARQL_Tutorials_Part_9.html">Virtuoso SPARQL 1.1 Syntax Tutorial</ulink> </listitem>
<listitem><ulink url="http://docs.openlinksw.com/virtuoso/rdfsparql.html">Virtuoso Documentation</ulink> </listitem>
</itemizedlist></section></docbook>