Grade

A named material grade, class, type, condition, or process variant and its acceptance criteria.

$defs.grade · object

Definition JSON

This fragment is shown exactly as published. Use the chevrons to fold objects and arrays; linked $ref values return to their targets in the complete schema.

{    "type": "object",
    "required": [        "id",
        "designation",
        "chemistry"    ],
    "properties": {        "id": {            "type": "string"        },
        "designation": {            "type": "object",
            "properties": {                "grade": {                    "type": [                        "string",
                        "null"                    ]                },
                "class": {                    "type": [                        "string",
                        "null"                    ]                },
                "type": {                    "type": [                        "string",
                        "null"                    ]                },
                "uns": {                    "type": [                        "string",
                        "null"                    ],
                    "pattern": "^[A-Z][0-9]{5}$"                },
                "uns_note": {                    "type": "string"                }            }        },
        "aliases": {            "type": "array",
            "items": {                "type": "string"            }        },
        "chemistry": {            "oneOf": [                {                    "$ref": "#/$defs/not_extracted"                },
                {                    "type": "object",
                    "required": [                        "elements"                    ],
                    "properties": {                        "elements": {                            "type": "object",
                            "description": "Element symbol to an ARRAY of bounds - one element commonly has several, selected by thickness, diameter, class or analysis basis.",
                            "additionalProperties": {                                "type": "array",
                                "minItems": 1,
                                "items": {                                    "$ref": "#/$defs/value_or_alternatives"                                },
                                "description": "Element symbol to an ARRAY of bounds. A member may be a value or an {'any_of': [...]} alternatives object - SA-516 Grade 60 manganese is a real case: Table 1 footnote C permits either of two ranges, and modelling them as two array members would make a checker demand both and reject conforming material."                            }                        },
                        "notes": {                            "type": "array",
                            "items": {                                "type": "string"                            }                        },
                        "pren_note": {                            "type": "string",
                            "description": "Composite chemistry bound (e.g. a PREN floor) that cannot be expressed as a value in v0.2. Must be checked manually."                        }                    }                }            ]        },
        "mechanical": {            "oneOf": [                {                    "type": "null",
                    "description": "The specification imposes no mechanical property requirement. SA-179 is a real example: its tensile figures are EXPLANATORY NOTE design assumptions, not acceptance criteria."                },
                {                    "$ref": "#/$defs/not_extracted"                },
                {                    "type": "object",
                    "properties": {                        "tensile_strength": {                            "oneOf": [                                {                                    "type": "null",
                                    "description": "The specification imposes no requirement for this property."                                },
                                {                                    "$ref": "#/$defs/not_extracted"                                },
                                {                                    "$ref": "#/$defs/value_set"                                }                            ]                        },
                        "yield_strength": {                            "oneOf": [                                {                                    "type": "null",
                                    "description": "The specification imposes no requirement for this property."                                },
                                {                                    "$ref": "#/$defs/not_extracted"                                },
                                {                                    "$ref": "#/$defs/value_set"                                }                            ]                        },
                        "elongation": {                            "oneOf": [                                {                                    "type": "null",
                                    "description": "The specification imposes no requirement for this property."                                },
                                {                                    "$ref": "#/$defs/not_extracted"                                },
                                {                                    "type": "array",
                                    "items": {                                        "$ref": "#/$defs/value"                                    }                                }                            ]                        },
                        "reduction_of_area": {                            "oneOf": [                                {                                    "type": "null",
                                    "description": "The specification imposes no requirement for this property."                                },
                                {                                    "$ref": "#/$defs/not_extracted"                                },
                                {                                    "type": "array",
                                    "items": {                                        "$ref": "#/$defs/value"                                    }                                }                            ]                        }                    },
                    "additionalProperties": false,
                    "description": "Mechanical property requirements. additionalProperties is false so that a not_extracted object {extracted:false, note:...} matches exactly one branch of the oneOf. Without it the two branches are both satisfied and the oneOf fails - the object is ambiguous, not invalid. SB-366 is the case: it states no mechanical table of its own and sends properties to the source material specification."                }            ]        },
        "hardness": {            "oneOf": [                {                    "type": "null",
                    "description": "The specification imposes no hardness requirement."                },
                {                    "$ref": "#/$defs/not_extracted"                },
                {                    "type": "array",
                    "items": {                        "$ref": "#/$defs/value_or_alternatives"                    }                }            ]        },
        "impact": {            "oneOf": [                {                    "type": "null",
                    "description": "The specification imposes no impact requirement."                },
                {                    "$ref": "#/$defs/not_extracted"                },
                {                    "type": "object",
                    "required": [                        "values"                    ],
                    "additionalProperties": false,
                    "description": "Impact requirements. 'applies_when' on each value carries the applicability trigger (thickness, specimen size, temperature).",
                    "properties": {                        "values": {                            "type": "array",
                            "items": {                                "$ref": "#/$defs/value"                            }                        },
                        "test_temperature": {                            "oneOf": [                                {                                    "$ref": "#/$defs/value_set"                                },
                                {                                    "type": "object",
                                    "required": [                                        "extracted",
                                        "note"                                    ],
                                    "additionalProperties": false,
                                    "description": "The specification imposes an impact ENERGY requirement but states NO test temperature, or the temperature was not captured. SA-203 Para 7.2.1 is the case: energy is fixed at 20 ft-lbf [27 J] but temperature and orientation are 'a matter of agreement between the purchaser and supplier'. Without this the file cannot record that the Code is silent on temperature - which is the difference between a Code non-conformance and a contractual question.",
                                    "properties": {                                        "extracted": {                                            "const": false                                        },
                                        "note": {                                            "type": "string"                                        },
                                        "applicability": {                                            "type": "string",
                                            "description": "When the impact requirement applies at all, where it is conditional."                                        }                                    }                                }                            ]                        },
                        "applicability": {                            "type": "string",
                            "description": "When impact testing is triggered at all."                        },
                        "specimen_sizes": {                            "type": "array",
                            "items": {                                "type": "string"                            }                        }                    }                }            ]        },
        "heat_treatment": {            "oneOf": [                {                    "type": "null"                },
                {                    "$ref": "#/$defs/not_extracted"                },
                {                    "type": "array",
                    "items": {                        "type": "object",
                        "required": [                            "requirement",
                            "source"                        ],
                        "additionalProperties": false,
                        "properties": {                            "requirement": {                                "type": "string",
                                "description": "e.g. 'quenched and tempered', 'carbide solution treated', 'annealed'"                            },
                            "temperature": {                                "oneOf": [                                    {                                        "$ref": "#/$defs/not_extracted",
                                        "description": "The specification states no temperature for this grade - SA-182 Table 1 gives 'not specified' for F 6a - or the value was not captured."                                    },
                                    {                                        "$ref": "#/$defs/value_set"                                    }                                ]                            },
                            "cooling": {                                "type": "string"                            },
                            "applies_when": {                                "$ref": "#/$defs/applies_when"                            },
                            "source": {                                "type": "string"                            },
                            "notes": {                                "type": "array",
                                "items": {                                    "type": "string"                                }                            }                        }                    }                }            ]        }    }}

Fields

FieldTypeStatusMeaning
idstringRequiredStable normalized identifier for the grade, class, type, condition, or process variant.
designationobjectRequiredSource designation details, such as grade, class, type, UNS number, condition, or process.
aliasesarrayOptionalAlternative designations by which the same normalized grade entry may be identified.
chemistryOne Of (2)RequiredHeat- and/or product-analysis acceptance requirements for the grade, or an explicit extraction-gap marker.
mechanicalOne Of (3)OptionalTensile, yield, elongation, reduction-of-area, or related mechanical acceptance requirements.
hardnessOne Of (3)OptionalHardness limits, including formally represented alternatives where the source permits different scales.
impactOne Of (3)OptionalImpact energy, test temperature, specimen, orientation, and applicability requirements.
heat_treatmentOne Of (3)OptionalRequired thermal condition, temperature, cooling route, applicability, and source.