boilerplate uses JSON schemas to describe the structure
expected for each database type. This vignette documents those schemas
for users who want to inspect, validate, or generate database files
outside R.
The unified database combines all categories into a single JSON file:
Methods entries contain standardised text with template variables.
Methods can have multiple text variants:
{
"statistical": {
"regression": {
"linear": {
"default": "We used linear regression to analyse {{outcome}}.",
"large": "We employed ordinary least squares linear regression to examine the relationship between {{predictors}} and {{outcome}}. Model assumptions were examined, including...",
"brief": "Linear regression was used."
}
}
}
}Measures entries describe variables and instruments used in research.
{
"psychological": {
"anxiety": {
"gad7": {
"name": "gad7",
"description": "Generalised Anxiety Disorder 7-item scale",
"type": "ordinal",
"items": 7,
"range": [0, 21],
"values": [0, 1, 2, 3],
"value_labels": ["Not at all", "Several days", "More than half the days", "Nearly every day"],
"cutoffs": {
"mild": 5,
"moderate": 10,
"severe": 15
},
"reference": "@spitzer2006brief",
"keywords": ["anxiety", "screening", "GAD-7"],
"scoring": {
"type": "sum",
"interpretation": {
"0-4": "Minimal anxiety",
"5-9": "Mild anxiety",
"10-14": "Moderate anxiety",
"15-21": "Severe anxiety"
}
}
}
}
}
}Results entries follow the same pattern as methods:
Template variables for substitution:
{
"global": {
"n": 100,
"study_name": "Example Study",
"year": 2024
},
"methods": {
"software": "R version 4.3.0",
"alpha": 0.05
},
"measures": {
"wave1_date": "January 2024",
"wave2_date": "June 2024"
}
}Located in inst/examples/json-poc/schema/: -
measures_schema.json: Formal schema for measures -
methods_schema.json: Formal schema for methods
Missing required fields
Invalid type values
Mismatched arrays
readRDS() can invoke
attacker code through object hooks and class attributes. Package APIs no
longer write RDS; reading is retained only to support migration of
existing trusted databases.project/
├── data/
│ ├── boilerplate_unified.json # Single unified file
│ └── categories/ # Or separate files
│ ├── methods.json
│ ├── measures.json
│ └── results.json
JSON files work well with git: - Human-readable diffs - Easy conflict resolution - Track changes over time
{
"sampling": {
"random": {
"default": "Participants were randomly selected from {{population}}.",
"large": "We employed a stratified random sampling approach. The {{population}} was first divided into {{strata}} strata based on {{stratification_var}}. Within each stratum, participants were randomly selected using a random number generator with seed {{seed}} for reproducibility.",
"brief": "Random sampling was used.",
"reference": "@cochran1977sampling"
}
}
}