The boilerplate package supports JSON format for all database operations. This document describes the JSON schema structure for different database types.
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 checked 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
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"
}
}
}