Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions .github/workflows/version-consistency.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: Version consistency

# Guards that every place stating the CURRENT schema version matches the top CHANGELOG.md
# entry. The canonical list of version-bearing files lives in scripts/check_version.py — a
# bump means editing those files, and this check fails the build if any one drifts.
on:
push:
paths:
- CHANGELOG.md
- Open3DCP_SCHEMA.md
- crosswalk/**
- tools/ingest/**
- index.html
- schema-reference/**
- llms.txt
- README.md
- AGENTS.md
- intake/**
- .well-known/**
- .zenodo.json
- examples/**
- scripts/check_version.py
pull_request:
paths:
- CHANGELOG.md
- Open3DCP_SCHEMA.md
- crosswalk/**
- tools/ingest/**
- index.html
- schema-reference/**
- llms.txt
- README.md
- AGENTS.md
- intake/**
- .well-known/**
- .zenodo.json
- examples/**
- scripts/check_version.py
workflow_dispatch:

permissions:
contents: read

jobs:
version:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Check version-label consistency
run: python scripts/check_version.py
2 changes: 1 addition & 1 deletion .well-known/mcp-manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"schema_version": "0.1-draft",
"_note": "Experimental site-level Model Context Protocol manifest. Schema is a community draft (see https://modelcontextprotocol.io). This site is a static, public, read-only documentation surface — listed resources are GET-only. Open3DCP is a schema definition project; it does not host mix-design data.",
"name": "Open3DCP",
"description": "Open data standard / flat schema for 3D-printable concrete (3DCP) mix design and test records. Current public schema version: v1.5. Defines column names, units, types, and engineering context covering binders, aggregates, fibers, admixtures, fresh-state rheology, hardened mechanical properties, durability, and 3DCP process parameters.",
"description": "Open data standard / flat schema for 3D-printable concrete (3DCP) mix design and test records. Current public schema version: v1.7. Defines column names, units, types, and engineering context covering binders, aggregates, fibers, admixtures, fresh-state rheology, hardened mechanical properties, durability, and 3DCP process parameters.",
"publisher": {
"name": "Sunnyday Technologies LLC",
"url": "https://sunn3d.com/"
Expand Down
1 change: 1 addition & 0 deletions .zenodo.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"title": "Open3DCP: Open Data Standard for 3D Concrete Printing",
"version": "1.7.0",
"upload_type": "software",
"creators": [
{
Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Open3DCP is a **schema specification**: column names, types, units, and
engineering context for binders, alkali activators, aggregates, fibers,
admixtures, pigments, fresh-state rheology, hardened mechanical
properties, durability indicators, 3DCP process parameters, and
interlayer bond. v1.6 defines the current public column vocabulary.
interlayer bond. v1.7 defines the current public column vocabulary.
kg/m³-primary basis (mass-% derivable). Flat and analysis/ML-oriented.

Open3DCP is **not**:
Expand Down
30 changes: 30 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,36 @@ Schema versioning follows these rules:

---

## [1.7.0] - 2026-06-04

Additive, backward-compatible changes. Existing v1.6 datasets remain valid unchanged.

### Added — aggregate conditioning (water accounting)
- `aggregate_moisture_state` -- as-batched aggregate condition: `oven_dry` | `air_dry` | `SSD` | `wet`.
- `aggregate_absorption_pct` -- 24-h aggregate absorption, % of oven-dry mass (ASTM C127/C128).
- `aggregate_moisture_content_pct` -- total as-batched aggregate moisture, % of oven-dry mass (ASTM C566).
Free moisture = `aggregate_moisture_content_pct` − `aggregate_absorption_pct`, so the effective
(free) mix water is recoverable when aggregates are batched off the SSD reference. The SSD-basis
`water` column plus these three make water accounting unambiguous without duplicating w/c, w/b.
- `aggregate_prewetted` -- process flag for pre-wetting aggregate to a damp condition before
batching (a common 3DCP practice).

### Fixed — ingestion fidelity & crosswalk
- Fidelity `field_coverage` no longer penalizes relational foreign keys / identifiers (a flat row
carries none); they are excluded from the coverage denominator and still preserved in the
triage sidecar.
- Crosswalk test-method map completed (e.g. `four_point_bending` -> `ASTM_C78`), so standard test
methods canonicalize instead of passing through unmapped.

### Fixed — unit converter (ingestion tool)
- Added imperial-tonnage factors: `lb_yd3` (US batch-ticket concentration unit), US `short_ton`,
UK `long_ton`, plus explicit `metric_ton`/`tonne`; a bare "ton"/"t" is now rejected as
ambiguous (short vs long ton differ by ~12%).

### Notes
- Ingestion-tool MAJOR.MINOR bumped to 1.7 to track the schema (`TARGET_SCHEMA_VERSION`).
- Canonical column list remains `Open3DCP_SCHEMA.md` / `sql/create_tables.sql`.

## [1.6.0] - 2026-06-03

### Interoperability — basis, uncertainty, raw-data references
Expand Down
24 changes: 21 additions & 3 deletions Open3DCP_SCHEMA.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
# Open3DCP v1.6
# Open3DCP v1.7

**Open Data Standard for 3D Concrete Printing**

> **v1.7 (2026-06-04):** **Aggregate-conditioning columns added** so effective (free) mix water is recoverable when aggregates are batched off SSD: `aggregate_moisture_state`, `aggregate_absorption_pct`, `aggregate_moisture_content_pct` (ASTM C127/C128, C566), plus a process flag `aggregate_prewetted` for the common practice of pre-wetting aggregate to a damp condition. Tooling/fidelity fixes: imperial-tonnage units (`lb_yd3`, US short ton, UK long ton) added and a bare "ton" rejected as ambiguous; ingestion fidelity refined so relational foreign keys no longer count against coverage; test-method crosswalk completed. Backward-compatible (additive); v1.6 datasets remain valid.
>
> **v1.6 (2026-06-03):** **kg/m³ adopted as the primary reporting basis** (industry/field standard); mass-% retained as a derived secondary representation. New columns: `original_basis`, `mix_density_kg_m3`, `total_binder_kg_m3` (lossless basis conversion); `compressive_strength_stddev_mpa`, `flexural_strength_stddev_mpa`, `tensile_strength_stddev_mpa`, `elastic_modulus_stddev_gpa`, `interlayer_bond_stddev_mpa` (per-measurement uncertainty); `raw_data_doi`, `stress_strain_file`, `rheology_curve_file`, `microstructure_image`, `raw_data_file` (raw-data references). Backward-compatible (additive). Improves interoperability and ingestion fidelity for relational concrete datasets.
>
> **v1.5 (2026-04-16):** Pigment columns: `iron_oxide_pigment`, `titanium_dioxide_pigment`, `chromium_oxide_pigment`, `carbon_black_pigment`, `pigment_other`. Pigments are ultra-fine (~1 um), used at 1-5% in architectural 3DCP, with significant impact on packing, water demand, and microstructure. The canonical column list below is the source of truth for the public v1.5 schema.
Expand Down Expand Up @@ -197,13 +199,28 @@ Specialized rheology modifiers for 3DCP thixotropy and shape retention.

| Column | Type | Description |
|--------|------|-------------|
| `water` | real | Total mix water (mass-% of total wet mix) |
| `water` | real | Free (added) mix water, aggregates at SSD basis (mass-% of total wet mix). See *Aggregate Conditioning* to recover effective water when batched off SSD. |
| `w_c_ratio` | real | Water-to-cement ratio (water / cement only) |
| `w_b_ratio` | real | Water-to-binder ratio (water / all cementitious materials) |
| `a_b_ratio` | real | Aggregate-to-binder ratio |
| `water_premix_pct` | real | % of water added during pre-mix phase |
| `water_temperature_c` | real | Water temperature at mixing (C) |

### Aggregate Conditioning (v1.7)

As-batched aggregate moisture relative to the **SSD** (saturated surface-dry) reference, so the
**effective (free) mix water** can be recovered when aggregates are batched off SSD — a common
3DCP practice (see `aggregate_prewetted` in *Mixing Process*). Recorded at mix level, not per
aggregate fraction. The free water an aggregate contributes (+) or absorbs (−) is
`aggregate_moisture_content_pct − aggregate_absorption_pct`; together with the SSD-basis `water`
column this makes the water accounting unambiguous without duplicating the w/c and w/b ratios.

| Column | Type | Description | Test Method |
|--------|------|-------------|-------------|
| `aggregate_moisture_state` | varchar | As-batched condition: `oven_dry` / `air_dry` / `SSD` / `wet` | -- |
| `aggregate_absorption_pct` | real | 24-h aggregate absorption, % of oven-dry mass | ASTM C127 / C128 |
| `aggregate_moisture_content_pct` | real | Total as-batched aggregate moisture, % of oven-dry mass (free moisture = this − absorption) | ASTM C566 |

### Mix Basis (v1.6)

kg/m³ is the primary basis; the mass-% composition columns are a derived secondary representation. Record the source's native basis and the mix density so the two convert without any assumption.
Expand Down Expand Up @@ -293,6 +310,7 @@ These columns capture the full extrusion printing process. Null for cast specime
| `mixer_type` | varchar | Mixer type (pan, planetary, twin-shaft, continuous) | -- |
| `shear_rate_per_s` | real | Applied shear rate during mixing | 1/s |
| `admixture_addition_point` | varchar | When admixtures were added (dry, wet, delayed) | -- |
| `aggregate_prewetted` | boolean | Aggregate pre-wetted / pre-soaked before batching (common 3DCP practice; pairs with *Aggregate Conditioning*) | -- |

### Environmental Conditions

Expand Down Expand Up @@ -529,5 +547,5 @@ If you use Open3DCP in your research, please cite:

---

*Open3DCP v1.6 -- Last updated: 2026-06-03*
*Open3DCP v1.7 -- Last updated: 2026-06-04*
*Maintained by [Sunnyday Technologies](https://sunn3d.com), Wisconsin, USA*
13 changes: 11 additions & 2 deletions Open3DCP_TERM_JUSTIFICATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ normalize to that canonical term. Per term, the table gives its governing standa
where one exists — its relational-schema crosswalk. 3DCP-only terms are justified against
RILEM TC 276-DFC / TC 304-ADC.

**Coverage:** 237 canonical `mix_designs` terms, grouped into 24 sections.
**Coverage:** 241 canonical `mix_designs` terms, grouped into 25 sections.

---

Expand Down Expand Up @@ -145,7 +145,7 @@ RILEM TC 276-DFC / TC 304-ADC.

| Term | Type | Definition | Standard | Justification & crosswalk |
|---|---|---|---|---|
| `water` | real | Total mix water (mass-% of total wet mix) | — | Open3DCP-specific. |
| `water` | real | Free (added) mix water, aggregates at SSD basis (mass-% of total wet mix). See *Aggregate Conditioning* to recover effective water when batched off SSD. | — | Open3DCP-specific. |

## KEY RATIOS

Expand All @@ -156,6 +156,14 @@ RILEM TC 276-DFC / TC 304-ADC.
| `a_b_ratio` | real | Aggregate-to-binder ratio | — | Open3DCP-specific. |
| `water_premix_pct` | real | % of water added during pre-mix phase | — | Open3DCP-specific. |
| `water_temperature_c` | real | Water temperature at mixing (C) | — | Open3DCP-specific. |

## AGGREGATE CONDITIONING

| Term | Type | Definition | Standard | Justification & crosswalk |
|---|---|---|---|---|
| `aggregate_moisture_state` | varchar(20) | As-batched condition: `oven_dry` / `air_dry` / `SSD` / `wet` | — | Open3DCP-specific. |
| `aggregate_absorption_pct` | real | 24-h aggregate absorption, % of oven-dry mass | ASTM C127 / C128 | Open3DCP-specific. |
| `aggregate_moisture_content_pct` | real | Total as-batched aggregate moisture, % of oven-dry mass (free moisture = this − absorption) | ASTM C566 | Open3DCP-specific. |
| `original_basis` | varchar(20) | Basis the source reported: `kg_m3` (primary), `mass_pct`, `volume`, or `lb_yd3` | — | Open3DCP-specific. |
| `mix_density_kg_m3` | real | Total fresh wet-mix density (sum of kg/m³ constituents); enables exact mass-% ↔ kg/m³ conversion | — | Open3DCP-specific. |
| `total_binder_kg_m3` | real | Total cementitious content (kg/m³); supports w/b and absolute back-conversion | — | Open3DCP-specific. |
Expand Down Expand Up @@ -220,6 +228,7 @@ RILEM TC 276-DFC / TC 304-ADC.
| `mixer_type` | varchar(50) | Mixer type (pan, planetary, twin-shaft, continuous) | — | Open3DCP-specific. |
| `shear_rate_per_s` | real | Applied shear rate during mixing | — | Open3DCP-specific. |
| `admixture_addition_point` | varchar(50) | When admixtures were added (dry, wet, delayed) | — | Open3DCP-specific. |
| `aggregate_prewetted` | boolean | Aggregate pre-wetted / pre-soaked before batching (common 3DCP practice; pairs with *Aggregate Conditioning*) | — | Open3DCP-specific. |

## ENVIRONMENTAL CONDITIONS

Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ A typical 3DCP mix is 55-65% sand by total mass with little or no coarse aggrega

### Fibers -- The Reinforcement

Without formwork, printed concrete has no external confinement. Fibers provide ductility, crack control, and post-crack load carrying capacity. Open3DCP v1.6 tracks eight core fiber families by material, plus a cellulose compatibility column and industry-standard fiber characterization:
Without formwork, printed concrete has no external confinement. Fibers provide ductility, crack control, and post-crack load carrying capacity. Open3DCP v1.7 tracks eight core fiber families by material, plus a cellulose compatibility column and industry-standard fiber characterization:

| Column | Material | Typical Use in 3DCP |
|--------|----------|---------------------|
Expand Down Expand Up @@ -321,7 +321,7 @@ See `Open3DCP_SCHEMA.md` for full disclaimer language.

---

## Test-method coverage (current schema v1.6)
## Test-method coverage (current schema v1.7)

Open3DCP captures the materials, fresh-state, hardened-mechanical, interlayer, durability, and process data that 3DCP research and inter-laboratory studies routinely report. The table below lists representative test methods that researchers commonly cite when populating each column group; Open3DCP itself is method-neutral and accepts data from any equivalent test.

Expand Down
10 changes: 8 additions & 2 deletions crosswalk/open3dcp_to_relational.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
# none - source field has no flat Open3DCP home -> triage sidecar
meta:
name: open3dcp_to_relational
open3dcp_version: "1.6" # MUST match the schema version in Open3DCP_SCHEMA.md / CHANGELOG.md
open3dcp_version: "1.7" # MUST match the schema version in Open3DCP_SCHEMA.md / CHANGELOG.md
source_schema: "relational concrete database (15-tab spreadsheet template)"
direction: bidirectional_where_possible
notes: >
Expand Down Expand Up @@ -107,7 +107,13 @@ mappings:
- { open3dcp: curing_temperature_c, src: tests.initial_env_temperature_C, transform: identity, fidelity: exact }
- { open3dcp: curing_humidity_pct, src: tests.initial_env_relative_humidity_percent, transform: identity, fidelity: exact }
- { open3dcp: test_method_code, src: tests.test_type, transform: enum_map, fidelity: categorical,
notes: "The source test_type list (ASTM/EN designations) maps to Open3DCP free-text test_method_code." }
map: {
compression: ASTM_C39, compressive_strength: ASTM_C39, cube_compression: ASTM_C39,
cylinder_compression: ASTM_C39, three_point_bending: ASTM_C293,
four_point_bending: ASTM_C78, flexure: ASTM_C78, flexural_strength: ASTM_C78,
splitting_tensile: ASTM_C496, brazilian: ASTM_C496, direct_tension: ASTM_C307,
elastic_modulus: ASTM_C469, pull_off: ASTM_C1583, interlayer_bond: ASTM_C1583 },
notes: "Source test_type members canonicalize to Open3DCP standard test codes (US/ASTM by default; four-point bending = third-point loading = ASTM C78). Unmapped members pass through and are flagged." }

# data -> Open3DCP measured properties (value-keyed by quantity_reported)
- { open3dcp: n_specimens, src: data.number_of_specimens, transform: identity, fidelity: exact }
Expand Down
2 changes: 1 addition & 1 deletion examples/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ <h2>National map</h2>

<footer class="pb-footer">
<span><a href="/">open3dcp.org</a> · Example entries</span>
<span>Open3DCP · schema v1.6</span>
<span>Open3DCP · schema v1.7</span>
</footer>
</body>
</html>
2 changes: 1 addition & 1 deletion examples/rilem-tc304-ils-mech/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ <h2>4 · How this was built</h2>

<footer class="pb-footer">
<span><a href="../">← all examples</a> · RILEM TC 304-ADC ILS-mech</span>
<span>Open3DCP · schema v1.6</span>
<span>Open3DCP · schema v1.7</span>
</footer>
</body>
</html>
2 changes: 1 addition & 1 deletion examples/uci-yeh-1998/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ <h2>4 · How this was built</h2>

<footer class="pb-footer">
<span><a href="../">← all examples</a> · UCI Concrete Compressive Strength</span>
<span>Open3DCP · schema v1.6</span>
<span>Open3DCP · schema v1.7</span>
</footer>
</body>
</html>
2 changes: 1 addition & 1 deletion examples/uci-yeh-1998/uci-yeh-1998.fidelity.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"name": "field_coverage",
"score": 100.0,
"weight": 0.3,
"detail": "126 of 126 populated source fields mapped to Open3DCP columns (0 routed to triage sidecar).",
"detail": "126 of 126 mappable source fields mapped to Open3DCP columns (0 routed to triage sidecar).",
"not_preserved_examples": [],
"triage": "Sidecar fields are preserved in <dataset>.unmapped.jsonl; review for schema extension."
},
Expand Down
2 changes: 1 addition & 1 deletion examples/uci-yeh-1998/uci-yeh-1998.fidelity.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

| Dimension | Score | Weight | Detail |
|---|---:|---:|---|
| field_coverage | 100 | 0.30 | 126 of 126 populated source fields mapped to Open3DCP columns (0 routed to triage sidecar). |
| field_coverage | 100 | 0.30 | 126 of 126 mappable source fields mapped to Open3DCP columns (0 routed to triage sidecar). |
| value_fidelity | 89 | 0.30 | 126 values written; 125 exact, 1 required an assumption. |
| relational_integrity | 100 | 0.15 | 0 relational fields (reinforcement, geometry parametrization, devices, loading histories) had no flat home. |
| file_data_capture | 100 | 0.15 | 0 curve/table/image/raw-file references cannot be held by the flat schema (pre-v1.6). |
Expand Down
6 changes: 3 additions & 3 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -635,7 +635,7 @@
"https://doi.org/10.5281/zenodo.19647471"
],
"identifier": "10.5281/zenodo.19647471",
"version": "1.6",
"version": "1.7",
"license": "https://www.apache.org/licenses/LICENSE-2.0",
"creator": {
"@id": "https://sunn3d.com/#organization"
Expand Down Expand Up @@ -851,7 +851,7 @@

<!-- HERO -->
<section class="hero">
<div class="hero-label">Open Schema // 3D Concrete Printing // v1.6</div>
<div class="hero-label">Open Schema // 3D Concrete Printing // v1.7</div>
<h1>Data.<br/><span>Standard.</span><br/>Open.</h1>
<p class="hero-desc">
Open3DCP is an open schema for 3D-printable concrete mix design and test
Expand All @@ -875,7 +875,7 @@ <h1>Data.<br/><span>Standard.</span><br/>Open.</h1>
</div>
<div class="spec-item">
<div class="spec-label">Schema Version</div>
<div class="spec-value">v1.6<span class="spec-unit">current</span></div>
<div class="spec-value">v1.7<span class="spec-unit">current</span></div>
</div>
<div class="spec-item">
<div class="spec-label">Material Coverage</div>
Expand Down
2 changes: 1 addition & 1 deletion intake/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ <h3><span class="num">5</span>Continue on GitHub</h3>

<footer class="pb-footer">
<span>Open3DCP · Dataset intake</span>
<span>Sunnyday Technologies · schema v1.6</span>
<span>Sunnyday Technologies · schema v1.7</span>
</footer>

<script src="app.js"></script>
Expand Down
4 changes: 2 additions & 2 deletions llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ This file is a high-density, plain-text summary intended for LLM retrieval and R
- Maintainer: Sunnyday Technologies LLC (https://sunn3d.com)
- Author: Nicholas Sonnentag (nick@sunn3d.com)
- Contact: open3dcp@sunn3d.com
- Current public version: v1.6 (2026-06-03); canonical column list in Open3DCP_SCHEMA.md
- Current public version: v1.7 (2026-06-04); canonical column list in Open3DCP_SCHEMA.md

## What it is, what it isn't

Expand Down Expand Up @@ -98,4 +98,4 @@ Open3DCP is the schema layer; CEMFORGE and M3-CRETE are companion projects rathe

## Status

Active. Public schema version v1.6 released 2026-06-03. New columns are added in minor versions as new test methods or material classes become relevant to 3DCP research.
Active. Public schema version v1.7 released 2026-06-04. New columns are added in minor versions as new test methods or material classes become relevant to 3DCP research.
Loading
Loading