Libraries
Andromeda runs JSON-LD on every request, and every name it handles is an IRI. The Rust libraries that do this work are published on crates.io as crates of their own, together with the ones for RDF, URNs, percent-encoding and units of measure. None of them knows anything about the broker, and you can use any of them without it. These pages explain what each one does, why it exists and where Andromeda relies on it.
The crates
Eleven crate families make up the stack. Two are original. The other nine are forks, and they fall into two groups.
The original crates:
ngsi-ld, a typed NGSI-LD data model and client. Andromeda's own conformance tests are written with it, and it works with any conformant broker.cefact-units, the UN/CEFACT Recommendation 20 codes for units of measure, each with a numeric identity that never changes.
The forks that carry real work:
iri-rs, IRIs and URIs as RFC 3987 and RFC 3986 define them, compared as strings, with normalisation as an explicit call.jsonld, a JSON-LD 1.1 processor tuned for running the same contexts on every request.jstrict, a JSON parser that keeps member order, duplicate keys and the written form of numbers.rdfx, the RDF 1.2 data model, with the rules for subject, predicate and object positions checked by the compiler.urn-rs, URNs as RFC 8141 defines them, with their own equivalence rules.pct, percent-encoding, whichiri-rsbuilds on.
The forks that follow the stack:
xsd-rs, the XSD datatypes.ld-core, a derive that maps Rust types to Linked Data.n-quads, the N-Quads syntax, which thejsonldtest suite uses.
These three change little beyond their dependencies. They exist so that the whole graph shares one IRI type and one JSON type.
How they depend on each other
ngsi-ld pulls in jsonld only with its linked-data feature, which processes the @context of a document.
Every crate that names an IRI names it with iri-rs, and that is why most of the forks exist. Two IRI crates in one dependency graph mean a conversion wherever they meet, and two answers to whether a pair of IRIs is equal. The iri-rs page shows what the second problem looks like in practice.