<!-- CANARY: REQ=REQ-DOCS-001; FEATURE="Docs"; ASPECT=Documentation; STATUS=TESTED; OWNER=docs; UPDATED=2026-01-28 --> <h2 id="gql-specification-reference" class="position-relative d-flex align-items-center group"> <span>GQL Specification Reference</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="gql-specification-reference" aria-haspopup="dialog" aria-label="Share link: GQL Specification Reference"> <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> </h2><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 the <strong>ISO/IEC 39075:2024 Graph Query Language (GQL)</strong> 100% compliance. This reference documents the specification and links to Geode&rsquo;s current conformance profile and implementation notes.</p> <h3 id="standard-overview" class="position-relative d-flex align-items-center group"> <span>Standard 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="standard-overview" aria-haspopup="dialog" aria-label="Share link: Standard 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> <h4 id="isoiec-390752024" class="position-relative d-flex align-items-center group"> <span>ISO/IEC 39075:2024</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="isoiec-390752024" aria-haspopup="dialog" aria-label="Share link: ISO/IEC 39075:2024"> <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>The Graph Query Language (GQL) is an international standard for querying property graph databases. It provides:</p> <ul> <li><strong>Declarative graph pattern matching</strong></li> <li><strong>Standard data types and operators</strong></li> <li><strong>Transaction semantics</strong></li> <li><strong>Error handling with standardized codes</strong></li> <li><strong>Extensibility for implementations</strong></li> </ul> <h4 id="document-structure" class="position-relative d-flex align-items-center group"> <span>Document Structure</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="document-structure" aria-haspopup="dialog" aria-label="Share link: Document Structure"> <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>The GQL standard comprises multiple parts:</p> <table> <thead> <tr> <th>Part</th> <th>Title</th> <th>Status in Geode</th> </tr> </thead> <tbody> <tr> <td>Part 1</td> <td>Framework</td> <td>Implemented</td> </tr> <tr> <td>Part 2</td> <td>Foundation</td> <td>Implemented</td> </tr> <tr> <td>Part 3</td> <td>GQL Query Language</td> <td>Implemented</td> </tr> <tr> <td>Part 4</td> <td>Bindings</td> <td>Implemented</td> </tr> </tbody> </table> <hr> <h3 id="conformance-profile" class="position-relative d-flex align-items-center group"> <span>Conformance Profile</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="conformance-profile" aria-haspopup="dialog" aria-label="Share link: Conformance Profile"> <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="geode-conformance-level" class="position-relative d-flex align-items-center group"> <span>Geode Conformance Level</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="geode-conformance-level" aria-haspopup="dialog" aria-label="Share link: Geode Conformance Level"> <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 publishes a conformance profile for ISO/IEC 39075:2024 compliance. The profile documents implementation-defined behavior and focuses on deterministic ordering, pagination, and diagnostics.</p> <p><strong>Profile highlights (non-exhaustive):</strong></p> <ul> <li><code>MATCH</code> / <code>OPTIONAL MATCH</code> with bounded path expansions</li> <li><code>WHERE</code>, <code>RETURN</code>, <code>ORDER BY</code></li> <li><code>LIMIT</code> / <code>OFFSET</code> (unordered pagination rejected per US001)</li> <li>Set operations: <code>UNION</code>, <code>INTERSECT</code>, <code>EXCEPT</code></li> <li>Data modification statements (<code>CREATE</code>, <code>INSERT</code>, <code>UPDATE</code>, <code>DELETE</code>, <code>MERGE</code>)</li> <li>Schema and type system behaviors (labels, property types, constraints, indexes)</li> <li>Transactions, functions, and standardized error codes</li> </ul> <p>See the <a href="/docs/gql/conformance-profile/" >conformance profile</a> for authoritative scope, diagnostics, and implementation-defined behaviors.</p> <hr> <h3 id="syntax-reference" class="position-relative d-flex align-items-center group"> <span>Syntax Reference</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="syntax-reference" aria-haspopup="dialog" aria-label="Share link: Syntax Reference"> <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="query-structure" class="position-relative d-flex align-items-center group"> <span>Query Structure</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="query-structure" aria-haspopup="dialog" aria-label="Share link: Query Structure"> <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-bnf" data-lang="bnf"><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nc">gql-query</span><span class="p">&gt;</span> <span class="o">::=</span> </span></span><span class="line"><span class="cl"> [ <span class="p">&lt;</span><span class="nc">graph-specification</span><span class="p">&gt;</span> ] </span></span><span class="line"><span class="cl"> <span class="p">&lt;</span><span class="nc">query-expression</span><span class="p">&gt;</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nc">query-expression</span><span class="p">&gt;</span> <span class="o">::=</span> </span></span><span class="line"><span class="cl"> <span class="p">&lt;</span><span class="nc">simple-query</span><span class="p">&gt;</span> </span></span><span class="line"><span class="cl"> | <span class="p">&lt;</span><span class="nc">composite-query</span><span class="p">&gt;</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nc">simple-query</span><span class="p">&gt;</span> <span class="o">::=</span> </span></span><span class="line"><span class="cl"> <span class="p">&lt;</span><span class="nc">match-statement</span><span class="p">&gt;</span> </span></span><span class="line"><span class="cl"> | <span class="p">&lt;</span><span class="nc">call-statement</span><span class="p">&gt;</span> </span></span><span class="line"><span class="cl"> | <span class="p">&lt;</span><span class="nc">return-statement</span><span class="p">&gt;</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nc">composite-query</span><span class="p">&gt;</span> <span class="o">::=</span> </span></span><span class="line"><span class="cl"> <span class="p">&lt;</span><span class="nc">simple-query</span><span class="p">&gt;</span> <span class="p">&lt;</span><span class="nc">set-operator</span><span class="p">&gt;</span> <span class="p">&lt;</span><span class="nc">simple-query</span><span class="p">&gt;</span> </span></span></code></pre></div> <h4 id="pattern-syntax" class="position-relative d-flex align-items-center group"> <span>Pattern Syntax</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-syntax" aria-haspopup="dialog" aria-label="Share link: Pattern Syntax"> <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-bnf" data-lang="bnf"><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nc">pattern</span><span class="p">&gt;</span> <span class="o">::=</span> </span></span><span class="line"><span class="cl"> <span class="p">&lt;</span><span class="nc">node-pattern</span><span class="p">&gt;</span> </span></span><span class="line"><span class="cl"> | <span class="p">&lt;</span><span class="nc">path-pattern</span><span class="p">&gt;</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nc">node-pattern</span><span class="p">&gt;</span> <span class="o">::=</span> </span></span><span class="line"><span class="cl"> &#39;(&#39; [ <span class="p">&lt;</span><span class="nc">variable</span><span class="p">&gt;</span> ] [ <span class="p">&lt;</span><span class="nc">label-expression</span><span class="p">&gt;</span> ] [ <span class="p">&lt;</span><span class="nc">property-specification</span><span class="p">&gt;</span> ] &#39;)&#39; </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nc">label-expression</span><span class="p">&gt;</span> <span class="o">::=</span> </span></span><span class="line"><span class="cl"> &#39;:&#39; <span class="p">&lt;</span><span class="nc">label-name</span><span class="p">&gt;</span> [ <span class="p">&lt;</span><span class="nc">label-expression</span><span class="p">&gt;</span> ] </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nc">property-specification</span><span class="p">&gt;</span> <span class="o">::=</span> </span></span><span class="line"><span class="cl"> &#39;{&#39; <span class="p">&lt;</span><span class="nc">property-list</span><span class="p">&gt;</span> &#39;}&#39; </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nc">property-list</span><span class="p">&gt;</span> <span class="o">::=</span> </span></span><span class="line"><span class="cl"> <span class="p">&lt;</span><span class="nc">property-setting</span><span class="p">&gt;</span> [ &#39;,&#39; <span class="p">&lt;</span><span class="nc">property-setting</span><span class="p">&gt;</span> ]* </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nc">property-setting</span><span class="p">&gt;</span> <span class="o">::=</span> </span></span><span class="line"><span class="cl"> <span class="p">&lt;</span><span class="nc">property-name</span><span class="p">&gt;</span> &#39;:&#39; <span class="p">&lt;</span><span class="nc">expression</span><span class="p">&gt;</span> </span></span></code></pre></div> <h4 id="relationship-pattern" class="position-relative d-flex align-items-center group"> <span>Relationship Pattern</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="relationship-pattern" aria-haspopup="dialog" aria-label="Share link: Relationship Pattern"> <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-bnf" data-lang="bnf"><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nc">relationship-pattern</span><span class="p">&gt;</span> <span class="o">::=</span> </span></span><span class="line"><span class="cl"> <span class="p">&lt;</span><span class="nc">left-arrow</span><span class="p">&gt;</span>? &#39;-&#39; [ <span class="p">&lt;</span><span class="nc">relationship-detail</span><span class="p">&gt;</span> ] &#39;-&#39; <span class="p">&lt;</span><span class="nc">right-arrow</span><span class="p">&gt;</span>? </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nc">relationship-detail</span><span class="p">&gt;</span> <span class="o">::=</span> </span></span><span class="line"><span class="cl"> &#39;[&#39; [ <span class="p">&lt;</span><span class="nc">variable</span><span class="p">&gt;</span> ] [ <span class="p">&lt;</span><span class="nc">type-expression</span><span class="p">&gt;</span> ] [ <span class="p">&lt;</span><span class="nc">length-specification</span><span class="p">&gt;</span> ] [ <span class="p">&lt;</span><span class="nc">property-specification</span><span class="p">&gt;</span> ] &#39;]&#39; </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nc">type-expression</span><span class="p">&gt;</span> <span class="o">::=</span> </span></span><span class="line"><span class="cl"> &#39;:&#39; <span class="p">&lt;</span><span class="nc">relationship-type</span><span class="p">&gt;</span> </span></span><span class="line"><span class="cl"> | &#39;:&#39; <span class="p">&lt;</span><span class="nc">relationship-type</span><span class="p">&gt;</span> &#39;|&#39; <span class="p">&lt;</span><span class="nc">type-expression</span><span class="p">&gt;</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nc">length-specification</span><span class="p">&gt;</span> <span class="o">::=</span> </span></span><span class="line"><span class="cl"> &#39;*&#39; [ <span class="p">&lt;</span><span class="nc">range</span><span class="p">&gt;</span> ] </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nc">range</span><span class="p">&gt;</span> <span class="o">::=</span> </span></span><span class="line"><span class="cl"> <span class="p">&lt;</span><span class="nc">integer</span><span class="p">&gt;</span> [ &#39;..&#39; [ <span class="p">&lt;</span><span class="nc">integer</span><span class="p">&gt;</span> ] ] </span></span><span class="line"><span class="cl"> | &#39;..&#39; <span class="p">&lt;</span><span class="nc">integer</span><span class="p">&gt;</span> </span></span></code></pre></div><hr> <h3 id="data-types-iso-mapping" class="position-relative d-flex align-items-center group"> <span>Data Types (ISO Mapping)</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="data-types-iso-mapping" aria-haspopup="dialog" aria-label="Share link: Data Types (ISO Mapping)"> <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="core-types" class="position-relative d-flex align-items-center group"> <span>Core Types</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="core-types" aria-haspopup="dialog" aria-label="Share link: Core Types"> <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>ISO Type</th> <th>GQL Syntax</th> <th>Geode Type</th> <th>Notes</th> </tr> </thead> <tbody> <tr> <td>Boolean</td> <td><code>BOOLEAN</code></td> <td>BOOLEAN</td> <td>true/false</td> </tr> <tr> <td>Signed Integer</td> <td><code>INTEGER</code></td> <td>INT64</td> <td>64-bit default</td> </tr> <tr> <td>Floating Point</td> <td><code>REAL</code></td> <td>FLOAT64</td> <td>IEEE 754 double</td> </tr> <tr> <td>Character String</td> <td><code>STRING</code></td> <td>STRING</td> <td>UTF-8</td> </tr> <tr> <td>Byte String</td> <td><code>BYTES</code></td> <td>BYTES</td> <td>Binary data</td> </tr> </tbody> </table> <h4 id="extended-types" class="position-relative d-flex align-items-center group"> <span>Extended Types</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="extended-types" aria-haspopup="dialog" aria-label="Share link: Extended Types"> <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>ISO Type</th> <th>GQL Syntax</th> <th>Geode Type</th> <th>Notes</th> </tr> </thead> <tbody> <tr> <td>Date</td> <td><code>DATE</code></td> <td>DATE</td> <td>ISO 8601</td> </tr> <tr> <td>Time</td> <td><code>TIME</code></td> <td>TIME</td> <td>With/without TZ</td> </tr> <tr> <td>Timestamp</td> <td><code>TIMESTAMP</code></td> <td>TIMESTAMP</td> <td>ISO 8601</td> </tr> <tr> <td>Duration</td> <td><code>DURATION</code></td> <td>DURATION</td> <td>ISO 8601</td> </tr> <tr> <td>List</td> <td><code>LIST&lt;T&gt;</code></td> <td>LIST</td> <td>Ordered collection</td> </tr> <tr> <td>Map</td> <td><code>MAP&lt;K,V&gt;</code></td> <td>MAP</td> <td>Key-value pairs</td> </tr> </tbody> </table> <h4 id="implementation-defined-types" class="position-relative d-flex align-items-center group"> <span>Implementation-Defined Types</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="implementation-defined-types" aria-haspopup="dialog" aria-label="Share link: Implementation-Defined Types"> <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 extends the standard with additional types:</p> <table> <thead> <tr> <th>Geode Type</th> <th>Category</th> <th>Standard Mapping</th> </tr> </thead> <tbody> <tr> <td>VECTOR_F32</td> <td>Numeric</td> <td>Implementation-defined</td> </tr> <tr> <td>LATLON</td> <td>Geographic</td> <td>Implementation-defined</td> </tr> <tr> <td>JSONB</td> <td>Structured</td> <td>STRING with semantics</td> </tr> <tr> <td>UUID</td> <td>Identity</td> <td>STRING with semantics</td> </tr> <tr> <td>IPADDR</td> <td>Network</td> <td>STRING with semantics</td> </tr> </tbody> </table> <hr> <h3 id="operators-iso-mapping" class="position-relative d-flex align-items-center group"> <span>Operators (ISO Mapping)</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="operators-iso-mapping" aria-haspopup="dialog" aria-label="Share link: Operators (ISO Mapping)"> <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="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> </h4><table> <thead> <tr> <th>ISO Operator</th> <th>Symbol</th> <th>Geode Support</th> </tr> </thead> <tbody> <tr> <td>Equals</td> <td><code>=</code></td> <td>Full</td> </tr> <tr> <td>Not Equals</td> <td><code>&lt;&gt;</code></td> <td>Full</td> </tr> <tr> <td>Less Than</td> <td><code>&lt;</code></td> <td>Full</td> </tr> <tr> <td>Greater Than</td> <td><code>&gt;</code></td> <td>Full</td> </tr> <tr> <td>Less Than or Equal</td> <td><code>&lt;=</code></td> <td>Full</td> </tr> <tr> <td>Greater Than or Equal</td> <td><code>&gt;=</code></td> <td>Full</td> </tr> <tr> <td>Is Null</td> <td><code>IS NULL</code></td> <td>Full</td> </tr> <tr> <td>Is Not Null</td> <td><code>IS NOT NULL</code></td> <td>Full</td> </tr> </tbody> </table> <h4 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> </h4><table> <thead> <tr> <th>ISO Operator</th> <th>Symbol</th> <th>Geode Support</th> </tr> </thead> <tbody> <tr> <td>And</td> <td><code>AND</code></td> <td>Full</td> </tr> <tr> <td>Or</td> <td><code>OR</code></td> <td>Full</td> </tr> <tr> <td>Not</td> <td><code>NOT</code></td> <td>Full</td> </tr> <tr> <td>Exclusive Or</td> <td><code>XOR</code></td> <td>Full</td> </tr> </tbody> </table> <h4 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> </h4><table> <thead> <tr> <th>ISO Operator</th> <th>Symbol</th> <th>Geode Support</th> </tr> </thead> <tbody> <tr> <td>Addition</td> <td><code>+</code></td> <td>Full</td> </tr> <tr> <td>Subtraction</td> <td><code>-</code></td> <td>Full</td> </tr> <tr> <td>Multiplication</td> <td><code>*</code></td> <td>Full</td> </tr> <tr> <td>Division</td> <td><code>/</code></td> <td>Full</td> </tr> <tr> <td>Modulo</td> <td><code>%</code></td> <td>Full</td> </tr> <tr> <td>Unary Minus</td> <td><code>-</code></td> <td>Full</td> </tr> <tr> <td>Unary Plus</td> <td><code>+</code></td> <td>Full</td> </tr> </tbody> </table> <h4 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> </h4><table> <thead> <tr> <th>ISO Operator</th> <th>Syntax</th> <th>Geode Support</th> </tr> </thead> <tbody> <tr> <td>Concatenation</td> <td><code>||</code></td> <td>Full</td> </tr> <tr> <td>Starts With</td> <td><code>STARTS WITH</code></td> <td>Full</td> </tr> <tr> <td>Ends With</td> <td><code>ENDS WITH</code></td> <td>Full</td> </tr> <tr> <td>Contains</td> <td><code>CONTAINS</code></td> <td>Full</td> </tr> <tr> <td>Like</td> <td><code>LIKE</code></td> <td>Full</td> </tr> <tr> <td>Regex Match</td> <td><code>=~</code></td> <td>Full</td> </tr> </tbody> </table> <h4 id="collection-operators" class="position-relative d-flex align-items-center group"> <span>Collection 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="collection-operators" aria-haspopup="dialog" aria-label="Share link: Collection 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> </h4><table> <thead> <tr> <th>ISO Operator</th> <th>Syntax</th> <th>Geode Support</th> </tr> </thead> <tbody> <tr> <td>In</td> <td><code>IN</code></td> <td>Full</td> </tr> <tr> <td>Index Access</td> <td><code>[i]</code></td> <td>Full</td> </tr> <tr> <td>Range Access</td> <td><code>[i..j]</code></td> <td>Full</td> </tr> </tbody> </table> <hr> <h3 id="functions-iso-mapping" class="position-relative d-flex align-items-center group"> <span>Functions (ISO Mapping)</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="functions-iso-mapping" aria-haspopup="dialog" aria-label="Share link: Functions (ISO Mapping)"> <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="aggregate-functions" class="position-relative d-flex align-items-center group"> <span>Aggregate Functions</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="aggregate-functions" aria-haspopup="dialog" aria-label="Share link: Aggregate Functions"> <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>ISO Function</th> <th>Geode Support</th> <th>Notes</th> </tr> </thead> <tbody> <tr> <td><code>COUNT(*)</code></td> <td>Full</td> <td>Row count</td> </tr> <tr> <td><code>COUNT(expr)</code></td> <td>Full</td> <td>Non-null count</td> </tr> <tr> <td><code>COUNT(DISTINCT expr)</code></td> <td>Full</td> <td>Distinct count</td> </tr> <tr> <td><code>SUM(expr)</code></td> <td>Full</td> <td>Numeric sum</td> </tr> <tr> <td><code>AVG(expr)</code></td> <td>Full</td> <td>Average</td> </tr> <tr> <td><code>MIN(expr)</code></td> <td>Full</td> <td>Minimum</td> </tr> <tr> <td><code>MAX(expr)</code></td> <td>Full</td> <td>Maximum</td> </tr> <tr> <td><code>COLLECT(expr)</code></td> <td>Full</td> <td>Collect to list</td> </tr> </tbody> </table> <h4 id="scalar-functions" class="position-relative d-flex align-items-center group"> <span>Scalar Functions</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="scalar-functions" aria-haspopup="dialog" aria-label="Share link: Scalar Functions"> <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>ISO Function</th> <th>Geode Support</th> <th>Category</th> </tr> </thead> <tbody> <tr> <td><code>abs(x)</code></td> <td>Full</td> <td>Numeric</td> </tr> <tr> <td><code>ceil(x)</code></td> <td>Full</td> <td>Numeric</td> </tr> <tr> <td><code>floor(x)</code></td> <td>Full</td> <td>Numeric</td> </tr> <tr> <td><code>round(x)</code></td> <td>Full</td> <td>Numeric</td> </tr> <tr> <td><code>sign(x)</code></td> <td>Full</td> <td>Numeric</td> </tr> <tr> <td><code>sqrt(x)</code></td> <td>Full</td> <td>Numeric</td> </tr> <tr> <td><code>lower(s)</code></td> <td>Full</td> <td>String</td> </tr> <tr> <td><code>upper(s)</code></td> <td>Full</td> <td>String</td> </tr> <tr> <td><code>trim(s)</code></td> <td>Full</td> <td>String</td> </tr> <tr> <td><code>ltrim(s)</code></td> <td>Full</td> <td>String</td> </tr> <tr> <td><code>rtrim(s)</code></td> <td>Full</td> <td>String</td> </tr> <tr> <td><code>substring(s, start, len)</code></td> <td>Full</td> <td>String</td> </tr> <tr> <td><code>replace(s, from, to)</code></td> <td>Full</td> <td>String</td> </tr> <tr> <td><code>length(s)</code></td> <td>Full</td> <td>String/List</td> </tr> <tr> <td><code>size(list)</code></td> <td>Full</td> <td>List</td> </tr> <tr> <td><code>head(list)</code></td> <td>Full</td> <td>List</td> </tr> <tr> <td><code>tail(list)</code></td> <td>Full</td> <td>List</td> </tr> <tr> <td><code>last(list)</code></td> <td>Full</td> <td>List</td> </tr> <tr> <td><code>keys(map)</code></td> <td>Full</td> <td>Map</td> </tr> <tr> <td><code>values(map)</code></td> <td>Full</td> <td>Map</td> </tr> </tbody> </table> <h4 id="path-functions" class="position-relative d-flex align-items-center group"> <span>Path Functions</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="path-functions" aria-haspopup="dialog" aria-label="Share link: Path Functions"> <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>ISO Function</th> <th>Geode Support</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><code>nodes(path)</code></td> <td>Full</td> <td>Nodes in path</td> </tr> <tr> <td><code>relationships(path)</code></td> <td>Full</td> <td>Relationships in path</td> </tr> <tr> <td><code>length(path)</code></td> <td>Full</td> <td>Path length</td> </tr> </tbody> </table> <h4 id="type-functions" class="position-relative d-flex align-items-center group"> <span>Type Functions</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-functions" aria-haspopup="dialog" aria-label="Share link: Type Functions"> <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>ISO Function</th> <th>Geode Support</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><code>type(r)</code></td> <td>Full</td> <td>Relationship type</td> </tr> <tr> <td><code>labels(n)</code></td> <td>Full</td> <td>Node labels</td> </tr> <tr> <td><code>id(n)</code></td> <td>Full</td> <td>Internal ID</td> </tr> <tr> <td><code>properties(n)</code></td> <td>Full</td> <td>Property map</td> </tr> </tbody> </table> <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="iso-status-codes" class="position-relative d-flex align-items-center group"> <span>ISO Status Codes</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="iso-status-codes" aria-haspopup="dialog" aria-label="Share link: ISO Status Codes"> <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 implements standard GQL status codes:</p> <table> <thead> <tr> <th>Code</th> <th>Category</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>00000</td> <td>Success</td> <td>Successful completion</td> </tr> <tr> <td>01xxx</td> <td>Warning</td> <td>Warning condition</td> </tr> <tr> <td>02xxx</td> <td>No Data</td> <td>Query returned empty</td> </tr> <tr> <td>22xxx</td> <td>Data Exception</td> <td>Data error</td> </tr> <tr> <td>23xxx</td> <td>Integrity Violation</td> <td>Constraint violation</td> </tr> <tr> <td>42xxx</td> <td>Syntax/Access</td> <td>Syntax error or access violation</td> </tr> </tbody> </table> <h4 id="error-response-format" class="position-relative d-flex align-items-center group"> <span>Error Response Format</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-response-format" aria-haspopup="dialog" aria-label="Share link: Error Response Format"> <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-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;ERROR&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;code&#34;</span><span class="p">:</span> <span class="s2">&#34;42000&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;sqlstate&#34;</span><span class="p">:</span> <span class="s2">&#34;42000&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;message&#34;</span><span class="p">:</span> <span class="s2">&#34;Syntax error at position 15&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;detail&#34;</span><span class="p">:</span> <span class="s2">&#34;Unexpected token &#39;METCH&#39;, did you mean &#39;MATCH&#39;?&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;position&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;line&#34;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;column&#34;</span><span class="p">:</span> <span class="mi">15</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div><hr> <h3 id="transaction-semantics" class="position-relative d-flex align-items-center group"> <span>Transaction Semantics</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="transaction-semantics" aria-haspopup="dialog" aria-label="Share link: Transaction Semantics"> <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="isolation-levels" class="position-relative d-flex align-items-center group"> <span>Isolation Levels</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="isolation-levels" aria-haspopup="dialog" aria-label="Share link: Isolation Levels"> <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>Level</th> <th>ISO Section</th> <th>Geode Support</th> </tr> </thead> <tbody> <tr> <td>READ UNCOMMITTED</td> <td>9.5.1</td> <td>Not supported (minimum is READ COMMITTED)</td> </tr> <tr> <td>READ COMMITTED</td> <td>9.5.2</td> <td>Full</td> </tr> <tr> <td>REPEATABLE READ</td> <td>9.5.3</td> <td>Full</td> </tr> <tr> <td>SERIALIZABLE</td> <td>9.5.4</td> <td>Full (default)</td> </tr> </tbody> </table> <h4 id="acid-guarantees" class="position-relative d-flex align-items-center group"> <span>ACID Guarantees</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="acid-guarantees" aria-haspopup="dialog" aria-label="Share link: ACID Guarantees"> <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>Property</th> <th>Implementation</th> </tr> </thead> <tbody> <tr> <td><strong>Atomicity</strong></td> <td>All-or-nothing via WAL</td> </tr> <tr> <td><strong>Consistency</strong></td> <td>Constraint enforcement</td> </tr> <tr> <td><strong>Isolation</strong></td> <td>MVCC with snapshot isolation</td> </tr> <tr> <td><strong>Durability</strong></td> <td>WAL + checkpointing</td> </tr> </tbody> </table> <hr> <h3 id="implementation-defined-behavior" class="position-relative d-flex align-items-center group"> <span>Implementation-Defined Behavior</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="implementation-defined-behavior" aria-haspopup="dialog" aria-label="Share link: Implementation-Defined Behavior"> <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>The ISO standard allows implementations to define certain behaviors:</p> <h4 id="collation-and-ordering" class="position-relative d-flex align-items-center group"> <span>Collation and Ordering</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="collation-and-ordering" aria-haspopup="dialog" aria-label="Share link: Collation and Ordering"> <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">Geode</span><span class="err">&#39;</span><span class="py">s</span><span class="w"> </span><span class="py">default</span><span class="w"> </span><span class="py">collation</span><span class="w"> </span><span class="py">is</span><span class="w"> </span><span class="py">Unicode</span><span class="w"> </span><span class="py">binary</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="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ORDER</span><span class="w"> </span><span class="py">BY</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 class="err">--</span><span class="w"> </span><span class="py">Unicode</span><span class="w"> </span><span class="py">code</span><span class="w"> </span><span class="py">point</span><span class="w"> </span><span class="py">order</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">Case</span><span class="err">-</span><span class="py">insensitive</span><span class="w"> </span><span class="py">comparison</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">lower</span><span class="p">(</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="p">=</span><span class="w"> </span><span class="py">lower</span><span class="p">(</span><span class="nv">$search</span><span class="p">)</span><span class="w"> </span></span></span></code></pre></div> <h4 id="null-ordering" class="position-relative d-flex align-items-center group"> <span>NULL Ordering</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-ordering" aria-haspopup="dialog" aria-label="Share link: NULL Ordering"> <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">sort</span><span class="w"> </span><span class="py">last</span><span class="w"> </span><span class="py">by</span><span class="w"> </span><span class="py">default</span><span class="w"> </span><span class="p">(</span><span class="py">configurable</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ORDER</span><span class="w"> </span><span class="py">BY</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="py">ASC</span><span class="w"> </span><span class="py">NULLS</span><span class="w"> </span><span class="py">LAST</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ORDER</span><span class="w"> </span><span class="py">BY</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="py">DESC</span><span class="w"> </span><span class="py">NULLS</span><span class="w"> </span><span class="py">FIRST</span><span class="w"> </span></span></span></code></pre></div> <h4 id="identifier-length" class="position-relative d-flex align-items-center group"> <span>Identifier Length</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="identifier-length" aria-haspopup="dialog" aria-label="Share link: Identifier Length"> <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>Element</th> <th>Maximum Length</th> </tr> </thead> <tbody> <tr> <td>Label name</td> <td>65,535 characters</td> </tr> <tr> <td>Property name</td> <td>65,535 characters</td> </tr> <tr> <td>Variable name</td> <td>65,535 characters</td> </tr> <tr> <td>Index name</td> <td>65,535 characters</td> </tr> </tbody> </table> <h4 id="numeric-precision" class="position-relative d-flex align-items-center group"> <span>Numeric Precision</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="numeric-precision" aria-haspopup="dialog" aria-label="Share link: Numeric Precision"> <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>Type</th> <th>Precision</th> </tr> </thead> <tbody> <tr> <td>INTEGER</td> <td>64-bit signed</td> </tr> <tr> <td>FLOAT</td> <td>IEEE 754 double (64-bit)</td> </tr> <tr> <td>DECIMAL</td> <td>Arbitrary precision</td> </tr> </tbody> </table> <hr> <h3 id="conformance-testing" class="position-relative d-flex align-items-center group"> <span>Conformance Testing</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="conformance-testing" aria-haspopup="dialog" aria-label="Share link: Conformance Testing"> <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="running-conformance-tests" class="position-relative d-flex align-items-center group"> <span>Running Conformance Tests</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="running-conformance-tests" aria-haspopup="dialog" aria-label="Share link: Running Conformance Tests"> <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-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">cd</span> geode </span></span><span class="line"><span class="cl">make test-gql-conformance </span></span></code></pre></div> <h4 id="test-categories" class="position-relative d-flex align-items-center group"> <span>Test 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="test-categories" aria-haspopup="dialog" aria-label="Share link: Test 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>Lexer Tests</strong>: Token recognition</li> <li><strong>Parser Tests</strong>: Syntax validation</li> <li><strong>Semantic Tests</strong>: Type checking, resolution</li> <li><strong>Execution Tests</strong>: Correct results</li> <li><strong>Error Tests</strong>: Proper error handling</li> </ol> <h4 id="test-results-summary" class="position-relative d-flex align-items-center group"> <span>Test Results Summary</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="test-results-summary" aria-haspopup="dialog" aria-label="Share link: Test Results Summary"> <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>Conformance tests are tracked against the published ISO/IEC 39075:2024 profile. For current status, diagnostics, and implementation-defined behaviors, see the conformance profile and the CI evidence linked there.</p> <hr> <h3 id="extensions-beyond-standard" class="position-relative d-flex align-items-center group"> <span>Extensions Beyond Standard</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="extensions-beyond-standard" aria-haspopup="dialog" aria-label="Share link: Extensions Beyond Standard"> <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>Geode provides extensions not in the ISO standard:</p> <h4 id="full-text-search" class="position-relative d-flex align-items-center group"> <span>Full-text Search</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="full-text-search" aria-haspopup="dialog" aria-label="Share link: Full-text Search"> <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">BM25</span><span class="w"> </span><span class="py">full</span><span class="err">-</span><span class="py">text</span><span class="w"> </span><span class="py">search</span><span class="w"> </span><span class="p">(</span><span class="py">Geode</span><span class="w"> </span><span class="py">extension</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">d</span><span class="p">:</span><span class="nc">Document</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">fulltext_match</span><span class="p">(</span><span class="py">d</span><span class="err">.</span><span class="py">content</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">graph</span><span class="w"> </span><span class="py">database</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">d</span><span class="err">.</span><span class="py">title</span><span class="p">,</span><span class="w"> </span><span class="py">bm25_score</span><span class="p">(</span><span class="py">d</span><span class="err">.</span><span class="py">content</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">graph</span><span class="w"> </span><span class="py">database</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">score</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ORDER</span><span class="w"> </span><span class="py">BY</span><span class="w"> </span><span class="py">score</span><span class="w"> </span><span class="py">DESC</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="vector-similarity" class="position-relative d-flex align-items-center group"> <span>Vector Similarity</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="vector-similarity" aria-haspopup="dialog" aria-label="Share link: Vector Similarity"> <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">Vector</span><span class="w"> </span><span class="py">similarity</span><span class="w"> </span><span class="py">search</span><span class="w"> </span><span class="p">(</span><span class="py">Geode</span><span class="w"> </span><span class="py">extension</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">d</span><span class="p">:</span><span class="nc">Document</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">d</span><span class="err">.</span><span class="py">title</span><span class="p">,</span><span class="w"> </span><span class="py">vector_distance_cosine</span><span class="p">(</span><span class="py">d</span><span class="err">.</span><span class="py">embedding</span><span class="p">,</span><span class="w"> </span><span class="nv">$query_vector</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">distance</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ORDER</span><span class="w"> </span><span class="py">BY</span><span class="w"> </span><span class="py">distance</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">LIMIT</span><span class="w"> </span><span class="py">10</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="geographic-functions" class="position-relative d-flex align-items-center group"> <span>Geographic Functions</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="geographic-functions" aria-haspopup="dialog" aria-label="Share link: Geographic Functions"> <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">Geographic</span><span class="w"> </span><span class="py">queries</span><span class="w"> </span><span class="p">(</span><span class="py">Geode</span><span class="w"> </span><span class="py">extension</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">s</span><span class="p">:</span><span class="nc">Store</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">geo_distance</span><span class="p">(</span><span class="py">s</span><span class="err">.</span><span class="py">location</span><span class="p">,</span><span class="w"> </span><span class="nv">$user_location</span><span class="p">)</span><span class="w"> </span><span class="err">&lt;</span><span class="w"> </span><span class="py">5000</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">s</span><span class="err">.</span><span class="py">name</span><span class="p">,</span><span class="w"> </span><span class="py">geo_distance</span><span class="p">(</span><span class="py">s</span><span class="err">.</span><span class="py">location</span><span class="p">,</span><span class="w"> </span><span class="nv">$user_location</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">meters</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="query-hints" class="position-relative d-flex align-items-center group"> <span>Query Hints</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="query-hints" aria-haspopup="dialog" aria-label="Share link: Query Hints"> <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">Index</span><span class="w"> </span><span class="py">hints</span><span class="w"> </span><span class="p">(</span><span class="py">Geode</span><span class="w"> </span><span class="py">extension</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">USING</span><span class="w"> </span><span class="py">INDEX</span><span class="w"> </span><span class="py">p</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">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="nv">$email</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="reserved-words" class="position-relative d-flex align-items-center group"> <span>Reserved Words</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="reserved-words" aria-haspopup="dialog" aria-label="Share link: Reserved Words"> <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>GQL reserved words that cannot be used as unquoted identifiers:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">ALL, AND, ANY, AS, ASC, ASCENDING, BY, CALL, CASE, COMMIT, CONSTRAINT, </span></span><span class="line"><span class="cl">CONTAINS, COUNT, CREATE, DELETE, DESC, DESCENDING, DETACH, DISTINCT, </span></span><span class="line"><span class="cl">DROP, ELSE, END, ENDS, EXISTS, FALSE, FOR, FROM, GRAPH, GROUP, HAVING, </span></span><span class="line"><span class="cl">IN, INDEX, IS, LIMIT, MATCH, MERGE, NOT, NULL, ON, OPTIONAL, OR, ORDER, </span></span><span class="line"><span class="cl">REMOVE, RETURN, ROLLBACK, SESSION, SET, SKIP, START, STARTS, THEN, TO, </span></span><span class="line"><span class="cl">TRUE, UNION, UNIQUE, UNWIND, USE, USING, WHEN, WHERE, WITH, XOR, YIELD </span></span></code></pre></div><p><strong>Escaping reserved words:</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">Use</span><span class="w"> </span><span class="py">backticks</span><span class="w"> </span><span class="py">for</span><span class="w"> </span><span class="py">reserved</span><span class="w"> </span><span class="py">words</span><span class="w"> </span><span class="py">as</span><span class="w"> </span><span class="py">identifiers</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="err">`</span><span class="nc">ORDER</span><span class="err">`</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">LIMIT</span><span class="err">`;</span><span class="w"> </span></span></span></code></pre></div><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/guide/" >GQL Guide</a> - Query language tutorial</li> <li><a href="/docs/gql/conformance-profile/" >Conformance Profile</a> - Detailed conformance</li> <li><a href="/docs/gql-reference/functions/" >Functions Reference</a> - All functions</li> <li><a href="/docs/reference/operators/" >Operators Reference</a> - All operators</li> <li><a href="/docs/reference/types/" >Data Types Reference</a> - Type system</li> </ul> <hr> <p><strong>Last Updated:</strong> January 28, 2026 <strong>Geode Version:</strong> <strong>v0.2.18</strong>+ <strong>ISO Standard:</strong> ISO/IEC 39075:2024 <strong>Conformance Profile:</strong> ISO/IEC 39075:2024 compliance (see conformance profile)</p>