Betwixt is a lightweight framework for constructing, representing, and reviewing candidate semantic claims in tabular data. It provides a pragmatic review layer in which candidate knowledge can be organised into bounded review tasks and presented for human judgement.
Betwixt keeps candidate semantic structure separate from its presentation for review. Candidate data can be projected into human-reviewable forms, while review decisions, states, and provenance remain explicit and reproducible.
Installation
You can install the development version of betwixt from GitHub with:
# install.packages("pak")
pak::pak("dataobservatory-eu/betwixt")Example
The delini dataset provides a small cultural heritage example containing candidate semantic assertions prepared for human review:
library(betwixt)
data("delini")
delini
#> # A tibble: 5 × 16
#> row_number evidence_url evidence_media_url evidence_text label description
#> <int> <chr> <chr> <chr> <chr> <chr>
#> 1 1 <NA> https://betwixt.datao… P7101565 Deli… the farmho…
#> 2 2 <NA> https://betwixt.datao… P7101561 tabl… a tablet-w…
#> 3 3 <NA> https://betwixt.datao… P7101556 bed … a bed in t…
#> 4 4 <NA> https://betwixt.datao… P7101590 reco… a record c…
#> 5 5 <NA> https://betwixt.datao… P7101623 reco… a floor pl…
#> # ℹ 10 more variables: col_1 <chr>, col_1_range <chr>, col_1_definition <chr>,
#> # col_2 <chr>, col_2_range <chr>, col_2_definition <chr>, col_3 <chr>,
#> # col_3_range <chr>, col_3_definition <chr>, context_1 <chr>
betwixt_render(
delini,
cols = c(
col_1 = "Subject",
col_2 = "instance of",
col_3 = "heritage of",
context_1 = "held by"
),
subheadings = c(
col_2 = "wdt:P31",
col_3 = "controlled range"
),
title = "Delini semantic review",
description = "Review the proposed semantic assertions.",
project_id = "delini",
filename_stem = "delini-wide",
sequence = 0L,
path = tempdir()
)The resulting standalone HTML review presents the evidence and descriptive context alongside the candidate semantic assertions and records the resulting review state and provenance.
Vignettes
Betwixt implements the following workflow:
It is organised around complementary vignettes.
1. Betwixt Implementation
Introduces scoped claims, semantic stabilisation, contextual inheritance, and the conceptual foundations of Betwixt.
2. Review Layouts and Semantic Projections
Introduces the Delini example and shows how candidate semantic material can be represented as wide, dual-wide, long, and dual-long projections. The current browser-based review implementation uses the wide projection.
3. Creating Candidate Datasets
Shows how to construct a Betwixt candidate dataset from ordinary source data using a MuIS museum example. It distinguishes evidence media, evidence resources, descriptive metadata, alternative descriptions, and candidate assertions, then demonstrates adding candidate columns and rendering a review with row-level and review-level comments.
Citation
If you use Betwixt in research, please cite:
Antal, D. (2026). Betwixt. Reprex. https://doi.org/10.5281/zenodo.22091535
In R, the current citation can be obtained with:
citation("betwixt")