<!-- CANARY: REQ=REQ-API-DOCS-002; FEATURE="APIDocumentation"; ASPECT=BuildTarget; STATUS=EXEMPT; OWNER=tooling; UPDATED=2026-01-03 --> <h3 id="overview" class="position-relative d-flex align-items-center group"> <span>Overview</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="overview" aria-haspopup="dialog" aria-label="Share link: Overview"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><div id="headingShareModal" class="heading-share-modal" role="dialog" aria-modal="true" aria-labelledby="headingShareTitle" hidden> <div class="hsm-dialog" role="document"> <div class="hsm-header"> <h2 id="headingShareTitle" class="h6 mb-0 fw-bold">Share this section</h2> <button type="button" class="hsm-close" aria-label="Close"> <i class="fa-solid fa-xmark"></i> </button> </div> <div class="hsm-body"> <label for="headingShareInput" class="form-label small text-muted mb-1 text-uppercase fw-bold" style="font-size: 0.7rem; letter-spacing: 0.5px;">Permalink</label> <div class="input-group mb-4 hsm-url-group"> <input id="headingShareInput" type="text" class="form-control font-monospace" readonly aria-readonly="true" style="font-size: 0.85rem;" /> <button class="btn btn-primary hsm-copy" type="button" aria-label="Copy" title="Copy"> <i class="fa-duotone fa-clipboard" aria-hidden="true"></i> </button> </div> <div class="small fw-bold mb-2 text-muted text-uppercase" style="font-size: 0.7rem; letter-spacing: 0.5px;">Share via</div> <div class="hsm-share-grid"> <a id="share-twitter" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-twitter me-2"></i>Twitter </a> <a id="share-linkedin" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-linkedin me-2"></i>LinkedIn </a> <a id="share-facebook" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-facebook me-2"></i>Facebook </a> </div> </div> </div> </div> <style> .heading-share-modal { position: fixed; inset: 0; display: flex; justify-content: center; align-items: center; background: rgba(0, 0, 0, 0.6); z-index: 1050; padding: 1rem; backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); } .heading-share-modal[hidden] { display: none !important; } .hsm-dialog { max-width: 420px; width: 100%; background: var(--bs-body-bg, #fff); color: var(--bs-body-color, #212529); border: 1px solid var(--bs-border-color, rgba(0,0,0,0.1)); border-radius: 1rem; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); overflow: hidden; animation: hsm-fade-in 0.2s ease-out; } @keyframes hsm-fade-in { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } [data-bs-theme="dark"] .hsm-dialog { background: #1e293b; border-color: rgba(255,255,255,0.1); color: #f8f9fa; } .hsm-header { display: flex; justify-content: space-between; align-items: center; padding: 1rem 1.5rem; border-bottom: 1px solid var(--bs-border-color, rgba(0,0,0,0.1)); background: rgba(0,0,0,0.02); } [data-bs-theme="dark"] .hsm-header { background: rgba(255,255,255,0.02); border-color: rgba(255,255,255,0.1); } .hsm-close { background: transparent; border: none; color: inherit; opacity: 0.5; padding: 0.25rem 0.5rem; border-radius: 0.25rem; font-size: 1.2rem; line-height: 1; transition: opacity 0.2s; } .hsm-close:hover { opacity: 1; } .hsm-body { padding: 1.5rem; } .hsm-url-group { display: flex !important; align-items: stretch; } .hsm-url-group .form-control { flex: 1; min-width: 0; margin: 0; background: var(--bs-secondary-bg, #f8f9fa); border-color: var(--bs-border-color, #dee2e6); border-top-right-radius: 0; border-bottom-right-radius: 0; height: 42px; } .hsm-url-group .btn { flex: 0 0 auto; margin: 0; margin-left: -1px; border-top-left-radius: 0; border-bottom-left-radius: 0; height: 42px; display: flex; align-items: center; justify-content: center; padding: 0 1.25rem; z-index: 2; } [data-bs-theme="dark"] .hsm-url-group .form-control { background: #0f172a; border-color: #334155; color: #e2e8f0; } .hsm-share-grid { display: flex; flex-direction: column; gap: 0.5rem; } .hsm-share-grid .btn { display: flex; align-items: center; justify-content: center; font-size: 0.9rem; padding: 0.6rem; border-color: var(--bs-border-color); width: 100%; } [data-bs-theme="dark"] .hsm-share-grid .btn { color: #e2e8f0; border-color: #475569; } [data-bs-theme="dark"] .hsm-share-grid .btn:hover { background: #334155; border-color: #cbd5e1; } </style> <script> (function(){ const modal = document.getElementById('headingShareModal'); if(!modal) return; const input = modal.querySelector('#headingShareInput'); const copyBtn = modal.querySelector('.hsm-copy'); const twitter = modal.querySelector('#share-twitter'); const linkedin = modal.querySelector('#share-linkedin'); const facebook = modal.querySelector('#share-facebook'); const closeBtn = modal.querySelector('.hsm-close'); let lastFocus=null; let trapBound=false; function buildUrl(id){ return window.location.origin + window.location.pathname + '#' + id; } function isOpen(){ return !modal.hasAttribute('hidden'); } function hydrate(id){ const url=buildUrl(id); input.value=url; const enc=encodeURIComponent(url); const text=encodeURIComponent(document.title); if(twitter) twitter.href=`https://twitter.com/intent/tweet?url=${enc}&text=${text}`; if(linkedin) linkedin.href=`https://www.linkedin.com/sharing/share-offsite/?url=${enc}`; if(facebook) facebook.href=`https://www.facebook.com/sharer/sharer.php?u=${enc}`; } function openModal(id){ lastFocus=document.activeElement; hydrate(id); if(!isOpen()){ modal.removeAttribute('hidden'); } requestAnimationFrame(()=>{ input.focus(); }); trapFocus(); } function closeModal(){ if(!isOpen()) return; modal.setAttribute('hidden',''); if(lastFocus && typeof lastFocus.focus==='function') lastFocus.focus(); } function copyCurrent(){ try{ navigator.clipboard.writeText(input.value).then(()=>feedback(true),()=>fallback()); } catch(e){ fallback(); } } function fallback(){ input.select(); try{ document.execCommand('copy'); feedback(true);}catch(e){ feedback(false);} } function feedback(ok){ if(!copyBtn) return; const icon=copyBtn.querySelector('i'); if(!icon) return; const prev=copyBtn.getAttribute('data-prev')||icon.className; if(!copyBtn.getAttribute('data-prev')) copyBtn.setAttribute('data-prev',prev); icon.className= ok ? 'fa-duotone fa-clipboard-check':'fa-duotone fa-circle-exclamation'; setTimeout(()=>{ icon.className=prev; },1800); } function handleShareClick(e){ e.preventDefault(); const btn=e.currentTarget; const id=btn.getAttribute('data-share-target'); if(id) openModal(id); } function bindShareButtons(){ document.querySelectorAll('.h-share').forEach(btn=>{ if(!btn.dataset.hShareBound){ btn.addEventListener('click', handleShareClick); btn.dataset.hShareBound='1'; } }); } bindShareButtons(); if(document.readyState==='loading'){ document.addEventListener('DOMContentLoaded', bindShareButtons); } else { requestAnimationFrame(bindShareButtons); } document.addEventListener('click', function(e){ const shareBtn=e.target.closest && e.target.closest('.h-share'); if(shareBtn && !shareBtn.dataset.hShareBound){ handleShareClick.call(shareBtn, e); } }, true); document.addEventListener('click', e=>{ if(e.target===modal) closeModal(); if(e.target.closest && e.target.closest('.hsm-close')){ e.preventDefault(); closeModal(); } if(copyBtn && (e.target===copyBtn || (e.target.closest && e.target.closest('.hsm-copy')))) { e.preventDefault(); copyCurrent(); } }); document.addEventListener('keydown', e=>{ if(e.key==='Escape' && isOpen()) closeModal(); }); function trapFocus(){ if(trapBound) return; trapBound=true; modal.addEventListener('keydown', f=>{ if(f.key==='Tab' && isOpen()){ const focusable=[...modal.querySelectorAll('a[href],button,input,textarea,select,[tabindex]:not([tabindex="-1"])')].filter(el=>!el.hasAttribute('disabled')); if(!focusable.length) return; const first=focusable[0]; const last=focusable[focusable.length-1]; if(f.shiftKey && document.activeElement===first){ f.preventDefault(); last.focus(); } else if(!f.shiftKey && document.activeElement===last){ f.preventDefault(); first.focus(); } } }); } if(closeBtn) closeBtn.addEventListener('click', e=>{ e.preventDefault(); closeModal(); }); })(); </script><p>Geode implements a complete set of operators as defined in the ISO/IEC 39075:2024 GQL standard. This reference covers all supported operators, their precedence rules, type compatibility, and practical usage examples.</p> <h4 id="operator-categories" class="position-relative d-flex align-items-center group"> <span>Operator Categories</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="operator-categories" aria-haspopup="dialog" aria-label="Share link: Operator Categories"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><ol> <li><strong><a href="https://geodedb.com/docs/reference/operators/#arithmetic-operators" >Arithmetic Operators</a> </strong> - Mathematical operations (+, -, *, /, %)</li> <li><strong><a href="https://geodedb.com/docs/reference/operators/#comparison-operators" >Comparison Operators</a> </strong> - Value comparisons (=, &lt;&gt;, &lt;, &gt;, &lt;=, &gt;=)</li> <li><strong><a href="https://geodedb.com/docs/reference/operators/#logical-operators" >Logical Operators</a> </strong> - Boolean logic (AND, OR, NOT)</li> <li><strong><a href="https://geodedb.com/docs/reference/operators/#string-operators" >String Operators</a> </strong> - Text operations (||, STARTS WITH, ENDS WITH, CONTAINS, =~)</li> <li><strong><a href="https://geodedb.com/docs/reference/operators/#unary-operators" >Unary Operators</a> </strong> - Single operand operations (+, -, NOT)</li> <li><strong><a href="https://geodedb.com/docs/reference/operators/#postfix-operators" >Postfix Operators</a> </strong> - Property access, array indexing (., [], ())</li> <li><strong><a href="https://geodedb.com/docs/reference/operators/#set-operators" >Set Operators</a> </strong> - Membership tests (IN, IS NULL)</li> </ol> <hr> <h3 id="operator-precedence" class="position-relative d-flex align-items-center group"> <span>Operator Precedence</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="operator-precedence" aria-haspopup="dialog" aria-label="Share link: Operator Precedence"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>Operators are evaluated in the following order (highest to lowest precedence):</p> <table> <thead> <tr> <th>Precedence</th> <th>Operators</th> <th>Associativity</th> <th>Example</th> </tr> </thead> <tbody> <tr> <td><strong>1 (Highest)</strong></td> <td><code>.</code> (member access), <code>[index]</code> (array index), <code>()</code> (function call)</td> <td>Left-to-right</td> <td><code>labels(n)[0]</code></td> </tr> <tr> <td><strong>2</strong></td> <td><code>+</code> (unary plus), <code>-</code> (unary minus), <code>NOT</code></td> <td>Right-to-left</td> <td><code>-5</code>, <code>NOT true</code></td> </tr> <tr> <td><strong>3</strong></td> <td><code>*</code>, <code>/</code>, <code>%</code></td> <td>Left-to-right</td> <td><code>10 * 2 / 5</code></td> </tr> <tr> <td><strong>4</strong></td> <td><code>+</code>, <code>-</code></td> <td>Left-to-right</td> <td><code>10 + 5 - 3</code></td> </tr> <tr> <td><strong>5</strong></td> <td><code>||</code> (string concatenation)</td> <td>Left-to-right</td> <td><code>'Hello' || ' ' || 'World'</code></td> </tr> <tr> <td><strong>6</strong></td> <td><code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>=</code>, <code>&lt;&gt;</code></td> <td>Left-to-right</td> <td><code>age &gt; 18</code></td> </tr> <tr> <td><strong>7</strong></td> <td><code>IS NULL</code>, <code>IS NOT NULL</code>, <code>IN</code></td> <td>Left-to-right</td> <td><code>x IS NULL</code></td> </tr> <tr> <td><strong>8</strong></td> <td><code>AND</code></td> <td>Left-to-right</td> <td><code>a AND b</code></td> </tr> <tr> <td><strong>9 (Lowest)</strong></td> <td><code>OR</code></td> <td>Left-to-right</td> <td><code>a OR b</code></td> </tr> </tbody> </table> <h4 id="precedence-examples" class="position-relative d-flex align-items-center group"> <span>Precedence Examples</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="precedence-examples" aria-haspopup="dialog" aria-label="Share link: Precedence Examples"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Without</span><span class="w"> </span><span class="py">parentheses</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">10</span><span class="w"> </span><span class="err">+</span><span class="w"> </span><span class="py">2</span><span class="w"> </span><span class="err">*</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">20</span><span class="w"> </span><span class="p">(</span><span class="py">multiplication</span><span class="w"> </span><span class="py">first</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">With</span><span class="w"> </span><span class="py">parentheses</span><span class="w"> </span><span class="py">to</span><span class="w"> </span><span class="py">override</span><span class="w"> </span><span class="py">precedence</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="p">(</span><span class="py">10</span><span class="w"> </span><span class="err">+</span><span class="w"> </span><span class="py">2</span><span class="p">)</span><span class="w"> </span><span class="err">*</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">60</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Complex</span><span class="w"> </span><span class="py">expression</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">10</span><span class="w"> </span><span class="err">+</span><span class="w"> </span><span class="py">labels</span><span class="p">(</span><span class="py">n</span><span class="p">)[</span><span class="py">0</span><span class="p">]</span><span class="err">.</span><span class="py">length</span><span class="w"> </span><span class="err">*</span><span class="w"> </span><span class="py">2</span><span class="w"> </span><span class="err">%</span><span class="w"> </span><span class="py">3</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Evaluation</span><span class="w"> </span><span class="py">order</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="nc">1</span><span class="err">.</span><span class="w"> </span><span class="py">labels</span><span class="p">(</span><span class="py">n</span><span class="p">)</span><span class="w"> </span><span class="err">-</span><span class="w"> </span><span class="py">function</span><span class="w"> </span><span class="py">call</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">2</span><span class="err">.</span><span class="w"> </span><span class="p">[</span><span class="py">0</span><span class="p">]</span><span class="w"> </span><span class="err">-</span><span class="w"> </span><span class="py">array</span><span class="w"> </span><span class="py">index</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">3</span><span class="err">.</span><span class="w"> </span><span class="err">.</span><span class="py">length</span><span class="w"> </span><span class="err">-</span><span class="w"> </span><span class="py">member</span><span class="w"> </span><span class="py">access</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">4</span><span class="err">.</span><span class="w"> </span><span class="err">*</span><span class="w"> </span><span class="py">2</span><span class="w"> </span><span class="err">-</span><span class="w"> </span><span class="py">multiplication</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">5</span><span class="err">.</span><span class="w"> </span><span class="err">%</span><span class="w"> </span><span class="py">3</span><span class="w"> </span><span class="err">-</span><span class="w"> </span><span class="py">modulo</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">6</span><span class="err">.</span><span class="w"> </span><span class="py">10</span><span class="w"> </span><span class="err">+</span><span class="w"> </span><span class="err">-</span><span class="w"> </span><span class="py">addition</span><span class="w"> </span></span></span></code></pre></div><hr> <h3 id="arithmetic-operators" class="position-relative d-flex align-items-center group"> <span>Arithmetic Operators</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="arithmetic-operators" aria-haspopup="dialog" aria-label="Share link: Arithmetic Operators"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>Arithmetic operators perform mathematical operations on numeric values.</p> <h4 id="addition-" class="position-relative d-flex align-items-center group"> <span>Addition (&lt;code&gt;&#43;&lt;/code&gt;)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="addition-" aria-haspopup="dialog" aria-label="Share link: Addition (&amp;#43;)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Syntax:</strong> <code>operand1 + operand2</code></p> <p><strong>Description:</strong> Adds two numeric values.</p> <p><strong>Examples:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">RETURN</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="err">+</span><span class="w"> </span><span class="py">3</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">sum</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">8</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">10</span><span class="mf">.5</span><span class="w"> </span><span class="err">+</span><span class="w"> </span><span class="py">2</span><span class="mf">.3</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">decimal_sum</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">12</span><span class="mf">.8</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="err">-</span><span class="py">5</span><span class="w"> </span><span class="err">+</span><span class="w"> </span><span class="py">10</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">negative_sum</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">5</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">In</span><span class="w"> </span><span class="py">queries</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="p">,</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">age</span><span class="w"> </span><span class="err">+</span><span class="w"> </span><span class="py">1</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">next_year_age</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Type Compatibility:</strong></p> <ul> <li><code>INTEGER + INTEGER</code> → <code>INTEGER</code></li> <li><code>REAL + REAL</code> → <code>REAL</code></li> <li><code>INTEGER + REAL</code> → <code>REAL</code> (automatic type promotion)</li> </ul> <h4 id="subtraction--" class="position-relative d-flex align-items-center group"> <span>Subtraction (&lt;code&gt;-&lt;/code&gt;)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="subtraction--" aria-haspopup="dialog" aria-label="Share link: Subtraction (-)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Syntax:</strong> <code>operand1 - operand2</code></p> <p><strong>Description:</strong> Subtracts the second value from the first.</p> <p><strong>Examples:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">RETURN</span><span class="w"> </span><span class="py">10</span><span class="w"> </span><span class="err">-</span><span class="w"> </span><span class="py">3</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">difference</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">7</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">5</span><span class="mf">.5</span><span class="w"> </span><span class="err">-</span><span class="w"> </span><span class="py">2</span><span class="mf">.2</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">decimal_diff</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">3</span><span class="mf">.3</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">0</span><span class="w"> </span><span class="err">-</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">negative</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="err">-</span><span class="nc">5</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Calculate</span><span class="w"> </span><span class="py">age</span><span class="w"> </span><span class="py">difference</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p1</span><span class="p">:</span><span class="nc">Person</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="py">p2</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">p1</span><span class="err">.</span><span class="py">name</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Alice</span><span class="err">&#39;</span><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">p2</span><span class="err">.</span><span class="py">name</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Bob</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">abs</span><span class="p">(</span><span class="py">p1</span><span class="err">.</span><span class="py">age</span><span class="w"> </span><span class="err">-</span><span class="w"> </span><span class="py">p2</span><span class="err">.</span><span class="py">age</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">age_difference</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="multiplication-" class="position-relative d-flex align-items-center group"> <span>Multiplication (&lt;code&gt;*&lt;/code&gt;)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="multiplication-" aria-haspopup="dialog" aria-label="Share link: Multiplication (*)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Syntax:</strong> <code>operand1 * operand2</code></p> <p><strong>Description:</strong> Multiplies two numeric values.</p> <p><strong>Examples:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">RETURN</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="err">*</span><span class="w"> </span><span class="py">3</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">product</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">15</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">2</span><span class="mf">.5</span><span class="w"> </span><span class="err">*</span><span class="w"> </span><span class="py">4</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">decimal_product</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">10</span><span class="mf">.0</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Calculate</span><span class="w"> </span><span class="py">total</span><span class="w"> </span><span class="py">price</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">item</span><span class="p">:</span><span class="nc">Item</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">item</span><span class="err">.</span><span class="py">name</span><span class="p">,</span><span class="w"> </span><span class="py">item</span><span class="err">.</span><span class="py">quantity</span><span class="w"> </span><span class="err">*</span><span class="w"> </span><span class="py">item</span><span class="err">.</span><span class="py">price</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">total_cost</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="division-" class="position-relative d-flex align-items-center group"> <span>Division (&lt;code&gt;/&lt;/code&gt;)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="division-" aria-haspopup="dialog" aria-label="Share link: Division (/)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Syntax:</strong> <code>operand1 / operand2</code></p> <p><strong>Description:</strong> Divides the first value by the second.</p> <p><strong>Examples:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">RETURN</span><span class="w"> </span><span class="py">10</span><span class="w"> </span><span class="err">/</span><span class="w"> </span><span class="py">2</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">quotient</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">5</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">7</span><span class="w"> </span><span class="err">/</span><span class="w"> </span><span class="py">2</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">integer_div</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">3</span><span class="w"> </span><span class="p">(</span><span class="py">integer</span><span class="w"> </span><span class="py">division</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">7</span><span class="mf">.0</span><span class="w"> </span><span class="err">/</span><span class="w"> </span><span class="py">2</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">real_div</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">3</span><span class="mf">.5</span><span class="w"> </span><span class="p">(</span><span class="py">real</span><span class="w"> </span><span class="py">division</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Calculate</span><span class="w"> </span><span class="py">average</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">sum</span><span class="p">(</span><span class="py">p</span><span class="err">.</span><span class="py">age</span><span class="p">)</span><span class="w"> </span><span class="err">/</span><span class="w"> </span><span class="py">count</span><span class="p">(</span><span class="py">p</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">average_age</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Error Handling:</strong></p> <ul> <li>Division by zero: Returns <code>EvalError.DivisionByZero</code> at runtime</li> </ul> <h4 id="modulo-" class="position-relative d-flex align-items-center group"> <span>Modulo (&lt;code&gt;%&lt;/code&gt;)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="modulo-" aria-haspopup="dialog" aria-label="Share link: Modulo (%)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Syntax:</strong> <code>dividend % divisor</code></p> <p><strong>Description:</strong> Computes the remainder of integer division.</p> <p><strong>Examples:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">RETURN</span><span class="w"> </span><span class="py">17</span><span class="w"> </span><span class="err">%</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">remainder</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">2</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">20</span><span class="w"> </span><span class="err">%</span><span class="w"> </span><span class="py">4</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">even_check</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">0</span><span class="w"> </span><span class="p">(</span><span class="py">evenly</span><span class="w"> </span><span class="py">divisible</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="err">-</span><span class="py">17</span><span class="w"> </span><span class="err">%</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">negative_dividend</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="err">-</span><span class="nc">2</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">17</span><span class="w"> </span><span class="err">%</span><span class="w"> </span><span class="err">-</span><span class="py">5</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">negative_divisor</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">2</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Find</span><span class="w"> </span><span class="py">even</span><span class="w"> </span><span class="py">numbers</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="p">:</span><span class="nc">Number</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">n</span><span class="err">.</span><span class="py">value</span><span class="w"> </span><span class="err">%</span><span class="w"> </span><span class="py">2</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">0</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">n</span><span class="err">.</span><span class="py">value</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">even_numbers</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Combined</span><span class="w"> </span><span class="py">with</span><span class="w"> </span><span class="py">other</span><span class="w"> </span><span class="py">operators</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">10</span><span class="w"> </span><span class="err">+</span><span class="w"> </span><span class="py">17</span><span class="w"> </span><span class="err">%</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">12</span><span class="w"> </span><span class="p">(</span><span class="py">precedence</span><span class="p">:</span><span class="w"> </span><span class="nc">10</span><span class="w"> </span><span class="err">+</span><span class="w"> </span><span class="p">(</span><span class="py">17</span><span class="w"> </span><span class="err">%</span><span class="w"> </span><span class="py">5</span><span class="p">))</span><span class="w"> </span></span></span></code></pre></div><p><strong>Type Compatibility:</strong></p> <ul> <li>Requires integer operands</li> <li>Non-integer operands: Returns <code>EvalError.TypeMismatch</code></li> </ul> <p><strong>Implementation:</strong> Uses Zig&rsquo;s <code>@rem</code> builtin for optimal performance (O(1)).</p> <hr> <h3 id="unary-operators" class="position-relative d-flex align-items-center group"> <span>Unary Operators</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="unary-operators" aria-haspopup="dialog" aria-label="Share link: Unary Operators"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>Unary operators operate on a single operand.</p> <h4 id="unary-plus-" class="position-relative d-flex align-items-center group"> <span>Unary Plus (&lt;code&gt;&#43;&lt;/code&gt;)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="unary-plus-" aria-haspopup="dialog" aria-label="Share link: Unary Plus (&amp;#43;)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Syntax:</strong> <code>+expression</code></p> <p><strong>Description:</strong> Returns the operand unchanged. Used for symmetry with unary minus.</p> <p><strong>Examples:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">RETURN</span><span class="w"> </span><span class="err">+</span><span class="py">42</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">positive</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">42</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="err">+</span><span class="py">3</span><span class="mf">.14</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">positive_decimal</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">3</span><span class="mf">.14</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="err">+</span><span class="w"> </span><span class="err">+</span><span class="py">42</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">double_unary</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">42</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Mixed</span><span class="w"> </span><span class="py">with</span><span class="w"> </span><span class="py">unary</span><span class="w"> </span><span class="py">minus</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="err">+-</span><span class="py">42</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="err">-</span><span class="nc">42</span><span class="w"> </span><span class="p">(</span><span class="py">parsed</span><span class="w"> </span><span class="py">as</span><span class="w"> </span><span class="err">+</span><span class="p">(</span><span class="err">−</span><span class="py">42</span><span class="p">))</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="err">-+</span><span class="py">42</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="err">-</span><span class="nc">42</span><span class="w"> </span><span class="p">(</span><span class="py">parsed</span><span class="w"> </span><span class="py">as</span><span class="w"> </span><span class="err">−</span><span class="p">(</span><span class="err">+</span><span class="py">42</span><span class="p">))</span><span class="w"> </span></span></span></code></pre></div><p><strong>Type Support:</strong></p> <ul> <li>Integers: Returns value unchanged</li> <li>Decimals: Returns value unchanged</li> <li>Other types: Returns <code>EvalError.TypeMismatch</code></li> </ul> <p><strong>Implementation:</strong> Zero-cost at evaluation (returns value unchanged).</p> <h4 id="unary-minus--" class="position-relative d-flex align-items-center group"> <span>Unary Minus (&lt;code&gt;-&lt;/code&gt;)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="unary-minus--" aria-haspopup="dialog" aria-label="Share link: Unary Minus (-)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Syntax:</strong> <code>-expression</code></p> <p><strong>Description:</strong> Negates a numeric value.</p> <p><strong>Examples:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">RETURN</span><span class="w"> </span><span class="err">-</span><span class="py">42</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">negative</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="err">-</span><span class="nc">42</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="err">-</span><span class="p">(</span><span class="err">-</span><span class="py">5</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">double_negative</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">5</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="p">,</span><span class="w"> </span><span class="err">-</span><span class="py">p</span><span class="err">.</span><span class="py">debt</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">credit</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="logical-not" class="position-relative d-flex align-items-center group"> <span>Logical NOT</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="logical-not" aria-haspopup="dialog" aria-label="Share link: Logical NOT"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Syntax:</strong> <code>NOT expression</code></p> <p><strong>Description:</strong> Negates a boolean value.</p> <p><strong>Examples:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">RETURN</span><span class="w"> </span><span class="py">NOT</span><span class="w"> </span><span class="py">true</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">false</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">NOT</span><span class="w"> </span><span class="py">false</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">NOT</span><span class="w"> </span><span class="py">NOT</span><span class="w"> </span><span class="py">true</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">double_not</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">NOT</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">active</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><hr> <h3 id="comparison-operators" class="position-relative d-flex align-items-center group"> <span>Comparison Operators</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="comparison-operators" aria-haspopup="dialog" aria-label="Share link: Comparison Operators"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>Comparison operators compare two values and return a boolean result.</p> <h4 id="equality-" class="position-relative d-flex align-items-center group"> <span>Equality (&lt;code&gt;=&lt;/code&gt;)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="equality-" aria-haspopup="dialog" aria-label="Share link: Equality (=)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Syntax:</strong> <code>operand1 = operand2</code></p> <p><strong>Description:</strong> Tests if two values are equal.</p> <p><strong>Examples:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">RETURN</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="err">&#39;</span><span class="py">hello</span><span class="err">&#39;</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">hello</span><span class="err">&#39;</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">string_eq</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">10</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">not_equal</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">false</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">age</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">30</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="inequality-" class="position-relative d-flex align-items-center group"> <span>Inequality (&lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt;)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="inequality-" aria-haspopup="dialog" aria-label="Share link: Inequality (&amp;lt;&amp;gt;)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Syntax:</strong> <code>operand1 &lt;&gt; operand2</code></p> <p><strong>Description:</strong> Tests if two values are not equal.</p> <p><strong>Examples:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">RETURN</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="err">&lt;&gt;</span><span class="w"> </span><span class="py">10</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="err">&#39;</span><span class="py">hello</span><span class="err">&#39;</span><span class="w"> </span><span class="err">&lt;&gt;</span><span class="w"> </span><span class="err">&#39;</span><span class="py">world</span><span class="err">&#39;</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">string_ne</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="err">&lt;&gt;</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">same_value</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">false</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">status</span><span class="w"> </span><span class="err">&lt;&gt;</span><span class="w"> </span><span class="err">&#39;</span><span class="py">inactive</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="less-than-" class="position-relative d-flex align-items-center group"> <span>Less Than (&lt;code&gt;&amp;lt;&lt;/code&gt;)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="less-than-" aria-haspopup="dialog" aria-label="Share link: Less Than (&amp;lt;)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Syntax:</strong> <code>operand1 &lt; operand2</code></p> <p><strong>Description:</strong> Tests if the first value is less than the second.</p> <p><strong>Examples:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">RETURN</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="err">&lt;</span><span class="w"> </span><span class="py">10</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">10</span><span class="w"> </span><span class="err">&lt;</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">reverse</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">false</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="err">&lt;</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">equal</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">false</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">age</span><span class="w"> </span><span class="err">&lt;</span><span class="w"> </span><span class="py">18</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">minors</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="less-than-or-equal-" class="position-relative d-flex align-items-center group"> <span>Less Than or Equal (&lt;code&gt;&amp;lt;=&lt;/code&gt;)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="less-than-or-equal-" aria-haspopup="dialog" aria-label="Share link: Less Than or Equal (&amp;lt;=)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Syntax:</strong> <code>operand1 &lt;= operand2</code></p> <p><strong>Description:</strong> Tests if the first value is less than or equal to the second.</p> <p><strong>Examples:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">RETURN</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="err">&lt;</span><span class="p">=</span><span class="w"> </span><span class="py">10</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="err">&lt;</span><span class="p">=</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">equal</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">age</span><span class="w"> </span><span class="err">&lt;</span><span class="p">=</span><span class="w"> </span><span class="py">65</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="greater-than-" class="position-relative d-flex align-items-center group"> <span>Greater Than (&lt;code&gt;&amp;gt;&lt;/code&gt;)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="greater-than-" aria-haspopup="dialog" aria-label="Share link: Greater Than (&amp;gt;)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Syntax:</strong> <code>operand1 &gt; operand2</code></p> <p><strong>Description:</strong> Tests if the first value is greater than the second.</p> <p><strong>Examples:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">RETURN</span><span class="w"> </span><span class="py">10</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="py">10</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">reverse</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">false</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">salary</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="py">50000</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">high_earners</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="greater-than-or-equal-" class="position-relative d-flex align-items-center group"> <span>Greater Than or Equal (&lt;code&gt;&amp;gt;=&lt;/code&gt;)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="greater-than-or-equal-" aria-haspopup="dialog" aria-label="Share link: Greater Than or Equal (&amp;gt;=)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Syntax:</strong> <code>operand1 &gt;= operand2</code></p> <p><strong>Description:</strong> Tests if the first value is greater than or equal to the second.</p> <p><strong>Examples:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">RETURN</span><span class="w"> </span><span class="py">10</span><span class="w"> </span><span class="err">&gt;</span><span class="p">=</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="err">&gt;</span><span class="p">=</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">equal</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">age</span><span class="w"> </span><span class="err">&gt;</span><span class="p">=</span><span class="w"> </span><span class="py">18</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">adults</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><hr> <h3 id="logical-operators" class="position-relative d-flex align-items-center group"> <span>Logical Operators</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="logical-operators" aria-haspopup="dialog" aria-label="Share link: Logical Operators"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>Logical operators combine boolean expressions.</p> <h4 id="and" class="position-relative d-flex align-items-center group"> <span>AND</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="and" aria-haspopup="dialog" aria-label="Share link: AND"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Syntax:</strong> <code>expression1 AND expression2</code></p> <p><strong>Description:</strong> Returns true if both expressions are true.</p> <p><strong>Truth Table:</strong></p> <table> <thead> <tr> <th>A</th> <th>B</th> <th>A AND B</th> </tr> </thead> <tbody> <tr> <td>true</td> <td>true</td> <td>true</td> </tr> <tr> <td>true</td> <td>false</td> <td>false</td> </tr> <tr> <td>false</td> <td>true</td> <td>false</td> </tr> <tr> <td>false</td> <td>false</td> <td>false</td> </tr> </tbody> </table> <p><strong>Examples:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">RETURN</span><span class="w"> </span><span class="py">true</span><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">true</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">true</span><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">false</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">false</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">age</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="py">18</span><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">active</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Multiple</span><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">conditions</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">age</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="py">25</span><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">age</span><span class="w"> </span><span class="err">&lt;</span><span class="w"> </span><span class="py">65</span><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">department</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Engineering</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="or" class="position-relative d-flex align-items-center group"> <span>OR</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="or" aria-haspopup="dialog" aria-label="Share link: OR"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Syntax:</strong> <code>expression1 OR expression2</code></p> <p><strong>Description:</strong> Returns true if at least one expression is true.</p> <p><strong>Truth Table:</strong></p> <table> <thead> <tr> <th>A</th> <th>B</th> <th>A OR B</th> </tr> </thead> <tbody> <tr> <td>true</td> <td>true</td> <td>true</td> </tr> <tr> <td>true</td> <td>false</td> <td>true</td> </tr> <tr> <td>false</td> <td>true</td> <td>true</td> </tr> <tr> <td>false</td> <td>false</td> <td>false</td> </tr> </tbody> </table> <p><strong>Examples:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">RETURN</span><span class="w"> </span><span class="py">true</span><span class="w"> </span><span class="py">OR</span><span class="w"> </span><span class="py">false</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">false</span><span class="w"> </span><span class="py">OR</span><span class="w"> </span><span class="py">false</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">false</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">department</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Engineering</span><span class="err">&#39;</span><span class="w"> </span><span class="py">OR</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">department</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Sales</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Combined</span><span class="w"> </span><span class="py">with</span><span class="w"> </span><span class="py">AND</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="err">.</span><span class="py">age</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="py">30</span><span class="w"> </span><span class="py">OR</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">salary</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="py">60000</span><span class="p">)</span><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">active</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><hr> <h3 id="string-operators" class="position-relative d-flex align-items-center group"> <span>String Operators</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="string-operators" aria-haspopup="dialog" aria-label="Share link: String Operators"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>String operators perform text operations.</p> <h4 id="concatenation-" class="position-relative d-flex align-items-center group"> <span>Concatenation (&lt;code&gt;||&lt;/code&gt;)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="concatenation-" aria-haspopup="dialog" aria-label="Share link: Concatenation (||)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Syntax:</strong> <code>string1 || string2</code></p> <p><strong>Description:</strong> Concatenates two strings.</p> <p><strong>Examples:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">RETURN</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Hello</span><span class="err">&#39;</span><span class="w"> </span><span class="p">||</span><span class="w"> </span><span class="err">&#39;</span><span class="w"> </span><span class="err">&#39;</span><span class="w"> </span><span class="p">||</span><span class="w"> </span><span class="err">&#39;</span><span class="py">World</span><span class="err">&#39;</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">greeting</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">Hello</span><span class="w"> </span><span class="py">World</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Mr</span><span class="err">.</span><span class="w"> </span><span class="err">&#39;</span><span class="w"> </span><span class="p">||</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Smith</span><span class="err">&#39;</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">title</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">Mr</span><span class="err">.</span><span class="w"> </span><span class="py">Smith</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">first_name</span><span class="w"> </span><span class="p">||</span><span class="w"> </span><span class="err">&#39;</span><span class="w"> </span><span class="err">&#39;</span><span class="w"> </span><span class="p">||</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">last_name</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">full_name</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="starts-with" class="position-relative d-flex align-items-center group"> <span>STARTS WITH</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="starts-with" aria-haspopup="dialog" aria-label="Share link: STARTS WITH"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Syntax:</strong> <code>string STARTS WITH prefix</code></p> <p><strong>Description:</strong> Tests if a string starts with a given prefix.</p> <p><strong>Examples:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">RETURN</span><span class="w"> </span><span class="err">&#39;</span><span class="py">hello</span><span class="err">&#39;</span><span class="w"> </span><span class="py">STARTS</span><span class="w"> </span><span class="py">WITH</span><span class="w"> </span><span class="err">&#39;</span><span class="py">he</span><span class="err">&#39;</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="err">&#39;</span><span class="py">world</span><span class="err">&#39;</span><span class="w"> </span><span class="py">STARTS</span><span class="w"> </span><span class="py">WITH</span><span class="w"> </span><span class="err">&#39;</span><span class="py">he</span><span class="err">&#39;</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">false</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">email</span><span class="w"> </span><span class="py">STARTS</span><span class="w"> </span><span class="py">WITH</span><span class="w"> </span><span class="err">&#39;</span><span class="py">admin</span><span class="err">@&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">admins</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="ends-with" class="position-relative d-flex align-items-center group"> <span>ENDS WITH</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="ends-with" aria-haspopup="dialog" aria-label="Share link: ENDS WITH"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Syntax:</strong> <code>string ENDS WITH suffix</code></p> <p><strong>Description:</strong> Tests if a string ends with a given suffix.</p> <p><strong>Examples:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">RETURN</span><span class="w"> </span><span class="err">&#39;</span><span class="py">hello</span><span class="err">&#39;</span><span class="w"> </span><span class="py">ENDS</span><span class="w"> </span><span class="py">WITH</span><span class="w"> </span><span class="err">&#39;</span><span class="py">lo</span><span class="err">&#39;</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="err">&#39;</span><span class="py">world</span><span class="err">&#39;</span><span class="w"> </span><span class="py">ENDS</span><span class="w"> </span><span class="py">WITH</span><span class="w"> </span><span class="err">&#39;</span><span class="py">ld</span><span class="err">&#39;</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">email</span><span class="w"> </span><span class="py">ENDS</span><span class="w"> </span><span class="py">WITH</span><span class="w"> </span><span class="err">&#39;</span><span class="nd">@company</span><span class="err">.</span><span class="py">com</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">company_employees</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="contains" class="position-relative d-flex align-items-center group"> <span>CONTAINS</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="contains" aria-haspopup="dialog" aria-label="Share link: CONTAINS"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Syntax:</strong> <code>string CONTAINS substring</code></p> <p><strong>Description:</strong> Tests if a string contains a substring.</p> <p><strong>Examples:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">RETURN</span><span class="w"> </span><span class="err">&#39;</span><span class="py">hello</span><span class="w"> </span><span class="py">world</span><span class="err">&#39;</span><span class="w"> </span><span class="py">CONTAINS</span><span class="w"> </span><span class="err">&#39;</span><span class="py">lo</span><span class="w"> </span><span class="py">wo</span><span class="err">&#39;</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="err">&#39;</span><span class="py">hello</span><span class="w"> </span><span class="py">world</span><span class="err">&#39;</span><span class="w"> </span><span class="py">CONTAINS</span><span class="w"> </span><span class="err">&#39;</span><span class="py">xyz</span><span class="err">&#39;</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">false</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">bio</span><span class="w"> </span><span class="py">CONTAINS</span><span class="w"> </span><span class="err">&#39;</span><span class="py">engineer</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="pattern-matching-" class="position-relative d-flex align-items-center group"> <span>Pattern Matching (&lt;code&gt;=~&lt;/code&gt;)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="pattern-matching-" aria-haspopup="dialog" aria-label="Share link: Pattern Matching (=~)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Syntax:</strong> <code>text =~ 'pattern'</code></p> <p><strong>Description:</strong> Tests if text matches a regular expression pattern.</p> <p><strong>Examples:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">RETURN</span><span class="w"> </span><span class="err">&#39;</span><span class="py">hello123</span><span class="err">&#39;</span><span class="w"> </span><span class="p">=</span><span class="err">~</span><span class="w"> </span><span class="err">&#39;</span><span class="p">[</span><span class="py">a</span><span class="err">-</span><span class="py">z</span><span class="p">]</span><span class="err">+</span><span class="p">[</span><span class="py">0</span><span class="err">-</span><span class="py">9</span><span class="p">]</span><span class="err">+&#39;</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="err">&#39;</span><span class="py">test</span><span class="nd">@example</span><span class="err">.</span><span class="py">com</span><span class="err">&#39;</span><span class="w"> </span><span class="p">=</span><span class="err">~</span><span class="w"> </span><span class="err">&#39;.*@.*\\.</span><span class="py">com</span><span class="err">&#39;</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">email_check</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">email</span><span class="w"> </span><span class="p">=</span><span class="err">~</span><span class="w"> </span><span class="err">&#39;.*@</span><span class="p">(</span><span class="py">gmail</span><span class="p">|</span><span class="py">yahoo</span><span class="p">)</span><span class="err">\\.</span><span class="py">com</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">personal_email_users</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><hr> <h3 id="postfix-operators" class="position-relative d-flex align-items-center group"> <span>Postfix Operators</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="postfix-operators" aria-haspopup="dialog" aria-label="Share link: Postfix Operators"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>Postfix operators operate on the right side of an operand.</p> <h4 id="member-access-" class="position-relative d-flex align-items-center group"> <span>Member Access (&lt;code&gt;.&lt;/code&gt;)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="member-access-" aria-haspopup="dialog" aria-label="Share link: Member Access (.)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Syntax:</strong> <code>object.property</code></p> <p><strong>Description:</strong> Accesses a property of a node, relationship, or map.</p> <p><strong>Examples:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="p">,</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">age</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="err">-</span><span class="p">[</span><span class="py">r</span><span class="p">:</span><span class="nc">KNOWS</span><span class="p">]</span><span class="err">-&gt;</span><span class="p">(</span><span class="py">f</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="p">,</span><span class="w"> </span><span class="py">r</span><span class="err">.</span><span class="py">since</span><span class="p">,</span><span class="w"> </span><span class="py">f</span><span class="err">.</span><span class="py">name</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Nested</span><span class="w"> </span><span class="py">property</span><span class="w"> </span><span class="py">access</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="p">{</span><span class="py">person</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nc">name</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">Alice</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="py">age</span><span class="p">:</span><span class="w"> </span><span class="nc">30</span><span class="p">}}</span><span class="err">.</span><span class="py">person</span><span class="err">.</span><span class="py">name</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">Alice</span><span class="err">&#39;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="array-index-access-index" class="position-relative d-flex align-items-center group"> <span>Array Index Access (&lt;code&gt;[index]&lt;/code&gt;)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="array-index-access-index" aria-haspopup="dialog" aria-label="Share link: Array Index Access ([index])"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Syntax:</strong> <code>array_expression[index_expression]</code></p> <p><strong>Description:</strong> Accesses an element from a list/array by its zero-based index.</p> <p><strong>Examples:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">RETURN</span><span class="w"> </span><span class="p">[</span><span class="py">1</span><span class="p">,</span><span class="w"> </span><span class="py">2</span><span class="p">,</span><span class="w"> </span><span class="py">3</span><span class="p">][</span><span class="py">0</span><span class="p">]</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">first</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">1</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="p">[</span><span class="py">1</span><span class="p">,</span><span class="w"> </span><span class="py">2</span><span class="p">,</span><span class="w"> </span><span class="py">3</span><span class="p">][</span><span class="py">2</span><span class="p">]</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">third</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">3</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Function</span><span class="w"> </span><span class="py">result</span><span class="w"> </span><span class="py">indexing</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">labels</span><span class="p">(</span><span class="py">n</span><span class="p">)[</span><span class="py">0</span><span class="p">]</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">primary_label</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Chained</span><span class="w"> </span><span class="py">indexing</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="p">[[</span><span class="py">1</span><span class="p">,</span><span class="w"> </span><span class="py">2</span><span class="p">],</span><span class="w"> </span><span class="p">[</span><span class="py">3</span><span class="p">,</span><span class="w"> </span><span class="py">4</span><span class="p">]][</span><span class="py">0</span><span class="p">][</span><span class="py">1</span><span class="p">]</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">2</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Dynamic</span><span class="w"> </span><span class="py">index</span><span class="w"> </span><span class="py">expression</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="p">[</span><span class="py">10</span><span class="p">,</span><span class="w"> </span><span class="py">20</span><span class="p">,</span><span class="w"> </span><span class="py">30</span><span class="p">][</span><span class="py">1</span><span class="w"> </span><span class="err">+</span><span class="w"> </span><span class="py">1</span><span class="p">]</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">30</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Combined</span><span class="w"> </span><span class="py">with</span><span class="w"> </span><span class="py">other</span><span class="w"> </span><span class="py">operators</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="p">[</span><span class="py">10</span><span class="p">,</span><span class="w"> </span><span class="py">20</span><span class="p">,</span><span class="w"> </span><span class="py">30</span><span class="p">][</span><span class="py">17</span><span class="w"> </span><span class="err">%</span><span class="w"> </span><span class="py">3</span><span class="p">]</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">30</span><span class="w"> </span><span class="p">(</span><span class="py">17</span><span class="w"> </span><span class="err">%</span><span class="w"> </span><span class="py">3</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">2</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Property</span><span class="w"> </span><span class="py">access</span><span class="w"> </span><span class="kd">on</span><span class="w"> </span><span class="py">indexed</span><span class="w"> </span><span class="py">element</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">n</span><span class="err">.</span><span class="py">friends</span><span class="p">[</span><span class="py">0</span><span class="p">]</span><span class="err">.</span><span class="py">name</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">best_friend</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Behavior:</strong></p> <ul> <li><strong>Out of bounds:</strong> Returns <code>null</code> (no error)</li> <li><strong>Negative indices:</strong> Returns <code>null</code> (does not wrap around)</li> <li><strong>Non-list target:</strong> Returns <code>null</code></li> <li><strong>Non-integer index:</strong> Returns <code>EvalError.TypeMismatch</code></li> </ul> <p><strong>Implementation:</strong> O(1) access with bounds checking.</p> <h4 id="function-call-" class="position-relative d-flex align-items-center group"> <span>Function Call (&lt;code&gt;()&lt;/code&gt;)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="function-call-" aria-haspopup="dialog" aria-label="Share link: Function Call (())"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Syntax:</strong> <code>function_name(arg1, arg2, ...)</code></p> <p><strong>Description:</strong> Calls a built-in or user-defined function.</p> <p><strong>Examples:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">RETURN</span><span class="w"> </span><span class="py">count</span><span class="p">(</span><span class="err">*</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">total</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">length</span><span class="p">(</span><span class="err">&#39;</span><span class="py">hello</span><span class="err">&#39;</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">string_length</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">5</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">upper</span><span class="p">(</span><span class="err">&#39;</span><span class="py">hello</span><span class="err">&#39;</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">uppercase</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">HELLO</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">sum</span><span class="p">(</span><span class="py">p</span><span class="err">.</span><span class="py">age</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">total_age</span><span class="p">,</span><span class="w"> </span><span class="py">avg</span><span class="p">(</span><span class="py">p</span><span class="err">.</span><span class="py">age</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">average_age</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><hr> <h3 id="set-operators" class="position-relative d-flex align-items-center group"> <span>Set Operators</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="set-operators" aria-haspopup="dialog" aria-label="Share link: Set Operators"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>Set operators test membership and null values.</p> <h4 id="in" class="position-relative d-flex align-items-center group"> <span>IN</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="in" aria-haspopup="dialog" aria-label="Share link: IN"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Syntax:</strong> <code>value IN [list]</code></p> <p><strong>Description:</strong> Tests if a value exists in a list.</p> <p><strong>Examples:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">RETURN</span><span class="w"> </span><span class="py">1</span><span class="w"> </span><span class="py">IN</span><span class="w"> </span><span class="p">[</span><span class="py">1</span><span class="p">,</span><span class="w"> </span><span class="py">2</span><span class="p">,</span><span class="w"> </span><span class="py">3</span><span class="p">]</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="py">IN</span><span class="w"> </span><span class="p">[</span><span class="py">1</span><span class="p">,</span><span class="w"> </span><span class="py">2</span><span class="p">,</span><span class="w"> </span><span class="py">3</span><span class="p">]</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">false</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="err">&#39;</span><span class="py">apple</span><span class="err">&#39;</span><span class="w"> </span><span class="py">IN</span><span class="w"> </span><span class="p">[</span><span class="err">&#39;</span><span class="py">banana</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">apple</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">orange</span><span class="err">&#39;</span><span class="p">]</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">department</span><span class="w"> </span><span class="py">IN</span><span class="w"> </span><span class="p">[</span><span class="err">&#39;</span><span class="py">Engineering</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Sales</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Marketing</span><span class="err">&#39;</span><span class="p">]</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="is-null" class="position-relative d-flex align-items-center group"> <span>IS NULL</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="is-null" aria-haspopup="dialog" aria-label="Share link: IS NULL"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Syntax:</strong> <code>value IS NULL</code></p> <p><strong>Description:</strong> Tests if a value is null.</p> <p><strong>Examples:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">RETURN</span><span class="w"> </span><span class="py">null</span><span class="w"> </span><span class="py">IS</span><span class="w"> </span><span class="py">NULL</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="py">IS</span><span class="w"> </span><span class="py">NULL</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">false</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">middle_name</span><span class="w"> </span><span class="py">IS</span><span class="w"> </span><span class="py">NULL</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">no_middle_name</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="is-not-null" class="position-relative d-flex align-items-center group"> <span>IS NOT NULL</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="is-not-null" aria-haspopup="dialog" aria-label="Share link: IS NOT NULL"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Syntax:</strong> <code>value IS NOT NULL</code></p> <p><strong>Description:</strong> Tests if a value is not null.</p> <p><strong>Examples:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">RETURN</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="py">IS</span><span class="w"> </span><span class="py">NOT</span><span class="w"> </span><span class="py">NULL</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">null</span><span class="w"> </span><span class="py">IS</span><span class="w"> </span><span class="py">NOT</span><span class="w"> </span><span class="py">NULL</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">false</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">email</span><span class="w"> </span><span class="py">IS</span><span class="w"> </span><span class="py">NOT</span><span class="w"> </span><span class="py">NULL</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="p">,</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">email</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><hr> <h3 id="type-conversion-and-compatibility" class="position-relative d-flex align-items-center group"> <span>Type Conversion and Compatibility</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="type-conversion-and-compatibility" aria-haspopup="dialog" aria-label="Share link: Type Conversion and Compatibility"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="automatic-type-promotion" class="position-relative d-flex align-items-center group"> <span>Automatic Type Promotion</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="automatic-type-promotion" aria-haspopup="dialog" aria-label="Share link: Automatic Type Promotion"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Geode automatically promotes types in arithmetic operations:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">INTEGER</span><span class="w"> </span><span class="err">+</span><span class="w"> </span><span class="py">REAL</span><span class="w"> </span><span class="err">→</span><span class="w"> </span><span class="py">REAL</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="err">+</span><span class="w"> </span><span class="py">2</span><span class="mf">.5</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">7</span><span class="mf">.5</span><span class="w"> </span><span class="p">(</span><span class="py">REAL</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">INTEGER</span><span class="w"> </span><span class="err">/</span><span class="w"> </span><span class="py">INTEGER</span><span class="w"> </span><span class="err">→</span><span class="w"> </span><span class="py">INTEGER</span><span class="w"> </span><span class="p">(</span><span class="py">if</span><span class="w"> </span><span class="py">evenly</span><span class="w"> </span><span class="py">divisible</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">10</span><span class="w"> </span><span class="err">/</span><span class="w"> </span><span class="py">2</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">5</span><span class="w"> </span><span class="p">(</span><span class="py">INTEGER</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">INTEGER</span><span class="w"> </span><span class="err">/</span><span class="w"> </span><span class="py">REAL</span><span class="w"> </span><span class="err">→</span><span class="w"> </span><span class="py">REAL</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">10</span><span class="w"> </span><span class="err">/</span><span class="w"> </span><span class="py">2</span><span class="mf">.0</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">5</span><span class="mf">.0</span><span class="w"> </span><span class="p">(</span><span class="py">REAL</span><span class="p">)</span><span class="w"> </span></span></span></code></pre></div> <h4 id="type-compatibility-matrix" class="position-relative d-flex align-items-center group"> <span>Type Compatibility Matrix</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="type-compatibility-matrix" aria-haspopup="dialog" aria-label="Share link: Type Compatibility Matrix"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><table> <thead> <tr> <th>Operator</th> <th>INTEGER</th> <th>REAL</th> <th>STRING</th> <th>BOOLEAN</th> <th>NULL</th> </tr> </thead> <tbody> <tr> <td><code>+</code>, <code>-</code>, <code>*</code>, <code>/</code>, <code>%</code></td> <td>✅</td> <td>✅</td> <td>❌</td> <td>❌</td> <td>❌</td> </tr> <tr> <td><code>=</code>, <code>&lt;&gt;</code>, <code>&lt;</code>, <code>&gt;</code>, <code>&lt;=</code>, <code>&gt;=</code></td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr> <tr> <td><code>AND</code>, <code>OR</code>, <code>NOT</code></td> <td>❌</td> <td>❌</td> <td>❌</td> <td>✅</td> <td>❌</td> </tr> <tr> <td><code>||</code></td> <td>❌</td> <td>❌</td> <td>✅</td> <td>❌</td> <td>❌</td> </tr> <tr> <td><code>STARTS WITH</code>, <code>ENDS WITH</code>, <code>CONTAINS</code></td> <td>❌</td> <td>❌</td> <td>✅</td> <td>❌</td> <td>❌</td> </tr> <tr> <td><code>IN</code></td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr> <tr> <td><code>IS NULL</code>, <code>IS NOT NULL</code></td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> <td>✅</td> </tr> </tbody> </table> <hr> <h3 id="common-patterns" class="position-relative d-flex align-items-center group"> <span>Common Patterns</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="common-patterns" aria-haspopup="dialog" aria-label="Share link: Common Patterns"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="pattern-1-range-checks" class="position-relative d-flex align-items-center group"> <span>Pattern 1: Range Checks</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="pattern-1-range-checks" aria-haspopup="dialog" aria-label="Share link: Pattern 1: Range Checks"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Age</span><span class="w"> </span><span class="py">between</span><span class="w"> </span><span class="py">18</span><span class="w"> </span><span class="py">and</span><span class="w"> </span><span class="py">65</span><span class="w"> </span><span class="p">(</span><span class="py">inclusive</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">age</span><span class="w"> </span><span class="err">&gt;</span><span class="p">=</span><span class="w"> </span><span class="py">18</span><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">age</span><span class="w"> </span><span class="err">&lt;</span><span class="p">=</span><span class="w"> </span><span class="py">65</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="pattern-2-string-filtering" class="position-relative d-flex align-items-center group"> <span>Pattern 2: String Filtering</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="pattern-2-string-filtering" aria-haspopup="dialog" aria-label="Share link: Pattern 2: String Filtering"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Find</span><span class="w"> </span><span class="py">company</span><span class="w"> </span><span class="py">emails</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">email</span><span class="w"> </span><span class="py">ENDS</span><span class="w"> </span><span class="py">WITH</span><span class="w"> </span><span class="err">&#39;</span><span class="nd">@company</span><span class="err">.</span><span class="py">com</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">email</span><span class="w"> </span><span class="py">STARTS</span><span class="w"> </span><span class="py">WITH</span><span class="w"> </span><span class="err">&#39;</span><span class="py">admin</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="pattern-3-null-handling" class="position-relative d-flex align-items-center group"> <span>Pattern 3: Null Handling</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="pattern-3-null-handling" aria-haspopup="dialog" aria-label="Share link: Pattern 3: Null Handling"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Find</span><span class="w"> </span><span class="py">people</span><span class="w"> </span><span class="py">with</span><span class="w"> </span><span class="py">optional</span><span class="w"> </span><span class="py">middle</span><span class="w"> </span><span class="py">names</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">first_name</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">CASE</span><span class="w"> </span><span class="py">WHEN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">middle_name</span><span class="w"> </span><span class="py">IS</span><span class="w"> </span><span class="py">NOT</span><span class="w"> </span><span class="py">NULL</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">THEN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">first_name</span><span class="w"> </span><span class="p">||</span><span class="w"> </span><span class="err">&#39;</span><span class="w"> </span><span class="err">&#39;</span><span class="w"> </span><span class="p">||</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">middle_name</span><span class="w"> </span><span class="p">||</span><span class="w"> </span><span class="err">&#39;</span><span class="w"> </span><span class="err">&#39;</span><span class="w"> </span><span class="p">||</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">last_name</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">ELSE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">first_name</span><span class="w"> </span><span class="p">||</span><span class="w"> </span><span class="err">&#39;</span><span class="w"> </span><span class="err">&#39;</span><span class="w"> </span><span class="p">||</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">last_name</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">END</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">full_name</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="pattern-4-list-membership" class="position-relative d-flex align-items-center group"> <span>Pattern 4: List Membership</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="pattern-4-list-membership" aria-haspopup="dialog" aria-label="Share link: Pattern 4: List Membership"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Find</span><span class="w"> </span><span class="py">people</span><span class="w"> </span><span class="py">in</span><span class="w"> </span><span class="py">specific</span><span class="w"> </span><span class="py">departments</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">department</span><span class="w"> </span><span class="py">IN</span><span class="w"> </span><span class="p">[</span><span class="err">&#39;</span><span class="py">Engineering</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Sales</span><span class="err">&#39;</span><span class="p">]</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">level</span><span class="w"> </span><span class="py">IN</span><span class="w"> </span><span class="p">[</span><span class="err">&#39;</span><span class="py">Senior</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Lead</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Principal</span><span class="err">&#39;</span><span class="p">]</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="p">,</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">department</span><span class="p">,</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">level</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><hr> <h3 id="error-handling" class="position-relative d-flex align-items-center group"> <span>Error Handling</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="error-handling" aria-haspopup="dialog" aria-label="Share link: Error Handling"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="division-by-zero" class="position-relative d-flex align-items-center group"> <span>Division by Zero</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="division-by-zero" aria-haspopup="dialog" aria-label="Share link: Division by Zero"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Will</span><span class="w"> </span><span class="py">raise</span><span class="w"> </span><span class="py">EvalError</span><span class="err">.</span><span class="py">DivisionByZero</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">10</span><span class="w"> </span><span class="err">/</span><span class="w"> </span><span class="py">0</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Safe</span><span class="w"> </span><span class="py">division</span><span class="w"> </span><span class="py">with</span><span class="w"> </span><span class="py">CASE</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">CASE</span><span class="w"> </span><span class="py">WHEN</span><span class="w"> </span><span class="py">count</span><span class="p">(</span><span class="py">p</span><span class="p">)</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="py">0</span><span class="w"> </span><span class="py">THEN</span><span class="w"> </span><span class="py">sum</span><span class="p">(</span><span class="py">p</span><span class="err">.</span><span class="py">value</span><span class="p">)</span><span class="w"> </span><span class="err">/</span><span class="w"> </span><span class="py">count</span><span class="p">(</span><span class="py">p</span><span class="p">)</span><span class="w"> </span><span class="py">ELSE</span><span class="w"> </span><span class="py">0</span><span class="w"> </span><span class="py">END</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">avg</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="type-mismatch" class="position-relative d-flex align-items-center group"> <span>Type Mismatch</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="type-mismatch" aria-haspopup="dialog" aria-label="Share link: Type Mismatch"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Will</span><span class="w"> </span><span class="py">raise</span><span class="w"> </span><span class="py">EvalError</span><span class="err">.</span><span class="py">TypeMismatch</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="err">&#39;</span><span class="py">hello</span><span class="err">&#39;</span><span class="w"> </span><span class="err">+</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Correct</span><span class="p">:</span><span class="w"> </span><span class="nc">Convert</span><span class="w"> </span><span class="kd">type</span><span class="nc">s</span><span class="w"> </span><span class="py">first</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="err">&#39;</span><span class="py">hello</span><span class="err">&#39;</span><span class="w"> </span><span class="p">||</span><span class="w"> </span><span class="py">toString</span><span class="p">(</span><span class="py">5</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">hello5</span><span class="err">&#39;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="null-propagation" class="position-relative d-flex align-items-center group"> <span>Null Propagation</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="null-propagation" aria-haspopup="dialog" aria-label="Share link: Null Propagation"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Nulls</span><span class="w"> </span><span class="py">propagate</span><span class="w"> </span><span class="py">through</span><span class="w"> </span><span class="py">most</span><span class="w"> </span><span class="py">operators</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">null</span><span class="w"> </span><span class="err">+</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">null</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">null</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">null</span><span class="w"> </span><span class="p">(</span><span class="py">three</span><span class="err">-</span><span class="py">valued</span><span class="w"> </span><span class="py">logic</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Use</span><span class="w"> </span><span class="py">IS</span><span class="w"> </span><span class="py">NULL</span><span class="w"> </span><span class="py">for</span><span class="w"> </span><span class="py">explicit</span><span class="w"> </span><span class="py">null</span><span class="w"> </span><span class="py">checks</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">null</span><span class="w"> </span><span class="py">IS</span><span class="w"> </span><span class="py">NULL</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span></code></pre></div><hr> <h3 id="performance-considerations" class="position-relative d-flex align-items-center group"> <span>Performance Considerations</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="performance-considerations" aria-haspopup="dialog" aria-label="Share link: Performance Considerations"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="operator-efficiency" class="position-relative d-flex align-items-center group"> <span>Operator Efficiency</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="operator-efficiency" aria-haspopup="dialog" aria-label="Share link: Operator Efficiency"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><table> <thead> <tr> <th>Operator Type</th> <th>Typical Performance</th> <th>Notes</th> </tr> </thead> <tbody> <tr> <td>Arithmetic</td> <td>O(1)</td> <td>Fast integer/float operations</td> </tr> <tr> <td>Comparison</td> <td>O(1)</td> <td>Efficient for primitives, O(n) for strings</td> </tr> <tr> <td>Logical</td> <td>O(1)</td> <td>Short-circuit evaluation (AND/OR)</td> </tr> <tr> <td>String</td> <td>O(n)</td> <td>Length-dependent for CONTAINS, STARTS WITH, etc.</td> </tr> <tr> <td>Array Index</td> <td>O(1)</td> <td>Constant-time array access</td> </tr> <tr> <td>Member Access</td> <td>O(1)</td> <td>Hash-based property lookup</td> </tr> </tbody> </table> <h4 id="optimization-tips" class="position-relative d-flex align-items-center group"> <span>Optimization Tips</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="optimization-tips" aria-haspopup="dialog" aria-label="Share link: Optimization Tips"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>1. Use indexes for equality checks:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Fast</span><span class="w"> </span><span class="py">with</span><span class="w"> </span><span class="py">index</span><span class="w"> </span><span class="kd">on</span><span class="w"> </span><span class="p">:</span><span class="nc">Person</span><span class="p">(</span><span class="py">email</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">email</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">user</span><span class="nd">@example</span><span class="err">.</span><span class="py">com</span><span class="err">&#39;</span><span class="w"> </span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>2. Avoid expensive string operations in tight loops:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Inefficient</span><span class="p">:</span><span class="w"> </span><span class="nc">String</span><span class="w"> </span><span class="py">concatenation</span><span class="w"> </span><span class="py">in</span><span class="w"> </span><span class="py">every</span><span class="w"> </span><span class="py">row</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">first_name</span><span class="w"> </span><span class="p">||</span><span class="w"> </span><span class="err">&#39;</span><span class="w"> </span><span class="err">&#39;</span><span class="w"> </span><span class="p">||</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">last_name</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">full_name</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Better</span><span class="p">:</span><span class="w"> </span><span class="nc">Precompute</span><span class="w"> </span><span class="py">or</span><span class="w"> </span><span class="py">use</span><span class="w"> </span><span class="py">database</span><span class="w"> </span><span class="py">function</span><span class="w"> </span><span class="py">if</span><span class="w"> </span><span class="py">available</span><span class="w"> </span></span></span></code></pre></div><p><strong>3. Use short-circuit evaluation:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">short</span><span class="err">-</span><span class="py">circuits</span><span class="w"> </span><span class="kd">on</span><span class="w"> </span><span class="py">first</span><span class="w"> </span><span class="py">false</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">active</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">false</span><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">expensive_function</span><span class="p">(</span><span class="py">p</span><span class="p">)</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">expensive_function</span><span class="w"> </span><span class="py">not</span><span class="w"> </span><span class="py">called</span><span class="w"> </span><span class="py">if</span><span class="w"> </span><span class="py">inactive</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><hr> <h3 id="quick-reference-card" class="position-relative d-flex align-items-center group"> <span>Quick Reference Card</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="quick-reference-card" aria-haspopup="dialog" aria-label="Share link: Quick Reference Card"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="operator-symbols" class="position-relative d-flex align-items-center group"> <span>Operator Symbols</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="operator-symbols" aria-haspopup="dialog" aria-label="Share link: Operator Symbols"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><table> <thead> <tr> <th>Symbol</th> <th>Name</th> <th>Example</th> <th>Result</th> </tr> </thead> <tbody> <tr> <td><code>+</code></td> <td>Addition</td> <td><code>5 + 3</code></td> <td><code>8</code></td> </tr> <tr> <td><code>-</code></td> <td>Subtraction</td> <td><code>10 - 3</code></td> <td><code>7</code></td> </tr> <tr> <td><code>*</code></td> <td>Multiplication</td> <td><code>5 * 3</code></td> <td><code>15</code></td> </tr> <tr> <td><code>/</code></td> <td>Division</td> <td><code>10 / 2</code></td> <td><code>5</code></td> </tr> <tr> <td><code>%</code></td> <td>Modulo</td> <td><code>17 % 5</code></td> <td><code>2</code></td> </tr> <tr> <td><code>=</code></td> <td>Equality</td> <td><code>5 = 5</code></td> <td><code>true</code></td> </tr> <tr> <td><code>&lt;&gt;</code></td> <td>Inequality</td> <td><code>5 &lt;&gt; 10</code></td> <td><code>true</code></td> </tr> <tr> <td><code>&lt;</code></td> <td>Less than</td> <td><code>5 &lt; 10</code></td> <td><code>true</code></td> </tr> <tr> <td><code>&gt;</code></td> <td>Greater than</td> <td><code>10 &gt; 5</code></td> <td><code>true</code></td> </tr> <tr> <td><code>&lt;=</code></td> <td>Less or equal</td> <td><code>5 &lt;= 5</code></td> <td><code>true</code></td> </tr> <tr> <td><code>&gt;=</code></td> <td>Greater or equal</td> <td><code>10 &gt;= 5</code></td> <td><code>true</code></td> </tr> <tr> <td><code>AND</code></td> <td>Logical AND</td> <td><code>true AND false</code></td> <td><code>false</code></td> </tr> <tr> <td><code>OR</code></td> <td>Logical OR</td> <td><code>true OR false</code></td> <td><code>true</code></td> </tr> <tr> <td><code>NOT</code></td> <td>Logical NOT</td> <td><code>NOT true</code></td> <td><code>false</code></td> </tr> <tr> <td><code>||</code></td> <td>Concatenation</td> <td><code>'a' || 'b'</code></td> <td><code>'ab'</code></td> </tr> <tr> <td><code>.</code></td> <td>Member access</td> <td><code>p.name</code></td> <td>Property value</td> </tr> <tr> <td><code>[]</code></td> <td>Array index</td> <td><code>[1,2,3][0]</code></td> <td><code>1</code></td> </tr> <tr> <td><code>IN</code></td> <td>Membership</td> <td><code>1 IN [1,2]</code></td> <td><code>true</code></td> </tr> <tr> <td><code>IS NULL</code></td> <td>Null check</td> <td><code>null IS NULL</code></td> <td><code>true</code></td> </tr> </tbody> </table> <hr> <h3 id="practice-exercises" class="position-relative d-flex align-items-center group"> <span>Practice Exercises</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="practice-exercises" aria-haspopup="dialog" aria-label="Share link: Practice Exercises"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="exercise-1-operator-precedence" class="position-relative d-flex align-items-center group"> <span>Exercise 1: Operator Precedence</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="exercise-1-operator-precedence" aria-haspopup="dialog" aria-label="Share link: Exercise 1: Operator Precedence"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Question:</strong> What does this expression return?</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">RETURN</span><span class="w"> </span><span class="py">10</span><span class="w"> </span><span class="err">+</span><span class="w"> </span><span class="py">2</span><span class="w"> </span><span class="err">*</span><span class="w"> </span><span class="py">5</span><span class="w"> </span><span class="err">%</span><span class="w"> </span><span class="py">3</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">result</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Answer:</strong> <code>10</code> (Evaluation: <code>10 + ((2 * 5) % 3)</code> = <code>10 + 0</code> = <code>10</code>)</p> <h4 id="exercise-2-string-operations" class="position-relative d-flex align-items-center group"> <span>Exercise 2: String Operations</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="exercise-2-string-operations" aria-haspopup="dialog" aria-label="Share link: Exercise 2: String Operations"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Task:</strong> Write a query to find people with Gmail or Yahoo email addresses.</p> <p><strong>Solution:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">email</span><span class="w"> </span><span class="p">=</span><span class="err">~</span><span class="w"> </span><span class="err">&#39;.*@</span><span class="p">(</span><span class="py">gmail</span><span class="p">|</span><span class="py">yahoo</span><span class="p">)</span><span class="err">\\.</span><span class="py">com</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="p">,</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">email</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="exercise-3-array-indexing" class="position-relative d-flex align-items-center group"> <span>Exercise 3: Array Indexing</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="exercise-3-array-indexing" aria-haspopup="dialog" aria-label="Share link: Exercise 3: Array Indexing"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Task:</strong> Get the second friend&rsquo;s name for each person.</p> <p><strong>Solution:</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">size</span><span class="p">(</span><span class="py">p</span><span class="err">.</span><span class="py">friends</span><span class="p">)</span><span class="w"> </span><span class="err">&gt;</span><span class="p">=</span><span class="w"> </span><span class="py">2</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="p">,</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">friends</span><span class="p">[</span><span class="py">1</span><span class="p">]</span><span class="err">.</span><span class="py">name</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">second_friend</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><hr> <h3 id="next-steps" class="position-relative d-flex align-items-center group"> <span>Next Steps</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="next-steps" aria-haspopup="dialog" aria-label="Share link: Next Steps"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><ul> <li><strong><a href="/docs/reference/type-conversion/" >Type Conversion Reference</a> </strong> - Type casting and conversion functions</li> <li><strong><a href="/docs/reference/api-reference-complete/" >GQL Functions</a> </strong> - Built-in function reference</li> <li><strong><a href="/docs/query/performance-tuning/" >Query Optimization</a> </strong> - Optimize operator usage</li> <li><strong><a href="/docs/gql/guide/" >GQL Guide</a> </strong> - Complete GQL syntax guide</li> </ul> <hr> <h3 id="related-documentation" class="position-relative d-flex align-items-center group"> <span>Related Documentation</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="related-documentation" aria-haspopup="dialog" aria-label="Share link: Related Documentation"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><ul> <li><a href="/docs/gql/conformance-profile/" >GQL Compliance</a> - ISO/IEC 39075:2024 standard adherence</li> <li><a href="/docs/query/explain-profile/" >EXPLAIN and PROFILE</a> - Analyze operator execution</li> <li><a href="/docs/data-types/" >Data Types Reference</a> - Complete type system</li> <li><a href="/docs/gql/advanced-patterns/" >Advanced GQL Patterns</a> - Complex query patterns</li> </ul> <hr> <p><strong>Last Updated:</strong> January 24, 2026 <strong>Geode Version:</strong> <strong>v0.2.18</strong>+ <strong>ISO GQL Conformance Profile:</strong> ISO/IEC 39075:2024 compliance (see conformance profile)</p>