API: schema

Domain-specific schema validation for STL documents.

Module: stl_parser.schema Import: from stl_parser import load_schema, validate_against_schema, STLSchema


load_schema()

load_schema(path: str) -> STLSchema

Parse a .stl.schema file into an STLSchema object.

Parameters:

ParameterTypeDescription
pathstrPath to .stl.schema file

Returns: STLSchema

Raises: STLSchemaError (E600-E603)

Example:

from stl_parser import load_schema
schema = load_schema("docs/schemas/causal.stl.schema")
print(f"{schema.name} v{schema.version}")

validate_against_schema()

validate_against_schema(
    parse_result: ParseResult,
    schema: STLSchema,
) -> SchemaValidationResult

Validate a ParseResult against schema constraints.

Checks:

  • Anchor namespace and pattern requirements
  • Required modifier fields
  • Field type, range, and enum constraints
  • Document-level constraints (min/max statements)

Parameters:

ParameterTypeDescription
parse_resultParseResultDocument to validate
schemaSTLSchemaSchema to validate against

Returns: SchemaValidationResult with is_valid, errors, warnings

Example:

from stl_parser import parse, load_schema, validate_against_schema

schema = load_schema("docs/schemas/medical.stl.schema")
result = parse('[Symptom_Fever] -> [Condition_Infection] ::mod(rule="causal", confidence=0.8, strength=0.7)')
validation = validate_against_schema(result, schema)
print(validation.is_valid)

STLSchema

class STLSchema(BaseModel):
    name: str
    version: str
    namespace: Optional[str] = None
    source_anchor: Optional[AnchorConstraint] = None
    target_anchor: Optional[AnchorConstraint] = None
    modifier: Optional[ModifierConstraint] = None
    constraints: Optional[DocumentConstraint] = None

SchemaValidationResult

class SchemaValidationResult(BaseModel):
    is_valid: bool = True
    errors: List[SchemaError] = []
    warnings: List[SchemaWarning] = []
    schema_name: str = ""
    schema_version: str = ""

to_pydantic() / from_pydantic()

to_pydantic(schema: STLSchema) -> type
from_pydantic(model_class: type) -> STLSchema

Convert between STLSchema and dynamically generated Pydantic model classes. Advanced use case for runtime validation.