<https://kgdev.net/specifications/sparql11-query/expressions/SparqlOps/func-forms/#func-if>
        a       <https://w3id.org/atomgraph/linkeddatahub#Content> ;
        <http://www.w3.org/1999/02/22-rdf-syntax-ns#value>
                "<div xmlns=\"http://www.w3.org/1999/xhtml\"><h5 id=\"func-if\">IF</h5>\n\n<pre xml:space=\"preserve\"><code>rdfTerm  IF (expression1, expression2, expression3)\n</code></pre>\n<p>The <code>IF</code> function form evaluates the first argument, interprets it as a <a href=\"../../evaluation/#ebv\" shape=\"rect\">effective boolean value</a>, then returns the value of <code>expression2</code> if the EBV is true, otherwise it returns the value of <code>expression3</code>. Only one of <code>expression2</code> and <code>expression3</code> is evaluated. If evaluating the first argument raises an error, then an error is raised for the evaluation of the <code>IF</code> expression.</p>\n<p>Examples: Suppose ?x = 2, ?z = 0 and ?y is not bound in some query solution:</p>\n<table>\n   <tbody>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\n            <code>IF(?x = 2, \"yes\", \"no\")</code>\n         </td>\n         <td colspan=\"1\" rowspan=\"1\">returns \"yes\"</td>\n      </tr>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\n            <code>IF(bound(?y), \"yes\", \"no\")</code>\n         </td>\n         <td colspan=\"1\" rowspan=\"1\">returns \"no\"</td>\n      </tr>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\n            <code>IF(?x=2, \"yes\", 1/?z)</code>\n         </td>\n         <td colspan=\"1\" rowspan=\"1\">returns \"yes\", the expression <code>1/?z</code> is not evaluated</td>\n      </tr>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\n            <code>IF(?x=1, \"yes\", 1/?z)</code>\n         </td>\n         <td colspan=\"1\" rowspan=\"1\">raises an error</td>\n      </tr>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\n            <code>IF(\"2\" &gt; 1, \"yes\", \"no\")</code>\n         </td>\n         <td colspan=\"1\" rowspan=\"1\">raises an error</td>\n      </tr>\n   </tbody>\n</table></div>"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> ;
        <http://www.w3.org/2000/01/rdf-schema#seeAlso>
                <https://kgdev.net/specifications/sparql11-query/expressions/evaluation/#ebv> ;
        <http://www.w3.org/ns/prov#wasDerivedFrom>
                <https://www.w3.org/TR/sparql11-query/#func-if> .

<https://kgdev.net/specifications/sparql11-query/expressions/SparqlOps/func-forms/#func-sameTerm>
        a       <https://w3id.org/atomgraph/linkeddatahub#Content> ;
        <http://www.w3.org/1999/02/22-rdf-syntax-ns#value>
                "<div xmlns=\"http://www.w3.org/1999/xhtml\"><h5 id=\"func-sameTerm\">sameTerm</h5>\n\n<pre xml:space=\"preserve\"><code> xsd:boolean  sameTerm (RDF term term1, RDF term term2)\n</code></pre>\n<p>Returns TRUE if <code>term1</code> and <code>term2</code> are the same RDF term as defined in <a href=\"http://www.w3.org/TR/rdf-concepts/\" shape=\"rect\">Resource Description Framework (RDF): Concepts and Abstract Syntax</a> [<a href=\"http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/\" shape=\"rect\" target=\"_blank\">Resource Description Framework (RDF): Concepts and Abstract Syntax</a>]; returns FALSE otherwise.</p>\n<pre xml:space=\"preserve\"><code class=\"language-turtle\">@prefix foaf:       &lt;http://xmlns.com/foaf/0.1/&gt; .\n\n_:a  foaf:name       \"Alice\".\n_:a  foaf:mbox       &lt;mailto:alice@work.example&gt; .\n\n_:b  foaf:name       \"Ms A.\".\n_:b  foaf:mbox       &lt;mailto:alice@work.example&gt; .\n</code></pre>\n<p>This query finds the people who have multiple <code>foaf:name</code> triples:</p>\n<pre xml:space=\"preserve\"><code class=\"language-sparql\">PREFIX foaf: &lt;http://xmlns.com/foaf/0.1/&gt;\nSELECT ?name1 ?name2\nWHERE { ?x foaf:name  ?name1 ;\n        foaf:mbox  ?mbox1 .\n         ?y foaf:name  ?name2 ;\n         foaf:mbox  ?mbox2 .\n         FILTER (sameTerm(?mbox1, ?mbox2) &amp;&amp; !sameTerm(?name1, ?name2))\n      } \n</code></pre>\n<p>Query result:</p>\n<table class=\"resultTable table table-striped\">\n   <tbody>\n      <tr>\n         <th colspan=\"1\" rowspan=\"1\">name1</th>\n         <th colspan=\"1\" rowspan=\"1\">name2</th>\n      </tr>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\"Alice\"</td>\n         <td colspan=\"1\" rowspan=\"1\">\"Ms A.\"</td>\n      </tr>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\"Ms A.\"</td>\n         <td colspan=\"1\" rowspan=\"1\">\"Alice\"</td>\n      </tr>\n   </tbody>\n</table>\n\n<p>Unlike  RDFterm-equal ,  sameTerm  can be used to test for non-equivalent  typed literals  with unsupported datatypes:</p>\n<pre xml:space=\"preserve\"><code class=\"language-turtle\">@prefix :          &lt;http://example.org/WMterms#&gt; .\n@prefix t:         &lt;http://example.org/types#&gt; .\n\n_:c1  :label        \"Container 1\" .\n_:c1  :weight       \"100\"^^t:kilos .\n_:c1  :displacement  \"100\"^^t:liters .\n\n_:c2  :label        \"Container 2\" .\n_:c2  :weight       \"100\"^^t:kilos .\n_:c2  :displacement  \"85\"^^t:liters .\n\n_:c3  :label        \"Container 3\" .\n_:c3  :weight       \"85\"^^t:kilos .\n_:c3  :displacement  \"85\"^^t:liters .\n</code></pre>\n<pre xml:space=\"preserve\"><code class=\"language-sparql\">PREFIX  :      &lt;http://example.org/WMterms#&gt;\nPREFIX  t:     &lt;http://example.org/types#&gt;\n\nSELECT ?aLabel1 ?bLabel\nWHERE { ?a  :label        ?aLabel .\n        ?a  :weight       ?aWeight .\n        ?a  :displacement ?aDisp .\n\n        ?b  :label        ?bLabel .\n        ?b  :weight       ?bWeight .\n        ?b  :displacement ?bDisp .\n\n        FILTER ( sameTerm(?aWeight, ?bWeight) &amp;&amp; !sameTerm(?aDisp, ?bDisp)) }\n</code></pre>\n<table class=\"resultTable table table-striped\">\n   <tbody>\n      <tr>\n         <th colspan=\"1\" rowspan=\"1\">aLabel</th>\n         <th colspan=\"1\" rowspan=\"1\">bLabel</th>\n      </tr>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\"Container 1\"</td>\n         <td colspan=\"1\" rowspan=\"1\">\"Container 2\"</td>\n      </tr>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\"Container 2\"</td>\n         <td colspan=\"1\" rowspan=\"1\">\"Container 1\"</td>\n      </tr>\n   </tbody>\n</table>\n\n<p>The test for boxes with the same weight may also be done with the '=' operator (<a href=\"#func-RDFterm-equal\" shape=\"rect\">RDFterm-equal</a>) as the test for <code>\"100\"^^t:kilos = \"85\"^^t:kilos</code> will result in an error, eliminating that potential solution.</p></div>"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> ;
        <http://www.w3.org/2000/01/rdf-schema#seeAlso>
                <http://www.w3.org/TR/rdf-concepts/> , <http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/> , <https://kgdev.net/specifications/sparql11-query/expressions/SparqlOps/func-forms/#func-RDFterm-equal> ;
        <http://www.w3.org/ns/prov#wasDerivedFrom>
                <https://www.w3.org/TR/sparql11-query/#func-sameTerm> .

<https://kgdev.net/specifications/sparql11-query/expressions/SparqlOps/func-forms/#func-bound>
        a       <https://w3id.org/atomgraph/linkeddatahub#Content> ;
        <http://www.w3.org/1999/02/22-rdf-syntax-ns#value>
                "<div xmlns=\"http://www.w3.org/1999/xhtml\"><h5 id=\"func-bound\">bound</h5>\n\n<pre xml:space=\"preserve\"><code>xsd:boolean  BOUND (variable var)\n</code></pre>\n<p>Returns <code>true</code> if <code>var</code> is bound to a value. Returns false otherwise. Variables with the value NaN or INF are considered bound.</p>\n<p>Data:</p>\n<pre xml:space=\"preserve\"><code class=\"language-turtle\">@prefix foaf:        &lt;http://xmlns.com/foaf/0.1/&gt; .\n@prefix dc:          &lt;http://purl.org/dc/elements/1.1/&gt; .\n@prefix xsd:          &lt;http://www.w3.org/2001/XMLSchema#&gt; .\n\n_:a  foaf:givenName  \"Alice\".\n\n_:b  foaf:givenName  \"Bob\" .\n_:b  dc:date         \"2005-04-04T04:04:04Z\"^^xsd:dateTime .\n</code></pre>\n<pre xml:space=\"preserve\"><code class=\"language-sparql\">PREFIX foaf: &lt;http://xmlns.com/foaf/0.1/&gt;\nPREFIX dc:   &lt;http://purl.org/dc/elements/1.1/&gt;\nPREFIX xsd:   &lt;http://www.w3.org/2001/XMLSchema#&gt;\nSELECT ?givenName\n WHERE { ?x foaf:givenName  ?givenName .\n         OPTIONAL { ?x dc:date ?date } .\n         FILTER ( bound(?date) ) }\n</code></pre>\n<p>Query result:</p>\n<table class=\"resultTable table table-striped\">\n   <tbody>\n      <tr>\n         <th colspan=\"1\" rowspan=\"1\">givenName</th>\n      </tr>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\"Bob\"</td>\n      </tr>\n   </tbody>\n</table>\n\n<p>One may test that a graph pattern is <em>not</em> expressed by specifying an OPTIONALgraph\npattern that introduces a variable and testing to see that the variable is notbound. This is called <em>Negation as Failure</em> in logic programming.</p>\n<p>This query matches the people with a <code>name</code> but <em>no</em> expressed <code>date</code>:</p>\n<pre xml:space=\"preserve\"><code class=\"language-sparql\">PREFIX foaf: &lt;http://xmlns.com/foaf/0.1/&gt;\nPREFIX dc:   &lt;http://purl.org/dc/elements/1.1/&gt;\nSELECT ?name\n WHERE { ?x foaf:givenName  ?name .\n         OPTIONAL { ?x dc:date ?date } .\n         FILTER (!bound(?date)) }\n</code></pre>\n<p>Query result:</p>\n<table class=\"resultTable table table-striped\">\n   <tbody>\n      <tr>\n         <th colspan=\"1\" rowspan=\"1\">name</th>\n      </tr>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\"Alice\"</td>\n      </tr>\n   </tbody>\n</table>\n\n<p>Because Bob's <code>dc:date</code> was known, <code>\"Bob\"</code> was not a solution to the query.</p></div>"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> ;
        <http://www.w3.org/ns/prov#wasDerivedFrom>
                <https://www.w3.org/TR/sparql11-query/#func-bound> .

<https://kgdev.net/specifications/sparql11-query/expressions/SparqlOps/func-forms/#func-logical-or>
        a       <https://w3id.org/atomgraph/linkeddatahub#Content> ;
        <http://www.w3.org/1999/02/22-rdf-syntax-ns#value>
                "<div xmlns=\"http://www.w3.org/1999/xhtml\"><h5 id=\"func-logical-or\">logical-or</h5>\n\n<pre xml:space=\"preserve\"><code> xsd:boolean  xsd:boolean left || xsd:boolean right\n</code></pre>\n<p>Returns a logical <code>OR</code> of <code>left</code> and <code>right</code>. Note that  logical-or  operates on the <a href=\"../../evaluation/#ebv\" shape=\"rect\">effective boolean value</a> of its arguments.</p>\n<p>Note: see section 17.2, <a href=\"../../evaluation/#this\" shape=\"rect\">Filter Evaluation</a>, for the <code>||</code> operator's treatment of errors.</p></div>"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> ;
        <http://www.w3.org/2000/01/rdf-schema#seeAlso>
                <https://kgdev.net/specifications/sparql11-query/expressions/evaluation/#ebv> , <https://kgdev.net/specifications/sparql11-query/expressions/evaluation/#this> ;
        <http://www.w3.org/ns/prov#wasDerivedFrom>
                <https://www.w3.org/TR/sparql11-query/#func-logical-or> .

<https://kgdev.net/specifications/sparql11-query/expressions/SparqlOps/func-forms/#func-in>
        a       <https://w3id.org/atomgraph/linkeddatahub#Content> ;
        <http://www.w3.org/1999/02/22-rdf-syntax-ns#value>
                "<div xmlns=\"http://www.w3.org/1999/xhtml\"><h5 id=\"func-in\">IN</h5>\n\n<pre xml:space=\"preserve\"><code>boolean  rdfTerm IN (expression, ...)\n</code></pre>\n<p>The <code>IN</code> operator tests whether the RDF term on the left-hand side is found in the values of list of expressions on the right-hand side. The test is done with \"=\" operator, which tests for the same value, as determined by the <a href=\"../../OperatorMapping/#this\" shape=\"rect\">operator mapping</a>.</p>\n<p>A list of zero terms on the right-hand side is legal.</p>\n<p>Errors in comparisons cause the <code>IN</code> expression to raise an error if the RDF term being tested is not found elsewhere in the list of terms.</p>\n<p>The <code>IN</code> operator is equivalent to the SPARQL expression:</p>\n<pre xml:space=\"preserve\"><code>(lhs = expression1) || (lhs = expression2) || ...\n</code></pre>\n<p>Examples:</p>\n<table>\n   <tbody>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\n            <code>2 IN (1, 2, 3)</code>\n         </td>\n         <td colspan=\"1\" rowspan=\"1\">true</td>\n      </tr>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\n            <code>2 IN ()</code>\n         </td>\n         <td colspan=\"1\" rowspan=\"1\">false</td>\n      </tr>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\n            <code>2 IN (&lt;http://example/iri&gt;, \"str\", 2.0)</code>\n         </td>\n         <td colspan=\"1\" rowspan=\"1\">true</td>\n      </tr>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\n            <code>2 IN (1/0, 2)</code>\n         </td>\n         <td colspan=\"1\" rowspan=\"1\">true</td>\n      </tr>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\n            <code>2 IN (2, 1/0)</code>\n         </td>\n         <td colspan=\"1\" rowspan=\"1\">true</td>\n      </tr>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\n            <code>2 IN (3, 1/0)</code>\n         </td>\n         <td colspan=\"1\" rowspan=\"1\">raises an error</td>\n      </tr>\n   </tbody>\n</table></div>"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> ;
        <http://www.w3.org/2000/01/rdf-schema#seeAlso>
                <https://kgdev.net/specifications/sparql11-query/expressions/OperatorMapping/#this> ;
        <http://www.w3.org/ns/prov#wasDerivedFrom>
                <https://www.w3.org/TR/sparql11-query/#func-in> .

<https://kgdev.net/specifications/sparql11-query/expressions/SparqlOps/func-forms/#func-coalesce>
        a       <https://w3id.org/atomgraph/linkeddatahub#Content> ;
        <http://www.w3.org/1999/02/22-rdf-syntax-ns#value>
                "<div xmlns=\"http://www.w3.org/1999/xhtml\"><h5 id=\"func-coalesce\">COALESCE</h5>\n\n<pre xml:space=\"preserve\"><code>rdfTerm  COALESCE(expression, ....)\n</code></pre>\n<p>The <code>COALESCE</code> function form returns the RDF term value of the first expression that evaluates without error. In SPARQL, evaluating an unbound variable raises an error.</p>\n<p>If none of the arguments evaluates to an RDF term, an error is raised. If no expressions are evaluated without error, an error is raised.</p>\n<p>Examples: Suppose ?x = 2 and ?y is not bound in some query solution:</p>\n<table>\n   <tbody>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\n            <code>COALESCE(?x, 1/0)</code>\n         </td>\n         <td colspan=\"1\" rowspan=\"1\">returns 2, the value of <code>x</code>\n         </td>\n      </tr>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\n            <code>COALESCE(1/0, ?x)</code>\n         </td>\n         <td colspan=\"1\" rowspan=\"1\">returns 2</td>\n      </tr>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\n            <code>COALESCE(5, ?x)</code>\n         </td>\n         <td colspan=\"1\" rowspan=\"1\">returns 5</td>\n      </tr>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\n            <code>COALESCE(?y, 3)</code>\n         </td>\n         <td colspan=\"1\" rowspan=\"1\">returns 3</td>\n      </tr>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\n            <code>COALESCE(?y)</code>\n         </td>\n         <td colspan=\"1\" rowspan=\"1\">raises an error because <code>y</code> is not bound.</td>\n      </tr>\n   </tbody>\n</table></div>"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> ;
        <http://www.w3.org/ns/prov#wasDerivedFrom>
                <https://www.w3.org/TR/sparql11-query/#func-coalesce> .

<https://kgdev.net/specifications/sparql11-query/expressions/SparqlOps/func-forms/>
        a       <https://www.w3.org/ns/ldt/document-hierarchy#Item> ;
        <http://www.w3.org/1999/02/22-rdf-syntax-ns#_1>
                <https://kgdev.net/specifications/sparql11-query/expressions/SparqlOps/func-forms/#this> ;
        <http://www.w3.org/1999/02/22-rdf-syntax-ns#_10>
                <https://kgdev.net/specifications/sparql11-query/expressions/SparqlOps/func-forms/#func-in> ;
        <http://www.w3.org/1999/02/22-rdf-syntax-ns#_11>
                <https://kgdev.net/specifications/sparql11-query/expressions/SparqlOps/func-forms/#func-not-in> ;
        <http://www.w3.org/1999/02/22-rdf-syntax-ns#_2>
                <https://kgdev.net/specifications/sparql11-query/expressions/SparqlOps/func-forms/#func-bound> ;
        <http://www.w3.org/1999/02/22-rdf-syntax-ns#_3>
                <https://kgdev.net/specifications/sparql11-query/expressions/SparqlOps/func-forms/#func-if> ;
        <http://www.w3.org/1999/02/22-rdf-syntax-ns#_4>
                <https://kgdev.net/specifications/sparql11-query/expressions/SparqlOps/func-forms/#func-coalesce> ;
        <http://www.w3.org/1999/02/22-rdf-syntax-ns#_5>
                <https://kgdev.net/specifications/sparql11-query/expressions/SparqlOps/func-forms/#func-filter-exists> ;
        <http://www.w3.org/1999/02/22-rdf-syntax-ns#_6>
                <https://kgdev.net/specifications/sparql11-query/expressions/SparqlOps/func-forms/#func-logical-or> ;
        <http://www.w3.org/1999/02/22-rdf-syntax-ns#_7>
                <https://kgdev.net/specifications/sparql11-query/expressions/SparqlOps/func-forms/#func-logical-and> ;
        <http://www.w3.org/1999/02/22-rdf-syntax-ns#_8>
                <https://kgdev.net/specifications/sparql11-query/expressions/SparqlOps/func-forms/#func-RDFterm-equal> ;
        <http://www.w3.org/1999/02/22-rdf-syntax-ns#_9>
                <https://kgdev.net/specifications/sparql11-query/expressions/SparqlOps/func-forms/#func-sameTerm> ;
        <http://purl.org/dc/terms/modified>
                "2023-07-10T15:25:09.498Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> ;
        <http://purl.org/dc/terms/title>
                "Functional Forms" ;
        <http://rdfs.org/sioc/ns#has_container>
                <https://kgdev.net/specifications/sparql11-query/expressions/SparqlOps/> ;
        <http://www.w3.org/ns/prov#wasDerivedFrom>
                <https://www.w3.org/TR/sparql11-query/#func-forms> ;
        <http://xmlns.com/foaf/0.1/primaryTopic>
                <https://kgdev.net/specifications/sparql11-query/expressions/SparqlOps/func-forms/#this> .

<https://kgdev.net/specifications/sparql11-query/expressions/SparqlOps/func-forms/#func-RDFterm-equal>
        a       <https://w3id.org/atomgraph/linkeddatahub#Content> ;
        <http://www.w3.org/1999/02/22-rdf-syntax-ns#value>
                "<div xmlns=\"http://www.w3.org/1999/xhtml\"><h5 id=\"func-RDFterm-equal\">RDFterm-equal</h5>\n\n<pre xml:space=\"preserve\"><code> xsd:boolean  RDF term term1 = RDF term term2\n</code></pre>\n<p>Returns TRUE if <code>term1</code> and <code>term2</code> are the same RDF term as defined in <a href=\"http://www.w3.org/TR/rdf-concepts/\" shape=\"rect\">Resource Description Framework (RDF): Concepts and Abstract Syntax</a> [<a href=\"http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/\" shape=\"rect\" target=\"_blank\">Resource Description Framework (RDF): Concepts and Abstract Syntax</a>]; produces a type error if the arguments are both literal but are not the same RDF term *; returns FALSE otherwise. <code>term1</code> and <code>term2</code> are the same if any of the following is true:</p>\n<ul>\n<li>term1  and  term2  are equivalent  IRIs  as defined in <a href=\"http://www.w3.org/TR/rdf-concepts/#section-Graph-URIref\" shape=\"rect\">6.4 RDF URI References</a> of [<a href=\"http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/\" shape=\"rect\" target=\"_blank\">Resource Description Framework (RDF): Concepts and Abstract Syntax</a>].</li>\n<li>term1  and  term2  are equivalent  literals  as defined in <a href=\"http://www.w3.org/TR/rdf-concepts/#section-Literal-Equality\" shape=\"rect\">6.5.1 Literal Equality</a> of [<a href=\"http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/\" shape=\"rect\" target=\"_blank\">Resource Description Framework (RDF): Concepts and Abstract Syntax</a>].</li>\n<li>term1  and  term2  are the same  blank node  as described in <a href=\"http://www.w3.org/TR/rdf-concepts/#section-blank-nodes\" shape=\"rect\">6.6 Blank Nodes</a> of [<a href=\"http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/\" shape=\"rect\" target=\"_blank\">Resource Description Framework (RDF): Concepts and Abstract Syntax</a>].</li>\n</ul>\n<pre xml:space=\"preserve\"><code class=\"language-turtle\">@prefix foaf:       &lt;http://xmlns.com/foaf/0.1/&gt; .\n\n_:a  foaf:name       \"Alice\".\n_:a  foaf:mbox       &lt;mailto:alice@work.example&gt; .\n\n_:b  foaf:name       \"Ms A.\".\n_:b  foaf:mbox       &lt;mailto:alice@work.example&gt; .\n\n</code></pre>\n<p>This query finds the people who have multiple <code>foaf:name</code> triples:</p>\n<pre xml:space=\"preserve\"><code class=\"language-sparql\">PREFIX foaf: &lt;http://xmlns.com/foaf/0.1/&gt;\nSELECT ?name1 ?name2\nWHERE { ?x foaf:name  ?name1 ;\n        foaf:mbox  ?mbox1 .\n        ?y foaf:name  ?name2 ;\n        foaf:mbox  ?mbox2 .\n        FILTER (?mbox1 = ?mbox2 &amp;&amp; ?name1 != ?name2)\n      }\n</code></pre>\n<p>Query result:</p>\n<table class=\"resultTable table table-striped\">\n   <tbody>\n      <tr>\n         <th colspan=\"1\" rowspan=\"1\">name1</th>\n         <th colspan=\"1\" rowspan=\"1\">name2</th>\n      </tr>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\"Alice\"</td>\n         <td colspan=\"1\" rowspan=\"1\">\"Ms A.\"</td>\n      </tr>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\"Ms A.\"</td>\n         <td colspan=\"1\" rowspan=\"1\">\"Alice\"</td>\n      </tr>\n   </tbody>\n</table>\n\n<p>In this query for documents that were annotated at a specific date and time (New Year's Day 2005, measures in timezone +00:00), the RDF terms are not the same, but have equivalent values:</p>\n<pre xml:space=\"preserve\"><code class=\"language-turtle\">@prefix a:          &lt;http://www.w3.org/2000/10/annotation-ns#&gt; .\n@prefix dc:         &lt;http://purl.org/dc/elements/1.1/&gt; .\n\n_:b   a:annotates   &lt;http://www.w3.org/TR/rdf-sparql-query/&gt; .\n_:b   dc:date       \"2004-12-31T19:00:00-05:00\"^^&lt;http://www.w3.org/2001/XMLSchema#dateTime&gt; .\n</code></pre>\n<pre xml:space=\"preserve\"><code class=\"language-sparql\">PREFIX a:      &lt;http://www.w3.org/2000/10/annotation-ns#&gt;\nPREFIX dc:     &lt;http://purl.org/dc/elements/1.1/&gt;\nPREFIX xsd:    &lt;http://www.w3.org/2001/XMLSchema#&gt;\n\nSELECT ?annotates\nWHERE { ?annot  a:annotates  ?annotates .\n        ?annot  dc:date      ?date .\n        FILTER ( ?date = xsd:dateTime(\"2005-01-01T00:00:00Z\") ) \n      }\n</code></pre>\n<table class=\"resultTable table table-striped\">\n   <tbody>\n      <tr>\n         <th colspan=\"1\" rowspan=\"1\">annotates</th>\n      </tr>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">&lt;http://www.w3.org/TR/rdf-sparql-query/&gt;</td>\n      </tr>\n   </tbody>\n</table>\n\n<ul>\n<li>Invoking RDFterm-equal on two typed literals tests for equivalent values. An extended implementation may have support for additional datatypes. An implementation processing a query that tests for equivalence on unsupported datatypes (and non-identical lexical form and datatype IRI) returns an error, indicating that it was unable to determine whether or not the values are equivalent. For example, an unextended implementation will produce an error when testing either <code>\"iiii\"^^my:romanNumeral = \"iv\"^^my:romanNumeral</code> or <code>\"iiii\"^^my:romanNumeral != \"iv\"^^my:romanNumeral</code>.</li>\n</ul></div>"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> ;
        <http://www.w3.org/2000/01/rdf-schema#seeAlso>
                <http://www.w3.org/TR/rdf-concepts/> , <http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/> , <http://www.w3.org/TR/rdf-concepts/#section-Graph-URIref> , <http://www.w3.org/TR/rdf-concepts/#section-Literal-Equality> , <http://www.w3.org/TR/rdf-concepts/#section-blank-nodes> ;
        <http://www.w3.org/ns/prov#wasDerivedFrom>
                <https://www.w3.org/TR/sparql11-query/#func-RDFterm-equal> .

<https://kgdev.net/specifications/sparql11-query/expressions/SparqlOps/func-forms/#func-not-in>
        a       <https://w3id.org/atomgraph/linkeddatahub#Content> ;
        <http://www.w3.org/1999/02/22-rdf-syntax-ns#value>
                "<div xmlns=\"http://www.w3.org/1999/xhtml\"><h5 id=\"func-not-in\">17.4.1.10 NOT IN</h5>\n\n<pre xml:space=\"preserve\"><code>boolean  rdfTerm NOT IN (expression, ...)\n</code></pre>\n<p>The <code>NOT IN</code> operator tests whether the RDF term on the left-hand side is not found in the values of list of expressions on the right-hand side. The test is done with \"!=\" operator, which tests for not the same value, as determined by the <a href=\"../../OperatorMapping/#this\" shape=\"rect\">operator mapping</a>.</p>\n<p>A list of zero terms on the right-hand side is legal.</p>\n<p>Errors in comparisons cause the <code>NOT IN</code> expression to raise an error if the RDF term being tested is not found to be in the list elsewhere in the list of terms.</p>\n<p>The <code>NOT IN</code> operator is equivalent to the SPARQL expression:</p>\n<pre xml:space=\"preserve\"><code>(lhs != expression1) &amp;&amp; (lhs != expression2) &amp;&amp; ...\n</code></pre>\n<p><code>NOT IN (...)</code> is equivalent to <code>!(IN (...))</code>.</p>\n<p>Examples:</p>\n<table>\n   <tbody>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\n            <code>2 NOT IN (1, 2, 3)</code>\n         </td>\n         <td colspan=\"1\" rowspan=\"1\">false</td>\n      </tr>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\n            <code>2 NOT IN ()</code>\n         </td>\n         <td colspan=\"1\" rowspan=\"1\">true</td>\n      </tr>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\n            <code>2 NOT IN (&lt;http://example/iri&gt;, \"str\", 2.0)</code>\n         </td>\n         <td colspan=\"1\" rowspan=\"1\">false</td>\n      </tr>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\n            <code>2 NOT IN (1/0, 2)</code>\n         </td>\n         <td colspan=\"1\" rowspan=\"1\">false</td>\n      </tr>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\n            <code>2 NOT IN (2, 1/0)</code>\n         </td>\n         <td colspan=\"1\" rowspan=\"1\">false</td>\n      </tr>\n      <tr>\n         <td colspan=\"1\" rowspan=\"1\">\n            <code>2 NOT IN (3, 1/0)</code>\n         </td>\n         <td colspan=\"1\" rowspan=\"1\">raises an error</td>\n      </tr>\n   </tbody>\n</table></div>"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> ;
        <http://www.w3.org/2000/01/rdf-schema#seeAlso>
                <https://kgdev.net/specifications/sparql11-query/expressions/OperatorMapping/#this> ;
        <http://www.w3.org/ns/prov#wasDerivedFrom>
                <https://www.w3.org/TR/sparql11-query/#func-not-in> .

<https://kgdev.net/specifications/sparql11-query/expressions/SparqlOps/func-forms/#func-filter-exists>
        a       <https://w3id.org/atomgraph/linkeddatahub#Content> ;
        <http://www.w3.org/1999/02/22-rdf-syntax-ns#value>
                "<div xmlns=\"http://www.w3.org/1999/xhtml\"><h5 id=\"func-filter-exists\">NOT EXISTS and EXISTS</h5>\n\n<p>There is a filter operator <code>EXISTS</code> that takes a graph pattern. <code>EXISTS</code> returns <code>true</code>/<code>false</code> depending on whether the pattern matches the dataset given the bindings in the current group graph pattern, the dataset and the <a href=\"../../../sparqlDefinition/initDefinitions/#defn_ActiveGraph\" shape=\"rect\">active graph</a> at this point in the query evaluation. No additional binding of variables occurs. The <code>NOT EXISTS</code> form translates into <code>fn:not(EXISTS{...})</code>.</p>\n<pre xml:space=\"preserve\"><code> xsd:boolean  NOT EXISTS { pattern }\n</code></pre>\n<p>Returns <code>false</code> if <code>pattern</code> matches. Returns true otherwise.</p>\n<p><code>NOT EXISTS { pattern }</code> is equivalent to <code>fn:not(EXISTS { pattern })</code>.</p>\n<pre xml:space=\"preserve\"><code> xsd:boolean  EXISTS { pattern }\n</code></pre>\n<p>Returns <code>true</code> if <code>pattern</code> matches. Returns false otherwise.</p>\n<p>Variables in the <code>pattern</code> that are bound in the current <a href=\"http://www.w3.org/TR/rdf-sparql-query/#defn_sparqlSolutionMapping\" shape=\"rect\"> solution mapping</a> take the value that they have from the solution mapping. Variables in the pattern <code>pattern</code> that are not bound in the current solution mapping take part in pattern matching.</p>\n<p>To facilitate this, we introduce a function <a href=\"../../../sparqlDefinition/sparqlAlgebra/#defn_exists\" shape=\"rect\">Exists</a> that evaluates a SPARQL Algebra expression and returns true or false, depending on whether there are any solutions to the pattern, given the solution mapping being tested by the filter operation.</p></div>"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> ;
        <http://www.w3.org/2000/01/rdf-schema#seeAlso>
                <https://kgdev.net/specifications/sparql11-query/sparqlDefinition/initDefinitions/#defn_ActiveGraph> , <http://www.w3.org/TR/rdf-sparql-query/#defn_sparqlSolutionMapping> , <https://kgdev.net/specifications/sparql11-query/sparqlDefinition/sparqlAlgebra/#defn_exists> ;
        <http://www.w3.org/ns/prov#wasDerivedFrom>
                <https://www.w3.org/TR/sparql11-query/#func-filter-exists> .

<https://kgdev.net/specifications/sparql11-query/expressions/SparqlOps/func-forms/#this>
        a                          <https://kgdev.net/ns#Definition> , <https://w3id.org/atomgraph/linkeddatahub#Content> ;
        <http://www.w3.org/1999/02/22-rdf-syntax-ns#value>
                "<div xmlns=\"http://www.w3.org/1999/xhtml\"><h4 id=\"this\">Functional Forms</h4></div>"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> ;
        <http://www.w3.org/ns/prov#wasDerivedFrom>
                <https://www.w3.org/TR/sparql11-query/#func-forms> ;
        <https://schema.org/name>  "Functional Forms" .

<https://kgdev.net/specifications/sparql11-query/expressions/SparqlOps/func-forms/#func-logical-and>
        a       <https://w3id.org/atomgraph/linkeddatahub#Content> ;
        <http://www.w3.org/1999/02/22-rdf-syntax-ns#value>
                "<div xmlns=\"http://www.w3.org/1999/xhtml\"><h5 id=\"func-logical-and\">logical-and</h5>\n\n<pre xml:space=\"preserve\"><code> xsd:boolean  xsd:boolean left &amp;&amp; xsd:boolean right\n</code></pre>\n<p>Returns a logical <code>AND</code> of <code>left</code> and <code>right</code>. Note that  logical-and  operates on the <a href=\"../../evaluation/#ebv\" shape=\"rect\">effective boolean value</a> of its arguments.</p>\n<p>Note: see section 17.2, <a href=\"../../evaluation/#this\" shape=\"rect\">Filter Evaluation</a>, for the <code>&amp;&amp;</code> operator's treatment of errors.</p></div>"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> ;
        <http://www.w3.org/2000/01/rdf-schema#seeAlso>
                <https://kgdev.net/specifications/sparql11-query/expressions/evaluation/#ebv> , <https://kgdev.net/specifications/sparql11-query/expressions/evaluation/#this> ;
        <http://www.w3.org/ns/prov#wasDerivedFrom>
                <https://www.w3.org/TR/sparql11-query/#func-logical-and> .
