JSON Schema Foundation
The WIA standard adopts JSON (JavaScript Object Notation) as its primary data interchange format. This decision balances human readability, tool support, compact representation, and widespread adoption across programming languages and platforms.
Why JSON?
Several factors motivated the choice of JSON over alternatives like XML, binary formats, or custom specifications:
- Human Readability: JSON's simple syntax makes data understandable without specialized tools
- Universal Support: Every programming language and platform includes robust JSON parsing libraries
- Compact Representation: JSON uses less space than XML while remaining text-based
- Schema Validation: JSON Schema provides powerful validation capabilities
- Widespread Adoption: JSON is the de facto standard for web APIs and data exchange
- Extensibility: Easy to add new fields without breaking existing parsers
JSON Schema Validation
All WIA data formats include corresponding JSON Schema definitions. These schemas:
- Specify required and optional fields
- Define data types and value constraints
- Provide documentation through descriptions
- Enable automated validation of data files
- Support IDE auto-completion and error detection
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "WIA Building Project",
"type": "object",
"required": ["standard", "version", "project", "geometry"],
"properties": {
"standard": {
"type": "string",
"const": "WIA-3D-PRINTING-CONSTRUCTION"
},
"version": {
"type": "string",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
}
}
}
Building Project Schema
The root schema for a 3D printing construction project encompasses all information needed to plan, execute, and document a build. This includes project metadata, geometry, materials, process parameters, and quality requirements.
Project Metadata
Core project information identifies and describes the project:
{
"project": {
"id": "uuid-v4-string",
"name": "Residential Building A1",
"type": "residential",
"location": {
"address": "123 Main Street",
"city": "Austin",
"state": "TX",
"country": "USA",
"coordinates": {
"latitude": 30.2672,
"longitude": -97.7431,
"elevation": 150.0
}
},
"dates": {
"design": "2025-01-15",
"printStart": "2025-03-01",
"printEnd": "2025-03-20",
"completion": "2025-05-01"
},
"stakeholders": {
"owner": "...",
"architect": "...",
"contractor": "...",
"materialSupplier": "..."
}
}
}
| Field | Type | Required | Description |
|---|---|---|---|
| id | UUID | Yes | Unique project identifier |
| name | String | Yes | Human-readable project name |
| type | Enum | Yes | Building classification |
| location | Object | Yes | Geographic location details |
| dates | Object | Yes | Project timeline milestones |
Geometry Specification
Geometric data defines the physical form of the structure. The WIA format supports multiple geometric representations to accommodate different workflows and tools.
Mesh Representation
Triangle meshes provide the most common 3D geometry representation:
{
"geometry": {
"format": "mesh",
"meshData": {
"vertices": [
[0.0, 0.0, 0.0],
[10000.0, 0.0, 0.0],
[10000.0, 15000.0, 0.0],
[0.0, 15000.0, 0.0]
],
"faces": [
[0, 1, 2],
[0, 2, 3]
],
"unit": "mm"
},
"boundingBox": {
"min": [0.0, 0.0, 0.0],
"max": [10000.0, 15000.0, 8000.0]
}
}
}
Parametric Representation
For simple geometric forms, parametric descriptions are more compact and editable:
{
"geometry": {
"format": "parametric",
"components": [
{
"type": "wall",
"path": [[0,0], [10000,0], [10000,15000], [0,15000], [0,0]],
"height": 3000,
"thickness": 250
},
{
"type": "opening",
"position": [2000, 0, 1000],
"dimensions": [1000, 2100, 250],
"purpose": "door"
}
]
}
}
Layer-Based Representation
Direct layer definitions suitable for immediate printing:
{
"geometry": {
"format": "layers",
"layerHeight": 20,
"layers": [
{
"number": 1,
"height": 20,
"paths": [
{
"type": "perimeter",
"points": [[0,0], [10000,0], [10000,15000], ...],
"width": 40
},
{
"type": "infill",
"points": [[100,100], [9900,100], ...],
"width": 40,
"density": 0.4
}
]
}
]
}
}
Material Specifications
Comprehensive material specifications ensure consistent behavior and enable quality control. Materials are defined with properties relevant to both printing process and structural performance.
Material Library
Projects reference materials from standardized library:
{
"materials": {
"primary": {
"id": "WIA-CONCRETE-STD-001",
"name": "Standard Printable Concrete",
"category": "concrete",
"composition": {
"cement": {
"type": "Portland Type I",
"proportion": 0.35
},
"sand": {
"maxSize": "2mm",
"proportion": 0.45
},
"water": {
"proportion": 0.15
},
"additives": {
"superplasticizer": 0.03,
"accelerator": 0.02
}
},
"properties": {
"printability": {
"flowRate": {
"min": 500,
"max": 1500,
"unit": "mm³/s"
},
"extrusionPressure": {
"target": 1.2,
"unit": "MPa"
},
"buildability": {
"greenStrength": 15,
"unit": "kPa"
},
"openTime": {
"value": 45,
"unit": "minutes"
}
},
"structural": {
"compressiveStrength": {
"28day": 30,
"unit": "MPa"
},
"tensileStrength": {
"value": 3.5,
"unit": "MPa"
},
"modulusOfElasticity": {
"value": 25000,
"unit": "MPa"
}
},
"durability": {
"freezeThaw": "pass",
"sulfateResistance": "high",
"carbonation": "low"
}
}
}
}
}
| Property Category | Key Parameters | Validation Method |
|---|---|---|
| Printability | Flow rate, pressure, buildability | ASTM C1749, rheometer testing |
| Structural | Strength, stiffness, ductility | ASTM C39, C78, C469 |
| Durability | Freeze-thaw, sulfate, carbonation | ASTM C666, C1012, accelerated carbonation |
| Thermal | Conductivity, expansion, capacity | ASTM C518, E831, C351 |
Print Parameters
Process parameters control how material is deposited. These parameters must be precisely specified to achieve desired quality and performance.
{
"printParameters": {
"layerHeight": 20,
"printSpeed": {
"perimeter": 100,
"infill": 150,
"unit": "mm/s"
},
"pathWidth": {
"outer": 40,
"inner": 40,
"unit": "mm"
},
"temperature": {
"material": 25,
"ambient": 20,
"unit": "celsius"
},
"flowRate": {
"target": 1000,
"tolerance": 50,
"unit": "mm³/s"
},
"acceleration": {
"max": 500,
"unit": "mm/s²"
},
"retraction": {
"distance": 5,
"speed": 50,
"unit": "mm"
}
}
}
Quality Requirements
Quality specifications define acceptance criteria for completed work. These include dimensional tolerances, surface finish, structural performance, and testing requirements.
{
"quality": {
"dimensional": {
"tolerances": {
"horizontal": {
"value": 5,
"unit": "mm"
},
"vertical": {
"value": 10,
"unit": "mm"
},
"wallThickness": {
"value": 3,
"unit": "mm"
}
}
},
"surface": {
"roughness": {
"max": 5,
"unit": "mm"
},
"waviness": {
"max": 10,
"unit": "mm"
}
},
"structural": {
"loadTesting": {
"required": true,
"loadFactor": 1.5,
"duration": 24,
"unit": "hours"
}
},
"inspection": {
"frequency": "per-layer",
"methods": ["visual", "laser-scan", "ultrasonic"]
}
}
}
Reinforcement Integration
Most concrete structures require reinforcement. The data format supports specification of both traditional rebar and printed reinforcement.
{
"reinforcement": {
"type": "hybrid",
"traditional": [
{
"id": "rebar-001",
"material": "steel-grade-60",
"diameter": 16,
"path": "3d-polyline-coordinates",
"placement": {
"layer": 10,
"pausePrint": true,
"installMethod": "manual"
}
}
],
"printed": [
{
"id": "fiber-001",
"material": "fiber-composite",
"diameter": 2,
"distribution": "continuous-mesh",
"pattern": "rectilinear"
}
]
}
}
Complete Project Example
Bringing together all components, here's a complete minimal project specification:
{
"standard": "WIA-3D-PRINTING-CONSTRUCTION",
"version": "1.0.0",
"project": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Single Family Residence",
"type": "residential",
"location": {
"coordinates": {"latitude": 30.2672, "longitude": -97.7431}
}
},
"geometry": {
"format": "parametric",
"components": [
{"type": "wall", "path": [[0,0],[10000,0]], "height": 3000, "thickness": 250}
],
"unit": "mm"
},
"materials": {
"primary": {
"id": "WIA-CONCRETE-STD-001",
"properties": {
"compressiveStrength": {"value": 30, "unit": "MPa"}
}
}
},
"printParameters": {
"layerHeight": 20,
"printSpeed": 100,
"pathWidth": 40
},
"quality": {
"dimensional": {
"tolerances": {"horizontal": 5, "vertical": 10}
}
}
}
Validation and Verification
Data format compliance must be verifiable. The standard provides validation tools and procedures to ensure data quality.
Schema Validation
All project files must validate against official JSON schemas. Validation checks:
- Required fields are present
- Data types match specifications
- Values fall within allowed ranges
- Cross-references resolve correctly
- Units are specified and consistent
Semantic Validation
Beyond syntax, semantic validation ensures data makes physical sense:
- Geometry is manifold (closed, no holes)
- Dimensions are reasonable for construction
- Material properties are physically plausible
- Process parameters are compatible with materials
- Quality requirements are achievable
Reference Implementation
The WIA project provides open-source validation tools:
// Python example
from wia_standards import validate_project
result = validate_project('project.json')
if result.valid:
print("Project data is valid")
else:
for error in result.errors:
print(f"Error: {error.message} at {error.path}")
Extensibility and Custom Fields
While the standard defines comprehensive core fields, projects often have unique requirements. The format supports extensibility through custom field namespaces.
{
"standard": "WIA-3D-PRINTING-CONSTRUCTION",
"version": "1.0.0",
"project": { /* ... standard fields ... */ },
"extensions": {
"com.example.vendor": {
"proprietaryFeature": "value",
"customProcessing": {
"enabled": true,
"parameters": {...}
}
},
"org.researchproject.experimental": {
"algorithmVersion": "2.5",
"testData": {...}
}
}
}
Extension namespaces prevent conflicts and clearly identify vendor-specific or experimental features.
Versioning and Compatibility
As the standard evolves, data format versioning ensures compatibility. Files include version numbers, and parsers handle multiple versions.
Version Specification
Every file must specify which standard version it conforms to:
{
"standard": "WIA-3D-PRINTING-CONSTRUCTION",
"version": "1.2.3",
...
}
Compatibility Rules
- Patch versions (1.0.1 → 1.0.2): Fully compatible, only clarifications/bug fixes
- Minor versions (1.0.0 → 1.1.0): Backward compatible, new optional features
- Major versions (1.x.x → 2.0.0): Breaking changes, may require file conversion
Migration Tools
For major version transitions, the standard provides migration utilities:
wia-convert --from 1.5.0 --to 2.0.0 old-project.json new-project.json