review_range <- tibble::tribble(
~type, ~rank, ~label, ~namespace, ~url,
"subject", 1, "[image shown]", NA_character_, NA_character_,
"subject", 2, "[image file]", NA_character_, NA_character_,
"predicate", 1, "depicts", "Wikidata", "https://www.wikidata.org/wiki/Property:P180",
"predicate", 2, "documents", NA_character_, NA_character_,
"predicate", 3, "MIME Type", NA_character_, NA_character_,
"value", 1, "gloves", "AAT", "http://vocab.getty.edu/page/aat/300148821",
"value", 2, "sweaters", "AAT", "http://vocab.getty.edu/page/aat/300209900",
"value", 3, "shirts", "AAT", "http://vocab.getty.edu/page/aat/300212499",
"value", 4, "image", "DCMI", "http://purl.org/dc/dcmitype/Image",
"value", 99, "other", NA_character_, NA_character_
)Betwixt Review Workbench
A Tutorial and Reference Implementation for Human Review of Semantic Claims
Betwixt Review Workbench
Purpose
This tutorial introduces the Betwixt Review Workbench, the first working artefact of the Betwixt reference implementation. Betwixt creates reviewable relational projections of semantic assertions: bounded rectangular representations in which assertions, evidence, alternatives, and context can be presented for human review without making the review table the canonical semantic representation.
The implementation is deliberately small. A renderer and task-specific Mustache template produce a self-contained review packet from rectangular candidate data. The image-oriented interface demonstrated first is one projection of a more general review model that can also support authority reconciliation, source comparison, Wikibase federation, and other review tasks.
This example follows three museum objects from candidate claims and evidence to an HTML review packet completed by a curator. Each candidate claim has the familiar form:
subject — predicate — value
The three initial candidate claims are:
[image shown] — depicts — sweaters[image shown] — depicts — gloves[image shown] — depicts — shirts
The curator reviews these claims against the available evidence. Correct candidates can remain unchanged; alternatives can be selected or proposed, and a decision can be deferred or rejected.
The formal distinction between candidate assertions, review activities, reviewed assertions, state transitions, and provenance is described separately in the Betwixt Review Algebra.
The terminology used in this tutorial follows the shared glossary of the four working papers. Where applicable, the glossary draws on current W3C and ISO terminology and definitions, supplemented by a deliberately explicit engineering vocabulary and formalism for concepts that need sharper distinctions in this work.
The four papers describe different parts of the same technical programme:
- Semantic Knowledge Production develops the conceptual and architectural framework, distinguishing candidate assertions from stabilised semantic states and treating semantic authority as the outcome of explicit, provenance-bearing transitions (Antal 2026f).
- The Review Algebra formalises candidate generation, review, finalisation, and recursive semantic stabilisation over atomic assertions (Antal 2026a). It has a minimal, very early stage partial implementation in R (Antal 2026e).
- Betwixt provides the computational implementation through relational review projections; conceptual working paper: (Antal 2026c); R reference implementation: (Antal 2026b).
- Bounded Federation extends the approach to purpose-directed, reviewable mediation between independently governed knowledge graphs (Antal 2026d).
For ReactAI, these papers and their glossary provide a common technical language for discussing the interfaces between WP2 evidence engineering, WP3 AI-assisted knowledge production and review, and WP4 persistent Creative Asset Digital Twins. They are intended as a reference architecture and shared vocabulary, not as a requirement that every component use the same database, graph technology, machine-learning representation, or software stack.
A review activity
Every review packet represents an identifiable review job. Here its identifier is P1234. The identifier belongs to the frozen review job, not to a museum object, individual claim, or review activity.
A review activity occurs when a reviewer examines that frozen candidate state and records decisions. The same review job can therefore support multiple reviews by different experts or at different times.
To construct the packet we need two rectangular datasets:
- a review range defining the alternatives offered to the curator; and
- a review input containing the candidate claims and evidence.
Define the review range
The review range specifies the alternatives that the interface may offer for the subject, predicate, and value of a claim. Each row defines one possible option.
typeidentifies the claim element to which the option applies:subject,predicate, orvalue.rankdetermines the order in which alternatives are presented.labelis the human-readable value presented to the curator and, when selected, the proposed value of that claim element.namespaceoptionally identifies the vocabulary or namespace in which the value is defined.urloptionally provides a dereferenceable external definition of the value, allowing the curator to inspect the controlled term before selecting it.
The range can combine local and externally defined terms. Here the garment categories refer to Getty Art & Architecture Thesaurus concepts, while depicts refers to Wikidata property P180. namespace and url allow the interface to identify and link an external definition.
The special option other makes the range open, allowing the curator to propose a value outside the supplied alternatives.
Define the candidate claims and evidence
The second table contains what is actually being reviewed. Each row represents one candidate claim together with the evidence presented to the curator.
The canonical columns used by this image-review example are:
page_ididentifies the source record from which the evidence was obtained;titleprovides a human-readable description of that source record;page_urlidentifies the source page;thumbnail_urlidentifies the visual evidence displayed in the review packet;subjectcontains the candidate subject;predicatecontains the candidate relationship; andvaluecontains the candidate value.
review_input <- tibble::tribble(
~page_id, ~title, ~page_url, ~thumbnail_url,
~subject, ~predicate, ~value,
"635780",
"sweater, women's",
"https://www.muis.ee/museaalview/635780",
"https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=ebc07930-f719-44f2-a108-6698bcecc20b",
"[image shown]",
"depicts",
"sweaters",
"633053",
"gloves",
"https://www.muis.ee/museaalview/633053",
"https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=6440f24f-eaad-4cd4-84d7-1ae7a9d44d5a",
"[image shown]",
"depicts",
"gloves",
"635778",
"shirt, women's",
"https://www.muis.ee/museaalview/635778",
"https://www.muis.ee/digitaalhoidla/api/meedia/pisipilt?id=826c402e-c130-4860-b11e-9538bd403ecf",
"[image shown]",
"depicts",
"shirts"
)In this example [image shown] is scoped notation referring to the visual evidence in the same row; it is not an entity literally named “image shown”.
The observational source is betwixt-shirts.wacz, a portable web archive preserving the museum pages, images, metadata, and indexes from which the candidate claims were prepared. Betwixt does not require WACZ: evidence may come from files, databases, information systems, web resources, or other identifiable sources.
Evidence and semantic assertions remain distinct. The museum record and image provide material for examining a candidate assertion; they do not themselves assert that the depicted object is a sweater, gloves, or a shirt. review_input places evidence beside the candidate assertion for review without turning the row into a compound semantic assertion.
The important distinction for Betwixt is between evidence and semantic assertions. The captured museum record and image provide material from which observations can be made and against which a candidate assertion can be examined. They do not by themselves assert that the depicted object is a sweater, a pair of gloves, or a shirt. The semantic assertion remains independently identifiable from the evidentiary material presented for its review.
review_input is therefore a relational projection constructed for this particular review operation. It places the evidence required by the curator alongside the candidate subject–predicate–value assertion without making the rectangular row a new compound semantic assertion. The review surface may organise these elements together for practical inspection while preserving the distinction between the evidence, the candidate assertion, and the review activity that subsequently evaluates it.
For ReactAI, this suggests an interface between WP2 evidence engineering and WP3 knowledge production. WP2 can expose identifiable observations and their provenance without having to decide which observations constitute valid domain claims.
WP3 can then use these observations as inputs to reconciliation, retrieval, machine learning, generative AI, deterministic rules, or other candidate-generation processes. This keeps evidence extraction separate from the epistemic status of the claims subsequently generated from it.
Add contextual information
The seven columns above provide the canonical structure required by this image-review example, but they do not limit the information that can be presented to the curator. Additional columns may be appended as contextual information. They appear alongside the reviewable assertion and help the curator make a decision without themselves becoming elements of that assertion.
For example, all three objects in this review are held by the Eesti Rahva Muuseum:
review_input$held_by <- "Eesti Rahva Muuseum"Betwixt keeps this contextual information distinct from the subject, predicate, and value being reviewed. Dates, collections, identifiers, materials, locations, or other relevant information can be added to help the curator without asking to review this information. Displaying them in the workbench does not make them part of the candidate assertion.
Generate the review packet
The candidate assertions, evidence, ranges, context, and review-job metadata can now be passed to the renderer.
html <- betwixt_test_render(
claim = review_input,
range = review_range,
con = "betwixt-image-review.html",
title = "Betwixt Test Review",
description = "Human review of betwixt-shirts.wacz: please find the correct categories for each value of the claims. You can make corrections in the subject and predicate if you need to.",
betwixt_id = "P1234",
template = "image_review"
)The resulting betwixt-image-review.html is a self-contained review packet. It freezes what is presented for review without accepting or stabilising the candidate assertions.
The packet can be saved locally and opened in a web browser. It is a review surface for the frozen candidate state, not the canonical semantic representation of the knowledge.
The Dēliņi workbench in the picture currently a working , machine rendered HTML/CSS/JavaScript application. The wide projection is generated by Betwixt 0.0.4 in its R reference implementation (see the R tutorial). We are planning to publish both the algorithm and create reference implementations in R, Python and Go.
For ReactAI, we are experimenting with this as an intermediate representation between evidence engineering, AI-assisted knowledge production, and persistent semantic memory. Assertions are normalised into atomic tuples that can be projected into tabular data, relational databases, graphs, or tensors without changing their semantic identity.
The aim is to support data engineering, machine learning, and AI pipelines while allowing the same tuples to be serialised as persistent claims with identifiers and provenance. Computational components can therefore use representations suited to their task without making those temporary representations the persistent knowledge model.
Complete the review
The workbench is designed for exception handling: correct candidates can simply be left unchanged. The reviewer can use the dropdowns to select controlled alternatives, follow source information when needed, use other to propose a value outside an open range, or choose Defer or Reject.
The screenshot shows the basic division of labour. Evidence remains available on the left while subject, predicate, and value are reviewed independently. Reviewer information and Save review as HTML support recording the resulting review activity.
Completing the review records a judgement about the frozen candidate state. It does not determine which assertions enter a subsequent stabilised semantic state; review and finalisation remain separate operations.
From a simple review to a semantic workbench
The first example presents one candidate assertion per row. More complex tasks can project the same underlying assertions differently according to what the reviewer needs to inspect together.
Evidence and the review workspace
The Dēliņi example extends the simple image review into a larger workbench. Evidence and its description remain available as a reference while the reviewer examines the relation, subject, and several knowledge claims. Context can also be shown without becoming part of the current review scope.
The workbench brings these elements together for review without merging their semantic identities. The evidence, evidentiary relation, subject, knowledge claims, and context remain distinguishable.
This a mockup. The HTML, CSS, and Javascript is implemented, but only the wide representation is tested, the long, dual long, and dual wide are static files. You can test the dual wide here. https://downloads.reprex.nl/betwixt/delini_dual_wide.html
Long and wide projections
A long projection represents one subject–predicate–value assertion per row. A wide projection places predicates in columns so that several assertions about the same subject can be inspected together.
These are alternative relational organisations of the same assertions, not different knowledge models. Long form is useful for heterogeneous assertions; wide form is useful when the same semantic dimensions are reviewed repeatedly across subjects.
Dual projections
The Dēliņi workbench is also dual because it presents two linked semantic scopes. For example:
Photograph 1 — depicts — Dēliņi farmhouse — instance_of — farmhouse
This display combines the assertion connecting evidence to a subject with an assertion about that subject. The two assertions remain independently identifiable even though the workbench places them in the same row.
A dual-wide projection combines both transformations: the evidentiary relation remains visible while several knowledge claims about its subject are presented as columns. This gives the reviewer a compact workspace without turning the row into a compound semantic assertion.
One frozen review job, many possible reviews
A review job freezes the candidate assertions and review scope presented for examination. The same frozen job can support multiple review activities by different reviewers or at different times.
one frozen review job → any number of provenance-bearing review activities
The review model keeps the candidate state, review scope, review result, finalisation, and provenance distinct.
This distinction makes review reproducible. Each review records a judgement against the same frozen candidate state while retaining its own agent, activity, evidence, scope, and other provenance.
A completed review is therefore not yet a stabilised semantic state. Finalisation separately determines which reviewed assertions enter the next state.
For ReactAI, an AI-generated result should normally enter this process as a candidate assertion rather than directly modifying persistent knowledge. Its generation method, model or agent, inputs, and supporting evidence can remain provenance attached to that candidate.
This gives WP3 a common contract for heterogeneous AI components: they may use different models and methods, but their knowledge-producing outputs can be returned as identifiable candidate claims. Human review and finalisation then determine whether those candidates contribute to a subsequent stabilised semantic state.
The Review Algebra formalises this candidate → review → finalisation → stabilised-state transition, within the broader semantic-production architecture developed in Semantic Knowledge Production.
Save the reviewed packet
When the review is complete, Save review creates a self-contained record of that review activity, including reviewer information, timestamps, decisions, and the identifier of the frozen review job.
The original packet remains unchanged: it records what was presented for review, while the saved packet records one review activity against that state. Betwixt can parse the result for comparison with other reviews or subsequent finalisation.
The saved HTML is therefore a portable review record, not the persistent semantic representation of the resulting knowledge.
A working Wikibase federation mockup demonstrates the proposed review interface. The Bounded Federation concept paper generalises this into purpose-directed, reviewable semantic exchange between independently governed knowledge graphs without requiring complete ontology alignment or graph merging.
For ReactAI, this suggests an interface between WP3 knowledge production and the WP4 Creative Asset Digital Twin. WP4 can persist stabilised claims and their provenance independently of the tabular, tensor, or other computational projections used upstream. Selected knowledge can subsequently be projected again for inference, federation, or another review cycle without losing the identity and lineage of the underlying claims.
Another review task: bounded Wikibase federation
Betwixt can also mediate between existing knowledge graphs. Here the task is not to review a claim against documentary evidence, but to decide which selected identities and assertions can cross from one independently governed graph to another.
The same principle applies: only a bounded semantic projection enters the review workspace. The reviewer examines atomic tuples and records whether they can be federated, require local redefinition, or should be skipped.
The boundary prevents federation from becoming recursive graph import. Reviewing a local record against Budapest, for example, does not require importing everything connected to Budapest. Only the entities and assertions admitted to the current projection participate in the review.
The workflow is therefore another application of the same Betwixt pattern:
structured source knowledge → bounded relational projection → human review → structured review decisions
In the image example, the reviewer evaluates candidate assertions against evidence. In federation, the reviewer evaluates whether selected semantic identities and assertions can cross a governance boundary. Betwixt mediates that decision; it does not merge the graphs.
Bounded Federation develops the atomic-claim model for purpose-directed semantic exchange between independently governed knowledge graphs (Antal 2026d). For ReactAI, this provides a candidate WP3–WP4 interface: stabilised claims and their provenance can persist in the Creative Asset Digital Twin and later be projected for federation without requiring graph merging or making an upstream tabular, graph, or tensor representation canonical.
Where Betwixt fits
Betwixt occupies a narrow position in a larger semantic knowledge-production architecture. Semantic models define domain entities and relationships; provenance models record activities, agents, and evidence; and the Review Algebra defines candidate generation, review, finalisation, and transitions between semantic states. Betwixt provides the relational projection layer through which selected assertions and evidence become reviewable.
It does not determine whether a candidate is true, whether a reviewer has authority, or which reviewed assertions enter the next stabilised state. It preserves the semantic distinctions needed for those decisions to remain provenance-aware and machine-processable.
The intended round trip is:
\[\text{semantic assertions} \longrightarrow \text{reviewable relational projection} \longrightarrow \text{human review} \longrightarrow \text{structured review result}.\]
The review surface is intermediate; the assertions and provenance-bearing review results are not.