{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:phonometry:schema:catalogue:1",
  "title": "phonometry catalogue document, schema version 1",
  "description": "A catalogue of your own: the rows of one table of a data sheet, a declaration of performance, a test report or a measurement, which phonometry.io.read_catalogue reads into rows of the named class; or the header beside a CSV file, which declares its dialect and holds no rows. Written by phonometry.io.catalogue_schema. The reader holds a document to more than its form: what depends on two cells at once is its alone.",
  "type": "object",
  "required": [
    "schema",
    "schema_version",
    "catalogue",
    "row_type",
    "about",
    "provenance"
  ],
  "properties": {
    "$schema": {
      "$ref": "#/$defs/text",
      "description": "Where an editor finds this schema. The reader never reads it."
    },
    "schema": {
      "const": "phonometry-catalogue"
    },
    "schema_version": {
      "const": 1
    },
    "catalogue": {
      "type": "string",
      "pattern": "^[a-z0-9][a-z0-9._-]{0,63}(?![\\s\\S])",
      "not": {
        "pattern": "^[a-z0-9][a-z0-9._-]*-[0-9]{4}-[a-z]"
      },
      "description": "The catalogue's name, the first half of every key: never a four-digit year followed by a word, which is the form of the packaged tables' names."
    },
    "row_type": {
      "enum": [
        "AbsorptionAreaSpectrum",
        "AbsorptionSpectrum",
        "BandedRow",
        "Carpet",
        "CatalogueRow",
        "DampingMaterial",
        "DampingTreatment",
        "DuctWallSpectrum",
        "Gas",
        "GroundSurface",
        "ImpactImprovementSpectrum",
        "ImpactInsulation",
        "NonlinearityParameter",
        "NormalizedDiffusionSpectrum",
        "OrthotropicWood",
        "PlateauMaterial",
        "PorousMaterial",
        "PracticalAbsorptionSpectrum",
        "PredictedScatteringSpectrum",
        "ResilientLayer",
        "ResilientMaterial",
        "ResistiveSheet",
        "ScatteringCoefficientSpectrum",
        "SolidMaterial",
        "SolidNonlinearity",
        "SoundReductionSpectrum",
        "ThirdOctaveAbsorptionSpectrum",
        "TransmissionLossSpectrum"
      ],
      "description": "The row class every row of the document is read into."
    },
    "about": {
      "allOf": [
        {
          "$ref": "#/$defs/prose"
        },
        {
          "pattern": "[^\\u0009-\\u000d\\u001c-\\u0020\\u0085\\u00a0\\u1680\\u2000-\\u200a\\u2028-\\u2029\\u202f\\u205f\\u3000]"
        }
      ],
      "description": "What the document is, how it was read and in which units it prints."
    },
    "provenance": {
      "$ref": "#/$defs/provenance"
    },
    "basis": {
      "enum": [
        "measured",
        "declared",
        "calculated",
        "estimated",
        "extended"
      ],
      "description": "The basis of every row that does not give its own."
    },
    "attributed_to": {
      "$ref": "#/$defs/filled",
      "description": "Who the page credits the whole table to, once for every row; a row credits itself or one of its cells in its own attributed_to."
    },
    "conventions": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/text"
      },
      "description": "The notes and legends the document prints for the whole table."
    },
    "csv": {
      "$ref": "#/$defs/csv"
    },
    "rows": {
      "type": "array",
      "minItems": 1,
      "maxItems": 50000
    },
    "phonometry_version": {
      "$ref": "#/$defs/text",
      "description": "The version that wrote the file. Never read."
    }
  },
  "additionalProperties": false,
  "allOf": [
    {
      "if": {
        "required": [
          "csv"
        ]
      },
      "then": {
        "not": {
          "required": [
            "rows"
          ]
        }
      },
      "else": {
        "required": [
          "rows"
        ]
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "AbsorptionAreaSpectrum"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/AbsorptionAreaSpectrum"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/AbsorptionAreaSpectrum.fields"
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "AbsorptionSpectrum"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/AbsorptionSpectrum"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/AbsorptionSpectrum.fields"
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "BandedRow"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/BandedRow"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/BandedRow.fields"
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "Carpet"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/Carpet"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/Carpet.fields"
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "CatalogueRow"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/CatalogueRow"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/CatalogueRow.fields"
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "DampingMaterial"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/DampingMaterial"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/DampingMaterial.fields"
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "DampingTreatment"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/DampingTreatment"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/DampingTreatment.fields"
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "DuctWallSpectrum"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/DuctWallSpectrum"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/DuctWallSpectrum.fields"
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "Gas"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/Gas"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/Gas.fields"
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "GroundSurface"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/GroundSurface"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/GroundSurface.fields"
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "ImpactImprovementSpectrum"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/ImpactImprovementSpectrum"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/ImpactImprovementSpectrum.fields"
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "ImpactInsulation"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/ImpactInsulation"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/ImpactInsulation.fields"
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "NonlinearityParameter"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/NonlinearityParameter"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/NonlinearityParameter.fields"
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "NormalizedDiffusionSpectrum"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/NormalizedDiffusionSpectrum"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/NormalizedDiffusionSpectrum.fields"
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "OrthotropicWood"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/OrthotropicWood"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/OrthotropicWood.fields"
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "PlateauMaterial"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/PlateauMaterial"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/PlateauMaterial.fields"
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "PorousMaterial"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/PorousMaterial"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/PorousMaterial.fields"
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "PracticalAbsorptionSpectrum"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/PracticalAbsorptionSpectrum"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/PracticalAbsorptionSpectrum.fields"
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "PredictedScatteringSpectrum"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/PredictedScatteringSpectrum"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/PredictedScatteringSpectrum.fields"
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "ResilientLayer"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/ResilientLayer"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/ResilientLayer.fields"
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "ResilientMaterial"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/ResilientMaterial"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/ResilientMaterial.fields"
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "ResistiveSheet"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/ResistiveSheet"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/ResistiveSheet.fields"
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "ScatteringCoefficientSpectrum"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/ScatteringCoefficientSpectrum"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/ScatteringCoefficientSpectrum.fields"
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "SolidMaterial"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/SolidMaterial"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/SolidMaterial.fields"
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "SolidNonlinearity"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/SolidNonlinearity"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/SolidNonlinearity.fields"
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "SoundReductionSpectrum"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/SoundReductionSpectrum"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/SoundReductionSpectrum.fields"
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "ThirdOctaveAbsorptionSpectrum"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/ThirdOctaveAbsorptionSpectrum"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/ThirdOctaveAbsorptionSpectrum.fields"
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "row_type"
        ],
        "properties": {
          "row_type": {
            "const": "TransmissionLossSpectrum"
          }
        }
      },
      "then": {
        "properties": {
          "rows": {
            "items": {
              "$ref": "#/$defs/TransmissionLossSpectrum"
            }
          },
          "provenance": {
            "properties": {
              "field_test_standards": {
                "propertyNames": {
                  "$ref": "#/$defs/TransmissionLossSpectrum.fields"
                }
              }
            }
          }
        }
      }
    }
  ],
  "$defs": {
    "AbsorptionAreaSpectrum": {
      "type": "object",
      "title": "AbsorptionAreaSpectrum",
      "description": "One row a table prints as an absorption area rather than a coefficient.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/AbsorptionAreaSpectrum.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/AbsorptionAreaSpectrum.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/AbsorptionAreaSpectrum.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/AbsorptionAreaSpectrum.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/AbsorptionAreaSpectrum.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/AbsorptionAreaSpectrum.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/AbsorptionAreaSpectrum.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/AbsorptionAreaSpectrum.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/AbsorptionAreaSpectrum.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/AbsorptionAreaSpectrum.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/AbsorptionAreaSpectrum.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/AbsorptionAreaSpectrum.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/AbsorptionAreaSpectrum.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/AbsorptionAreaSpectrum.fields"
                  }
                }
              }
            }
          ]
        },
        "absorption_area_63_m2": {
          "$ref": "#/$defs/number_from_0"
        },
        "absorption_area_125_m2": {
          "$ref": "#/$defs/number_from_0"
        },
        "absorption_area_250_m2": {
          "$ref": "#/$defs/number_from_0"
        },
        "absorption_area_500_m2": {
          "$ref": "#/$defs/number_from_0"
        },
        "absorption_area_1000_m2": {
          "$ref": "#/$defs/number_from_0"
        },
        "absorption_area_2000_m2": {
          "$ref": "#/$defs/number_from_0"
        },
        "absorption_area_4000_m2": {
          "$ref": "#/$defs/number_from_0"
        },
        "absorption_area_8000_m2": {
          "$ref": "#/$defs/number_from_0"
        },
        "per": {
          "$ref": "#/$defs/text"
        },
        "absorption_area_1000_ft2": {
          "$ref": "#/$defs/number_from_0",
          "description": "absorption_area_1000_m2 written in sabins; the reader converts the figure on its digits and keeps it in converted."
        },
        "absorption_area_1000_ft2_per_1000_ft3": {
          "$ref": "#/$defs/number_from_0",
          "description": "absorption_area_1000_m2 written in sabins per 1000 ft3; the reader converts the figure on its digits and keeps it in converted."
        },
        "absorption_area_125_ft2": {
          "$ref": "#/$defs/number_from_0",
          "description": "absorption_area_125_m2 written in sabins; the reader converts the figure on its digits and keeps it in converted."
        },
        "absorption_area_125_ft2_per_1000_ft3": {
          "$ref": "#/$defs/number_from_0",
          "description": "absorption_area_125_m2 written in sabins per 1000 ft3; the reader converts the figure on its digits and keeps it in converted."
        },
        "absorption_area_2000_ft2": {
          "$ref": "#/$defs/number_from_0",
          "description": "absorption_area_2000_m2 written in sabins; the reader converts the figure on its digits and keeps it in converted."
        },
        "absorption_area_2000_ft2_per_1000_ft3": {
          "$ref": "#/$defs/number_from_0",
          "description": "absorption_area_2000_m2 written in sabins per 1000 ft3; the reader converts the figure on its digits and keeps it in converted."
        },
        "absorption_area_250_ft2": {
          "$ref": "#/$defs/number_from_0",
          "description": "absorption_area_250_m2 written in sabins; the reader converts the figure on its digits and keeps it in converted."
        },
        "absorption_area_250_ft2_per_1000_ft3": {
          "$ref": "#/$defs/number_from_0",
          "description": "absorption_area_250_m2 written in sabins per 1000 ft3; the reader converts the figure on its digits and keeps it in converted."
        },
        "absorption_area_4000_ft2": {
          "$ref": "#/$defs/number_from_0",
          "description": "absorption_area_4000_m2 written in sabins; the reader converts the figure on its digits and keeps it in converted."
        },
        "absorption_area_4000_ft2_per_1000_ft3": {
          "$ref": "#/$defs/number_from_0",
          "description": "absorption_area_4000_m2 written in sabins per 1000 ft3; the reader converts the figure on its digits and keeps it in converted."
        },
        "absorption_area_500_ft2": {
          "$ref": "#/$defs/number_from_0",
          "description": "absorption_area_500_m2 written in sabins; the reader converts the figure on its digits and keeps it in converted."
        },
        "absorption_area_500_ft2_per_1000_ft3": {
          "$ref": "#/$defs/number_from_0",
          "description": "absorption_area_500_m2 written in sabins per 1000 ft3; the reader converts the figure on its digits and keeps it in converted."
        },
        "absorption_area_63_ft2": {
          "$ref": "#/$defs/number_from_0",
          "description": "absorption_area_63_m2 written in sabins; the reader converts the figure on its digits and keeps it in converted."
        },
        "absorption_area_63_ft2_per_1000_ft3": {
          "$ref": "#/$defs/number_from_0",
          "description": "absorption_area_63_m2 written in sabins per 1000 ft3; the reader converts the figure on its digits and keeps it in converted."
        },
        "absorption_area_8000_ft2": {
          "$ref": "#/$defs/number_from_0",
          "description": "absorption_area_8000_m2 written in sabins; the reader converts the figure on its digits and keeps it in converted."
        },
        "absorption_area_8000_ft2_per_1000_ft3": {
          "$ref": "#/$defs/number_from_0",
          "description": "absorption_area_8000_m2 written in sabins per 1000 ft3; the reader converts the figure on its digits and keeps it in converted."
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "AbsorptionAreaSpectrum.cells": {
      "enum": [
        "absorption_area_1000_m2",
        "absorption_area_125_m2",
        "absorption_area_2000_m2",
        "absorption_area_250_m2",
        "absorption_area_4000_m2",
        "absorption_area_500_m2",
        "absorption_area_63_m2",
        "absorption_area_8000_m2",
        "group",
        "name",
        "note",
        "per",
        "variant",
        "absorption_area_1000_ft2",
        "absorption_area_1000_ft2_per_1000_ft3",
        "absorption_area_125_ft2",
        "absorption_area_125_ft2_per_1000_ft3",
        "absorption_area_2000_ft2",
        "absorption_area_2000_ft2_per_1000_ft3",
        "absorption_area_250_ft2",
        "absorption_area_250_ft2_per_1000_ft3",
        "absorption_area_4000_ft2",
        "absorption_area_4000_ft2_per_1000_ft3",
        "absorption_area_500_ft2",
        "absorption_area_500_ft2_per_1000_ft3",
        "absorption_area_63_ft2",
        "absorption_area_63_ft2_per_1000_ft3",
        "absorption_area_8000_ft2",
        "absorption_area_8000_ft2_per_1000_ft3"
      ],
      "description": "A field of AbsorptionAreaSpectrum that holds a cell of the page."
    },
    "AbsorptionAreaSpectrum.fields": {
      "enum": [
        "absorption_area_1000_m2",
        "absorption_area_125_m2",
        "absorption_area_2000_m2",
        "absorption_area_250_m2",
        "absorption_area_4000_m2",
        "absorption_area_500_m2",
        "absorption_area_63_m2",
        "absorption_area_8000_m2",
        "absorption_area_1000_ft2",
        "absorption_area_1000_ft2_per_1000_ft3",
        "absorption_area_125_ft2",
        "absorption_area_125_ft2_per_1000_ft3",
        "absorption_area_2000_ft2",
        "absorption_area_2000_ft2_per_1000_ft3",
        "absorption_area_250_ft2",
        "absorption_area_250_ft2_per_1000_ft3",
        "absorption_area_4000_ft2",
        "absorption_area_4000_ft2_per_1000_ft3",
        "absorption_area_500_ft2",
        "absorption_area_500_ft2_per_1000_ft3",
        "absorption_area_63_ft2",
        "absorption_area_63_ft2_per_1000_ft3",
        "absorption_area_8000_ft2",
        "absorption_area_8000_ft2_per_1000_ft3"
      ],
      "description": "A numeric field of AbsorptionAreaSpectrum, or another unit of one."
    },
    "AbsorptionSpectrum": {
      "type": "object",
      "title": "AbsorptionSpectrum",
      "description": "One finish of a published table, with its coefficient in each band.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/AbsorptionSpectrum.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/AbsorptionSpectrum.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/AbsorptionSpectrum.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/AbsorptionSpectrum.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/AbsorptionSpectrum.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/AbsorptionSpectrum.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/AbsorptionSpectrum.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/AbsorptionSpectrum.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/AbsorptionSpectrum.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/AbsorptionSpectrum.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/AbsorptionSpectrum.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/AbsorptionSpectrum.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/AbsorptionSpectrum.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/AbsorptionSpectrum.fields"
                  }
                }
              }
            }
          ]
        },
        "absorption_coefficient_63": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_125": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_250": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_500": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_1000": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_2000": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_4000": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_8000": {
          "$ref": "#/$defs/number"
        },
        "mounting": {
          "$ref": "#/$defs/text"
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "AbsorptionSpectrum.cells": {
      "enum": [
        "absorption_coefficient_1000",
        "absorption_coefficient_125",
        "absorption_coefficient_2000",
        "absorption_coefficient_250",
        "absorption_coefficient_4000",
        "absorption_coefficient_500",
        "absorption_coefficient_63",
        "absorption_coefficient_8000",
        "group",
        "mounting",
        "name",
        "note",
        "variant"
      ],
      "description": "A field of AbsorptionSpectrum that holds a cell of the page."
    },
    "AbsorptionSpectrum.fields": {
      "enum": [
        "absorption_coefficient_1000",
        "absorption_coefficient_125",
        "absorption_coefficient_2000",
        "absorption_coefficient_250",
        "absorption_coefficient_4000",
        "absorption_coefficient_500",
        "absorption_coefficient_63",
        "absorption_coefficient_8000"
      ],
      "description": "A numeric field of AbsorptionSpectrum, or another unit of one."
    },
    "BandedRow": {
      "type": "object",
      "title": "BandedRow",
      "description": "One row of a table that prints its quantity once per frequency band.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/BandedRow.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/BandedRow.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/BandedRow.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/BandedRow.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/BandedRow.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/BandedRow.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/BandedRow.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/BandedRow.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/BandedRow.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/BandedRow.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/BandedRow.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/BandedRow.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/BandedRow.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/BandedRow.fields"
                  }
                }
              }
            }
          ]
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "BandedRow.cells": {
      "enum": [
        "group",
        "name",
        "note",
        "variant"
      ],
      "description": "A field of BandedRow that holds a cell of the page."
    },
    "BandedRow.fields": {
      "enum": [],
      "description": "A numeric field of BandedRow, or another unit of one."
    },
    "Carpet": {
      "type": "object",
      "title": "Carpet",
      "description": "One carpet as a page printed it: its pile, what it is laid on, and its NRC.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/Carpet.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/Carpet.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/Carpet.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/Carpet.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/Carpet.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/Carpet.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/Carpet.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/Carpet.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/Carpet.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/Carpet.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/Carpet.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/Carpet.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/Carpet.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/Carpet.fields"
                  }
                }
              }
            }
          ]
        },
        "pile_weight_kg_m2": {
          "$ref": "#/$defs/number_from_0"
        },
        "pile_height_mm": {
          "$ref": "#/$defs/number_from_0"
        },
        "pile_surface": {
          "$ref": "#/$defs/text"
        },
        "fibre": {
          "$ref": "#/$defs/text"
        },
        "mounting": {
          "$ref": "#/$defs/text"
        },
        "noise_reduction_coefficient": {
          "$ref": "#/$defs/number"
        },
        "pile_height_cm": {
          "$ref": "#/$defs/number_from_0",
          "description": "pile_height_mm written in cm; the reader converts the figure on its digits and keeps it in converted."
        },
        "pile_height_m": {
          "$ref": "#/$defs/number_from_0",
          "description": "pile_height_mm written in m; the reader converts the figure on its digits and keeps it in converted."
        },
        "pile_height_um": {
          "$ref": "#/$defs/number_from_0",
          "description": "pile_height_mm written in µm; the reader converts the figure on its digits and keeps it in converted."
        },
        "pile_weight_g_m2": {
          "$ref": "#/$defs/number_from_0",
          "description": "pile_weight_kg_m2 written in g/m2; the reader converts the figure on its digits and keeps it in converted."
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "Carpet.cells": {
      "enum": [
        "fibre",
        "group",
        "mounting",
        "name",
        "noise_reduction_coefficient",
        "note",
        "pile_height_mm",
        "pile_surface",
        "pile_weight_kg_m2",
        "variant",
        "pile_height_cm",
        "pile_height_m",
        "pile_height_um",
        "pile_weight_g_m2"
      ],
      "description": "A field of Carpet that holds a cell of the page."
    },
    "Carpet.fields": {
      "enum": [
        "noise_reduction_coefficient",
        "pile_height_mm",
        "pile_weight_kg_m2",
        "pile_height_cm",
        "pile_height_m",
        "pile_height_um",
        "pile_weight_g_m2"
      ],
      "description": "A numeric field of Carpet, or another unit of one."
    },
    "CatalogueRow": {
      "type": "object",
      "title": "CatalogueRow",
      "description": "One row of a published table, with what each cell said.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/CatalogueRow.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/CatalogueRow.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/CatalogueRow.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/CatalogueRow.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/CatalogueRow.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/CatalogueRow.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/CatalogueRow.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/CatalogueRow.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/CatalogueRow.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/CatalogueRow.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/CatalogueRow.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/CatalogueRow.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/CatalogueRow.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/CatalogueRow.fields"
                  }
                }
              }
            }
          ]
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "CatalogueRow.cells": {
      "enum": [
        "group",
        "name",
        "note",
        "variant"
      ],
      "description": "A field of CatalogueRow that holds a cell of the page."
    },
    "CatalogueRow.fields": {
      "enum": [],
      "description": "A numeric field of CatalogueRow, or another unit of one."
    },
    "DampingMaterial": {
      "type": "object",
      "title": "DampingMaterial",
      "description": "One commercial damping material, as its published table prints it.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/DampingMaterial.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/DampingMaterial.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/DampingMaterial.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/DampingMaterial.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/DampingMaterial.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/DampingMaterial.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/DampingMaterial.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/DampingMaterial.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/DampingMaterial.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/DampingMaterial.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/DampingMaterial.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/DampingMaterial.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/DampingMaterial.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/DampingMaterial.fields"
                  }
                }
              }
            }
          ]
        },
        "max_loss_factor": {
          "$ref": "#/$defs/number"
        },
        "peak_temperature_at_10_hz_c": {
          "$ref": "#/$defs/number"
        },
        "peak_temperature_at_100_hz_c": {
          "$ref": "#/$defs/number"
        },
        "peak_temperature_at_1000_hz_c": {
          "$ref": "#/$defs/number"
        },
        "youngs_modulus_max_pa": {
          "$ref": "#/$defs/number_from_0"
        },
        "youngs_modulus_min_pa": {
          "$ref": "#/$defs/number_from_0"
        },
        "youngs_modulus_transition_pa": {
          "$ref": "#/$defs/number_from_0"
        },
        "loss_modulus_max_pa": {
          "$ref": "#/$defs/number_from_0"
        },
        "loss_modulus_max_gpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "loss_modulus_max_pa written in GPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "loss_modulus_max_kpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "loss_modulus_max_pa written in kPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "loss_modulus_max_mpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "loss_modulus_max_pa written in MPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "loss_modulus_max_n_mm2": {
          "$ref": "#/$defs/number_from_0",
          "description": "loss_modulus_max_pa written in N/mm2; the reader converts the figure on its digits and keeps it in converted."
        },
        "peak_temperature_at_1000_hz_k": {
          "$ref": "#/$defs/number",
          "description": "peak_temperature_at_1000_hz_c written in K; the reader converts the figure on its digits and keeps it in converted."
        },
        "peak_temperature_at_100_hz_k": {
          "$ref": "#/$defs/number",
          "description": "peak_temperature_at_100_hz_c written in K; the reader converts the figure on its digits and keeps it in converted."
        },
        "peak_temperature_at_10_hz_k": {
          "$ref": "#/$defs/number",
          "description": "peak_temperature_at_10_hz_c written in K; the reader converts the figure on its digits and keeps it in converted."
        },
        "youngs_modulus_max_gpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "youngs_modulus_max_pa written in GPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "youngs_modulus_max_kpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "youngs_modulus_max_pa written in kPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "youngs_modulus_max_mpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "youngs_modulus_max_pa written in MPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "youngs_modulus_max_n_mm2": {
          "$ref": "#/$defs/number_from_0",
          "description": "youngs_modulus_max_pa written in N/mm2; the reader converts the figure on its digits and keeps it in converted."
        },
        "youngs_modulus_min_gpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "youngs_modulus_min_pa written in GPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "youngs_modulus_min_kpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "youngs_modulus_min_pa written in kPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "youngs_modulus_min_mpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "youngs_modulus_min_pa written in MPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "youngs_modulus_min_n_mm2": {
          "$ref": "#/$defs/number_from_0",
          "description": "youngs_modulus_min_pa written in N/mm2; the reader converts the figure on its digits and keeps it in converted."
        },
        "youngs_modulus_transition_gpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "youngs_modulus_transition_pa written in GPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "youngs_modulus_transition_kpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "youngs_modulus_transition_pa written in kPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "youngs_modulus_transition_mpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "youngs_modulus_transition_pa written in MPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "youngs_modulus_transition_n_mm2": {
          "$ref": "#/$defs/number_from_0",
          "description": "youngs_modulus_transition_pa written in N/mm2; the reader converts the figure on its digits and keeps it in converted."
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "DampingMaterial.cells": {
      "enum": [
        "group",
        "loss_modulus_max_pa",
        "max_loss_factor",
        "name",
        "note",
        "peak_temperature_at_1000_hz_c",
        "peak_temperature_at_100_hz_c",
        "peak_temperature_at_10_hz_c",
        "variant",
        "youngs_modulus_max_pa",
        "youngs_modulus_min_pa",
        "youngs_modulus_transition_pa",
        "loss_modulus_max_gpa",
        "loss_modulus_max_kpa",
        "loss_modulus_max_mpa",
        "loss_modulus_max_n_mm2",
        "peak_temperature_at_1000_hz_k",
        "peak_temperature_at_100_hz_k",
        "peak_temperature_at_10_hz_k",
        "youngs_modulus_max_gpa",
        "youngs_modulus_max_kpa",
        "youngs_modulus_max_mpa",
        "youngs_modulus_max_n_mm2",
        "youngs_modulus_min_gpa",
        "youngs_modulus_min_kpa",
        "youngs_modulus_min_mpa",
        "youngs_modulus_min_n_mm2",
        "youngs_modulus_transition_gpa",
        "youngs_modulus_transition_kpa",
        "youngs_modulus_transition_mpa",
        "youngs_modulus_transition_n_mm2"
      ],
      "description": "A field of DampingMaterial that holds a cell of the page."
    },
    "DampingMaterial.fields": {
      "enum": [
        "loss_modulus_max_pa",
        "max_loss_factor",
        "peak_temperature_at_1000_hz_c",
        "peak_temperature_at_100_hz_c",
        "peak_temperature_at_10_hz_c",
        "youngs_modulus_max_pa",
        "youngs_modulus_min_pa",
        "youngs_modulus_transition_pa",
        "loss_modulus_max_gpa",
        "loss_modulus_max_kpa",
        "loss_modulus_max_mpa",
        "loss_modulus_max_n_mm2",
        "peak_temperature_at_1000_hz_k",
        "peak_temperature_at_100_hz_k",
        "peak_temperature_at_10_hz_k",
        "youngs_modulus_max_gpa",
        "youngs_modulus_max_kpa",
        "youngs_modulus_max_mpa",
        "youngs_modulus_max_n_mm2",
        "youngs_modulus_min_gpa",
        "youngs_modulus_min_kpa",
        "youngs_modulus_min_mpa",
        "youngs_modulus_min_n_mm2",
        "youngs_modulus_transition_gpa",
        "youngs_modulus_transition_kpa",
        "youngs_modulus_transition_mpa",
        "youngs_modulus_transition_n_mm2"
      ],
      "description": "A numeric field of DampingMaterial, or another unit of one."
    },
    "DampingTreatment": {
      "type": "object",
      "title": "DampingTreatment",
      "description": "One damping treatment, rated on the chapter's standard panel.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/DampingTreatment.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/DampingTreatment.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/DampingTreatment.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/DampingTreatment.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/DampingTreatment.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/DampingTreatment.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/DampingTreatment.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/DampingTreatment.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/DampingTreatment.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/DampingTreatment.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/DampingTreatment.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/DampingTreatment.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/DampingTreatment.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/DampingTreatment.fields"
                  }
                }
              }
            }
          ]
        },
        "decay_rate_db_s": {
          "$ref": "#/$defs/number"
        },
        "temperature_c": {
          "$ref": "#/$defs/number"
        },
        "adhered_area_percent": {
          "$ref": "#/$defs/number_from_0_to_100"
        },
        "surface_density_kg_m2": {
          "$ref": "#/$defs/number_from_0"
        },
        "surface_density_g_m2": {
          "$ref": "#/$defs/number_from_0",
          "description": "surface_density_kg_m2 written in g/m2; the reader converts the figure on its digits and keeps it in converted."
        },
        "temperature_k": {
          "$ref": "#/$defs/number",
          "description": "temperature_c written in K; the reader converts the figure on its digits and keeps it in converted."
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "DampingTreatment.cells": {
      "enum": [
        "adhered_area_percent",
        "decay_rate_db_s",
        "group",
        "name",
        "note",
        "surface_density_kg_m2",
        "temperature_c",
        "variant",
        "surface_density_g_m2",
        "temperature_k"
      ],
      "description": "A field of DampingTreatment that holds a cell of the page."
    },
    "DampingTreatment.fields": {
      "enum": [
        "adhered_area_percent",
        "decay_rate_db_s",
        "surface_density_kg_m2",
        "temperature_c",
        "surface_density_g_m2",
        "temperature_k"
      ],
      "description": "A numeric field of DampingTreatment, or another unit of one."
    },
    "DuctWallSpectrum": {
      "type": "object",
      "title": "DuctWallSpectrum",
      "description": "One duct wall of one printed table, in one of the two directions.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/DuctWallSpectrum.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/DuctWallSpectrum.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/DuctWallSpectrum.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/DuctWallSpectrum.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/DuctWallSpectrum.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/DuctWallSpectrum.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/DuctWallSpectrum.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/DuctWallSpectrum.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/DuctWallSpectrum.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/DuctWallSpectrum.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/DuctWallSpectrum.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/DuctWallSpectrum.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/DuctWallSpectrum.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/DuctWallSpectrum.fields"
                  }
                }
              }
            }
          ]
        },
        "transmission_loss_63_db": {
          "$ref": "#/$defs/number"
        },
        "transmission_loss_125_db": {
          "$ref": "#/$defs/number"
        },
        "transmission_loss_250_db": {
          "$ref": "#/$defs/number"
        },
        "transmission_loss_500_db": {
          "$ref": "#/$defs/number"
        },
        "transmission_loss_1000_db": {
          "$ref": "#/$defs/number"
        },
        "transmission_loss_2000_db": {
          "$ref": "#/$defs/number"
        },
        "transmission_loss_4000_db": {
          "$ref": "#/$defs/number"
        },
        "transmission_loss_8000_db": {
          "$ref": "#/$defs/number"
        },
        "direction": {
          "$ref": "#/$defs/text"
        },
        "shape": {
          "$ref": "#/$defs/text"
        },
        "printed_table": {
          "$ref": "#/$defs/text"
        },
        "sheet_metal_gauge": {
          "$ref": "#/$defs/text"
        },
        "first_side_mm": {
          "$ref": "#/$defs/number_from_0"
        },
        "second_side_mm": {
          "$ref": "#/$defs/number_from_0"
        },
        "diameter_mm": {
          "$ref": "#/$defs/number_from_0"
        },
        "duct_length_m": {
          "$ref": "#/$defs/number_from_0"
        },
        "diameter_cm": {
          "$ref": "#/$defs/number_from_0",
          "description": "diameter_mm written in cm; the reader converts the figure on its digits and keeps it in converted."
        },
        "diameter_m": {
          "$ref": "#/$defs/number_from_0",
          "description": "diameter_mm written in m; the reader converts the figure on its digits and keeps it in converted."
        },
        "diameter_um": {
          "$ref": "#/$defs/number_from_0",
          "description": "diameter_mm written in µm; the reader converts the figure on its digits and keeps it in converted."
        },
        "duct_length_cm": {
          "$ref": "#/$defs/number_from_0",
          "description": "duct_length_m written in cm; the reader converts the figure on its digits and keeps it in converted."
        },
        "duct_length_mm": {
          "$ref": "#/$defs/number_from_0",
          "description": "duct_length_m written in mm; the reader converts the figure on its digits and keeps it in converted."
        },
        "duct_length_um": {
          "$ref": "#/$defs/number_from_0",
          "description": "duct_length_m written in µm; the reader converts the figure on its digits and keeps it in converted."
        },
        "first_side_cm": {
          "$ref": "#/$defs/number_from_0",
          "description": "first_side_mm written in cm; the reader converts the figure on its digits and keeps it in converted."
        },
        "first_side_m": {
          "$ref": "#/$defs/number_from_0",
          "description": "first_side_mm written in m; the reader converts the figure on its digits and keeps it in converted."
        },
        "first_side_um": {
          "$ref": "#/$defs/number_from_0",
          "description": "first_side_mm written in µm; the reader converts the figure on its digits and keeps it in converted."
        },
        "second_side_cm": {
          "$ref": "#/$defs/number_from_0",
          "description": "second_side_mm written in cm; the reader converts the figure on its digits and keeps it in converted."
        },
        "second_side_m": {
          "$ref": "#/$defs/number_from_0",
          "description": "second_side_mm written in m; the reader converts the figure on its digits and keeps it in converted."
        },
        "second_side_um": {
          "$ref": "#/$defs/number_from_0",
          "description": "second_side_mm written in µm; the reader converts the figure on its digits and keeps it in converted."
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "DuctWallSpectrum.cells": {
      "enum": [
        "diameter_mm",
        "direction",
        "duct_length_m",
        "first_side_mm",
        "group",
        "name",
        "note",
        "printed_table",
        "second_side_mm",
        "shape",
        "sheet_metal_gauge",
        "transmission_loss_1000_db",
        "transmission_loss_125_db",
        "transmission_loss_2000_db",
        "transmission_loss_250_db",
        "transmission_loss_4000_db",
        "transmission_loss_500_db",
        "transmission_loss_63_db",
        "transmission_loss_8000_db",
        "variant",
        "diameter_cm",
        "diameter_m",
        "diameter_um",
        "duct_length_cm",
        "duct_length_mm",
        "duct_length_um",
        "first_side_cm",
        "first_side_m",
        "first_side_um",
        "second_side_cm",
        "second_side_m",
        "second_side_um"
      ],
      "description": "A field of DuctWallSpectrum that holds a cell of the page."
    },
    "DuctWallSpectrum.fields": {
      "enum": [
        "diameter_mm",
        "duct_length_m",
        "first_side_mm",
        "second_side_mm",
        "transmission_loss_1000_db",
        "transmission_loss_125_db",
        "transmission_loss_2000_db",
        "transmission_loss_250_db",
        "transmission_loss_4000_db",
        "transmission_loss_500_db",
        "transmission_loss_63_db",
        "transmission_loss_8000_db",
        "diameter_cm",
        "diameter_m",
        "diameter_um",
        "duct_length_cm",
        "duct_length_mm",
        "duct_length_um",
        "first_side_cm",
        "first_side_m",
        "first_side_um",
        "second_side_cm",
        "second_side_m",
        "second_side_um"
      ],
      "description": "A numeric field of DuctWallSpectrum, or another unit of one."
    },
    "Gas": {
      "type": "object",
      "title": "Gas",
      "description": "One gas of a published table: the two numbers that close its state.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/Gas.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/Gas.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/Gas.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/Gas.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/Gas.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/Gas.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/Gas.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/Gas.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/Gas.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/Gas.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/Gas.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/Gas.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/Gas.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/Gas.fields"
                  }
                }
              }
            }
          ]
        },
        "molar_mass_kg_mol": {
          "$ref": "#/$defs/number_from_0"
        },
        "heat_capacity_ratio": {
          "$ref": "#/$defs/number"
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "Gas.cells": {
      "enum": [
        "group",
        "heat_capacity_ratio",
        "molar_mass_kg_mol",
        "name",
        "note",
        "variant"
      ],
      "description": "A field of Gas that holds a cell of the page."
    },
    "Gas.fields": {
      "enum": [
        "heat_capacity_ratio",
        "molar_mass_kg_mol"
      ],
      "description": "A numeric field of Gas, or another unit of one."
    },
    "GroundSurface": {
      "type": "object",
      "title": "GroundSurface",
      "description": "One ground surface as one table prints it.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/GroundSurface.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/GroundSurface.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/GroundSurface.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/GroundSurface.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/GroundSurface.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/GroundSurface.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/GroundSurface.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/GroundSurface.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/GroundSurface.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/GroundSurface.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/GroundSurface.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/GroundSurface.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/GroundSurface.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/GroundSurface.fields"
                  }
                }
              }
            }
          ]
        },
        "flow_resistivity_pa_s_m2": {
          "$ref": "#/$defs/number_from_0"
        },
        "porosity": {
          "$ref": "#/$defs/number_from_0_to_1"
        },
        "water_content_percent": {
          "$ref": "#/$defs/number"
        },
        "porosity_decay_rate_per_m": {
          "$ref": "#/$defs/number"
        },
        "iso_9613_ground_factor": {
          "$ref": "#/$defs/number"
        },
        "nmpb_ground_factor": {
          "$ref": "#/$defs/number"
        },
        "harmonoise_class": {
          "$ref": "#/$defs/text"
        },
        "flow_resistivity_kpa_s_m2": {
          "$ref": "#/$defs/number_from_0",
          "description": "flow_resistivity_pa_s_m2 written in kPa s/m2; the reader converts the figure on its digits and keeps it in converted."
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "GroundSurface.cells": {
      "enum": [
        "flow_resistivity_pa_s_m2",
        "group",
        "harmonoise_class",
        "iso_9613_ground_factor",
        "name",
        "nmpb_ground_factor",
        "note",
        "porosity",
        "porosity_decay_rate_per_m",
        "variant",
        "water_content_percent",
        "flow_resistivity_kpa_s_m2"
      ],
      "description": "A field of GroundSurface that holds a cell of the page."
    },
    "GroundSurface.fields": {
      "enum": [
        "flow_resistivity_pa_s_m2",
        "iso_9613_ground_factor",
        "nmpb_ground_factor",
        "porosity",
        "porosity_decay_rate_per_m",
        "water_content_percent",
        "flow_resistivity_kpa_s_m2"
      ],
      "description": "A numeric field of GroundSurface, or another unit of one."
    },
    "ImpactImprovementSpectrum": {
      "type": "object",
      "title": "ImpactImprovementSpectrum",
      "description": "One covering or floating floor of a report, with its :math:`\\Delta L`.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/ImpactImprovementSpectrum.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/ImpactImprovementSpectrum.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/ImpactImprovementSpectrum.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/ImpactImprovementSpectrum.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/ImpactImprovementSpectrum.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/ImpactImprovementSpectrum.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/ImpactImprovementSpectrum.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/ImpactImprovementSpectrum.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/ImpactImprovementSpectrum.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/ImpactImprovementSpectrum.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/ImpactImprovementSpectrum.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/ImpactImprovementSpectrum.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/ImpactImprovementSpectrum.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/ImpactImprovementSpectrum.fields"
                  }
                }
              }
            }
          ]
        },
        "impact_improvement_50_db": {
          "$ref": "#/$defs/number"
        },
        "impact_improvement_63_db": {
          "$ref": "#/$defs/number"
        },
        "impact_improvement_80_db": {
          "$ref": "#/$defs/number"
        },
        "impact_improvement_100_db": {
          "$ref": "#/$defs/number"
        },
        "impact_improvement_125_db": {
          "$ref": "#/$defs/number"
        },
        "impact_improvement_160_db": {
          "$ref": "#/$defs/number"
        },
        "impact_improvement_200_db": {
          "$ref": "#/$defs/number"
        },
        "impact_improvement_250_db": {
          "$ref": "#/$defs/number"
        },
        "impact_improvement_315_db": {
          "$ref": "#/$defs/number"
        },
        "impact_improvement_400_db": {
          "$ref": "#/$defs/number"
        },
        "impact_improvement_500_db": {
          "$ref": "#/$defs/number"
        },
        "impact_improvement_630_db": {
          "$ref": "#/$defs/number"
        },
        "impact_improvement_800_db": {
          "$ref": "#/$defs/number"
        },
        "impact_improvement_1000_db": {
          "$ref": "#/$defs/number"
        },
        "impact_improvement_1250_db": {
          "$ref": "#/$defs/number"
        },
        "impact_improvement_1600_db": {
          "$ref": "#/$defs/number"
        },
        "impact_improvement_2000_db": {
          "$ref": "#/$defs/number"
        },
        "impact_improvement_2500_db": {
          "$ref": "#/$defs/number"
        },
        "impact_improvement_3150_db": {
          "$ref": "#/$defs/number"
        },
        "impact_improvement_4000_db": {
          "$ref": "#/$defs/number"
        },
        "impact_improvement_5000_db": {
          "$ref": "#/$defs/number"
        },
        "weighted_impact_improvement_db": {
          "$ref": "#/$defs/number"
        },
        "reference_floor_adaptation_term_db": {
          "$ref": "#/$defs/number"
        },
        "impact_improvement_adaptation_term_db": {
          "$ref": "#/$defs/number"
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "ImpactImprovementSpectrum.cells": {
      "enum": [
        "group",
        "impact_improvement_1000_db",
        "impact_improvement_100_db",
        "impact_improvement_1250_db",
        "impact_improvement_125_db",
        "impact_improvement_1600_db",
        "impact_improvement_160_db",
        "impact_improvement_2000_db",
        "impact_improvement_200_db",
        "impact_improvement_2500_db",
        "impact_improvement_250_db",
        "impact_improvement_3150_db",
        "impact_improvement_315_db",
        "impact_improvement_4000_db",
        "impact_improvement_400_db",
        "impact_improvement_5000_db",
        "impact_improvement_500_db",
        "impact_improvement_50_db",
        "impact_improvement_630_db",
        "impact_improvement_63_db",
        "impact_improvement_800_db",
        "impact_improvement_80_db",
        "impact_improvement_adaptation_term_db",
        "name",
        "note",
        "reference_floor_adaptation_term_db",
        "variant",
        "weighted_impact_improvement_db"
      ],
      "description": "A field of ImpactImprovementSpectrum that holds a cell of the page."
    },
    "ImpactImprovementSpectrum.fields": {
      "enum": [
        "impact_improvement_1000_db",
        "impact_improvement_100_db",
        "impact_improvement_1250_db",
        "impact_improvement_125_db",
        "impact_improvement_1600_db",
        "impact_improvement_160_db",
        "impact_improvement_2000_db",
        "impact_improvement_200_db",
        "impact_improvement_2500_db",
        "impact_improvement_250_db",
        "impact_improvement_3150_db",
        "impact_improvement_315_db",
        "impact_improvement_4000_db",
        "impact_improvement_400_db",
        "impact_improvement_5000_db",
        "impact_improvement_500_db",
        "impact_improvement_50_db",
        "impact_improvement_630_db",
        "impact_improvement_63_db",
        "impact_improvement_800_db",
        "impact_improvement_80_db",
        "impact_improvement_adaptation_term_db",
        "reference_floor_adaptation_term_db",
        "weighted_impact_improvement_db"
      ],
      "description": "A numeric field of ImpactImprovementSpectrum, or another unit of one."
    },
    "ImpactInsulation": {
      "type": "object",
      "title": "ImpactInsulation",
      "description": "One floor-ceiling construction or surface treatment, as printed.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/ImpactInsulation.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/ImpactInsulation.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/ImpactInsulation.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/ImpactInsulation.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/ImpactInsulation.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/ImpactInsulation.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/ImpactInsulation.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/ImpactInsulation.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/ImpactInsulation.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/ImpactInsulation.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/ImpactInsulation.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/ImpactInsulation.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/ImpactInsulation.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/ImpactInsulation.fields"
                  }
                }
              }
            }
          ]
        },
        "impact_insulation_class": {
          "$ref": "#/$defs/number"
        },
        "impact_insulation_class_improvement": {
          "$ref": "#/$defs/number"
        },
        "impact_sound_improvement_db": {
          "$ref": "#/$defs/number"
        },
        "added_load_pa": {
          "$ref": "#/$defs/number_from_0"
        },
        "refers_to_row": {
          "$ref": "#/$defs/text"
        },
        "has_section_drawing": {
          "type": "boolean"
        },
        "layer_density_kg_m3": {
          "$ref": "#/$defs/number_from_0"
        },
        "added_load_gpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "added_load_pa written in GPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "added_load_kpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "added_load_pa written in kPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "added_load_mpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "added_load_pa written in MPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "added_load_n_mm2": {
          "$ref": "#/$defs/number_from_0",
          "description": "added_load_pa written in N/mm2; the reader converts the figure on its digits and keeps it in converted."
        },
        "layer_density_g_cm3": {
          "$ref": "#/$defs/number_from_0",
          "description": "layer_density_kg_m3 written in g/cm3; the reader converts the figure on its digits and keeps it in converted."
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "ImpactInsulation.cells": {
      "enum": [
        "added_load_pa",
        "group",
        "impact_insulation_class",
        "impact_insulation_class_improvement",
        "impact_sound_improvement_db",
        "layer_density_kg_m3",
        "name",
        "note",
        "refers_to_row",
        "variant",
        "added_load_gpa",
        "added_load_kpa",
        "added_load_mpa",
        "added_load_n_mm2",
        "layer_density_g_cm3"
      ],
      "description": "A field of ImpactInsulation that holds a cell of the page."
    },
    "ImpactInsulation.fields": {
      "enum": [
        "added_load_pa",
        "impact_insulation_class",
        "impact_insulation_class_improvement",
        "impact_sound_improvement_db",
        "layer_density_kg_m3",
        "added_load_gpa",
        "added_load_kpa",
        "added_load_mpa",
        "added_load_n_mm2",
        "layer_density_g_cm3"
      ],
      "description": "A numeric field of ImpactInsulation, or another unit of one."
    },
    "NonlinearityParameter": {
      "type": "object",
      "title": "NonlinearityParameter",
      "description": "One published value of B/A, with the conditions it was measured at.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/NonlinearityParameter.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/NonlinearityParameter.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/NonlinearityParameter.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/NonlinearityParameter.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/NonlinearityParameter.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/NonlinearityParameter.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/NonlinearityParameter.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/NonlinearityParameter.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/NonlinearityParameter.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/NonlinearityParameter.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/NonlinearityParameter.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/NonlinearityParameter.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/NonlinearityParameter.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/NonlinearityParameter.fields"
                  }
                }
              }
            }
          ]
        },
        "b_over_a": {
          "$ref": "#/$defs/number"
        },
        "temperature_c": {
          "$ref": "#/$defs/number"
        },
        "static_pressure_pa": {
          "$ref": "#/$defs/number_from_0"
        },
        "year": {
          "$ref": "#/$defs/whole"
        },
        "static_pressure_gpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "static_pressure_pa written in GPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "static_pressure_kpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "static_pressure_pa written in kPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "static_pressure_mpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "static_pressure_pa written in MPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "static_pressure_n_mm2": {
          "$ref": "#/$defs/number_from_0",
          "description": "static_pressure_pa written in N/mm2; the reader converts the figure on its digits and keeps it in converted."
        },
        "temperature_k": {
          "$ref": "#/$defs/number",
          "description": "temperature_c written in K; the reader converts the figure on its digits and keeps it in converted."
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "NonlinearityParameter.cells": {
      "enum": [
        "b_over_a",
        "group",
        "name",
        "note",
        "static_pressure_pa",
        "temperature_c",
        "variant",
        "year",
        "static_pressure_gpa",
        "static_pressure_kpa",
        "static_pressure_mpa",
        "static_pressure_n_mm2",
        "temperature_k"
      ],
      "description": "A field of NonlinearityParameter that holds a cell of the page."
    },
    "NonlinearityParameter.fields": {
      "enum": [
        "b_over_a",
        "static_pressure_pa",
        "temperature_c",
        "year",
        "static_pressure_gpa",
        "static_pressure_kpa",
        "static_pressure_mpa",
        "static_pressure_n_mm2",
        "temperature_k"
      ],
      "description": "A numeric field of NonlinearityParameter, or another unit of one."
    },
    "NormalizedDiffusionSpectrum": {
      "type": "object",
      "title": "NormalizedDiffusionSpectrum",
      "description": "One surface at one angle of incidence, with its coefficient in each band.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/NormalizedDiffusionSpectrum.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/NormalizedDiffusionSpectrum.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/NormalizedDiffusionSpectrum.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/NormalizedDiffusionSpectrum.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/NormalizedDiffusionSpectrum.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/NormalizedDiffusionSpectrum.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/NormalizedDiffusionSpectrum.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/NormalizedDiffusionSpectrum.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/NormalizedDiffusionSpectrum.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/NormalizedDiffusionSpectrum.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/NormalizedDiffusionSpectrum.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/NormalizedDiffusionSpectrum.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/NormalizedDiffusionSpectrum.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/NormalizedDiffusionSpectrum.fields"
                  }
                }
              }
            }
          ]
        },
        "diffusion_coefficient_100": {
          "$ref": "#/$defs/number"
        },
        "diffusion_coefficient_125": {
          "$ref": "#/$defs/number"
        },
        "diffusion_coefficient_160": {
          "$ref": "#/$defs/number"
        },
        "diffusion_coefficient_200": {
          "$ref": "#/$defs/number"
        },
        "diffusion_coefficient_250": {
          "$ref": "#/$defs/number"
        },
        "diffusion_coefficient_315": {
          "$ref": "#/$defs/number"
        },
        "diffusion_coefficient_400": {
          "$ref": "#/$defs/number"
        },
        "diffusion_coefficient_500": {
          "$ref": "#/$defs/number"
        },
        "diffusion_coefficient_630": {
          "$ref": "#/$defs/number"
        },
        "diffusion_coefficient_800": {
          "$ref": "#/$defs/number"
        },
        "diffusion_coefficient_1000": {
          "$ref": "#/$defs/number"
        },
        "diffusion_coefficient_1250": {
          "$ref": "#/$defs/number"
        },
        "diffusion_coefficient_1600": {
          "$ref": "#/$defs/number"
        },
        "diffusion_coefficient_2000": {
          "$ref": "#/$defs/number"
        },
        "diffusion_coefficient_2500": {
          "$ref": "#/$defs/number"
        },
        "diffusion_coefficient_3150": {
          "$ref": "#/$defs/number"
        },
        "diffusion_coefficient_4000": {
          "$ref": "#/$defs/number"
        },
        "diffusion_coefficient_5000": {
          "$ref": "#/$defs/number"
        },
        "angle_of_incidence_deg": {
          "$ref": "#/$defs/number"
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "NormalizedDiffusionSpectrum.cells": {
      "enum": [
        "angle_of_incidence_deg",
        "diffusion_coefficient_100",
        "diffusion_coefficient_1000",
        "diffusion_coefficient_125",
        "diffusion_coefficient_1250",
        "diffusion_coefficient_160",
        "diffusion_coefficient_1600",
        "diffusion_coefficient_200",
        "diffusion_coefficient_2000",
        "diffusion_coefficient_250",
        "diffusion_coefficient_2500",
        "diffusion_coefficient_315",
        "diffusion_coefficient_3150",
        "diffusion_coefficient_400",
        "diffusion_coefficient_4000",
        "diffusion_coefficient_500",
        "diffusion_coefficient_5000",
        "diffusion_coefficient_630",
        "diffusion_coefficient_800",
        "group",
        "name",
        "note",
        "variant"
      ],
      "description": "A field of NormalizedDiffusionSpectrum that holds a cell of the page."
    },
    "NormalizedDiffusionSpectrum.fields": {
      "enum": [
        "angle_of_incidence_deg",
        "diffusion_coefficient_100",
        "diffusion_coefficient_1000",
        "diffusion_coefficient_125",
        "diffusion_coefficient_1250",
        "diffusion_coefficient_160",
        "diffusion_coefficient_1600",
        "diffusion_coefficient_200",
        "diffusion_coefficient_2000",
        "diffusion_coefficient_250",
        "diffusion_coefficient_2500",
        "diffusion_coefficient_315",
        "diffusion_coefficient_3150",
        "diffusion_coefficient_400",
        "diffusion_coefficient_4000",
        "diffusion_coefficient_500",
        "diffusion_coefficient_5000",
        "diffusion_coefficient_630",
        "diffusion_coefficient_800"
      ],
      "description": "A numeric field of NormalizedDiffusionSpectrum, or another unit of one."
    },
    "OrthotropicWood": {
      "type": "object",
      "title": "OrthotropicWood",
      "description": "One wood's plate stiffnesses, as a page printed them.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/OrthotropicWood.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/OrthotropicWood.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/OrthotropicWood.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/OrthotropicWood.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/OrthotropicWood.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/OrthotropicWood.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/OrthotropicWood.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/OrthotropicWood.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/OrthotropicWood.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/OrthotropicWood.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/OrthotropicWood.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/OrthotropicWood.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/OrthotropicWood.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/OrthotropicWood.fields"
                  }
                }
              }
            }
          ]
        },
        "density_kg_m3": {
          "$ref": "#/$defs/number_from_0"
        },
        "plate_stiffness_d1_pa": {
          "$ref": "#/$defs/number_from_0"
        },
        "plate_stiffness_d2_pa": {
          "$ref": "#/$defs/number_from_0"
        },
        "plate_stiffness_d3_pa": {
          "$ref": "#/$defs/number_from_0"
        },
        "plate_stiffness_d4_pa": {
          "$ref": "#/$defs/number_from_0"
        },
        "relative_scaling_factor": {
          "$ref": "#/$defs/number"
        },
        "density_g_cm3": {
          "$ref": "#/$defs/number_from_0",
          "description": "density_kg_m3 written in g/cm3; the reader converts the figure on its digits and keeps it in converted."
        },
        "plate_stiffness_d1_gpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "plate_stiffness_d1_pa written in GPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "plate_stiffness_d1_kpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "plate_stiffness_d1_pa written in kPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "plate_stiffness_d1_mpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "plate_stiffness_d1_pa written in MPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "plate_stiffness_d1_n_mm2": {
          "$ref": "#/$defs/number_from_0",
          "description": "plate_stiffness_d1_pa written in N/mm2; the reader converts the figure on its digits and keeps it in converted."
        },
        "plate_stiffness_d2_gpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "plate_stiffness_d2_pa written in GPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "plate_stiffness_d2_kpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "plate_stiffness_d2_pa written in kPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "plate_stiffness_d2_mpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "plate_stiffness_d2_pa written in MPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "plate_stiffness_d2_n_mm2": {
          "$ref": "#/$defs/number_from_0",
          "description": "plate_stiffness_d2_pa written in N/mm2; the reader converts the figure on its digits and keeps it in converted."
        },
        "plate_stiffness_d3_gpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "plate_stiffness_d3_pa written in GPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "plate_stiffness_d3_kpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "plate_stiffness_d3_pa written in kPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "plate_stiffness_d3_mpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "plate_stiffness_d3_pa written in MPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "plate_stiffness_d3_n_mm2": {
          "$ref": "#/$defs/number_from_0",
          "description": "plate_stiffness_d3_pa written in N/mm2; the reader converts the figure on its digits and keeps it in converted."
        },
        "plate_stiffness_d4_gpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "plate_stiffness_d4_pa written in GPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "plate_stiffness_d4_kpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "plate_stiffness_d4_pa written in kPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "plate_stiffness_d4_mpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "plate_stiffness_d4_pa written in MPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "plate_stiffness_d4_n_mm2": {
          "$ref": "#/$defs/number_from_0",
          "description": "plate_stiffness_d4_pa written in N/mm2; the reader converts the figure on its digits and keeps it in converted."
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "OrthotropicWood.cells": {
      "enum": [
        "density_kg_m3",
        "group",
        "name",
        "note",
        "plate_stiffness_d1_pa",
        "plate_stiffness_d2_pa",
        "plate_stiffness_d3_pa",
        "plate_stiffness_d4_pa",
        "relative_scaling_factor",
        "variant",
        "density_g_cm3",
        "plate_stiffness_d1_gpa",
        "plate_stiffness_d1_kpa",
        "plate_stiffness_d1_mpa",
        "plate_stiffness_d1_n_mm2",
        "plate_stiffness_d2_gpa",
        "plate_stiffness_d2_kpa",
        "plate_stiffness_d2_mpa",
        "plate_stiffness_d2_n_mm2",
        "plate_stiffness_d3_gpa",
        "plate_stiffness_d3_kpa",
        "plate_stiffness_d3_mpa",
        "plate_stiffness_d3_n_mm2",
        "plate_stiffness_d4_gpa",
        "plate_stiffness_d4_kpa",
        "plate_stiffness_d4_mpa",
        "plate_stiffness_d4_n_mm2"
      ],
      "description": "A field of OrthotropicWood that holds a cell of the page."
    },
    "OrthotropicWood.fields": {
      "enum": [
        "density_kg_m3",
        "plate_stiffness_d1_pa",
        "plate_stiffness_d2_pa",
        "plate_stiffness_d3_pa",
        "plate_stiffness_d4_pa",
        "relative_scaling_factor",
        "density_g_cm3",
        "plate_stiffness_d1_gpa",
        "plate_stiffness_d1_kpa",
        "plate_stiffness_d1_mpa",
        "plate_stiffness_d1_n_mm2",
        "plate_stiffness_d2_gpa",
        "plate_stiffness_d2_kpa",
        "plate_stiffness_d2_mpa",
        "plate_stiffness_d2_n_mm2",
        "plate_stiffness_d3_gpa",
        "plate_stiffness_d3_kpa",
        "plate_stiffness_d3_mpa",
        "plate_stiffness_d3_n_mm2",
        "plate_stiffness_d4_gpa",
        "plate_stiffness_d4_kpa",
        "plate_stiffness_d4_mpa",
        "plate_stiffness_d4_n_mm2"
      ],
      "description": "A numeric field of OrthotropicWood, or another unit of one."
    },
    "PlateauMaterial": {
      "type": "object",
      "title": "PlateauMaterial",
      "description": "One material's plateau-method constants, as a page printed them.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/PlateauMaterial.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/PlateauMaterial.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/PlateauMaterial.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/PlateauMaterial.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/PlateauMaterial.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/PlateauMaterial.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/PlateauMaterial.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/PlateauMaterial.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/PlateauMaterial.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/PlateauMaterial.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/PlateauMaterial.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/PlateauMaterial.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/PlateauMaterial.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/PlateauMaterial.fields"
                  }
                }
              }
            }
          ]
        },
        "surface_density_per_mm_kg_m2": {
          "$ref": "#/$defs/number_from_0"
        },
        "coincidence_height_db": {
          "$ref": "#/$defs/number"
        },
        "plateau_frequency_ratio": {
          "$ref": "#/$defs/number"
        },
        "surface_density_per_mm_g_m2": {
          "$ref": "#/$defs/number_from_0",
          "description": "surface_density_per_mm_kg_m2 written in g/m2; the reader converts the figure on its digits and keeps it in converted."
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "PlateauMaterial.cells": {
      "enum": [
        "coincidence_height_db",
        "group",
        "name",
        "note",
        "plateau_frequency_ratio",
        "surface_density_per_mm_kg_m2",
        "variant",
        "surface_density_per_mm_g_m2"
      ],
      "description": "A field of PlateauMaterial that holds a cell of the page."
    },
    "PlateauMaterial.fields": {
      "enum": [
        "coincidence_height_db",
        "plateau_frequency_ratio",
        "surface_density_per_mm_kg_m2",
        "surface_density_per_mm_g_m2"
      ],
      "description": "A numeric field of PlateauMaterial, or another unit of one."
    },
    "PorousMaterial": {
      "type": "object",
      "title": "PorousMaterial",
      "description": "One row of a published table of porous-material parameters.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/PorousMaterial.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/PorousMaterial.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/PorousMaterial.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/PorousMaterial.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/PorousMaterial.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/PorousMaterial.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/PorousMaterial.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/PorousMaterial.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/PorousMaterial.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/PorousMaterial.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/PorousMaterial.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/PorousMaterial.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/PorousMaterial.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/PorousMaterial.fields"
                  }
                }
              }
            }
          ]
        },
        "flow_resistivity_pa_s_m2": {
          "$ref": "#/$defs/number_from_0"
        },
        "porosity": {
          "$ref": "#/$defs/number_from_0_to_1"
        },
        "tortuosity": {
          "$ref": "#/$defs/number"
        },
        "viscous_length_um": {
          "$ref": "#/$defs/number_from_0"
        },
        "thermal_length_um": {
          "$ref": "#/$defs/number_from_0"
        },
        "thermal_permeability_m2": {
          "$ref": "#/$defs/number_from_0"
        },
        "fibre_diameter_um": {
          "$ref": "#/$defs/number_from_0"
        },
        "fibre_diameter_distribution_parameter": {
          "$ref": "#/$defs/number"
        },
        "shot_content_percent": {
          "$ref": "#/$defs/number_from_0_to_100"
        },
        "binder_content_percent": {
          "$ref": "#/$defs/number_from_0_to_100"
        },
        "frame_density_kg_m3": {
          "$ref": "#/$defs/number_from_0"
        },
        "thickness_mm": {
          "$ref": "#/$defs/number_from_0"
        },
        "youngs_modulus_pa": {
          "$ref": "#/$defs/number_from_0"
        },
        "shear_modulus_pa": {
          "$ref": "#/$defs/number_from_0"
        },
        "poisson_ratio": {
          "$ref": "#/$defs/number"
        },
        "structural_loss_factor": {
          "$ref": "#/$defs/number"
        },
        "fibre_diameter_cm": {
          "$ref": "#/$defs/number_from_0",
          "description": "fibre_diameter_um written in cm; the reader converts the figure on its digits and keeps it in converted."
        },
        "fibre_diameter_m": {
          "$ref": "#/$defs/number_from_0",
          "description": "fibre_diameter_um written in m; the reader converts the figure on its digits and keeps it in converted."
        },
        "fibre_diameter_mm": {
          "$ref": "#/$defs/number_from_0",
          "description": "fibre_diameter_um written in mm; the reader converts the figure on its digits and keeps it in converted."
        },
        "flow_resistivity_kpa_s_m2": {
          "$ref": "#/$defs/number_from_0",
          "description": "flow_resistivity_pa_s_m2 written in kPa s/m2; the reader converts the figure on its digits and keeps it in converted."
        },
        "frame_density_g_cm3": {
          "$ref": "#/$defs/number_from_0",
          "description": "frame_density_kg_m3 written in g/cm3; the reader converts the figure on its digits and keeps it in converted."
        },
        "shear_modulus_gpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "shear_modulus_pa written in GPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "shear_modulus_kpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "shear_modulus_pa written in kPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "shear_modulus_mpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "shear_modulus_pa written in MPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "shear_modulus_n_mm2": {
          "$ref": "#/$defs/number_from_0",
          "description": "shear_modulus_pa written in N/mm2; the reader converts the figure on its digits and keeps it in converted."
        },
        "thermal_length_cm": {
          "$ref": "#/$defs/number_from_0",
          "description": "thermal_length_um written in cm; the reader converts the figure on its digits and keeps it in converted."
        },
        "thermal_length_m": {
          "$ref": "#/$defs/number_from_0",
          "description": "thermal_length_um written in m; the reader converts the figure on its digits and keeps it in converted."
        },
        "thermal_length_mm": {
          "$ref": "#/$defs/number_from_0",
          "description": "thermal_length_um written in mm; the reader converts the figure on its digits and keeps it in converted."
        },
        "thickness_cm": {
          "$ref": "#/$defs/number_from_0",
          "description": "thickness_mm written in cm; the reader converts the figure on its digits and keeps it in converted."
        },
        "thickness_m": {
          "$ref": "#/$defs/number_from_0",
          "description": "thickness_mm written in m; the reader converts the figure on its digits and keeps it in converted."
        },
        "thickness_um": {
          "$ref": "#/$defs/number_from_0",
          "description": "thickness_mm written in µm; the reader converts the figure on its digits and keeps it in converted."
        },
        "viscous_length_cm": {
          "$ref": "#/$defs/number_from_0",
          "description": "viscous_length_um written in cm; the reader converts the figure on its digits and keeps it in converted."
        },
        "viscous_length_m": {
          "$ref": "#/$defs/number_from_0",
          "description": "viscous_length_um written in m; the reader converts the figure on its digits and keeps it in converted."
        },
        "viscous_length_mm": {
          "$ref": "#/$defs/number_from_0",
          "description": "viscous_length_um written in mm; the reader converts the figure on its digits and keeps it in converted."
        },
        "youngs_modulus_gpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "youngs_modulus_pa written in GPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "youngs_modulus_kpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "youngs_modulus_pa written in kPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "youngs_modulus_mpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "youngs_modulus_pa written in MPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "youngs_modulus_n_mm2": {
          "$ref": "#/$defs/number_from_0",
          "description": "youngs_modulus_pa written in N/mm2; the reader converts the figure on its digits and keeps it in converted."
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "PorousMaterial.cells": {
      "enum": [
        "binder_content_percent",
        "fibre_diameter_distribution_parameter",
        "fibre_diameter_um",
        "flow_resistivity_pa_s_m2",
        "frame_density_kg_m3",
        "group",
        "name",
        "note",
        "poisson_ratio",
        "porosity",
        "shear_modulus_pa",
        "shot_content_percent",
        "structural_loss_factor",
        "thermal_length_um",
        "thermal_permeability_m2",
        "thickness_mm",
        "tortuosity",
        "variant",
        "viscous_length_um",
        "youngs_modulus_pa",
        "fibre_diameter_cm",
        "fibre_diameter_m",
        "fibre_diameter_mm",
        "flow_resistivity_kpa_s_m2",
        "frame_density_g_cm3",
        "shear_modulus_gpa",
        "shear_modulus_kpa",
        "shear_modulus_mpa",
        "shear_modulus_n_mm2",
        "thermal_length_cm",
        "thermal_length_m",
        "thermal_length_mm",
        "thickness_cm",
        "thickness_m",
        "thickness_um",
        "viscous_length_cm",
        "viscous_length_m",
        "viscous_length_mm",
        "youngs_modulus_gpa",
        "youngs_modulus_kpa",
        "youngs_modulus_mpa",
        "youngs_modulus_n_mm2"
      ],
      "description": "A field of PorousMaterial that holds a cell of the page."
    },
    "PorousMaterial.fields": {
      "enum": [
        "binder_content_percent",
        "fibre_diameter_distribution_parameter",
        "fibre_diameter_um",
        "flow_resistivity_pa_s_m2",
        "frame_density_kg_m3",
        "poisson_ratio",
        "porosity",
        "shear_modulus_pa",
        "shot_content_percent",
        "structural_loss_factor",
        "thermal_length_um",
        "thermal_permeability_m2",
        "thickness_mm",
        "tortuosity",
        "viscous_length_um",
        "youngs_modulus_pa",
        "fibre_diameter_cm",
        "fibre_diameter_m",
        "fibre_diameter_mm",
        "flow_resistivity_kpa_s_m2",
        "frame_density_g_cm3",
        "shear_modulus_gpa",
        "shear_modulus_kpa",
        "shear_modulus_mpa",
        "shear_modulus_n_mm2",
        "thermal_length_cm",
        "thermal_length_m",
        "thermal_length_mm",
        "thickness_cm",
        "thickness_m",
        "thickness_um",
        "viscous_length_cm",
        "viscous_length_m",
        "viscous_length_mm",
        "youngs_modulus_gpa",
        "youngs_modulus_kpa",
        "youngs_modulus_mpa",
        "youngs_modulus_n_mm2"
      ],
      "description": "A numeric field of PorousMaterial, or another unit of one."
    },
    "PracticalAbsorptionSpectrum": {
      "type": "object",
      "title": "PracticalAbsorptionSpectrum",
      "description": "One specimen of a data sheet, with its practical coefficient per octave.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/PracticalAbsorptionSpectrum.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/PracticalAbsorptionSpectrum.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/PracticalAbsorptionSpectrum.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/PracticalAbsorptionSpectrum.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/PracticalAbsorptionSpectrum.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/PracticalAbsorptionSpectrum.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/PracticalAbsorptionSpectrum.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/PracticalAbsorptionSpectrum.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/PracticalAbsorptionSpectrum.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/PracticalAbsorptionSpectrum.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/PracticalAbsorptionSpectrum.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/PracticalAbsorptionSpectrum.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/PracticalAbsorptionSpectrum.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/PracticalAbsorptionSpectrum.fields"
                  }
                }
              }
            }
          ]
        },
        "weighted_absorption_coefficient": {
          "$ref": "#/$defs/number"
        },
        "shape_indicator": {
          "$ref": "#/$defs/text"
        },
        "absorption_class": {
          "$ref": "#/$defs/text"
        },
        "noise_reduction_coefficient": {
          "$ref": "#/$defs/number"
        },
        "mounting": {
          "$ref": "#/$defs/text"
        },
        "thickness_mm": {
          "$ref": "#/$defs/number_from_0"
        },
        "construction_depth_mm": {
          "$ref": "#/$defs/number_from_0"
        },
        "practical_absorption_coefficient_125": {
          "$ref": "#/$defs/number"
        },
        "practical_absorption_coefficient_250": {
          "$ref": "#/$defs/number"
        },
        "practical_absorption_coefficient_500": {
          "$ref": "#/$defs/number"
        },
        "practical_absorption_coefficient_1000": {
          "$ref": "#/$defs/number"
        },
        "practical_absorption_coefficient_2000": {
          "$ref": "#/$defs/number"
        },
        "practical_absorption_coefficient_4000": {
          "$ref": "#/$defs/number"
        },
        "construction_depth_cm": {
          "$ref": "#/$defs/number_from_0",
          "description": "construction_depth_mm written in cm; the reader converts the figure on its digits and keeps it in converted."
        },
        "construction_depth_m": {
          "$ref": "#/$defs/number_from_0",
          "description": "construction_depth_mm written in m; the reader converts the figure on its digits and keeps it in converted."
        },
        "construction_depth_um": {
          "$ref": "#/$defs/number_from_0",
          "description": "construction_depth_mm written in µm; the reader converts the figure on its digits and keeps it in converted."
        },
        "thickness_cm": {
          "$ref": "#/$defs/number_from_0",
          "description": "thickness_mm written in cm; the reader converts the figure on its digits and keeps it in converted."
        },
        "thickness_m": {
          "$ref": "#/$defs/number_from_0",
          "description": "thickness_mm written in m; the reader converts the figure on its digits and keeps it in converted."
        },
        "thickness_um": {
          "$ref": "#/$defs/number_from_0",
          "description": "thickness_mm written in µm; the reader converts the figure on its digits and keeps it in converted."
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "PracticalAbsorptionSpectrum.cells": {
      "enum": [
        "absorption_class",
        "construction_depth_mm",
        "group",
        "mounting",
        "name",
        "noise_reduction_coefficient",
        "note",
        "practical_absorption_coefficient_1000",
        "practical_absorption_coefficient_125",
        "practical_absorption_coefficient_2000",
        "practical_absorption_coefficient_250",
        "practical_absorption_coefficient_4000",
        "practical_absorption_coefficient_500",
        "shape_indicator",
        "thickness_mm",
        "variant",
        "weighted_absorption_coefficient",
        "construction_depth_cm",
        "construction_depth_m",
        "construction_depth_um",
        "thickness_cm",
        "thickness_m",
        "thickness_um"
      ],
      "description": "A field of PracticalAbsorptionSpectrum that holds a cell of the page."
    },
    "PracticalAbsorptionSpectrum.fields": {
      "enum": [
        "construction_depth_mm",
        "noise_reduction_coefficient",
        "practical_absorption_coefficient_1000",
        "practical_absorption_coefficient_125",
        "practical_absorption_coefficient_2000",
        "practical_absorption_coefficient_250",
        "practical_absorption_coefficient_4000",
        "practical_absorption_coefficient_500",
        "thickness_mm",
        "weighted_absorption_coefficient",
        "construction_depth_cm",
        "construction_depth_m",
        "construction_depth_um",
        "thickness_cm",
        "thickness_m",
        "thickness_um"
      ],
      "description": "A numeric field of PracticalAbsorptionSpectrum, or another unit of one."
    },
    "PredictedScatteringSpectrum": {
      "type": "object",
      "title": "PredictedScatteringSpectrum",
      "description": "One computed surface at one angle, band by band.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/PredictedScatteringSpectrum.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/PredictedScatteringSpectrum.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/PredictedScatteringSpectrum.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/PredictedScatteringSpectrum.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/PredictedScatteringSpectrum.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/PredictedScatteringSpectrum.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/PredictedScatteringSpectrum.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/PredictedScatteringSpectrum.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/PredictedScatteringSpectrum.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/PredictedScatteringSpectrum.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/PredictedScatteringSpectrum.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/PredictedScatteringSpectrum.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/PredictedScatteringSpectrum.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/PredictedScatteringSpectrum.fields"
                  }
                }
              }
            }
          ]
        },
        "scattering_coefficient_100": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_125": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_160": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_200": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_250": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_315": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_400": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_500": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_630": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_800": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_1000": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_1250": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_1600": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_2000": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_2500": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_3150": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_4000": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_5000": {
          "$ref": "#/$defs/number"
        },
        "angle_of_incidence_deg": {
          "$ref": "#/$defs/number"
        },
        "model": {
          "$ref": "#/$defs/text"
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "PredictedScatteringSpectrum.cells": {
      "enum": [
        "angle_of_incidence_deg",
        "group",
        "model",
        "name",
        "note",
        "scattering_coefficient_100",
        "scattering_coefficient_1000",
        "scattering_coefficient_125",
        "scattering_coefficient_1250",
        "scattering_coefficient_160",
        "scattering_coefficient_1600",
        "scattering_coefficient_200",
        "scattering_coefficient_2000",
        "scattering_coefficient_250",
        "scattering_coefficient_2500",
        "scattering_coefficient_315",
        "scattering_coefficient_3150",
        "scattering_coefficient_400",
        "scattering_coefficient_4000",
        "scattering_coefficient_500",
        "scattering_coefficient_5000",
        "scattering_coefficient_630",
        "scattering_coefficient_800",
        "variant"
      ],
      "description": "A field of PredictedScatteringSpectrum that holds a cell of the page."
    },
    "PredictedScatteringSpectrum.fields": {
      "enum": [
        "angle_of_incidence_deg",
        "scattering_coefficient_100",
        "scattering_coefficient_1000",
        "scattering_coefficient_125",
        "scattering_coefficient_1250",
        "scattering_coefficient_160",
        "scattering_coefficient_1600",
        "scattering_coefficient_200",
        "scattering_coefficient_2000",
        "scattering_coefficient_250",
        "scattering_coefficient_2500",
        "scattering_coefficient_315",
        "scattering_coefficient_3150",
        "scattering_coefficient_400",
        "scattering_coefficient_4000",
        "scattering_coefficient_500",
        "scattering_coefficient_5000",
        "scattering_coefficient_630",
        "scattering_coefficient_800"
      ],
      "description": "A numeric field of PredictedScatteringSpectrum, or another unit of one."
    },
    "ResilientLayer": {
      "type": "object",
      "title": "ResilientLayer",
      "description": "A resilient layer under a floating floor, as its source prints it.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/ResilientLayer.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/ResilientLayer.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/ResilientLayer.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/ResilientLayer.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/ResilientLayer.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/ResilientLayer.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/ResilientLayer.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/ResilientLayer.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/ResilientLayer.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/ResilientLayer.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/ResilientLayer.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/ResilientLayer.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/ResilientLayer.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/ResilientLayer.fields"
                  }
                }
              }
            }
          ]
        },
        "dynamic_stiffness_n_m3": {
          "$ref": "#/$defs/number_from_0"
        },
        "apparent_dynamic_stiffness_n_m3": {
          "$ref": "#/$defs/number_from_0"
        },
        "density_kg_m3": {
          "$ref": "#/$defs/number_from_0"
        },
        "thickness_mm": {
          "$ref": "#/$defs/number_from_0"
        },
        "apparent_dynamic_stiffness_mn_m3": {
          "$ref": "#/$defs/number_from_0",
          "description": "apparent_dynamic_stiffness_n_m3 written in MN/m3; the reader converts the figure on its digits and keeps it in converted."
        },
        "density_g_cm3": {
          "$ref": "#/$defs/number_from_0",
          "description": "density_kg_m3 written in g/cm3; the reader converts the figure on its digits and keeps it in converted."
        },
        "dynamic_stiffness_mn_m3": {
          "$ref": "#/$defs/number_from_0",
          "description": "dynamic_stiffness_n_m3 written in MN/m3; the reader converts the figure on its digits and keeps it in converted."
        },
        "thickness_cm": {
          "$ref": "#/$defs/number_from_0",
          "description": "thickness_mm written in cm; the reader converts the figure on its digits and keeps it in converted."
        },
        "thickness_m": {
          "$ref": "#/$defs/number_from_0",
          "description": "thickness_mm written in m; the reader converts the figure on its digits and keeps it in converted."
        },
        "thickness_um": {
          "$ref": "#/$defs/number_from_0",
          "description": "thickness_mm written in µm; the reader converts the figure on its digits and keeps it in converted."
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "ResilientLayer.cells": {
      "enum": [
        "apparent_dynamic_stiffness_n_m3",
        "density_kg_m3",
        "dynamic_stiffness_n_m3",
        "group",
        "name",
        "note",
        "thickness_mm",
        "variant",
        "apparent_dynamic_stiffness_mn_m3",
        "density_g_cm3",
        "dynamic_stiffness_mn_m3",
        "thickness_cm",
        "thickness_m",
        "thickness_um"
      ],
      "description": "A field of ResilientLayer that holds a cell of the page."
    },
    "ResilientLayer.fields": {
      "enum": [
        "apparent_dynamic_stiffness_n_m3",
        "density_kg_m3",
        "dynamic_stiffness_n_m3",
        "thickness_mm",
        "apparent_dynamic_stiffness_mn_m3",
        "density_g_cm3",
        "dynamic_stiffness_mn_m3",
        "thickness_cm",
        "thickness_m",
        "thickness_um"
      ],
      "description": "A numeric field of ResilientLayer, or another unit of one."
    },
    "ResilientMaterial": {
      "type": "object",
      "title": "ResilientMaterial",
      "description": "One resilient material's dynamic modulus, as a page printed it.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/ResilientMaterial.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/ResilientMaterial.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/ResilientMaterial.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/ResilientMaterial.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/ResilientMaterial.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/ResilientMaterial.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/ResilientMaterial.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/ResilientMaterial.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/ResilientMaterial.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/ResilientMaterial.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/ResilientMaterial.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/ResilientMaterial.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/ResilientMaterial.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/ResilientMaterial.fields"
                  }
                }
              }
            }
          ]
        },
        "density_kg_m3": {
          "$ref": "#/$defs/number_from_0"
        },
        "dynamic_youngs_modulus_pa": {
          "$ref": "#/$defs/number_from_0"
        },
        "static_load_pa": {
          "$ref": "#/$defs/number_from_0"
        },
        "density_g_cm3": {
          "$ref": "#/$defs/number_from_0",
          "description": "density_kg_m3 written in g/cm3; the reader converts the figure on its digits and keeps it in converted."
        },
        "dynamic_youngs_modulus_gpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "dynamic_youngs_modulus_pa written in GPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "dynamic_youngs_modulus_kpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "dynamic_youngs_modulus_pa written in kPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "dynamic_youngs_modulus_mpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "dynamic_youngs_modulus_pa written in MPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "dynamic_youngs_modulus_n_mm2": {
          "$ref": "#/$defs/number_from_0",
          "description": "dynamic_youngs_modulus_pa written in N/mm2; the reader converts the figure on its digits and keeps it in converted."
        },
        "static_load_gpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "static_load_pa written in GPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "static_load_kpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "static_load_pa written in kPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "static_load_mpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "static_load_pa written in MPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "static_load_n_mm2": {
          "$ref": "#/$defs/number_from_0",
          "description": "static_load_pa written in N/mm2; the reader converts the figure on its digits and keeps it in converted."
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "ResilientMaterial.cells": {
      "enum": [
        "density_kg_m3",
        "dynamic_youngs_modulus_pa",
        "group",
        "name",
        "note",
        "static_load_pa",
        "variant",
        "density_g_cm3",
        "dynamic_youngs_modulus_gpa",
        "dynamic_youngs_modulus_kpa",
        "dynamic_youngs_modulus_mpa",
        "dynamic_youngs_modulus_n_mm2",
        "static_load_gpa",
        "static_load_kpa",
        "static_load_mpa",
        "static_load_n_mm2"
      ],
      "description": "A field of ResilientMaterial that holds a cell of the page."
    },
    "ResilientMaterial.fields": {
      "enum": [
        "density_kg_m3",
        "dynamic_youngs_modulus_pa",
        "static_load_pa",
        "density_g_cm3",
        "dynamic_youngs_modulus_gpa",
        "dynamic_youngs_modulus_kpa",
        "dynamic_youngs_modulus_mpa",
        "dynamic_youngs_modulus_n_mm2",
        "static_load_gpa",
        "static_load_kpa",
        "static_load_mpa",
        "static_load_n_mm2"
      ],
      "description": "A numeric field of ResilientMaterial, or another unit of one."
    },
    "ResistiveSheet": {
      "type": "object",
      "title": "ResistiveSheet",
      "description": "One thin resistive facing, as its published table prints it.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/ResistiveSheet.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/ResistiveSheet.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/ResistiveSheet.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/ResistiveSheet.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/ResistiveSheet.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/ResistiveSheet.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/ResistiveSheet.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/ResistiveSheet.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/ResistiveSheet.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/ResistiveSheet.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/ResistiveSheet.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/ResistiveSheet.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/ResistiveSheet.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/ResistiveSheet.fields"
                  }
                }
              }
            }
          ]
        },
        "specific_flow_resistance_pa_s_m": {
          "$ref": "#/$defs/number_from_0"
        },
        "normalized_flow_resistance": {
          "$ref": "#/$defs/number"
        },
        "wires_per_cm": {
          "$ref": "#/$defs/number_from_0"
        },
        "wire_diameter_um": {
          "$ref": "#/$defs/number_from_0"
        },
        "weave_construction": {
          "$ref": "#/$defs/text"
        },
        "thickness_mm": {
          "$ref": "#/$defs/number_from_0"
        },
        "mass_per_area_kg_m2": {
          "$ref": "#/$defs/number_from_0"
        },
        "surface_density_g_m2": {
          "$ref": "#/$defs/number_from_0"
        },
        "nonlinearity_factor": {
          "$ref": "#/$defs/number"
        },
        "mass_per_area_g_m2": {
          "$ref": "#/$defs/number_from_0",
          "description": "mass_per_area_kg_m2 written in g/m2; the reader converts the figure on its digits and keeps it in converted."
        },
        "surface_density_kg_m2": {
          "$ref": "#/$defs/number_from_0",
          "description": "surface_density_g_m2 written in kg/m2; the reader converts the figure on its digits and keeps it in converted."
        },
        "thickness_cm": {
          "$ref": "#/$defs/number_from_0",
          "description": "thickness_mm written in cm; the reader converts the figure on its digits and keeps it in converted."
        },
        "thickness_m": {
          "$ref": "#/$defs/number_from_0",
          "description": "thickness_mm written in m; the reader converts the figure on its digits and keeps it in converted."
        },
        "thickness_um": {
          "$ref": "#/$defs/number_from_0",
          "description": "thickness_mm written in µm; the reader converts the figure on its digits and keeps it in converted."
        },
        "wire_diameter_cm": {
          "$ref": "#/$defs/number_from_0",
          "description": "wire_diameter_um written in cm; the reader converts the figure on its digits and keeps it in converted."
        },
        "wire_diameter_m": {
          "$ref": "#/$defs/number_from_0",
          "description": "wire_diameter_um written in m; the reader converts the figure on its digits and keeps it in converted."
        },
        "wire_diameter_mm": {
          "$ref": "#/$defs/number_from_0",
          "description": "wire_diameter_um written in mm; the reader converts the figure on its digits and keeps it in converted."
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "ResistiveSheet.cells": {
      "enum": [
        "group",
        "mass_per_area_kg_m2",
        "name",
        "nonlinearity_factor",
        "normalized_flow_resistance",
        "note",
        "specific_flow_resistance_pa_s_m",
        "surface_density_g_m2",
        "thickness_mm",
        "variant",
        "weave_construction",
        "wire_diameter_um",
        "wires_per_cm",
        "mass_per_area_g_m2",
        "surface_density_kg_m2",
        "thickness_cm",
        "thickness_m",
        "thickness_um",
        "wire_diameter_cm",
        "wire_diameter_m",
        "wire_diameter_mm"
      ],
      "description": "A field of ResistiveSheet that holds a cell of the page."
    },
    "ResistiveSheet.fields": {
      "enum": [
        "mass_per_area_kg_m2",
        "nonlinearity_factor",
        "normalized_flow_resistance",
        "specific_flow_resistance_pa_s_m",
        "surface_density_g_m2",
        "thickness_mm",
        "wire_diameter_um",
        "wires_per_cm",
        "mass_per_area_g_m2",
        "surface_density_kg_m2",
        "thickness_cm",
        "thickness_m",
        "thickness_um",
        "wire_diameter_cm",
        "wire_diameter_m",
        "wire_diameter_mm"
      ],
      "description": "A numeric field of ResistiveSheet, or another unit of one."
    },
    "ScatteringCoefficientSpectrum": {
      "type": "object",
      "title": "ScatteringCoefficientSpectrum",
      "description": "One measured surface of a published table, band by band.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/ScatteringCoefficientSpectrum.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/ScatteringCoefficientSpectrum.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/ScatteringCoefficientSpectrum.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/ScatteringCoefficientSpectrum.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/ScatteringCoefficientSpectrum.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/ScatteringCoefficientSpectrum.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/ScatteringCoefficientSpectrum.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/ScatteringCoefficientSpectrum.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/ScatteringCoefficientSpectrum.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/ScatteringCoefficientSpectrum.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/ScatteringCoefficientSpectrum.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/ScatteringCoefficientSpectrum.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/ScatteringCoefficientSpectrum.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/ScatteringCoefficientSpectrum.fields"
                  }
                }
              }
            }
          ]
        },
        "scattering_coefficient_100": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_125": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_160": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_200": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_250": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_315": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_400": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_500": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_630": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_800": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_1000": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_1250": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_1600": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_2000": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_2500": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_3150": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_4000": {
          "$ref": "#/$defs/number"
        },
        "scattering_coefficient_5000": {
          "$ref": "#/$defs/number"
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "ScatteringCoefficientSpectrum.cells": {
      "enum": [
        "group",
        "name",
        "note",
        "scattering_coefficient_100",
        "scattering_coefficient_1000",
        "scattering_coefficient_125",
        "scattering_coefficient_1250",
        "scattering_coefficient_160",
        "scattering_coefficient_1600",
        "scattering_coefficient_200",
        "scattering_coefficient_2000",
        "scattering_coefficient_250",
        "scattering_coefficient_2500",
        "scattering_coefficient_315",
        "scattering_coefficient_3150",
        "scattering_coefficient_400",
        "scattering_coefficient_4000",
        "scattering_coefficient_500",
        "scattering_coefficient_5000",
        "scattering_coefficient_630",
        "scattering_coefficient_800",
        "variant"
      ],
      "description": "A field of ScatteringCoefficientSpectrum that holds a cell of the page."
    },
    "ScatteringCoefficientSpectrum.fields": {
      "enum": [
        "scattering_coefficient_100",
        "scattering_coefficient_1000",
        "scattering_coefficient_125",
        "scattering_coefficient_1250",
        "scattering_coefficient_160",
        "scattering_coefficient_1600",
        "scattering_coefficient_200",
        "scattering_coefficient_2000",
        "scattering_coefficient_250",
        "scattering_coefficient_2500",
        "scattering_coefficient_315",
        "scattering_coefficient_3150",
        "scattering_coefficient_400",
        "scattering_coefficient_4000",
        "scattering_coefficient_500",
        "scattering_coefficient_5000",
        "scattering_coefficient_630",
        "scattering_coefficient_800"
      ],
      "description": "A numeric field of ScatteringCoefficientSpectrum, or another unit of one."
    },
    "SolidMaterial": {
      "type": "object",
      "title": "SolidMaterial",
      "description": "One row of a published materials table, with what the cell said.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/SolidMaterial.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/SolidMaterial.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/SolidMaterial.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/SolidMaterial.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/SolidMaterial.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/SolidMaterial.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/SolidMaterial.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/SolidMaterial.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/SolidMaterial.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/SolidMaterial.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/SolidMaterial.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/SolidMaterial.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/SolidMaterial.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/SolidMaterial.fields"
                  }
                }
              }
            }
          ]
        },
        "density_kg_m3": {
          "$ref": "#/$defs/number_from_0"
        },
        "youngs_modulus_pa": {
          "$ref": "#/$defs/number_from_0"
        },
        "shear_modulus_pa": {
          "$ref": "#/$defs/number_from_0"
        },
        "poisson_ratio": {
          "$ref": "#/$defs/number"
        },
        "longitudinal_speed_m_s": {
          "$ref": "#/$defs/number_from_0"
        },
        "bar_longitudinal_speed_m_s": {
          "$ref": "#/$defs/number_from_0"
        },
        "plate_longitudinal_speed_m_s": {
          "$ref": "#/$defs/number_from_0"
        },
        "bulk_longitudinal_speed_m_s": {
          "$ref": "#/$defs/number_from_0"
        },
        "transverse_speed_m_s": {
          "$ref": "#/$defs/number_from_0"
        },
        "loss_factor": {
          "$ref": "#/$defs/number"
        },
        "flexural_loss_factor": {
          "$ref": "#/$defs/number"
        },
        "longitudinal_loss_factor": {
          "$ref": "#/$defs/number"
        },
        "in_situ_loss_factor": {
          "$ref": "#/$defs/number"
        },
        "thickness_critical_frequency_product_m_hz": {
          "$ref": "#/$defs/number_from_0"
        },
        "borrowed": {
          "$ref": "#/$defs/hedge.borrowed",
          "propertyNames": {
            "$ref": "#/$defs/SolidMaterial.fields"
          }
        },
        "density_g_cm3": {
          "$ref": "#/$defs/number_from_0",
          "description": "density_kg_m3 written in g/cm3; the reader converts the figure on its digits and keeps it in converted."
        },
        "shear_modulus_gpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "shear_modulus_pa written in GPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "shear_modulus_kpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "shear_modulus_pa written in kPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "shear_modulus_mpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "shear_modulus_pa written in MPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "shear_modulus_n_mm2": {
          "$ref": "#/$defs/number_from_0",
          "description": "shear_modulus_pa written in N/mm2; the reader converts the figure on its digits and keeps it in converted."
        },
        "youngs_modulus_gpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "youngs_modulus_pa written in GPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "youngs_modulus_kpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "youngs_modulus_pa written in kPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "youngs_modulus_mpa": {
          "$ref": "#/$defs/number_from_0",
          "description": "youngs_modulus_pa written in MPa; the reader converts the figure on its digits and keeps it in converted."
        },
        "youngs_modulus_n_mm2": {
          "$ref": "#/$defs/number_from_0",
          "description": "youngs_modulus_pa written in N/mm2; the reader converts the figure on its digits and keeps it in converted."
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "SolidMaterial.cells": {
      "enum": [
        "bar_longitudinal_speed_m_s",
        "bulk_longitudinal_speed_m_s",
        "density_kg_m3",
        "flexural_loss_factor",
        "group",
        "in_situ_loss_factor",
        "longitudinal_loss_factor",
        "longitudinal_speed_m_s",
        "loss_factor",
        "name",
        "note",
        "plate_longitudinal_speed_m_s",
        "poisson_ratio",
        "shear_modulus_pa",
        "thickness_critical_frequency_product_m_hz",
        "transverse_speed_m_s",
        "variant",
        "youngs_modulus_pa",
        "density_g_cm3",
        "shear_modulus_gpa",
        "shear_modulus_kpa",
        "shear_modulus_mpa",
        "shear_modulus_n_mm2",
        "youngs_modulus_gpa",
        "youngs_modulus_kpa",
        "youngs_modulus_mpa",
        "youngs_modulus_n_mm2"
      ],
      "description": "A field of SolidMaterial that holds a cell of the page."
    },
    "SolidMaterial.fields": {
      "enum": [
        "bar_longitudinal_speed_m_s",
        "bulk_longitudinal_speed_m_s",
        "density_kg_m3",
        "flexural_loss_factor",
        "in_situ_loss_factor",
        "longitudinal_loss_factor",
        "longitudinal_speed_m_s",
        "loss_factor",
        "plate_longitudinal_speed_m_s",
        "poisson_ratio",
        "shear_modulus_pa",
        "thickness_critical_frequency_product_m_hz",
        "transverse_speed_m_s",
        "youngs_modulus_pa",
        "density_g_cm3",
        "shear_modulus_gpa",
        "shear_modulus_kpa",
        "shear_modulus_mpa",
        "shear_modulus_n_mm2",
        "youngs_modulus_gpa",
        "youngs_modulus_kpa",
        "youngs_modulus_mpa",
        "youngs_modulus_n_mm2"
      ],
      "description": "A numeric field of SolidMaterial, or another unit of one."
    },
    "SolidNonlinearity": {
      "type": "object",
      "title": "SolidNonlinearity",
      "description": "One solid's ultrasonic nonlinearity parameter, as a page printed it.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/SolidNonlinearity.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/SolidNonlinearity.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/SolidNonlinearity.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/SolidNonlinearity.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/SolidNonlinearity.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/SolidNonlinearity.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/SolidNonlinearity.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/SolidNonlinearity.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/SolidNonlinearity.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/SolidNonlinearity.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/SolidNonlinearity.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/SolidNonlinearity.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/SolidNonlinearity.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/SolidNonlinearity.fields"
                  }
                }
              }
            }
          ]
        },
        "nonlinearity_parameter": {
          "$ref": "#/$defs/number"
        },
        "bonding": {
          "$ref": "#/$defs/text"
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "SolidNonlinearity.cells": {
      "enum": [
        "bonding",
        "group",
        "name",
        "nonlinearity_parameter",
        "note",
        "variant"
      ],
      "description": "A field of SolidNonlinearity that holds a cell of the page."
    },
    "SolidNonlinearity.fields": {
      "enum": [
        "nonlinearity_parameter"
      ],
      "description": "A numeric field of SolidNonlinearity, or another unit of one."
    },
    "SoundReductionSpectrum": {
      "type": "object",
      "title": "SoundReductionSpectrum",
      "description": "One element of a laboratory report, with its sound reduction index.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/SoundReductionSpectrum.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/SoundReductionSpectrum.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/SoundReductionSpectrum.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/SoundReductionSpectrum.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/SoundReductionSpectrum.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/SoundReductionSpectrum.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/SoundReductionSpectrum.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/SoundReductionSpectrum.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/SoundReductionSpectrum.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/SoundReductionSpectrum.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/SoundReductionSpectrum.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/SoundReductionSpectrum.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/SoundReductionSpectrum.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/SoundReductionSpectrum.fields"
                  }
                }
              }
            }
          ]
        },
        "sound_reduction_index_50_db": {
          "$ref": "#/$defs/number"
        },
        "sound_reduction_index_63_db": {
          "$ref": "#/$defs/number"
        },
        "sound_reduction_index_80_db": {
          "$ref": "#/$defs/number"
        },
        "sound_reduction_index_100_db": {
          "$ref": "#/$defs/number"
        },
        "sound_reduction_index_125_db": {
          "$ref": "#/$defs/number"
        },
        "sound_reduction_index_160_db": {
          "$ref": "#/$defs/number"
        },
        "sound_reduction_index_200_db": {
          "$ref": "#/$defs/number"
        },
        "sound_reduction_index_250_db": {
          "$ref": "#/$defs/number"
        },
        "sound_reduction_index_315_db": {
          "$ref": "#/$defs/number"
        },
        "sound_reduction_index_400_db": {
          "$ref": "#/$defs/number"
        },
        "sound_reduction_index_500_db": {
          "$ref": "#/$defs/number"
        },
        "sound_reduction_index_630_db": {
          "$ref": "#/$defs/number"
        },
        "sound_reduction_index_800_db": {
          "$ref": "#/$defs/number"
        },
        "sound_reduction_index_1000_db": {
          "$ref": "#/$defs/number"
        },
        "sound_reduction_index_1250_db": {
          "$ref": "#/$defs/number"
        },
        "sound_reduction_index_1600_db": {
          "$ref": "#/$defs/number"
        },
        "sound_reduction_index_2000_db": {
          "$ref": "#/$defs/number"
        },
        "sound_reduction_index_2500_db": {
          "$ref": "#/$defs/number"
        },
        "sound_reduction_index_3150_db": {
          "$ref": "#/$defs/number"
        },
        "sound_reduction_index_4000_db": {
          "$ref": "#/$defs/number"
        },
        "sound_reduction_index_5000_db": {
          "$ref": "#/$defs/number"
        },
        "weighted_sound_reduction_index_db": {
          "$ref": "#/$defs/number"
        },
        "spectrum_adaptation_term_db": {
          "$ref": "#/$defs/number"
        },
        "traffic_spectrum_adaptation_term_db": {
          "$ref": "#/$defs/number"
        },
        "spectrum_adaptation_term_50_3150_db": {
          "$ref": "#/$defs/number"
        },
        "spectrum_adaptation_term_50_5000_db": {
          "$ref": "#/$defs/number"
        },
        "spectrum_adaptation_term_100_5000_db": {
          "$ref": "#/$defs/number"
        },
        "traffic_spectrum_adaptation_term_50_3150_db": {
          "$ref": "#/$defs/number"
        },
        "traffic_spectrum_adaptation_term_50_5000_db": {
          "$ref": "#/$defs/number"
        },
        "traffic_spectrum_adaptation_term_100_5000_db": {
          "$ref": "#/$defs/number"
        },
        "surface_density_kg_m2": {
          "$ref": "#/$defs/number_from_0"
        },
        "thickness_mm": {
          "$ref": "#/$defs/number_from_0"
        },
        "construction": {
          "$ref": "#/$defs/text"
        },
        "surface_density_g_m2": {
          "$ref": "#/$defs/number_from_0",
          "description": "surface_density_kg_m2 written in g/m2; the reader converts the figure on its digits and keeps it in converted."
        },
        "thickness_cm": {
          "$ref": "#/$defs/number_from_0",
          "description": "thickness_mm written in cm; the reader converts the figure on its digits and keeps it in converted."
        },
        "thickness_m": {
          "$ref": "#/$defs/number_from_0",
          "description": "thickness_mm written in m; the reader converts the figure on its digits and keeps it in converted."
        },
        "thickness_um": {
          "$ref": "#/$defs/number_from_0",
          "description": "thickness_mm written in µm; the reader converts the figure on its digits and keeps it in converted."
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "SoundReductionSpectrum.cells": {
      "enum": [
        "construction",
        "group",
        "name",
        "note",
        "sound_reduction_index_1000_db",
        "sound_reduction_index_100_db",
        "sound_reduction_index_1250_db",
        "sound_reduction_index_125_db",
        "sound_reduction_index_1600_db",
        "sound_reduction_index_160_db",
        "sound_reduction_index_2000_db",
        "sound_reduction_index_200_db",
        "sound_reduction_index_2500_db",
        "sound_reduction_index_250_db",
        "sound_reduction_index_3150_db",
        "sound_reduction_index_315_db",
        "sound_reduction_index_4000_db",
        "sound_reduction_index_400_db",
        "sound_reduction_index_5000_db",
        "sound_reduction_index_500_db",
        "sound_reduction_index_50_db",
        "sound_reduction_index_630_db",
        "sound_reduction_index_63_db",
        "sound_reduction_index_800_db",
        "sound_reduction_index_80_db",
        "spectrum_adaptation_term_100_5000_db",
        "spectrum_adaptation_term_50_3150_db",
        "spectrum_adaptation_term_50_5000_db",
        "spectrum_adaptation_term_db",
        "surface_density_kg_m2",
        "thickness_mm",
        "traffic_spectrum_adaptation_term_100_5000_db",
        "traffic_spectrum_adaptation_term_50_3150_db",
        "traffic_spectrum_adaptation_term_50_5000_db",
        "traffic_spectrum_adaptation_term_db",
        "variant",
        "weighted_sound_reduction_index_db",
        "surface_density_g_m2",
        "thickness_cm",
        "thickness_m",
        "thickness_um"
      ],
      "description": "A field of SoundReductionSpectrum that holds a cell of the page."
    },
    "SoundReductionSpectrum.fields": {
      "enum": [
        "sound_reduction_index_1000_db",
        "sound_reduction_index_100_db",
        "sound_reduction_index_1250_db",
        "sound_reduction_index_125_db",
        "sound_reduction_index_1600_db",
        "sound_reduction_index_160_db",
        "sound_reduction_index_2000_db",
        "sound_reduction_index_200_db",
        "sound_reduction_index_2500_db",
        "sound_reduction_index_250_db",
        "sound_reduction_index_3150_db",
        "sound_reduction_index_315_db",
        "sound_reduction_index_4000_db",
        "sound_reduction_index_400_db",
        "sound_reduction_index_5000_db",
        "sound_reduction_index_500_db",
        "sound_reduction_index_50_db",
        "sound_reduction_index_630_db",
        "sound_reduction_index_63_db",
        "sound_reduction_index_800_db",
        "sound_reduction_index_80_db",
        "spectrum_adaptation_term_100_5000_db",
        "spectrum_adaptation_term_50_3150_db",
        "spectrum_adaptation_term_50_5000_db",
        "spectrum_adaptation_term_db",
        "surface_density_kg_m2",
        "thickness_mm",
        "traffic_spectrum_adaptation_term_100_5000_db",
        "traffic_spectrum_adaptation_term_50_3150_db",
        "traffic_spectrum_adaptation_term_50_5000_db",
        "traffic_spectrum_adaptation_term_db",
        "weighted_sound_reduction_index_db",
        "surface_density_g_m2",
        "thickness_cm",
        "thickness_m",
        "thickness_um"
      ],
      "description": "A numeric field of SoundReductionSpectrum, or another unit of one."
    },
    "ThirdOctaveAbsorptionSpectrum": {
      "type": "object",
      "title": "ThirdOctaveAbsorptionSpectrum",
      "description": "One specimen of a test report, with its coefficient per one-third octave.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/ThirdOctaveAbsorptionSpectrum.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/ThirdOctaveAbsorptionSpectrum.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/ThirdOctaveAbsorptionSpectrum.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/ThirdOctaveAbsorptionSpectrum.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/ThirdOctaveAbsorptionSpectrum.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/ThirdOctaveAbsorptionSpectrum.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/ThirdOctaveAbsorptionSpectrum.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/ThirdOctaveAbsorptionSpectrum.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/ThirdOctaveAbsorptionSpectrum.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/ThirdOctaveAbsorptionSpectrum.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/ThirdOctaveAbsorptionSpectrum.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/ThirdOctaveAbsorptionSpectrum.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/ThirdOctaveAbsorptionSpectrum.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/ThirdOctaveAbsorptionSpectrum.fields"
                  }
                }
              }
            }
          ]
        },
        "weighted_absorption_coefficient": {
          "$ref": "#/$defs/number"
        },
        "shape_indicator": {
          "$ref": "#/$defs/text"
        },
        "absorption_class": {
          "$ref": "#/$defs/text"
        },
        "noise_reduction_coefficient": {
          "$ref": "#/$defs/number"
        },
        "mounting": {
          "$ref": "#/$defs/text"
        },
        "thickness_mm": {
          "$ref": "#/$defs/number_from_0"
        },
        "construction_depth_mm": {
          "$ref": "#/$defs/number_from_0"
        },
        "absorption_coefficient_50": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_63": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_80": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_100": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_125": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_160": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_200": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_250": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_315": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_400": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_500": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_630": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_800": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_1000": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_1250": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_1600": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_2000": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_2500": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_3150": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_4000": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_5000": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_6300": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_8000": {
          "$ref": "#/$defs/number"
        },
        "absorption_coefficient_10000": {
          "$ref": "#/$defs/number"
        },
        "construction_depth_cm": {
          "$ref": "#/$defs/number_from_0",
          "description": "construction_depth_mm written in cm; the reader converts the figure on its digits and keeps it in converted."
        },
        "construction_depth_m": {
          "$ref": "#/$defs/number_from_0",
          "description": "construction_depth_mm written in m; the reader converts the figure on its digits and keeps it in converted."
        },
        "construction_depth_um": {
          "$ref": "#/$defs/number_from_0",
          "description": "construction_depth_mm written in µm; the reader converts the figure on its digits and keeps it in converted."
        },
        "thickness_cm": {
          "$ref": "#/$defs/number_from_0",
          "description": "thickness_mm written in cm; the reader converts the figure on its digits and keeps it in converted."
        },
        "thickness_m": {
          "$ref": "#/$defs/number_from_0",
          "description": "thickness_mm written in m; the reader converts the figure on its digits and keeps it in converted."
        },
        "thickness_um": {
          "$ref": "#/$defs/number_from_0",
          "description": "thickness_mm written in µm; the reader converts the figure on its digits and keeps it in converted."
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "ThirdOctaveAbsorptionSpectrum.cells": {
      "enum": [
        "absorption_class",
        "absorption_coefficient_100",
        "absorption_coefficient_1000",
        "absorption_coefficient_10000",
        "absorption_coefficient_125",
        "absorption_coefficient_1250",
        "absorption_coefficient_160",
        "absorption_coefficient_1600",
        "absorption_coefficient_200",
        "absorption_coefficient_2000",
        "absorption_coefficient_250",
        "absorption_coefficient_2500",
        "absorption_coefficient_315",
        "absorption_coefficient_3150",
        "absorption_coefficient_400",
        "absorption_coefficient_4000",
        "absorption_coefficient_50",
        "absorption_coefficient_500",
        "absorption_coefficient_5000",
        "absorption_coefficient_63",
        "absorption_coefficient_630",
        "absorption_coefficient_6300",
        "absorption_coefficient_80",
        "absorption_coefficient_800",
        "absorption_coefficient_8000",
        "construction_depth_mm",
        "group",
        "mounting",
        "name",
        "noise_reduction_coefficient",
        "note",
        "shape_indicator",
        "thickness_mm",
        "variant",
        "weighted_absorption_coefficient",
        "construction_depth_cm",
        "construction_depth_m",
        "construction_depth_um",
        "thickness_cm",
        "thickness_m",
        "thickness_um"
      ],
      "description": "A field of ThirdOctaveAbsorptionSpectrum that holds a cell of the page."
    },
    "ThirdOctaveAbsorptionSpectrum.fields": {
      "enum": [
        "absorption_coefficient_100",
        "absorption_coefficient_1000",
        "absorption_coefficient_10000",
        "absorption_coefficient_125",
        "absorption_coefficient_1250",
        "absorption_coefficient_160",
        "absorption_coefficient_1600",
        "absorption_coefficient_200",
        "absorption_coefficient_2000",
        "absorption_coefficient_250",
        "absorption_coefficient_2500",
        "absorption_coefficient_315",
        "absorption_coefficient_3150",
        "absorption_coefficient_400",
        "absorption_coefficient_4000",
        "absorption_coefficient_50",
        "absorption_coefficient_500",
        "absorption_coefficient_5000",
        "absorption_coefficient_63",
        "absorption_coefficient_630",
        "absorption_coefficient_6300",
        "absorption_coefficient_80",
        "absorption_coefficient_800",
        "absorption_coefficient_8000",
        "construction_depth_mm",
        "noise_reduction_coefficient",
        "thickness_mm",
        "weighted_absorption_coefficient",
        "construction_depth_cm",
        "construction_depth_m",
        "construction_depth_um",
        "thickness_cm",
        "thickness_m",
        "thickness_um"
      ],
      "description": "A numeric field of ThirdOctaveAbsorptionSpectrum, or another unit of one."
    },
    "TransmissionLossSpectrum": {
      "type": "object",
      "title": "TransmissionLossSpectrum",
      "description": "One construction of a published table, with its loss in each band.",
      "required": [
        "key",
        "name"
      ],
      "properties": {
        "key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.+-]{0,127}(?![\\s\\S])",
          "description": "The row's key in the catalogue, the half of \"<catalogue>/<key>\" after the slash."
        },
        "name": {
          "$ref": "#/$defs/filled"
        },
        "variant": {
          "$ref": "#/$defs/text"
        },
        "basis": {
          "$ref": "#/$defs/hedge.basis",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/TransmissionLossSpectrum.fields"
              },
              {
                "enum": [
                  "row"
                ]
              }
            ]
          }
        },
        "approximate": {
          "$ref": "#/$defs/hedge.approximate",
          "items": {
            "$ref": "#/$defs/TransmissionLossSpectrum.fields"
          }
        },
        "converted": {
          "$ref": "#/$defs/hedge.converted",
          "propertyNames": {
            "$ref": "#/$defs/TransmissionLossSpectrum.fields"
          }
        },
        "carried": {
          "$ref": "#/$defs/hedge.carried",
          "propertyNames": {
            "$ref": "#/$defs/TransmissionLossSpectrum.cells"
          }
        },
        "ranges": {
          "$ref": "#/$defs/hedge.ranges",
          "propertyNames": {
            "$ref": "#/$defs/TransmissionLossSpectrum.fields"
          }
        },
        "bounded_above": {
          "$ref": "#/$defs/hedge.bounded_above",
          "items": {
            "$ref": "#/$defs/TransmissionLossSpectrum.fields"
          }
        },
        "bounded_below": {
          "$ref": "#/$defs/hedge.bounded_below",
          "items": {
            "$ref": "#/$defs/TransmissionLossSpectrum.fields"
          }
        },
        "reported": {
          "$ref": "#/$defs/hedge.reported",
          "propertyNames": {
            "$ref": "#/$defs/TransmissionLossSpectrum.fields"
          }
        },
        "unquantified": {
          "$ref": "#/$defs/hedge.unquantified",
          "propertyNames": {
            "$ref": "#/$defs/TransmissionLossSpectrum.fields"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/hedge.uncertainty",
          "propertyNames": {
            "$ref": "#/$defs/TransmissionLossSpectrum.fields"
          }
        },
        "not_derivable": {
          "$ref": "#/$defs/hedge.not_derivable",
          "propertyNames": {
            "$ref": "#/$defs/TransmissionLossSpectrum.fields"
          }
        },
        "misprinted": {
          "$ref": "#/$defs/hedge.misprinted",
          "propertyNames": {
            "$ref": "#/$defs/TransmissionLossSpectrum.cells"
          }
        },
        "attributed_to": {
          "$ref": "#/$defs/hedge.attributed_to",
          "propertyNames": {
            "anyOf": [
              {
                "$ref": "#/$defs/TransmissionLossSpectrum.fields"
              },
              {
                "enum": [
                  "row",
                  "table"
                ]
              }
            ]
          }
        },
        "group": {
          "$ref": "#/$defs/text"
        },
        "note": {
          "$ref": "#/$defs/prose"
        },
        "provenance": {
          "allOf": [
            {
              "$ref": "#/$defs/row_provenance"
            },
            {
              "properties": {
                "field_test_standards": {
                  "propertyNames": {
                    "$ref": "#/$defs/TransmissionLossSpectrum.fields"
                  }
                }
              }
            }
          ]
        },
        "transmission_loss_63_db": {
          "$ref": "#/$defs/number"
        },
        "transmission_loss_125_db": {
          "$ref": "#/$defs/number"
        },
        "transmission_loss_250_db": {
          "$ref": "#/$defs/number"
        },
        "transmission_loss_500_db": {
          "$ref": "#/$defs/number"
        },
        "transmission_loss_1000_db": {
          "$ref": "#/$defs/number"
        },
        "transmission_loss_2000_db": {
          "$ref": "#/$defs/number"
        },
        "transmission_loss_4000_db": {
          "$ref": "#/$defs/number"
        },
        "transmission_loss_8000_db": {
          "$ref": "#/$defs/number"
        },
        "thickness_mm": {
          "$ref": "#/$defs/number_from_0"
        },
        "surface_density_kg_m2": {
          "$ref": "#/$defs/number_from_0"
        },
        "sound_transmission_class": {
          "$ref": "#/$defs/number"
        },
        "block_mass_kg": {
          "$ref": "#/$defs/number_from_0"
        },
        "refers_to_row": {
          "$ref": "#/$defs/text"
        },
        "surface_density_g_m2": {
          "$ref": "#/$defs/number_from_0",
          "description": "surface_density_kg_m2 written in g/m2; the reader converts the figure on its digits and keeps it in converted."
        },
        "thickness_cm": {
          "$ref": "#/$defs/number_from_0",
          "description": "thickness_mm written in cm; the reader converts the figure on its digits and keeps it in converted."
        },
        "thickness_m": {
          "$ref": "#/$defs/number_from_0",
          "description": "thickness_mm written in m; the reader converts the figure on its digits and keeps it in converted."
        },
        "thickness_um": {
          "$ref": "#/$defs/number_from_0",
          "description": "thickness_mm written in µm; the reader converts the figure on its digits and keeps it in converted."
        }
      },
      "patternProperties": {
        "^x-[A-Za-z0-9_][A-Za-z0-9_.+-]{0,125}(?![\\s\\S])": {
          "anyOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "type": "number"
            }
          ],
          "description": "A column of your own, kept as text beside the row and never read by any calculation."
        }
      },
      "additionalProperties": false
    },
    "TransmissionLossSpectrum.cells": {
      "enum": [
        "block_mass_kg",
        "group",
        "name",
        "note",
        "refers_to_row",
        "sound_transmission_class",
        "surface_density_kg_m2",
        "thickness_mm",
        "transmission_loss_1000_db",
        "transmission_loss_125_db",
        "transmission_loss_2000_db",
        "transmission_loss_250_db",
        "transmission_loss_4000_db",
        "transmission_loss_500_db",
        "transmission_loss_63_db",
        "transmission_loss_8000_db",
        "variant",
        "surface_density_g_m2",
        "thickness_cm",
        "thickness_m",
        "thickness_um"
      ],
      "description": "A field of TransmissionLossSpectrum that holds a cell of the page."
    },
    "TransmissionLossSpectrum.fields": {
      "enum": [
        "block_mass_kg",
        "sound_transmission_class",
        "surface_density_kg_m2",
        "thickness_mm",
        "transmission_loss_1000_db",
        "transmission_loss_125_db",
        "transmission_loss_2000_db",
        "transmission_loss_250_db",
        "transmission_loss_4000_db",
        "transmission_loss_500_db",
        "transmission_loss_63_db",
        "transmission_loss_8000_db",
        "surface_density_g_m2",
        "thickness_cm",
        "thickness_m",
        "thickness_um"
      ],
      "description": "A numeric field of TransmissionLossSpectrum, or another unit of one."
    },
    "csv": {
      "type": "object",
      "description": "How the CSV file beside this header writes its cells. Only the header of a CSV file declares it.",
      "required": [
        "delimiter",
        "decimal"
      ],
      "properties": {
        "delimiter": {
          "enum": [
            ",",
            ";",
            "\t"
          ]
        },
        "decimal": {
          "enum": [
            ".",
            ","
          ]
        }
      },
      "additionalProperties": false,
      "not": {
        "required": [
          "delimiter",
          "decimal"
        ],
        "properties": {
          "delimiter": {
            "const": ","
          },
          "decimal": {
            "const": ","
          }
        }
      }
    },
    "filled": {
      "allOf": [
        {
          "$ref": "#/$defs/text"
        },
        {
          "pattern": "[^\\u0009-\\u000d\\u001c-\\u0020\\u0085\\u00a0\\u1680\\u2000-\\u200a\\u2028-\\u2029\\u202f\\u205f\\u3000]"
        }
      ]
    },
    "hedge.approximate": {
      "type": "array",
      "description": "The fields the page prints with a ~."
    },
    "hedge.attributed_to": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/$defs/filled"
      },
      "description": "Field (or row, or table) to whom the page credits it."
    },
    "hedge.basis": {
      "type": "object",
      "additionalProperties": {
        "enum": [
          "measured",
          "declared",
          "calculated",
          "estimated",
          "extended"
        ]
      },
      "description": "What the source says a value is: field (or row) to measured, declared, calculated, estimated or extended."
    },
    "hedge.borrowed": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/$defs/filled"
      },
      "description": "Field to the material the page takes the value from."
    },
    "hedge.bounded_above": {
      "type": "array",
      "description": "The fields of ranges the page prints as <= x or < x."
    },
    "hedge.bounded_below": {
      "type": "array",
      "description": "The fields of ranges the page prints as >= x or > x."
    },
    "hedge.carried": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/$defs/filled"
      },
      "description": "Field to where the page gives it from, for a cell it prints blank and carries from another row."
    },
    "hedge.converted": {
      "type": "object",
      "additionalProperties": {
        "type": "array",
        "prefixItems": [
          {
            "$ref": "#/$defs/filled"
          },
          {
            "$ref": "#/$defs/filled"
          }
        ],
        "minItems": 2,
        "maxItems": 2
      },
      "description": "Field to [figure, unit] the page prints, for a value you converted from a unit the reader has no alias for."
    },
    "hedge.misprinted": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/$defs/filled"
      },
      "description": "Field to what the page prints there and why it cannot be served."
    },
    "hedge.not_derivable": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/$defs/filled"
      },
      "description": "Field to why it is left empty although it could be worked out."
    },
    "hedge.ranges": {
      "type": "object",
      "additionalProperties": {
        "type": "array",
        "prefixItems": [
          {
            "type": [
              "number",
              "null"
            ]
          },
          {
            "type": [
              "number",
              "null"
            ]
          }
        ],
        "minItems": 2,
        "maxItems": 2
      },
      "description": "Field to [low, high] for a cell the page prints as an interval; null for an open end."
    },
    "hedge.reported": {
      "type": "object",
      "additionalProperties": {
        "type": "array",
        "minItems": 1,
        "items": {
          "$ref": "#/$defs/reading"
        }
      },
      "description": "Field to the readings the page lists, with no single value: numbers or intervals [low, high]."
    },
    "hedge.uncertainty": {
      "type": "object",
      "additionalProperties": {
        "type": "number",
        "minimum": 0
      },
      "description": "Field to the plus-or-minus the page prints beside the value."
    },
    "hedge.unquantified": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/$defs/filled"
      },
      "description": "Field to what the page prints where the number would be."
    },
    "number": {
      "type": [
        "number",
        "null"
      ]
    },
    "number_from_0": {
      "anyOf": [
        {
          "type": "null"
        },
        {
          "type": "number",
          "minimum": 0.0
        }
      ],
      "description": "A number that is never negative, as no quantity in the unit its field's name ends in is, or null."
    },
    "number_from_0_to_1": {
      "anyOf": [
        {
          "type": "null"
        },
        {
          "type": "number",
          "minimum": 0.0,
          "maximum": 1.0
        }
      ],
      "description": "A number from 0 to 1, the values the quantity its field names can take, or null."
    },
    "number_from_0_to_100": {
      "anyOf": [
        {
          "type": "null"
        },
        {
          "type": "number",
          "minimum": 0.0,
          "maximum": 100.0
        }
      ],
      "description": "A number from 0 to 100, the values the quantity its field names can take, or null."
    },
    "prose": {
      "type": "string",
      "maxLength": 20000,
      "pattern": "^[^\\x00-\\x08\\x0b-\\x1f\\x7f-\\x9f\\u202a-\\u202e\\u2066-\\u2069]*(?![\\s\\S])",
      "description": "A paragraph or more of text."
    },
    "provenance": {
      "type": "object",
      "description": "Which document the cells were read from, and how.",
      "required": [
        "kind",
        "document",
        "version",
        "consulted"
      ],
      "properties": {
        "kind": {
          "enum": [
            "datasheet",
            "declaration_of_performance",
            "test_report",
            "measurement",
            "calculation",
            "publication",
            "other"
          ],
          "description": "What kind of document the cells were read from."
        },
        "document": {
          "allOf": [
            {
              "$ref": "#/$defs/text"
            },
            {
              "pattern": "[^\\u0009-\\u000d\\u001c-\\u0020\\u0085\\u00a0\\u1680\\u2000-\\u200a\\u2028-\\u2029\\u202f\\u205f\\u3000]"
            }
          ],
          "description": "The document's title as it prints it."
        },
        "version": {
          "anyOf": [
            {
              "allOf": [
                {
                  "$ref": "#/$defs/text"
                },
                {
                  "pattern": "[^\\u0009-\\u000d\\u001c-\\u0020\\u0085\\u00a0\\u1680\\u2000-\\u200a\\u2028-\\u2029\\u202f\\u205f\\u3000]"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "The revision the document prints (\"Rev. 4\"), or null when it prints none."
        },
        "consulted": {
          "type": "string",
          "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}(?![\\s\\S])",
          "format": "date",
          "description": "The day the document was read, as YYYY-MM-DD."
        },
        "publisher": {
          "$ref": "#/$defs/text",
          "description": "Who issues the document."
        },
        "issued": {
          "type": "string",
          "pattern": "^([0-9]{4}(-[0-9]{2}(-[0-9]{2})?)?)?(?![\\s\\S])",
          "description": "When the document says it was issued: YYYY, YYYY-MM or YYYY-MM-DD, at the precision it prints."
        },
        "url": {
          "$ref": "#/$defs/text",
          "description": "Where the document was found. Never opened by the reader."
        },
        "sha256": {
          "type": "string",
          "pattern": "^([0-9a-fA-F]{64})?(?![\\s\\S])",
          "description": "The SHA-256 digest of the file that was read, in hexadecimal."
        },
        "page": {
          "$ref": "#/$defs/text",
          "description": "The page the cells are on."
        },
        "printed_table": {
          "$ref": "#/$defs/text",
          "description": "The label of the table on the page, as it prints it."
        },
        "laboratory": {
          "$ref": "#/$defs/text",
          "description": "The laboratory that made the test."
        },
        "accreditation": {
          "$ref": "#/$defs/text",
          "description": "The laboratory's accreditation, as printed."
        },
        "report": {
          "$ref": "#/$defs/text",
          "description": "The number of the test report."
        },
        "test_date": {
          "$ref": "#/$defs/text",
          "description": "When the test was made, as printed."
        },
        "test_standard": {
          "$ref": "#/$defs/text",
          "description": "The standard the test followed, as printed."
        },
        "field_test_standards": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/filled"
          },
          "description": "Field to the standard the document cites for that field, where it cites one per property."
        }
      },
      "additionalProperties": false
    },
    "reading": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "array",
          "prefixItems": [
            {
              "type": "number"
            },
            {
              "type": "number"
            }
          ],
          "minItems": 2,
          "maxItems": 2
        }
      ],
      "description": "One reading: a number, or an interval [low, high]."
    },
    "row_provenance": {
      "type": "object",
      "description": "Where on the document this row's cells are and who tested them: never which document it is, which is another file.",
      "properties": {
        "page": {
          "$ref": "#/$defs/text",
          "description": "The page the cells are on."
        },
        "printed_table": {
          "$ref": "#/$defs/text",
          "description": "The label of the table on the page, as it prints it."
        },
        "laboratory": {
          "$ref": "#/$defs/text",
          "description": "The laboratory that made the test."
        },
        "accreditation": {
          "$ref": "#/$defs/text",
          "description": "The laboratory's accreditation, as printed."
        },
        "report": {
          "$ref": "#/$defs/text",
          "description": "The number of the test report."
        },
        "test_date": {
          "$ref": "#/$defs/text",
          "description": "When the test was made, as printed."
        },
        "test_standard": {
          "$ref": "#/$defs/text",
          "description": "The standard the test followed, as printed."
        },
        "field_test_standards": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/filled"
          },
          "description": "Field to the standard the document cites for that field, where it cites one per property."
        }
      },
      "additionalProperties": false
    },
    "text": {
      "type": "string",
      "maxLength": 2000,
      "pattern": "^[^\\x00-\\x08\\x0b-\\x1f\\x7f-\\x9f\\u202a-\\u202e\\u2066-\\u2069]*(?![\\s\\S])",
      "description": "Text, with no control character but the tab and the line feed and no mark that reorders it."
    },
    "whole": {
      "type": [
        "integer",
        "null"
      ]
    }
  }
}
