RDF 1.2 for Ada

Read RDF without holding it all.

Turtle, TriG, N-Triples and N-Quads arrive as statements, not as a document in memory. Input may be split at any byte. Invalid terms are unrepresentable: a literal in predicate position is a compile error, not a runtime check.

Sink   : Collector;
Parser : Turtle_Parsers.Parser :=
  Turtle_Parsers.Create
    (Source_Name => "example",
     Base_IRI    => "http://example.org/",
     Syntax      => Turtle_Parsers.Turtle_Syntax);
begin
   Turtle_Parsers.Feed (Parser, Chunk, Sink);
   Status := Turtle_Parsers.Finish (Parser, Sink);

Conformance, measured rather than claimed

Each harness reads the W3C manifests with this library's own Turtle parser and reports what it examined, not a verdict. Corpora are pinned by commit, because a conformance number produced against an unrecorded revision is not evidence.

SuiteExaminedRejected validAccepted invalidWrong result
RDF 1.1 and 1.21050000
RDFC-1.0 canonicalization860
Notation3 syntax107000
SPARQL 1.1 syntax48800

A differential asks two other implementations, oxigraph and Jena, the question the suites cannot: whether anybody else reads what this library writes. Across 2,443 documents there is no divergence either would not be able to name.

Three crates

They are separate because their models are, not merely because they are large.

CrateWhat it is
flyology_rdfThe RDF 1.2 model and its serializations
flyology_n3Notation3, whose formulas and variables RDF cannot express
flyology_sparqlSPARQL 1.1 queries, which are documents rather than data