Skip to content

Architecture

                  DFC ontology (w3id, versioned)
                          │
                          ▼
              LinkML schema (src/*.yaml)
          ┌───────────────┼───────────────┐
          ▼               ▼               ▼
   owl2linkml.py   taxonomy enums   bundled data
          │        (reachable_from)  (ruby-gem/vocabularies,
          │                          contexts → copied to php)
          ▼
   ┌──────────────┬──────────────┐
   ▼              ▼              ▼
 TypeScript      Ruby           PHP
 connector    gem            connector
  • Source of truth: the DFC ontology + SKOS taxonomies at the versions in config/dfc-release.yaml. The LinkML schema is a derived artefact (committed for auditability), never hand-edited.
  • Generators (scripts/generate_*.py) are the only writers of generated code. Per-language preservation rules live in AGENTS.md; the durable statement is: regeneration must be byte-identical on a clean tree (make check-generated).
  • Runtime data flow (all languages): construct models → export() to JSON-LD (predicates already official CURIEs, no compaction) → import() back, resolving @id refs within the document. Unknown types are skipped; unknown predicates are dropped.
  • Cross-language parity is enforced by tests/cross_connector/ (drop-in matrix vs the original v2 connectors) and tests/conformance/ (shared fixtures across LinkML connectors).