Files
greptimedb/operator/statement/semantic_graph/index.html
T

82 lines
26 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="The entity-relationship graph: the physical declared-edge table DDL and the typed DataFusion plan builders for the read-time derivation behind the computed `semantic_entities` / `semantic_relationships` tables."><title>operator::statement::semantic_graph - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../../static.files/rustdoc-17e0aaed.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="operator" data-themes="" data-resource-suffix="" data-rustdoc-version="1.96.0-nightly (ac7f9ec7d 2026-03-20)" data-channel="nightly" data-search-js="search-63369b7b.js" data-stringdex-js="stringdex-2da4960a.js" data-settings-js="settings-170eb4bf.js" ><script src="../../../static.files/storage-41dd4d93.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../../static.files/main-5013f961.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-f7c3ffd8.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-044be391.svg"></head><body class="rustdoc mod"><a class="skip-main-content" href="#main-content">Skip to main content</a><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><rustdoc-topbar><h2><a href="#">Module semantic_graph</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../operator/index.html">operator</a><span class="version">1.3.0</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Module semantic_<wbr>graph</a></h2><h3><a href="#modules">Module Items</a></h3><ul class="block"><li><a href="#modules" title="Modules">Modules</a></li><li><a href="#structs" title="Structs">Structs</a></li><li><a href="#constants" title="Constants">Constants</a></li><li><a href="#statics" title="Statics">Statics</a></li><li><a href="#functions" title="Functions">Functions</a></li></ul></section><div id="rustdoc-modnav"><h2><a href="../index.html">In operator::<wbr>statement</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content" tabindex="-1"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../../index.html">operator</a>::<wbr><a href="../index.html">statement</a></div><h1>Module <span>semantic_<wbr>graph</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../../src/operator/statement/semantic_graph.rs.html#15-1181">Source</a> </span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>The entity-relationship graph: the physical declared-edge table DDL and the
typed DataFusion plan builders for the read-time derivation behind the
computed <code>semantic_entities</code> / <code>semantic_relationships</code> tables.</p>
<p>In OSS the graph is derived at read time, so the <em>only</em> stored part is the
declared-edge table: edges a user asserts by hand (<code>provenance = 'declared'</code>).</p>
<p>The derivation is built as typed [<code>Expr</code>]s over [<code>DataFrame</code>]s (never as SQL
text), so user-controlled identifiers are plain values — no quoting or SQL
injection surface — and the plans compose with DataFusions optimizer,
including filter pushdown into the source table scans. See
<code>docs/rfcs/2026-06-25-entity-relationships-and-graph-query.md</code>.</p>
</div></details><h2 id="modules" class="section-header">Modules<a href="#modules" class="anchor">§</a></h2><dl class="item-table"><dt><a class="mod" href="conventions/index.html" title="mod operator::statement::semantic_graph::conventions">conventions</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>The built-in derivation conventions of the entity graph, embedded as
<a href="./conventions.yaml"><code>conventions.yaml</code></a>: the co-declared edge vocabulary,
the virtual-destination candidates, and the implicit declarations of
well-known Prometheus entity-descriptor metrics. The file is data shipped
with the binary, not an operator-editable configuration surface; explicit
<code>greptime.semantic.entity.*</code> declarations always override it.</dd><dt><a class="mod" href="relationships/index.html" title="mod operator::statement::semantic_graph::relationships">relationships</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>The <code>semantic_relationships</code> derivation: the plan builders for every edge
branch behind the computed table — trace-derived service <code>calls</code> (with
virtual-node edges for unmatched clients), agent <code>calls</code> from span
structure, same-row co-declared edges, and the declared-edge union. Shared
expression helpers and the entity registry live in the parent module.</dd></dl><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><dl class="item-table"><dt><a class="struct" href="struct.CallsSource.html" title="struct operator::statement::semantic_graph::CallsSource">Calls<wbr>Source</a></dt><dd>A trace tables scan paired with the entity declarations its derivations
key on — a unit of <code>build_relationships_plan</code>. The <code>service</code> declaration
feeds service calls, the <code>agent</code> declaration agent calls; the two are
independent, so a table whose service declaration is unusable still
derives agent edges (and vice versa).</dd><dt><a class="struct" href="struct.CoDeclaredSource.html" title="struct operator::statement::semantic_graph::CoDeclaredSource">CoDeclared<wbr>Source</a></dt><dd>A declaring tables scan paired with its entity declarations, from which
the same-row co-declaration rules derive edges. <code>is_trace</code> gates the
agent-edge vocabulary, which the RFC ties to span structure.</dd><dt><a class="struct" href="struct.Conventions.html" title="struct operator::statement::semantic_graph::Conventions">Conventions</a></dt><dd>The parsed, validated conventions file.</dd><dt><a class="struct" href="struct.DeclaredSource.html" title="struct operator::statement::semantic_graph::DeclaredSource">Declared<wbr>Source</a></dt><dd>The declared-edge tables scan (<code>semantic_relationships_declared</code>), whose
rows <code>build_relationships_plan</code> unions into the edge set.</dd><dt><a class="struct" href="struct.EntityDeclaration.html" title="struct operator::statement::semantic_graph::EntityDeclaration">Entity<wbr>Declaration</a></dt><dd>A single tables entity-identity declaration, projected from
<code>information_schema.table_semantics</code> (<code>greptime.semantic.entity.&lt;type&gt;.*</code>).</dd><dt><a class="struct" href="struct.GraphQueryWindow.html" title="struct operator::statement::semantic_graph::GraphQueryWindow">Graph<wbr>Query<wbr>Window</a></dt><dd>The read-time query window, resolved from the scans <code>observed_at</code> predicate
(or the product default). Two half-open <code>[start, end)</code> millisecond ranges:</dd><dt><a class="struct" href="struct.ImplicitEntity.html" title="struct operator::statement::semantic_graph::ImplicitEntity">Implicit<wbr>Entity</a></dt><dd>One implicit entity declaration: of a whitelisted Prometheus info metric,
or of a trace-v1 tables flattened resource attributes.</dd><dt><a class="struct" href="struct.RegistrySource.html" title="struct operator::statement::semantic_graph::RegistrySource">Registry<wbr>Source</a></dt><dd>A declaring tables scan paired with the entity declarations it carries —
the unit <code>build_registry_plan</code> derives registry rows from.</dd><dt><a class="struct" href="struct.RelationshipSources.html" title="struct operator::statement::semantic_graph::RelationshipSources">Relationship<wbr>Sources</a></dt><dd>Everything <code>build_relationships_plan</code> derives edges from.</dd></dl><h2 id="constants" class="section-header">Constants<a href="#constants" class="anchor">§</a></h2><dl class="item-table"><dt><a class="constant" href="constant.BIN_NANOS.html" title="constant operator::statement::semantic_graph::BIN_NANOS">BIN_<wbr>NANOS</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>Bin width for the temporal window of derived rows: 60s buckets, matching the
service-graph convention.</dd><dt><a class="constant" href="constant.DECLARED_EDGE_IDENTITY_COLUMNS.html" title="constant operator::statement::semantic_graph::DECLARED_EDGE_IDENTITY_COLUMNS">DECLARED_<wbr>EDGE_<wbr>IDENTITY_<wbr>COLUMNS</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>The externally visible edge identity: the primary key minus <code>scope</code> and
<code>generation_id</code>, which the computed table does not expose. Revision ranking
uses this identity, or assertions differing only in those two columns would
surface as indistinguishable duplicate rows.</dd><dt><a class="constant" href="constant.DECLARED_PRIMARY_KEY_COLUMNS.html" title="constant operator::statement::semantic_graph::DECLARED_PRIMARY_KEY_COLUMNS">DECLARED_<wbr>PRIMARY_<wbr>KEY_<wbr>COLUMNS</a></dt><dd>The primary-key (tag) columns, in key order. Starting with the source endpoint
makes out-edge lookup (<code>WHERE src_type=? AND src_id=?</code>) a key-prefix scan;
<code>provenance</code> and <code>generation_id</code> are in the key so a declared edge and a
(future) derived edge for the same pair coexist without clobbering.</dd><dt><a class="constant" href="constant.DECLARED_RELATIONSHIPS_TTL_ENV.html" title="constant operator::statement::semantic_graph::DECLARED_RELATIONSHIPS_TTL_ENV">DECLARED_<wbr>RELATIONSHIPS_<wbr>TTL_<wbr>ENV</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>Environment variable overriding the declared-edge tables TTL at creation
time (e.g. <code>180d</code>, <code>forever</code>).</dd><dt><a class="constant" href="constant.DEFAULT_DECLARED_RELATIONSHIPS_TTL.html" title="constant operator::statement::semantic_graph::DEFAULT_DECLARED_RELATIONSHIPS_TTL">DEFAULT_<wbr>DECLARED_<wbr>RELATIONSHIPS_<wbr>TTL</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>Default retention for the declared-edge table; expiry slides the topology window.</dd><dt><a class="constant" href="constant.ENTITY_TYPE_GEN_AI_AGENT.html" title="constant operator::statement::semantic_graph::ENTITY_TYPE_GEN_AI_AGENT">ENTITY_<wbr>TYPE_<wbr>GEN_<wbr>AI_<wbr>AGENT</a></dt><dt><a class="constant" href="constant.ENTITY_TYPE_GEN_AI_MODEL.html" title="constant operator::statement::semantic_graph::ENTITY_TYPE_GEN_AI_MODEL">ENTITY_<wbr>TYPE_<wbr>GEN_<wbr>AI_<wbr>MODEL</a></dt><dt><a class="constant" href="constant.ENTITY_TYPE_GEN_AI_TOOL.html" title="constant operator::statement::semantic_graph::ENTITY_TYPE_GEN_AI_TOOL">ENTITY_<wbr>TYPE_<wbr>GEN_<wbr>AI_<wbr>TOOL</a></dt><dt><a class="constant" href="constant.ENTITY_TYPE_HOST.html" title="constant operator::statement::semantic_graph::ENTITY_TYPE_HOST">ENTITY_<wbr>TYPE_<wbr>HOST</a></dt><dt><a class="constant" href="constant.ENTITY_TYPE_K8S_CONTAINER.html" title="constant operator::statement::semantic_graph::ENTITY_TYPE_K8S_CONTAINER">ENTITY_<wbr>TYPE_<wbr>K8S_<wbr>CONTAINER</a></dt><dt><a class="constant" href="constant.ENTITY_TYPE_K8S_NODE.html" title="constant operator::statement::semantic_graph::ENTITY_TYPE_K8S_NODE">ENTITY_<wbr>TYPE_<wbr>K8S_<wbr>NODE</a></dt><dt><a class="constant" href="constant.ENTITY_TYPE_K8S_POD.html" title="constant operator::statement::semantic_graph::ENTITY_TYPE_K8S_POD">ENTITY_<wbr>TYPE_<wbr>K8S_<wbr>POD</a></dt><dt><a class="constant" href="constant.ENTITY_TYPE_K8S_WORKLOAD.html" title="constant operator::statement::semantic_graph::ENTITY_TYPE_K8S_WORKLOAD">ENTITY_<wbr>TYPE_<wbr>K8S_<wbr>WORKLOAD</a></dt><dt><a class="constant" href="constant.ENTITY_TYPE_PROCESS.html" title="constant operator::statement::semantic_graph::ENTITY_TYPE_PROCESS">ENTITY_<wbr>TYPE_<wbr>PROCESS</a></dt><dt><a class="constant" href="constant.ENTITY_TYPE_SERVICE.html" title="constant operator::statement::semantic_graph::ENTITY_TYPE_SERVICE">ENTITY_<wbr>TYPE_<wbr>SERVICE</a></dt><dd>The built-in entity-type vocabulary. User-declared types are open-ended;
the embedded conventions file must stay inside this set.</dd><dt><a class="constant" href="constant.ENTITY_TYPE_SERVICE_INSTANCE.html" title="constant operator::statement::semantic_graph::ENTITY_TYPE_SERVICE_INSTANCE">ENTITY_<wbr>TYPE_<wbr>SERVICE_<wbr>INSTANCE</a></dt><dt><a class="constant" href="constant.PROVENANCE_AGENT.html" title="constant operator::statement::semantic_graph::PROVENANCE_AGENT">PROVENANCE_<wbr>AGENT</a></dt><dt><a class="constant" href="constant.PROVENANCE_ATTRIBUTE.html" title="constant operator::statement::semantic_graph::PROVENANCE_ATTRIBUTE">PROVENANCE_<wbr>ATTRIBUTE</a></dt><dt><a class="constant" href="constant.PROVENANCE_DECLARED.html" title="constant operator::statement::semantic_graph::PROVENANCE_DECLARED">PROVENANCE_<wbr>DECLARED</a></dt><dt><a class="constant" href="constant.PROVENANCE_TRACE.html" title="constant operator::statement::semantic_graph::PROVENANCE_TRACE">PROVENANCE_<wbr>TRACE</a></dt><dt><a class="constant" href="constant.REGISTRY_COLUMNS.html" title="constant operator::statement::semantic_graph::REGISTRY_COLUMNS">REGISTRY_<wbr>COLUMNS</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dt><a class="constant" href="constant.REGISTRY_VALID_COLUMN.html" title="constant operator::statement::semantic_graph::REGISTRY_VALID_COLUMN">REGISTRY_<wbr>VALID_<wbr>COLUMN</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dt><a class="constant" href="constant.REL_TYPE_CALLS.html" title="constant operator::statement::semantic_graph::REL_TYPE_CALLS">REL_<wbr>TYPE_<wbr>CALLS</a></dt><dd>The relationship vocabulary (the RFCs rel_type table) and the edge
provenances.</dd><dt><a class="constant" href="constant.REL_TYPE_CONTAINS.html" title="constant operator::statement::semantic_graph::REL_TYPE_CONTAINS">REL_<wbr>TYPE_<wbr>CONTAINS</a></dt><dt><a class="constant" href="constant.REL_TYPE_DEPENDS_ON.html" title="constant operator::statement::semantic_graph::REL_TYPE_DEPENDS_ON">REL_<wbr>TYPE_<wbr>DEPENDS_<wbr>ON</a></dt><dt><a class="constant" href="constant.REL_TYPE_INVOKES.html" title="constant operator::statement::semantic_graph::REL_TYPE_INVOKES">REL_<wbr>TYPE_<wbr>INVOKES</a></dt><dt><a class="constant" href="constant.REL_TYPE_OWNS.html" title="constant operator::statement::semantic_graph::REL_TYPE_OWNS">REL_<wbr>TYPE_<wbr>OWNS</a></dt><dt><a class="constant" href="constant.REL_TYPE_PART_OF.html" title="constant operator::statement::semantic_graph::REL_TYPE_PART_OF">REL_<wbr>TYPE_<wbr>PART_<wbr>OF</a></dt><dt><a class="constant" href="constant.REL_TYPE_RUNS_ON.html" title="constant operator::statement::semantic_graph::REL_TYPE_RUNS_ON">REL_<wbr>TYPE_<wbr>RUNS_<wbr>ON</a></dt><dt><a class="constant" href="constant.REL_TYPE_USES.html" title="constant operator::statement::semantic_graph::REL_TYPE_USES">REL_<wbr>TYPE_<wbr>USES</a></dt></dl><h2 id="statics" class="section-header">Statics<a href="#statics" class="anchor">§</a></h2><dl class="item-table"><dt><a class="static" href="static.JSON_OBJECT_UDF.html" title="static operator::statement::semantic_graph::JSON_OBJECT_UDF">JSON_<wbr>OBJECT_<wbr>UDF</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>The <code>json_object</code> UDF, resolved like <a href="static.PARSE_JSON_UDF.html" title="static operator::statement::semantic_graph::PARSE_JSON_UDF"><code>PARSE_JSON_UDF</code></a>. It assembles the
JSONB binary directly from the value columns, so runtime values need no
JSON text escaping.</dd><dt><a class="static" href="static.PARSE_JSON_UDF.html" title="static operator::statement::semantic_graph::PARSE_JSON_UDF">PARSE_<wbr>JSON_<wbr>UDF</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>The <code>parse_json</code> UDF, shared by all derivation plans. Resolved from the
global registry once: the UDF is stateless (its <code>FunctionContext</code> is unused).</dd></dl><h2 id="functions" class="section-header">Functions<a href="#functions" class="anchor">§</a></h2><dl class="item-table"><dt><a class="fn" href="fn.bin_interval.html" title="fn operator::statement::semantic_graph::bin_interval">bin_<wbr>interval</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dt><a class="fn" href="fn.bin_ms.html" title="fn operator::statement::semantic_graph::bin_ms">bin_ms</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd><code>date_bin(60s, ts)</code> cast to millisecond precision, so the output schema is
deterministic regardless of the source columns precision (trace tables are
nanosecond, metric tables millisecond).</dd><dt><a class="fn" href="fn.build_declared_relationships_expr.html" title="fn operator::statement::semantic_graph::build_declared_relationships_expr">build_<wbr>declared_<wbr>relationships_<wbr>expr</a></dt><dd>Builds the <code>CREATE TABLE</code> request for the declared-edge table. Columns mirror
the computed <code>semantic_relationships</code> shape (temporal window + endpoints +
provenance/confidence + RED metrics) plus the declared-only business validity
window (<code>valid_from</code> / <code>valid_until</code>), which — unlike TTL (physical retention)
— expresses whether a hand-declared edge is still in effect.</dd><dt><a class="fn" href="fn.build_registry_plan.html" title="fn operator::statement::semantic_graph::build_registry_plan">build_<wbr>registry_<wbr>plan</a></dt><dd>Builds the <code>semantic_entities</code> registry plan: one branch and source scan per
declaring table, filtered to <code>window</code>, then <code>UNION ALL</code> across source tables.
Returns <code>None</code> when nothing declared an entity, so the computed table streams
empty.</dd><dt><a class="fn" href="fn.build_relationships_plan.html" title="fn operator::statement::semantic_graph::build_relationships_plan">build_<wbr>relationships_<wbr>plan</a></dt><dd>Builds the <code>semantic_relationships</code> plan: the service-calls, agent-calls,
co-declared, and declared-edge branches unioned and re-projected to the
16-column contract. Returns <code>None</code> when no source can contribute edges, so
the computed table streams empty.</dd><dt><a class="fn" href="fn.cast_string_or_empty.html" title="fn operator::statement::semantic_graph::cast_string_or_empty">cast_<wbr>string_<wbr>or_<wbr>empty</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd><code>coalesce(CAST(column AS STRING), '')</code>: renders a nullable column for string
concatenation without collapsing the result to NULL.</dd><dt><a class="fn" href="fn.column.html" title="fn operator::statement::semantic_graph::column">column</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dt><a class="fn" href="fn.concat_expr.html" title="fn operator::statement::semantic_graph::concat_expr">concat_<wbr>expr</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dt><a class="fn" href="fn.conventions.html" title="fn operator::statement::semantic_graph::conventions">conventions</a></dt><dd>The embedded conventions. <code>Err</code> means the embedded file is broken — pinned
by unit test, and propagated by the derivation paths rather than panicking.</dd><dt><a class="fn" href="fn.declared_relationships_schema_matches.html" title="fn operator::statement::semantic_graph::declared_relationships_schema_matches">declared_<wbr>relationships_<wbr>schema_<wbr>matches</a></dt><dd>Whether an existing declared-edge table still matches the canonical
definition (<a href="fn.build_declared_relationships_expr.html" title="fn operator::statement::semantic_graph::build_declared_relationships_expr"><code>build_declared_relationships_expr</code></a>): columns, time index,
primary key, engine, and merge behaviour — the union branchs revision and
dedup semantics lean on all of these. A mismatch (upgrade skew) must be
surfaced, not silently derived wrong; DROP resets the table.</dd><dt><a class="fn" href="fn.declared_relationships_ttl.html" title="fn operator::statement::semantic_graph::declared_relationships_ttl">declared_<wbr>relationships_<wbr>ttl</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dt><a class="fn" href="fn.entity_id_expr.html" title="fn operator::statement::semantic_graph::entity_id_expr">entity_<wbr>id_<wbr>expr</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dt><a class="fn" href="fn.field.html" title="fn operator::statement::semantic_graph::field">field</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dt><a class="fn" href="fn.identifies.html" title="fn operator::statement::semantic_graph::identifies">identifies</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>The canonical entity-id expression for <code>id_columns</code>: the value verbatim for
a single column, the sorted <code>k=v,k=v</code> rendering for a composite. <code>col</code>
constructs the column reference (unqualified for registry branches,
join-side-qualified for the calls derivation).
A row identifies an entity only when every identity component is present
and non-empty: kube-state-metrics descriptors emit empty-string labels (an
unscheduled pods <code>node</code>, an owner-less pods <code>owner_*</code>), and an empty
string is never a meaningful entity id.</dd><dt><a class="fn" href="fn.interval.html" title="fn operator::statement::semantic_graph::interval">interval</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>An <code>INTERVAL</code> literal of <code>nanos</code> nanoseconds.</dd><dt><a class="fn" href="fn.json_field.html" title="fn operator::statement::semantic_graph::json_field">json_<wbr>field</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dt><a class="fn" href="fn.json_object_expr.html" title="fn operator::statement::semantic_graph::json_object_expr">json_<wbr>object_<wbr>expr</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>Builds a JSONB object with one entry per column: key = the column name,
value = the column rendered as a string, NULL coalesced to <code>""</code> so one NULL
column does not null the entry (descriptive columns are nullable). Keys come
out sorted — JSONB objects are key-ordered regardless of input order.</dd><dt><a class="fn" href="fn.json_quote.html" title="fn operator::statement::semantic_graph::json_quote">json_<wbr>quote</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>Renders a compile-time-known string as JSON text (quoted, fully escaped).</dd><dt><a class="fn" href="fn.null_json.html" title="fn operator::statement::semantic_graph::null_json">null_<wbr>json</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>A NULL literal typed as JSONB storage (<code>Binary</code>), so branches without a JSON
value union-align with branches that produce one.</dd><dt><a class="fn" href="fn.parse_json_expr.html" title="fn operator::statement::semantic_graph::parse_json_expr">parse_<wbr>json_<wbr>expr</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>Parses a JSON text expression into a JSONB value, cast from the UDFs
<code>BinaryView</code> output to <code>Binary</code> — the storage type the computed tables
declared <code>json</code> columns map to in Arrow.</dd><dt><a class="fn" href="fn.qcol.html" title="fn operator::statement::semantic_graph::qcol">qcol</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>A column reference qualified by a join-side alias, built without string
parsing (so column names containing <code>.</code> or <code>"</code> stay verbatim).</dd><dt><a class="fn" href="fn.registry_source.html" title="fn operator::statement::semantic_graph::registry_source">registry_<wbr>source</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>Projects all entity declarations of one source table with one source scan
via <a href="fn.unnest_rows.html" title="fn operator::statement::semantic_graph::unnest_rows"><code>unnest_rows</code></a>.</dd><dt><a class="fn" href="fn.sorted_kv_expr_with.html" title="fn operator::statement::semantic_graph::sorted_kv_expr_with">sorted_<wbr>kv_<wbr>expr_<wbr>with</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>Renders pre-sorted columns as a <code>k=v,k=v</code> concatenation. <code>nullable</code>
coalesces each value to <code>''</code> (id columns are tags and non-null; scope
columns carry no such guarantee).</dd><dt><a class="fn" href="fn.tag.html" title="fn operator::statement::semantic_graph::tag">tag</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dt><a class="fn" href="fn.ts_ms_lit.html" title="fn operator::statement::semantic_graph::ts_ms_lit">ts_<wbr>ms_<wbr>lit</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dt><a class="fn" href="fn.union_all.html" title="fn operator::statement::semantic_graph::union_all">union_<wbr>all</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>Folds union branches without requiring a non-empty input.</dd><dt><a class="fn" href="fn.unnest_rows.html" title="fn operator::statement::semantic_graph::unnest_rows">unnest_<wbr>rows</a><span title="Restricted Visibility">&nbsp;🔒</span> </dt><dd>Expands one source row into one output row per entry of <code>rows</code> with a
single source scan: each output field is first built as an array whose
entries correspond to the rows, then unnested. Every row is <code>[valid, values...]</code> aligned with <code>columns</code>; rows whose <code>valid</code> expression is false
are dropped, and the distinct output columns are <code>columns</code>.</dd></dl></section></div></main></body></html>