![]() |
ProvSQL SQL API
Adding support for provenance and uncertainty management to PostgreSQL databases
|
Evaluate provenance as a symbolic formula (e.g., "a ⊗ b ⊕ c"). More...
Functions | |
| ANYELEMENT | choose_function (ANYELEMENT state, ANYELEMENT data) |
| Transition function for the choose aggregate (keeps first non-NULL value). | |
| VOID | choose (ANYELEMENT) |
| Aggregate that returns an arbitrary non-NULL value from a group. | |
| VOID | explode_table (TEXT _tbl, TEXT AGG_TOKEN) |
| Explodes a table column containing aggregated provenance into multiple rows. | |
Evaluate provenance as a symbolic formula (e.g., "a ⊗ b ⊕ c").
Choose one value among many, used in particular to code a mutually exclusive choice as an aggregate.
Evaluate provenance over the counting semiring (ℕ)
Evaluate provenance as why-provenance (set of witness sets)
Evaluate provenance as how-provenance (canonical polynomial provenance ℕ[X], universal commutative-semiring provenance)
Evaluate provenance as which-provenance (lineage: a single set of contributing labels)
Evaluate provenance as a Boolean expression
The optional token2value mapping labels the leaves of the formula: when omitted, leaves are rendered as bare x<id> placeholders.
Evaluate provenance over the Boolean semiring (true/false)
Evaluate provenance over the tropical (min-plus) m-semiring
Inputs are read as float8 cost values; the additive identity is 'Infinity'::float8 and the multiplicative identity is 0. Returns the cost of the cheapest derivation.
With nonnegative, input costs are checked nonnegative and the semiring is absorptive: evaluation then also accepts circuits carrying the 'absorptive' assumption marker – notably cyclic recursive queries truncated at the absorptive value fixpoint, giving exact min-cost reachability on cyclic data.
Evaluate provenance over the Viterbi (max-times) m-semiring
Inputs are read as float8 probability values in \([0,1]\). Returns the probability of the most likely derivation.
Evaluate provenance over the Łukasiewicz fuzzy m-semiring
Inputs are read as float8 graded-truth values in \([0,1]\). Addition is \(\max\); multiplication is the Łukasiewicz t-norm \(\max(a + b - 1, 0)\), which preserves crisp truth and avoids the near-zero collapse of long product chains.
Evaluate provenance over the min-max m-semiring on a user ENUM
Inputs are read as values of a user-defined ENUM carrier; addition is ENUM-min, multiplication is ENUM-max. Bottom and top of the ENUM are derived from pg_enum.enumsortorder. The third argument is a sample value of the carrier ENUM, used only for type inference; its value is ignored.
The security shape: alternative derivations combine to the least sensitive label, joins combine to the most sensitive label.
| token | Provenance token to evaluate. |
| token2value | Mapping from input gates to ENUM values. |
| element_one | Sample value of the carrier ENUM (any value works). |
Evaluate provenance over the max-min m-semiring on a user ENUM
Dual of :sqlfunc:sr_minmax: addition is ENUM-max, multiplication is ENUM-min. The fuzzy / availability / trust shape: alternatives combine to the most permissive label, joins combine to the strictest label. The third argument is a sample value of the carrier ENUM, used only for type inference; its value is ignored.
| token | Provenance token to evaluate. |
| token2value | Mapping from input gates to ENUM values. |
| element_one | Sample value of the carrier ENUM (any value works). |
Choose one value among many, used in particular to code a mutually exclusive choice as an aggregate.
| VOID update_provenance::choose | ( | ANYELEMENT | ) |
Aggregate that returns an arbitrary non-NULL value from a group.
| ANYELEMENT update_provenance::choose_function | ( | ANYELEMENT | state, |
| ANYELEMENT | data ) |
Transition function for the choose aggregate (keeps first non-NULL value).
| VOID update_provenance::explode_table | ( | TEXT | _tbl, |
| TEXT | AGG_TOKEN ) |
Explodes a table column containing aggregated provenance into multiple rows.
For each row in the input table, this function unnests the children of the specified aggregate token column and produces one output row per child. It reconstructs the corresponding value and provenance (provsql) for each resulting row.
The original table is replaced by the transformed table.
| _tbl | Name of the table to transform. |
| AGG_TOKEN | Name of the column containing the aggregate to explode. |