Skip to content

Appendix A — JSON Schema

Contents of FBL 0.9

The normative schema is fbl.schema.json beside this document (JSON Schema draft 2020-12, $id https://etalii.net/adp/fbl/schema/0.1/fbl.schema.json). Its $defs are: Document, Binding, Claims, Marker, Body, Family, FileRule, PluginReader, TextDefaults, Header, BlockRule, (FBL 0.7) SectionRule, ElementRule, RelationRule, IdBinding, Slot, (FBL 0.9) GrammarSource and Recover, AttributeBinding, Insert, Remove, RegistrationSettings, Template, Registration, Splice, Fixture, Edit, the model changes ModelChange and ChangePosition (FBL 0.2, section 11.2), and the helpers Name, BindingRef, Regex, Selector. While FBL is a draft, the schema keeps its 0.1 $id and accepts every version from "fbl": "0.1" to "0.9". It references DISL's Doc, LocalizedText, Expression and TypeRef.

The examples beside this document are timeline.fbl, databricks-job.fbl, databricks-pipeline.fbl, mindmap.fbl, causal-loop-diagram.fbl, structurizr.fbl, w3c-turtle.fbl, helm-chart.fbl, ansible-structure.fbl, dotnet-dependency-graph.fbl, a .NET solution read by a plugin that opens the files it leads to itself, (FBL 0.5) dependency-graph.fbl, the dependency graph's hand-written YAML read with every scalar as written, (FBL 0.5) sankey.fbl, the Sankey diagram's YAML read the same way, with a computed attribute that holds the written text of every member of an entry, (FBL 0.5) supply-chain.fbl, the supply chain diagram's YAML read the same way, whose one node rule reads the seven stages and their six older spellings through map and whose group key is a reference to a group's stored id rather than a nesting, (FBL 0.7) behavior-tree.fbl, Agent Behavior Modelling's Markdown read by the bullets family, and (FBL 0.9) w3c-turtle-grammar.fbl, Turtle read by the grammar family with the grammar w3c-turtle.lark beside it, which .github/scripts/atd-grammar.py --check builds in strict mode as it builds every grammar an example names; registrations are in registrations/ and round-trip fixtures in fixtures/, and (FBL 0.8) documents a host MUST refuse when it loads them, each valid against the schema, are in refused/. python .github/scripts/validate-examples.py validates them all, and checks that each document in refused/ is refused.