OntoCast
v0.6.2 open-sourceAgentic Ontology Assisted Framework for Semantic Triple Extraction
from ontocast.agent.update_common import finalize_update_report, log_quarantine
# report is a GraphUpdateRenderReport returned by a render agent
update, rejected = finalize_update_report(report, insert_hook=my_domain_repair)
log_quarantine('facts', rejected)
# rejected is a list[RejectedLiteralTriple] — inspect or persist before applying update
FUSEKI_SHAPES_DATASET=ontocast--test--shapes
FACTS_SHAPES_DIR=/path/to/seed/shapes
curl -X POST 'https://<host>/flush?include_shapes=true'
AGG_INITIALS_DISTINCT_GUARD=false
AGG_TYPE_GUARD_UNTYPED=strict
curl -X POST "http://localhost:8999/shapes?tenant=acme&project=reports" -F "[email protected]"
curl -X POST "http://localhost:8999/shapes?tenant=ontocast&project=test" -F "file=@my_shapes.ttl"
curl -X DELETE "http://localhost:8999/shapes/http%3A%2F%2Fexample.org%2Fmy-shapes?tenant=ontocast&project=test"
curl "http://localhost:8999/shapes?tenant=ontocast&project=test"
FACTS_ACCEPT_BLOCKING_SEVERITY=important
curl -X POST 'https://ontocast.example.com/flush?include_shapes=true'
ONTOLOGY_CONTEXT_MAX_TRIPLES=2000 python -m ontocast.server
LLM_GRAPH_FORMAT=turtle python -m ontocast.server
from ontocast import Config, ToolBox, ontocast_tools
from langchain.agents import create_agent
tools = await ToolBox.acreate(Config.in_memory())
await tools.initialize()
agent = create_agent(model, tools=[*ontocast_tools(tools, mutating=True)])
from ontocast import Config, ToolBox
from ontocast.integrations.langchain import ontocast_tool_diagnostics
tools = await ToolBox.acreate(Config.in_memory())
await tools.initialize()
print(ontocast_tool_diagnostics(tools)) Summary
OntoCast is an open-source vector-db-rag tool that agents can use to extract RDF knowledge graphs from documents by co-evolving domain ontologies and fact graphs using a map/reduce pipeline. The tool is licensed under Apache 2.0 and can be run as a REST service, a batch CLI, or embedded within a LangChain/LangGraph agent. It is intended for application developers and positions itself as an alternative to document processing pipelines that require multiple complex integrations. The project has active documentation and a DOI.
Agentic Ontology Assisted Framework for Semantic Triple Extraction
What OntoCast answers
What kinds of graph updates does it apply when processing chunks?
It uses GraphUpdate patches for efficient insert or delete operations instead of rebuilding the entire graph.
What constraints does it validate the extracted facts against?
It performs validation using SHACL, optionally including machine repairs without needing an extra language model pass.
How does it handle context when building ontologies?
It supports selecting from a catalog of ontologies or using vector retrieval from databases like LanceDB or Qdrant.
What are the methods available for running the knowledge graph extraction process?
It can operate as a REST service, via a batch command-line interface, or integrated directly into a LangChain/LangGraph agent.
Does it manage changes to the graph incrementally?
It uses GraphUpdate patches for token-efficient insertion and deletion of facts.
How does it track the origin of the extracted data?
It includes RDF 1.2 provenance information, which can be optionally removed.
Examples
Command line
No option matches that search.
| option | found in | since | description |
|---|
No option matches that search.
Values are placeholders taken from each option’s declared default. Nothing is executed here — the output shown is a recording of a run that already happened.
Release history
- docs update
OntoCast gains
finalize_update_reportandlog_quarantineinontocast.agent.update_commonfor shared graph-patch hygiene.└──▷ USE ITFinalize an LLM-rendered patch with a custom domain repair hook, then inspect which triples were quarantined before writing the update to the graph store.from ontocast.agent.update_common import finalize_update_report, log_quarantine # report is a GraphUpdateRenderReport returned by a render agent update, rejected = finalize_update_report(report, insert_hook=my_domain_repair) log_quarantine('facts', rejected) # rejected is a list[RejectedLiteralTriple] — inspect or persist before applying update- ›Adds finalize_update_report(report, *, insert_hook=None) in
ontocast.agent.update_commonto canonicalize prefixes, quarantine malformed XSD typed literals, and run optional domain repairs on insert triples before a patch is applied — returning atuple[GraphUpdate, list[RejectedLiteralTriple]]. - ›Adds optional
insert_hookparameter tofinalize_update_report— a caller-suppliedInsertHookthat receives only the insert graph (not the delete side) for domain-specific triple repair, with its rejections merged into the quarantine list. - ›Adds log_quarantine(kind, rejected) in
ontocast.agent.update_commonto emit a single warning per render cycle whenever triples carrying invalid literals are withheld from the applied graph.
- ›Adds finalize_update_report(report, *, insert_hook=None) in
- docs update
OntoCast adds a dedicated SHACLSHACLA W3C standard language for defining constraints and validation rules over RDF graphs, allowing a tool to verify that graph-structured data conforms to a declared shape or schema. shapes dataset partition with
FACTS_SHAPES_DIR,POST /shapes, andDELETEroutes└──▷ TRY ITSeed a directory of SHACL shapes into the shapes partition so they reload on every restart during development.$ FUSEKI_SHAPES_DATASET=ontocast--test--shapes FACTS_SHAPES_DIR=/path/to/seed/shapes- ›Adds
FACTS_SHAPES_DIRenvironment variable to seed SHACL shapes documents into a dedicated shapes partition on every startup (recursive scan, overwrites on each restart so edits take effect immediately). - ›Adds
POST /shapesand matchingDELETEendpoints to mutate the shapes store independently of the ontologies dataset. - ›Introduces a third triple-store dataset (
{tenant}--{project}--shapes) to isolate SHACL shapes from the ontologies partition, preventing shapes documents from being vector-indexed or surfaced as schema ontologies. - ›Adds
storekeyword argument to aselect(query, *, store='ontologies') and aconstruct(query, *, store='ontologies') to target a specific dataset partition.
- ›Adds
- docs update
OntoCast adds SHACLSHACLA W3C standard language for defining constraints and validation rules over RDF graphs, allowing a tool to verify that graph-structured data conforms to a declared shape or schema.-backed validation, literal deduplication, ontology delta shadow mode, and per-document critic telemetry across facts and ontology loops.
└──▷ TRY ITDrop the shapes partition along with facts and ontologies during a full flush, rather than retaining the validation contract.$ curl -X POST 'https://<host>/flush?include_shapes=true'
- ›Adds
FACTS_ACCEPT_BLOCKING_SEVERITY(defaultcritical) to control whichTripleFixseverity level blocks render acceptance, replacing the previous score-only gate. - ›Adds
FACTS_ADDITIONAL_STANDARD_NAMESPACESconfig to extend the closed-namespace allow-list used byUNKNOWN_TERMmandatory findings. - ›Adds
FACTS_QUANTITY_FALLBACK_VOCABULARYconfig to name the quantity fallback vocabulary, exempting it from unknown-term flagging and repair-deletion. - ›Adds
FACTS_LITERAL_VARIANT_DEDUPE(default on) to collapse duplicate literals that differ only in language tag or datatype on the same (subject, predicate), with the language-tagged form winning; each removal is recorded as aliteral_variant_prunedrepair record. - ›Adds
ONTOCAST_ONTOLOGY_DIRECTORY-stylebootstrap contract for SHACL shapes: shapes are seeded from a directory at startup and stored in a per-tenant{tenant}--{project}--shapespartition in the triple store, making them addressable and mutable via/shapes.
+10 moreshow less
- ›Adds
POST /flush?include_shapes=trueparameter to drop the shapes partition on flush; without it,POST /flushretains shapes by default (subsequent runs reportshacl_evaluated: nullif shapes are absent). - ›Adds
ONTOLOGY_CONTEXT_MODE=selected_vector_search_ontologysetting to enable vector-search-based per-unit snapshot retrieval with reduce-time reconciliation policies. - ›Adds
ONTOLOGY_RECONCILE_MINTED_TERMSpolicy (defaultdetect; also supportssubstituteanddisable) to reconcile re-minted ontology terms against catalog terminals at reduce time. - ›Adds ontology delta shadow-mode validation (deterministic lane against insert/delete delta only, never the full graph), running checks including
foreign_namespace,degenerate_restriction,missing_label,subclass_cycle,role_confusion,cardinality_contradiction,foreign_delete, and advisorylabel_collision. - ›Adds
LABEL_ONLY_NUMBERmandatory finding, firing when a node carries the fallback vocabulary's unit property but has no numeric literal on any property while its label holds a number as prose. - ›Adds
MIXED_OBJECT_KINDSfinding with three branches: ≥2 distinct canonical numeric values, ≥2 irreconcilable short string values, or ≥2 IRI objects on a dominantly single-valued predicate. - ›Adds degenerate-bound promotion: equal lower/upper bounds collapse to a scalar on the configured
numeric_valueproperty whenlower_boundandupper_boundroles match. - ›Writes per-document ontology critic telemetry to the run manifest under
ontology_criticand exposesontology_findings_residual,ontology_mandatory_residual,ontology_critic_calls, andontology_critic_acceptedinretrieval_metrics. - ›Exposes reduce-time metrics
minted_duplicates,minted_duplicate_pairs,minted_duplicates_rewritten,deletes_dropped_unredeclared,fresh_ontologies_merged,fresh_minted_duplicates,apply_deletes_no_match,unattributed_insert_triples, andunattributed_delete_triplesfor ontology delta tracking. - ›SHACL shapes are cross-checked against term-validator rules at load time, logging an error for any property that shapes require but the term validator would flag as unknown.
- ›Adds
- docs update
OntoCast aggregation gains named guard flags, natural-key merge, cluster-wide vetoes, and structured merge-refusal codes
└──▷ TRY ITDisable the initials guard to allow merges between entities like 'company S.' and 'company T.' when your corpus legitimately uses initials as abbreviations for the same entity.$ AGG_INITIALS_DISTINCT_GUARD=falseEnable strict typed-vs-untyped merge rejection to harden entity resolution when untyped nodes should never absorb typed ones.$ AGG_TYPE_GUARD_UNTYPED=strict- ›Adds
AGG_LITERAL_CONFLICT_GUARDconfig flag (defaulttrue) to veto merges between entities asserting disjoint literal values on a shared predicate, with refusals counted infacts_rejected_merges. - ›Adds
AGG_INITIALS_DISTINCT_GUARDconfig flag (defaulttrue) to veto merges between entities whose labels are identical except for conflicting initials (e.g. 'company S.' vs 'company T.'). - ›Adds
AGG_NATURAL_KEY_MERGEconfig flag (defaulttrue) to treat instances sharing an identical short string value on a single-valued identifier-like predicate as merge candidates, even when labels and embeddings disagree. - ›Adds
AGG_TYPE_GUARD_UNTYPEDconfig flag (defaultpermissive) controlling whether a typed entity may merge with an untyped one;strictfails typed-vs-untyped pairs. - ›Introduces cluster-wide veto semantics: a vetoed pair blocks transitive closure, so a guard refusal cannot be bypassed through a chain of accepted edges.
+3 moreshow less
- ›Exposes structured merge-refusal reason codes —
literal_conflict,functional_iri_conflict,initials_conflict,role,type,lexical, andcluster_veto— logged alongsidefacts_rejected_mergesto let practitioners trace which guard split a surprising cluster. - ›Key-supported clusters (formed via
AGG_NATURAL_KEY_MERGE) are now reported onAggregationResultaskey_supported_clustersand carried onAgentStateasaggregation_key_clusters. - ›Downgrades
SUSPECT_MULTI_VALUEstring findings fromerrortowarningon key-supported subjects during SHACL validation, preventing the un-merge repair loop from splitting correctly merged entities.
- ›Adds
- docs update
OntoCast adds per-tenant SHACLSHACLA W3C standard language for defining constraints and validation rules over RDF graphs, allowing a tool to verify that graph-structured data conforms to a declared shape or schema. shapes partitioning with
FUSEKI_SHAPES_DATASETandFACTS_SHAPES_DIRcontrols└──▷ TRY ITUpload SHACL shapes scoped to a specific tenant and project partition in Fuseki.$ curl -X POST "http://localhost:8999/shapes?tenant=acme&project=reports" -F "[email protected]"
- ›Adds a
{tenant}--{project}--shapestriple-store dataset partition for SHACL shapes, isolated per tenant and project (no vector-store counterpart, as shapes are never retrieved by similarity). - ›New
FACTS_SHAPES_DIRconfig key sets the source directory for a tenant's SHACL shapes on initialisation; an empty partition is valid and is read downstream as 'SHACL never checked' rather than 'conforms'. - ›Supports
tenantandprojectquery parameters on the shapes upload endpoint (http://localhost:8999/shapes?tenant=<tenant>&project=<project>) to scope shape uploads to a specific partition. - ›Adds
&include_shapes=truequery parameter to the flush endpoint to optionally drop shapes alongside partition data (default flush retains shapes).
- ›Adds a
- docs update
OntoCast adds SHACLSHACLA W3C standard language for defining constraints and validation rules over RDF graphs, allowing a tool to verify that graph-structured data conforms to a declared shape or schema. shapes partition management via
GET/POST/DELETE /shapesendpoints andinclude_shapesreset flag└──▷ TRY ITUpload a SHACL shapes file to activate the validation gate for a tenant/project.$ curl -X POST "http://localhost:8999/shapes?tenant=ontocast&project=test" -F "file=@my_shapes.ttl"
Remove a specific shapes document by graph URI when retiring an old SHACL constraint set.$ curl -X DELETE "http://localhost:8999/shapes/http%3A%2F%2Fexample.org%2Fmy-shapes?tenant=ontocast&project=test"
Confirm the current shapes partition contents and merged triple count before a validation run.$ curl "http://localhost:8999/shapes?tenant=ontocast&project=test"- ›Adds
GET /shapesendpoint to list named graphs in the shapes partition and return the merged triple count. - ›Adds
POST /shapesendpoint to upload a SHACL shapes document (Turtle file); documents with<iri> a owl:Ontologyare stored under that IRI (re-upload replaces), and headerless documents are named after the uploaded filename. - ›Adds
DELETE /shapes/{graph_uri}endpoint to remove a shapes document by URL-encoded graph URI; the seed directory (FACTS_SHAPES_DIR) is untouched, so seeded documents return on next restart. - ›Adds
include_shapesparameter to the reset/rerun flow to also drop the shapes partition; off by default — omitting it means a rerun restores facts and ontologies but leaves SHACL disabled, reportingshacl_evaluated: nullinstead of failing. - ›Introduces a dedicated shapes partition separate from the ontologies dataset, so the SHACL validation gate operates against its own named-graph store.
- ›Adds
- docs update
OntoCast adds
FACTS_ACCEPT_BLOCKING_SEVERITYconfig key and a deterministic ontology-finding lane running in shadow mode└──▷ TRY ITWiden the facts acceptance gate to also block on 'important'-severitycritic fixes, catching more issues before a unit exits the loop.$ FACTS_ACCEPT_BLOCKING_SEVERITY=important- ›Adds
FACTS_ACCEPT_BLOCKING_SEVERITYconfig key to control which critic-fix severities block a facts unit from leaving the loop; accepted values arecritical(default),important, andnever. - ›Introduces a deterministic finding lane for the ontology loop (
tool/ontology_validation/unit_findings.py) running in shadow mode: findings are collected, injected into the critic prompt as MANDATORY items, and reported asontology_findings_residual/ontology_mandatory_residualwithout changing the gate.
- ›Adds
- docs update
OntoCast adds
AGG_CANDIDATE_SIMILARITY_THRESHOLDconfiguration with a default of.70- ›Adds
AGG_CANDIDATE_SIMILARITY_THRESHOLDenvironment variable (default0.70) to control the similarity threshold for aggregation candidate selection.
- ›Adds
- v0.6.2
OntoCast v0.6.2 adds a
/shapesAPI, per-tenant SHACLSHACLA W3C standard language for defining constraints and validation rules over RDF graphs, allowing a tool to verify that graph-structured data conforms to a declared shape or schema. shape storage, and a selective flush withinclude_shapes.└──▷ GET THIS VERSION$ git clone --branch v0.6.2 https://github.com/growgraph/ontocast.git # already have the repo? check out this version: $ git checkout v0.6.2
└──▷ TRY ITFlush everything including shapes (e.g. to fully reset a CI environment between test suites).$ curl -X POST 'https://ontocast.example.com/flush?include_shapes=true'
- ›Adds
/shapesREST routes —GET(list stored documents),POST(upload Turtle), andDELETE /{graph_uri}— mirroring/ontologiesand tenancy-scoped the same way; a document declaring<iri> a owl:Ontologyis stored under that IRI so re-uploading replaces it. - ›Adds
POST /flush?include_shapes=trueto optionally drop the shapes partition on flush; by default flush retains shapes, and later runs reportshacl_evaluated: nullinstead of failing when shapes are absent. - ›Adds
include_shapesflag to TripleStoreManager.clean() and clean_tenancy() to control whether the SHACL shapes partition is cleared. - ›SHACL shapes are now stored in the triple store in a dedicated
{tenant}--{project}--shapespartition (FUSEKI_SHAPES_DATASET), enabling per-tenant shape catalogs and removing the need for a shapes directory in containerised workers. - ›Changes
FACTS_SHAPES_DIRfrom a live read directory to a read-only seed materialized into the shapes partition at startup; the validation gate now reads the partition rather than the directory.
+4 moreshow less
- ›Adds
tool/shapes_catalog.pyandapi/shapes.pyas new modules supporting shape catalog discovery and the/shapesAPI. - ›Replaces the two-valued
use_ontologies_dataset: boolparameter onaselect,aconstruct,drop_named_graph,drop_all_ontology_graphs_for_iri,serialize_graph, andserializewith aStoreKind("facts" | "ontologies" | "shapes") partition selector. - ›Updates the LangChain tools
ontocast_sparql_selectandontocast_sparql_constructto expose astoreparameter in place ofuse_ontologies_dataset. - ›Flattens the ontology update wire:
GraphUpdateRenderReportnow carriesinsert_graphanddelete_graphas sibling fields, and to_graph_update() compiles them delete-then-insert for apply(), the SPARQL compiler, and the LangChain tool.
└──▷ BREAKING ON UPGRADE- !
GraphUpdateRenderReportreplacesgraph_update.triple_operations[]with sibling fieldsinsert_graphanddelete_graph; interleaving inserts and deletes within a single render is no longer expressible, and cached ontology-render responses are invalidated. Touchesonto/model.py::GraphUpdateRenderReport,to_graph_update,prompt/graph_format.py,prompt/llm_json_schema.py. - !
tool/facts_invariants.pyis removed; the previous module name no longer resolves. Replace all imports withtool/facts_validation/(public surface via package__init__). - !The
data/top-level directory and its importabledatapackage are removed. TTL fixtures are now intest/data/ontologies/; local-source entries inrun/fetch_schema_samples.pyresolve viaONTOCAST_SCHEMA_SAMPLE_DIRand are skipped when unset. - !
FACTS_SHAPES_DIRchanges meaning from a live read directory to a read-only seed; the validation gate now reads the{tenant}--{project}--shapestriple-store partition (FUSEKI_SHAPES_DATASET). A containerised worker that relied on the directory for validation must migrate shapes to the store. - !collect_shacl_shapes(ontology_graph, shapes_dir) signature changes to collect_shacl_shapes(ontology_graph, stored_shapes: RDFGraph | None); it no longer performs disk I/O.
- !The
use_ontologies_dataset: boolparameter is removed fromaselect,aconstruct,drop_named_graph,drop_all_ontology_graphs_for_iri,serialize_graph, andserialize; callers must switch to thestore: StoreKind("facts" | "ontologies" | "shapes") parameter. The LangChain toolsontocast_sparql_selectandontocast_sparql_constructlikewise replaceuse_ontologies_datasetwithstore. - !aserialize(ontology) previously hard-coded the ontologies dataset and silently overwrote a caller's
graph_uri; it now honours astore=override, so callers relying on the silent override must passstore='ontologies'explicitly.
- ›Adds
- v0.6.1
OntoCast v0.6.1 adds
ONTOLOGY_CONTEXT_MAX_TRIPLESprompt cap, changesLLM_GRAPH_FORMATdefault tojsonld, and introduces seed-free graph pruning ingraph_prune.py.└──▷ GET THIS VERSION$ git clone --branch v0.6.1 https://github.com/growgraph/ontocast.git # already have the repo? check out this version: $ git checkout v0.6.1
└──▷ TRY ITCap how many triples reach the LLM prompt to stay within a provider's context window, without truncating load-bearing schema.$ ONTOLOGY_CONTEXT_MAX_TRIPLES=2000 python -m ontocast.server
Keep Turtle as the LLM wire format for providers whose structured-output handling works better with plain strings than nested JSON-LD objects.$ LLM_GRAPH_FORMAT=turtle python -m ontocast.server
- ›Adds
ONTOLOGY_CONTEXT_MAX_TRIPLES(default4000) to bound ontology context size in every prompt mode —selected_single_ontology,fixed_single_ontology, and facts fan-out — enforced atformat_ontology_chapter; over budget,onto/ontology_condense.pydrops triples in increasing order of harm (header/list noise first, redundant structure second, glosses third) and never drops labels, types, hierarchy, or domain/range. - ›Changes
LLM_GRAPH_FORMATdefault from Turtle tojsonldacrossServerConfig,AgentState,UnitState, and thellm_graph_format_ctxContextVar; Turtle remains supported via explicit configuration. - ›Changes
ONTOLOGY_MAX_TRIPLESdefault to unlimited; the variable is still available as a runaway-growth backstop on the per-unit working graph — useONTOLOGY_CONTEXT_MAX_TRIPLESto cap prompt size instead. - ›Adds
ONTOLOGY_SNAPSHOT_TRIPLESretrieval metric, now written for every context mode (previously only the vector resolver recorded a size underpatch_retrieval). - ›Moves seed-free graph pruners and predicate vocabularies (
NOISY_EXPANSION_PREDICATES,GENERIC_INDIVIDUAL_TYPES,MIN_MEANINGFUL_RESTRICTION_PREDICATES,OWL_RESTRICTION_MEANINGFUL_PREDICATES,bfs_triple_rank,count_meaningful_restriction_predicates,prune_degenerate_restriction_bnodes,prune_orphaned_bnode_subjects,remove_bnode_subgraph) into the new shared moduleonto/graph_prune.py, reusable by both induced-subgraph retrieval and the prompt condenser.
+1 moreshow less
- ›The
ontocast_extractLangChain/MCP tool now reads itsrender_modedefault from theRENDER_MODEenvironment variable (viaparse_render_mode_param) instead of hardcodingontology_and_facts.
└──▷ BREAKING ON UPGRADE- !
LLM_GRAPH_FORMATnow defaults tojsonld; any deployment that never set this variable will switch wire format on upgrade. SetLLM_GRAPH_FORMAT=turtleexplicitly to preserve the previous behaviour. - !
ONTOLOGY_MAX_TRIPLESnow defaults to unlimited (was50000); workloads relying on the old cap to bound working-graph growth must set the variable explicitly.
- ›Adds
- v0.6.0
OntoCast v0.6.0 adds a LangChain integration module and first PyPI publication since v0.4.3.
└──▷ GET THIS VERSION$ git clone --branch v0.6.0 https://github.com/growgraph/ontocast.git # already have the repo? check out this version: $ git checkout v0.6.0
└──▷ USE ITWire OntoCast's ontology and retrieval capabilities into a LangChain agent, with write operations enabled.from ontocast import Config, ToolBox, ontocast_tools from langchain.agents import create_agent tools = await ToolBox.acreate(Config.in_memory()) await tools.initialize() agent = create_agent(model, tools=[*ontocast_tools(tools, mutating=True)])
Diagnose which OntoCast tools were excluded from the LangChain toolset due to missing backends.from ontocast import Config, ToolBox from ontocast.integrations.langchain import ontocast_tool_diagnostics tools = await ToolBox.acreate(Config.in_memory()) await tools.initialize() print(ontocast_tool_diagnostics(tools))
- ›Adds
ontocast.integrations.langchainmodule exposing ontocast_tools(tools), which returns a list ofBaseToolobjects any LangChain or LangGraph agent can call, with capability-gated tool inclusion and opt-in mutation viamutating=True. - ›Adds
ontocast_tool_diagnosticsfunction to explain which tools were omitted from the LangChain toolset and why, making missing-backend failures visible. - ›Introduces
ExternalEvidenceCacheEntryas the supported replacement for UnitState external-evidence mirrors. - ›Introduces
ontocast.onto.constants.PROVENANCE_METADATA_TERMS, a module-levelfrozensetnaming the classes and predicates the pipeline mints on provenance nodes, replacing the former class attributeTripleStoreManager._PROVENANCE_METADATA_PREDICATES. - ›First release published to PyPI since v0.4.3; v0.5.0 and v0.5.1 were in-tree version bumps never tagged or published.
└──▷ BREAKING ON UPGRADE- !Removed in-memory vector store:
VECTOR_STORE_BACKEND=memory,VectorStoreBackend.MEMORY, andtool/vector_store/in_memory.pyare gone; retrieval now requires Qdrant or LanceDB. Config.in_memory() is triple-store only (pyoxigraph). - !
AtomicToolBoxnow takesWebSearchConfigandEmbeddingBasedAggregatornow takesAggregationConfig; flat kwargs are removed from both. - !Removed
test-apiconsole script andcli/test_api.py;requestsis dropped from theserverextra. - !Removed
cmp-statesconsole script andontocast/cli/cmp_states.py. - !A provenance unit node is now typed
schema:Text(the class) instead ofschema:text(a property IRI); graphs already in a triple store keep the old type until re-extracted, and any query filtering onschema:textmust be updated. - !
TripleStoreManager._PROVENANCE_METADATA_PREDICATESis removed; useontocast.onto.constants.PROVENANCE_METADATA_TERMSinstead. - !Removed dead modules
onto/context.py,tool/graph_version_manager.py, andtool/graph_diff.py(~1,222 lines). - !Removed numerous previously import-visible symbols including
route_after_convert,route_after_ontology_consolidation,WorkflowNode.AGGREGATE_FACTS,WorkflowNode.PARALLEL_MAP_UNITS,aggregate_anchor_metrics, URIPromoter,OntologyDecision,FactsDecision,CHUNK_NULL_IRI,render_ontology_rank_diagnostics,set_failure(no longer takessuccess_score),graph_uri_override,ToolBox._unlink_ttl_files_if_ontology_iri, and others; anything importing them out-of-tree breaks. - !
ontology_directoryis now strictly read-only:ingest_ontology_ttlno longer requires or touches it, anddelete_ontology_by_irino longer removes files from it. An ingested ontology lives only in the triple store and vector index and does not survive a rebuild from seeds. - !Dropped
AgentStatefields including UnitState shadows, never-read writers, andgraph_uri_override;graph_uriis alwaysdoc_namespace.
- ›Adds