Skip to content

Releases

OntoSmith 0.1.9

Choose a tag to compare

@Dongbumlee Dongbumlee released this 07 Nov 22:46

What's in 0.1.9

Sentence-level evidence serving is the search default. The INDEX stage now ships a sentence index with every build — every sentence of every chunk, embedded with the build's own embedder and projected as (:Sentence) nodes in the Neo4j store. ontosmith search pools three channels — the direct index, the graph pool, and a beam channel (a pruned two-hop traversal from the question's linked entities) — scores them in two layers, and fills whole units under a 4,000-token budget. Older builds get the same sentence universe built at query time, and the result says so. When sentence serving cannot run, the command falls back to chunk-level hybrid search and names the fallback; the library raises SentenceServingUnavailable instead.

Optional rerank step. With the new rerank extra (pip install ontosmith[rerank]), the merged head is reordered by a local cross-encoder before the fill — no API call. Without the extra the step is inactive and the result says so.

One brand system on every visual surface. The diagrams, site, posters and all four videos are regenerated under the site's brand system — paper mode for documents, stage mode for video — with the serving layer given its full width in the method diagram. Version stamps are gone from the videos and images, and the videos' audio mixes are rebuilt so the music bed sits well under the narration.

Whitepaper corrections. The cost-guardrail sections now match the shipped behavior — spend is always accounted, and a stop-line exists only when a cap is set through ONTOSMITH_MAX_COST_USD — and §5.6 states judging-only per-document costs on a single basis beside the full-run totals. No measured claim changes.

OntoSmith 0.1.8

Choose a tag to compare

@Dongbumlee Dongbumlee released this 06 Nov 11:03

Added

  • Declared value attributes — a schema_front entity entry may
    declare attributes: the values a document states about an
    entity (an agreement's effective date, a work's release date, a
    contract's value), each with a name, one of six closed value
    types (date, datetime, number, money, duration, identifier),
    and required/multi flags. Declaration shape is validated in one
    place, shared by draft validation and setup validation, and
    attributes render into proposer guidance only when declared —
    a schema that declares none renders and writes exactly as
    before.
  • Deterministic normalization behind a format gate — form is
    code's work, never a model's. Money maps symbols and currency
    names to ISO 4217 codes and never guesses an unstated currency
    (the value is stored incomplete instead); the US$ prefix is
    accepted as USD notation. Number splits value and unit and
    never converts units. Datetime keeps a stated offset and
    otherwise stays naive, and a date-only surface under a datetime
    declaration demotes to date. Duration is length only — a
    start/end pair is an interval, not a duration, and fails as
    one. A candidate that fails the gate is recorded as a format
    violation; the judge is never consulted for it.
  • The judge split for values — a gate-passing candidate goes
    to the decisions seat with one question: does the document's
    evidence state this value for this entity? Accepted values are
    recorded with the normalized typed value and the original
    surface beside it. Multi is enforced per value, and a required
    attribute's absence is a warning record — the entity stands.
  • Typed node-property storage — accepted values land on the
    graph node as typed properties (attr_<name>, temporal types
    converted so range queries work) with the surface beside them,
    written as a second pass after the base entity statement,
    which is never modified.
  • Date precision — a date carries its stated precision: a
    surface stating only a month or a year ("May 2008", "2008")
    normalizes to its reduced-precision ISO form (2008-05, 2008)
    with the precision named (day / month / year) instead of
    failing or gaining an invented day. The precision is stored
    beside the value (attr_<name>_precision), so a range query
    reads the value as the period it names.
  • Attribute lineage classification — in a seeded revision,
    adding an attribute or relaxing a requirement is a safe
    change; removing an attribute, changing its value type,
    strengthening a requirement, or rewriting its definition
    needs the structured seed-change record, and validation
    flags the change without one.

OntoSmith 0.1.7

Choose a tag to compare

@Dongbumlee Dongbumlee released this 06 Nov 06:29

Added

  • Ontology drafting input: semantic census + document survey — the
    draft context now carries the profiler's measured census as lists
    (recurring defined terms, the names they bind to, recurring
    clause/section headings) and the profile's document survey (head and
    tail of each sampled document), so the drafting seat decides about
    recurring corpus terrain explicitly instead of never seeing it.
  • Schema inheritance (seeded revision) — a draft can inherit an
    existing pack's schema_front as a seed; validation holds the revision
    to the inheritance rules: a dropped type, a dropped signature pair,
    or a rewritten inherited definition each needs a structured decision
    point recording the reason, and a signature addition rides with its
    definition revision or an extend_signature record stating the
    existing definition already covers it. A revision may also carry a
    hole report naming the families it must address or explicitly leave
    open. ontology diff reports the structural difference between two
    schemas — a report, never a merge.
  • Structured boundary declarations — a revision that adds,
    re-signs or redefines a relation must declare its boundary with
    every relation it shares a signature pair with (declare_boundary:
    distinct / includes / included_in); validation rejects an
    undeclared boundary (BOUNDARY_UNDECLARED), and a signature
    extension must carry the evidence it rests on.

Changed

  • Draft modes are explicit — a plain ontology draft now composes
    fresh from the brief, even when a published pack carries the same
    pack id; extending an existing pack is the explicit
    draft --from <pack id | schema document> mode, and a named target
    that cannot be extended is refused rather than silently degrading
    into a fresh composition. Every draft run prints its mode. A
    material guide rides the output: a strong warning under 10 documents
    of material and a recommendation note at 10–29 documents; the guide
    warns, it never blocks.
  • CLI surface simplified — the lab's measurement commands no
    longer dispatch from the unified CLI; they run from their module
    entries. The batch create cost-cap flags are removed: the spend
    cap's only home is the ONTOSMITH_MAX_COST_USD environment variable
    (unset = no cap; the ledger still records what a run spent).

OntoSmith 0.1.6

Choose a tag to compare

@Dongbumlee Dongbumlee released this 04 Nov 05:23
1412da4

OntoSmith 0.1.6

Added

  • Multi-draw proposer passes — two profile declarations for the
    free-proposer path: proposer_draw_framings (extra passes, each
    under its own additional framing) and proposer_complement_draw
    (a residual pass: shown the facts the earlier passes extracted,
    per chunk, it is asked only for stated facts not yet covered).
    Passes union before the guards run once; candidate records carry
    their draw index. With neither key declared, the proposer runs
    exactly one pass and its prompt is byte-identical to before.
  • Open-domain pack 0.10.0 — declares the residual pass by
    default. Measured on general text (2026-11-02/03): written
    records 103 → 234 on a biography, 42 → 75 on a novel excerpt,
    192 → 369 on a contract, at roughly double the proposer cost;
    hand-extracted gold coverage on the biography rises from 92/158
    (single draw) to 127/158. The fiction build's ungrounded-block
    share rises (6.3% → 16.7%) and stays inside the guards; no genre
    regressed.

Changed

  • Product documents no longer state cost figures: the README cost
    paragraph, the hands-on §6–§7 figures, and the appendix rate
    expectation are removed. A build is priced by its own counted
    projection before it runs.
  • docs/connections.md: the Recommended models table drops its
    per-seat rationale column.

OntoSmith 0.1.5

Choose a tag to compare

@Dongbumlee Dongbumlee released this 02 Nov 21:08
f28f040

OntoSmith 0.1.5

The first-run release: a new user can open the shipped demo with no key and no database, then build a graph from their own text with one command.

What's new

Keyless demo. ontosmith serve with no arguments opens a real pipeline build of Pride and Prejudice — all 58 chapters, 737 triples over 303 entities, every triple carrying its evidence quote, the batch VERIFIED. A banner says what you are looking at and how to build your own.

One-command quickstart. ontosmith quickstart <your-file.txt> builds a graph from your text and serves it. It checks for the file, the API key, and a reachable Neo4j before spending anything, and refuses with the fix printed when one is missing.

Open extraction path. The open-domain pack now passes facts through in the text's own words when no declared relation name fits, instead of dropping them for falling outside a closed list — measured on pilots: novel records 6 → 39, biography 18 → 43, contract 15 → 33.

Extraction cap, measured. The per-chunk proposal cap rises from 25 (inherited from the contract-clause recipe) to 40, set by a three-genre measurement: biography records +64% and entities +66%, contract records +27%, with gate-block rates inside the baseline band on every genre. (A cap of 60 was tested and rejected: unattested proposals reaching the gates rose past the pre-set guardrail.)

Pack resolution fix. Batch creation resolved packs against the code tree and silently ignored a pack placed in the state root (ONTOSMITH_ROOT). Resolution now anchors at the state root: a pack beside your data shadows the shipped one; absent one, the shipped packs bind as before.

Wheel completeness. The wheel now ships every pack file (a directory glob replaces the hand-maintained file list), guarded by a file-tree test — the class of defect that silently dropped pack files in 0.1.4 cannot recur unnoticed. Profile-declared framing keys now take precedence over pack payloads, and batch creation prints the guidance it actually applied.

777 tests passing.

OntoSmith 0.1.4

Choose a tag to compare

@Dongbumlee Dongbumlee released this 02 Nov 03:46
017bec1

Added

  • Relation declarations — a pack can now ship its
    relation coverage as a pinned relation_declarations
    artefact: per canonical relation, the emission surfaces
    that denote it and the orientation each is stated in.
    The open-domain pack's table (v1) carries the
    S4-declared base plus 14 (name, orientation) pairs and the declared emission vocabulary
    with no canonical counterpart (formed from, named after, teacher of, commander of),
    and one WRITE canonicalization: parent of is stored
    as child of with endpoints swapped, ending the dual
    double-statements. pipeline/relation_map.py loads
    the declaration when the profile declares
    relation_declarations_source; profile relation_map
    entries may also carry {canonical, flipped} objects
    directly.
  • Alias retention at WRITE — registry index keys now
    fold spaced hyphens (Charles - Édouard ≡
    Charles-Édouard), so the two attested forms resolve
    as variants of one entity and both stay on it (name +
    alias) instead of splitting; a merge unions the
    incoming entity's aliases rather than dropping them,
    and a proposer's declared attested surface (e.g.
    German for Germany) is retained as an alias of the
    endpoint's entity.
  • Global identity freeze — the identity seat's
    frozen decisions now have a corpus-level form.
    ontosmith identity-freeze groups per-point
    verdicts by the (fragment, candidate) pair: a
    unanimous pair freezes to one verdict everywhere,
    and a pair decided differently across documents is
    promoted to an ambiguous record instead of being
    silently overwritten. A profile declares the
    freeze as identity_seat_decisions_global;
    ambiguous pairs defer to the rule chain and are
    surfaced in the batch's identity_ambiguous.jsonl
    for the review band. Declaring both decisions
    file forms is refused, and a malformed freeze
    fails the stage closed.

OntoSmith 0.1.2

Choose a tag to compare

@Dongbumlee Dongbumlee released this 02 Nov 03:46
0647611

Added

  • Identity seat seam — guard_triples accepts an
    optional identity_seat: an injected judge that
    decides rule 4's completion question (whether a
    fragment mention completes to a longer census name)
    per candidate, from a code-computed feature envelope.
    The seat answers complete / stand / no opinion; no
    opinion defers that candidate to the rule chain. The
    default is no seat — the deterministic rule chain,
    unchanged. The batch path wires the seat from a
    profile key, identity_seat_decisions: a frozen
    JSONL file of verdicts an offline judge produced for
    the corpus, keyed by document hash. A declared file
    that cannot be loaded fails the stage closed, and
    the run metrics record the file's hash and how often
    the seat was consulted and ruled. The seam is the
    measured outcome of the identity-surgery program
    (2026-10-30): on a frozen 245-point gold the seat
    matched the rules' accuracy with zero
    referent-changing completions (the rules made two),
    and on fresh documents it completed the legitimate
    full names the rule chain refused (4/4 against 0/4)
    at the cost of one title misnaming. The probe replay
    through this wiring reproduces the measured seat
    outcomes byte for byte.

Changed

  • Upstream attestation program — the candidate
    guard now reads a document the way a reader does:
    against the entities the document itself establishes,
    not raw strings alone. Attestation is tiered
    (verbatim; the document's stipulated aliases —
    defined terms and acronym pairs collected into a
    per-document registry; punctuation-spacing collapse
    for tokenized corpora; a proposer-declared derivation
    surface, behind the profile-gated declared-surface
    prompt variant). A defined term is an identity
    inside its document: the role-word guard fires only
    for undefined role nouns, and a defined term with a
    stated referent canonicalizes to it. The
    theme-presence block is retired in favor of grading:
    a verb+preposition proposal whose object attests in
    the document but not in its quote is kept with a
    theme_grade for the judge instead of being blocked
    wholesale (theme_attest_chunk declarations remain
    accepted and are subsumed). Identity resolution no
    longer rewrites a complete attested name into a
    longer name that merely contains it (a city is not
    its city council), never resolves into a coordination
    surface, and still completes surnames and generational
    suffixes. Duplicates are recorded in the blocked
    sidecar (duplicate) instead of vanishing uncounted.
    Measured on recorded corpora replayed offline
    (current guard vs fixed guard, identical inputs):
    contract-slice role-word blocks 89 → 19, kept
    candidates 4,965 → 5,193; novels theme blocks 626 → 0
    (491 graded, the rest attesting in their evidence
    window); wiki seat kept-stage recall 0.186 → 0.210.
  • Documentation polish — the README gains a
    worked-examples section (three edges from the
    project's own records: a head of government named
    inside another article, a novel's character entering
    by relation, a contract's defined term as an
    identity), and the project site is rebuilt around
    the same examples, with the hero graph drawn as an
    animated SVG. The Connections recommended-models
    table no longer lists the retired GLiNER spotter as
    a current seat. No measured claim changes.

Added

  • Open Domain pack 0.5.0: TN-3/4/5 data adopted (RE-TN-1) —
    packs/open-domain/tn_table.json goes to version 2: the
    TN-3 relation groups, TN-4 inverse expansions and TN-5
    subsumptions whose code support landed with the scorer
    change below are now adopted as data, under registered
    evaluation RE-TN-1 (conformance entry DC-6), for the
    EXTENDED figure only. Dual reporting is mandatory: the
    frozen TN-1/TN-2 figure is always reported beside the
    extended one, and the delta is labeled an instrument
    change, never a quality gain (on the frozen cap-b records
    against gold v1.1.0: kept predictions 273 → 335, proposal
    union 301 → 364; baseline hits lost 0, unverified new
    hits 0). The pack manifest pins the table as an
    in_force artefact, and verify_cli.load_table now
    reads the pack-native tn_table format directly, so the
    shipped file works with --normalization as-is. The
    extraction payload is unchanged (same sha256 pin).

  • Scorer: alias-aware matching + opt-in TN-3/4/5 layers —
    match_records now also matches a predicted record under
    the attested alias surfaces in its guard-emitted
    canonicalized field (the guard's identity resolution
    rewrites endpoints to one canonical surface; the frozen
    scorer matched only the emitted surface, which read the
    upstream-attestation fix as a recall regression on the
    cap-b replay: 262 vs the old guard's 273 — with alias keys
    the same output scores 301). Alias keys are the cross
    product of attested subject x object surfaces, mirroring
    gold_keys, so a record canonicalized at BOTH endpoints
    still matches its gold pair. NormalizationTable gains
    three caller-data layers, all default-empty (byte-identical
    to the TN-1/TN-2 instrument): TN-3 relation groups, TN-4
    inverse expansions, TN-5 subsumptions. Grouping ADDS keys
    on both sides — verbatim keys are always retained, so a
    group can never break a TN-2 pairing (verified on the
    frozen cap-b corpus: baseline hits lost 0; hits beyond the
    frozen instrument plus the hand-verified variant set 0).
    verify_cli.load_table reads the new keys. Enabling the
    layers as a pack's table is a new registered evaluation
    (the open-domain table is frozen; dual reporting per its
    effect_reporting rule) — measured on cap-b/gold v1.1.0, the
    full stack would read 366 candidate-level hits vs 273
    frozen (union 364 vs 301); the table data itself is NOT
    adopted here.

  • Mention layer, first cut (issue #54) — profile-gated
    (mention_layer in setup_config; absent = off, and the
    undeclared path is byte-identical). Entities register by
    noun surface forms, so facts stated via pronouns, definite
    descriptions, or cross-sentence evidence had no citable
    path to an entity and drops recorded only a score. With
    the layer declared, the free proposer emits per-endpoint
    mention spans (verbatim, as they appear in the quote),
    mention types (named / pronominal / descriptive), and —
    for non-named mentions — a resolution proposal: an
    antecedent span, verbatim from the document. The guards
    verify both spans with the same discipline as quotes;
    an unverifiable span blocks the candidate by name
    (mention_missing / mention_span /
    mention_antecedent), never silently. GATES judges each
    resolution as its own Jev decision before the fact:
    clear proceeds, ambiguous (review band) is capped at
    Tier-2 review, rejected drops with reason class
    resolution_rejected — distinguished from
    fact_rejected in the drop accounting. The quote is
    never rewritten; resolution travels as annotation.
    Measured (Re-DocRED 40-doc A/B vs the cap-25 recipe,
    pre-registered criteria): the first cut does not ship
    as a recall feature.
    Candidate recall was flat
    (0.1189 vs 0.1183, with a genuinely different proposed
    slice — 46 gold proposed only with the layer on), and
    resolution judging behaved as designed (58 clear /
    3 rejected / 1 review of 62), but Tier-1 recall fell
    to 0.0772 from 0.1066 (paired net −43): the guards
    blocked 69 of 257 proposals as mention_missing
    because the proposer's mention-field compliance is
    unreliable, culling candidates before judging. Raw
    Tier-1 precision rose (0.4912 → 0.6038) and cost held
    ($0.00268/doc vs a $0.00312 ceiling). The layer stays
    an experimental opt-in with that measured trade-off;
    the full record is in the cap-recall measurement
    (Phase 2 section) and issue #54.

  • Entity sweep (issue #58) — profile-gated
    (entity_sweep in setup_config; absent = off, and
    the undeclared path is byte-identical; a non-boolean
    value fails closed). An additive second proposal
    pass inside CANDIDATES' free-proposer branch: a
    deterministic code census names a document's
    entities, the ones appearing as no endpoint of any
    chunk-pass item become anchors, and each anchor is
    re-asked in its own mention view under the chunk
    prompt plus one anchor rule and one evidence rule:
    every sweep triple must carry a verbatim evidence
    span copied from the text, verified by code against
    the full document at proposal time — a missing or
    unverifiable span voids the proposal before the
    guards, counted in the finish record as
    evidence_missing. Sweep items pass the
    same guards and merge behind the chunk channel —
    duplicates and off-anchor items are counted, never
    shadowing or replacing chunk provenance — and the
    finish record restates the pass (candidates_sweep:
    anchors, proposed, duplicates, off-anchor,
    evidence_missing, blocked
    by reason, shipped Tier-1). Measured on the
    pre-registered 8-document density pilot against lab
    gold v1.1.0 (issue #58): the pass recovered 33 of
    139 never-proposed gold labels at Tier-1 (paired
    net +61 Tier-1 over the pilot docs), but the pooled
    new-Tier-1 adjudicated precision was 0.676 against
    a 0.90 bar and the arm cost $0.02423/doc against a
    $0.00375 ceiling — the pilot failed on precision
    and cost, the full-corpus run was not licensed, and
    the pass stays an experimental opt-in pending a
    redesign decision. A pre-registered cut 2
    (2026-10-29) made the evidence span load-bearing —
    the void fired zero times on the re-run (the
    proposer attached a verifying span to all 272
    proposals) and precision measured 0.657 against
    the same 0.90 bar, so the pilot failed on
    precision again; yield and cost passed (P1
    35/139, paired net +67, $0.0240/doc against a
    re-registered $0.0323 bar), and the sweep line
    returns to a close-or-redesign decision. The full
    record is in the
    cap-recall measurement (Entity sweep sectio...

Read more

OntoSmith 0.1.3

Choose a tag to compare

@Dongbumlee Dongbumlee released this 02 Nov 03:46
b8d901d

Fixed

  • Batch creation for a family no pack binds (the
    hands-on Track 1 shape) now resolves the core
    baseline under the family's profile setup_config and
    freezes the merged config into the batch, as
    PACK_DESIGN §1.3 specifies. Before this, such a batch
    froze nothing and ran on the profile file alone, so
    baseline declarations — the identity seat's live
    default among them — silently never reached the run.
  • Missing input files are no longer reported as "is not valid JSON" — the JSON loaders (builder, BYO-schema import, pack payload and role-words artefacts) now distinguish not found / cannot be read / not valid JSON (#49).

Added

  • Live identity seat (on by default) — the core
    baseline declares identity_seat_live, so rule 4's
    completion question is judged in-run by the frozen
    completion process unless a pack declares it off or
    substitutes the frozen decisions file (which
    supersedes the live default). For each contested
    candidate the pipeline assembles an evidence dossier
    from the document deterministically (the fragment's
    sentences, the candidate's definition and mentions,
    sibling names), scores one fixed claim against it
    with the pinned Jev decision model, and combines
    the score with the rule chain by fixed zones: a
    high score sustains a completion the rules reached,
    a low score holds the fragment as written, and the
    band between defers to the rule chain. Every
    verdict is recorded in the batch's
    identity_verdicts.jsonl ledger, keyed by the
    dossier fingerprint and the process's calibration
    id (claim version, thresholds, dossier assembly
    version); a re-run reads the ledger instead of
    re-judging, so a rebuild reproduces the same
    completions even though the underlying scores are
    not bit-stable. A single payload declaring both
    seat forms is refused at validation, and a seat
    whose key is missing when a point is scored fails
    the stage closed. Seat costs fold into the stage's
    cost accounting, and the run metrics record the
    calibration and how often the seat was consulted.

OntoSmith 0.1.1 — ontology import and the first-run serving fix

Choose a tag to compare

@Dongbumlee Dongbumlee released this 27 Oct 17:53

OntoSmith 0.1.1 — ontology import and the first-run serving fix

An ontology-driven knowledge-graph builder.
0.1.1 adds the third door into a schema — importing an
external ontology — and fixes the first-run serving
gap that a from-scratch verification walk found in
0.1.0. Everything measured in 0.1.0 stands as recorded;
the whitepaper's corrections in this release are
record-keeping, not re-measurement.

Powered by Jev · MIT · Copyright (c) 2026 Dongbum Lee

What ships in 0.1.1

  • Ontology import — the BYO-schema door
    (ontosmith ontology import). An external OWL/RDF
    ontology enters as a mechanically extracted
    inventory (every declared class and property with
    its IRI, label, definition, and parents) plus a
    human-authored scoping spec that accounts for every
    scoped concept exactly once — kept, merged, or
    flattened; role classes converted to relations;
    datatype properties demoted; drops only with stated
    reasons. Import emits an ordinary builder draft and
    a complete scoping record, and from there nothing
    differs: the draft validates, is approved, and
    emits through the same gates as a drafted schema.
  • Pack: fibo-contracts 0.1.0 — FIBO's FND
    Agreements module (EDM Council, MIT) imported
    through the builder: 88 scoped concepts → 15 entity
    types + 13 relation types, with its working papers
    in examples/fibo-import/. Its record is a
    coverage account over CUAD, not a quality
    measurement; it is emitted emitted_unmeasured,
    like every builder pack.
  • Hands-on Track 4 — the import walked end to
    end (fetch → inventory → scope → import → gates →
    build) over a 100-contract CUAD subset, verified
    from a vanilla environment.
  • First-run serving fix (issue #48). In 0.1.0 a
    build's first search against a fresh store
    refused by name — the serving schema and the
    build's chunk projection existed only behind a
    module CLI that a store carried only if someone
    had run it by hand. The INDEX stage now ensures
    the serving schema and projects the batch's
    chunks as part of the stage, and search /
    serve heal a pre-fix store at open, with no
    provider spend. A store that is down still
    refuses by name.
  • Hands-on instruction detail. The candidate-path
    choice is stated before any install command;
    Neo4j setup no longer implies Docker (a compact
    example block plus Neo4j's official installation
    guide, with the OntoSmith contract stated as
    ours); checkpoints and the predictable refusals
    are quoted where they occur.
  • Whitepaper corrections. Reference citations
    corrected to the canonical records (Re-DocRED,
    BioRED); the cover status line updated to the
    shipped release line; §5.7 names the populations
    of its two corrected precisions and declares its
    Tier-1-wide figure record data; §3.3–§3.4
    describe the fourth pack and the import door.

The quality record

Unchanged in substance from 0.1.0: the full record is
§5 of the project whitepaper (docs/whitepaper.md),
with its scope, method, intervals, and failures, and
python examples/demo/replay_scores.py recomputes
every headline from the shipped appendix files alone
— no API key, no model calls.

Try it without a key

$ pip install ontosmith
$ ontosmith profile examples/corpus --family demo
$ ontosmith inspect examples/triples.jsonl
$ python examples/demo/replay_scores.py

The hands-on guide (docs/hands-on.md) walks four
tracks: the keyless replay, a live build, designing
a schema with the builder, and — new in 0.1.1 — the
import track.

Known limitations (from the whitepaper, §7)

  • Recall is low and enumeration-bound; the shipped
    enumeration default is the measured mitigation, not a
    cure.
  • One pre-registered criterion (NONE-loss share) failed
    its bar and stands as FAIL in the record.
  • The graph's retrieval advantage is scope-bound: real
    on long documents, measured at exactly zero on short
    abstracts — stated that way wherever it is cited.
  • Numbers are stated for the pinned reference profile;
    custom bindings are supported, and their numbers are
    the user's to re-measure.
  • Serving in v1 is deliberately minimal; the fuller
    application is later work.

Links

  • Whitepaper: docs/whitepaper.md
  • Benchmarks index (claim → harness → readout):
    benchmarks/README.md
  • Connections (seats, reference profile, custom
    bindings): docs/connections.md
  • Full changelog: CHANGELOG.md

OntoSmith 0.1.0 — initial release

Choose a tag to compare

@Dongbumlee Dongbumlee released this 24 Oct 22:03

OntoSmith 0.1.0 — initial release

An ontology-driven knowledge-graph builder. Design
the ontology first — entity and relation types,
definitions, boundary examples — get it approved, and
build the graph under it: a pipeline that separates
proposing from judging at every step, where models
propose candidates and deterministic gates plus a fitted
decision model (Jev, a pinned component inside
OntoSmith) decide what is true enough to write. Every
written triple carries its evidence span and provenance,
and every build prices itself before it spends.

Powered by Jev · MIT · Copyright (c) 2026 Dongbum Lee

What ships

  • The batch pipeline — eight stages (ingest →
    roster → candidates → gates → route → write → index →
    verify) under a versioned pack, with per-stage state
    persisted under the batch: a failed run resumes where
    it stopped and never re-spends. A ledger-enforced
    stop-line caps every run.
  • Three domain packs — Open Domain, Bio Medical,
    Legal Contract — over the Core baseline (the Core
    is the baseline every pack extends, not a domain pack
    itself) — each a pinned
    manifest plus payload (ontology, extraction framing,
    gate and entity-resolution defaults) and a conformance
    record of the measurements that adopted it, rejections
    included. Domain content lives only in packs, never in
    code branches.
  • The corpus profiler (ontosmith profile) — a
    deterministic census of your corpus (no LLM) whose
    claims are scanner-verified and whose decision points
    are a human's to approve.
  • The ontology builder (ontosmith ontology) —
    draft → validate → approve → emit, with fail-closed
    validation and human approval bound to the schema
    hash; an emitted pack is marked emitted_unmeasured
    until a registered measurement adopts it.
  • The verification tooling (ontosmith verify) —
    raw and audit-corrected precision, ceiling-adjusted
    recall, a failure-anatomy census that assigns every
    gold item exactly one fate, judge-fitting cells with
    pre-registered gates, and counted cost projections.
  • The connection layer — provider-neutral per-seat
    bindings (any OpenAI-compatible endpoint), declared
    with ontosmith configure (an interactive wizard, or
    its fill-in template twin); the measured
    reference profile ships as the default preset, and run
    records state which binding produced them. Keys are
    environment values, never settings.
  • Serving — hybrid retrieval (vector + lexical +
    graph) via ontosmith search and a sample API
    (ontosmith serve: search / entity / neighborhood /
    triple-with-evidence) over the graph in Neo4j — the
    store holds one graph, the current build's, and
    serving answers from it with no scope to specify —
    or over the keyless file read-back of a build's
    recorded artifacts (lexical + graph arms; the demo
    path) — plus a minimal demo app served at /
    (search box, triple/evidence inspector, entity report,
    click-to-walk neighborhood view).

The quality record

OntoSmith's construction quality is measured, and the
measurement is published — with its scope, its method,
its intervals, and its failures (one pre-registered
criterion failed and is recorded as failed). The full
record is §5 of the project whitepaper
(docs/whitepaper.md). Corrected numbers rest on
machine adjudication under a pre-registered protocol;
they are machine judgments, not a human audit, and not a
corrected gold dataset. The adjudication samples and
verdicts ship in benchmarks/appendix/, and
python examples/demo/replay_scores.py recomputes every
headline of the record from those files alone — no API
key, no model calls, exit non-zero on drift.

Try it without a key

$ pip install ontosmith
$ ontosmith profile examples/corpus --family demo
$ ontosmith inspect examples/triples.jsonl
$ python examples/demo/replay_scores.py

The hands-on guide (docs/hands-on.md) walks the whole
loop twice: the keyless replay track above, and a live build
track (fetch → profile → counted projection → capped
run → scoring) at roughly $1–2 for the demo subset.

Known limitations (from the whitepaper, §7)

  • Recall is low and enumeration-bound; the shipped
    enumeration default is the measured mitigation, not a
    cure.
  • One pre-registered criterion (NONE-loss share) failed
    its bar and stands as FAIL in the record.
  • The graph's retrieval advantage is scope-bound: real
    on long documents, measured at exactly zero on short
    abstracts — stated that way wherever it is cited.
  • Numbers are stated for the pinned reference profile;
    custom bindings are supported, and their numbers are
    the user's to re-measure.
  • Serving in v1 is deliberately minimal; the fuller
    application is later work.

Links

  • Whitepaper: docs/whitepaper.md
  • Benchmarks index (claim → harness → readout):
    benchmarks/README.md
  • Connections (seats, reference profile, custom
    bindings): docs/connections.md
  • Full changelog: CHANGELOG.md