OntoCast 
Ontology-guided extraction of RDF knowledge graphs from documents.
OntoCast reads documents and writes an RDF knowledge graph: an ontology that describes the domain, and the facts the documents state in its terms. Give it your ontologies and it extracts facts against them; give it none and it builds one as it reads. Run it as an HTTP service, as a batch command, or inside your own LangChain or LangGraph agent.
Documentation: growgraph.github.io/ontocast
Features
- Ontology and facts together. Each part of a document goes through a language model in a render-and-critique loop, in parallel; ontology changes are merged, versioned and checked before facts are extracted against them.
- Patches, not rewrites. The model emits insert/delete updates to a graph rather than regenerating it.
- Entity disambiguation. Mentions of the same entity across a document are merged into one.
- Validation. Deterministic checks, SHACL shapes, and repairs that need no extra model call.
- Provenance. Facts carry RDF 1.2 provenance back to the text, which you can strip on output.
- Ontology context. Each part of a document is shown the ontology it needs: chosen from your catalog, retrieved from a vector store (LanceDB or Qdrant), or fixed.
- Storage. In memory by default, Apache Jena Fuseki for persistence, partitioned by tenant and project.
- A light core. The base install embeds without a document-processing stack or an ML runtime; those are extras.
Install
pip install "ontocast[server,openai,doc-processing]"
server provides the ontocast command and HTTP API, openai the model
provider (anthropic, google and ollama also exist), and doc-processing
the document converter (PDF, Office, HTML, Markdown, images). All extras:
Installation.
Quick start
OntoCast reads its settings from environment variables:
export LLM_API_KEY=sk-...
ontocast serve
curl -X POST http://127.0.0.1:8999/process -F "file=@document.pdf" -o result.json
The response holds the facts and the ontology as Turtle. To process files without a server:
ontocast process --input-path ./papers --output-dir ./out
To keep settings in a file, copy .env.example.minimal,
edit it, and pass it with ontocast --env-file my.env serve (repeatable; later
files win). Step by step:
Quick start.
Your own ontologies
Put Turtle files in a directory and pass it at startup, or upload them to a running server:
ontocast serve --ontology-dir ./my-ontologies
curl -X POST http://127.0.0.1:8999/ontologies -F "file=@my-ontology.ttl"
Embed in your agent
from langchain.agents import create_agent
from ontocast import Config, ToolBox, ontocast_tools
tools = await ToolBox.acreate(Config.in_memory())
await tools.initialize()
agent = create_agent(
model,
tools=[*ontocast_tools(tools)],
prompt="Edit the ontology from the user's text.",
)
run_unit_pipeline processes a single passage, and make_ontocast_node adds
OntoCast to your own LangGraph. See Embedding
OntoCast.
How it works
A document is converted to text and cut into parts. Each part updates the ontology; the updates are normalized, consolidated and checked. Each part then yields facts in the ontology's terms; the facts are merged, disambiguated and validated, and the result is written to the triple store. How OntoCast works.
Documentation
| Getting started | Installation · Quick start |
| Concepts | How OntoCast works · Ontologies and facts |
| Guides | Configuring OntoCast · Recipes · Validation and SHACL · Triple stores |
| Reference | Configuration · HTTP API · Python API |
Release notes: CHANGELOG.md
Contributing
See Contributing. Issues and discussion: GitHub. Contributors accept the Contributor License Agreement once, by commenting on their first pull request.
License
Apache License 2.0; see LICENSE.
Metadata
Release files for ontocast 0.6.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ontocast-0.6.7.tar.gz | 1.2 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ontocast-0.6.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.0 MB
Release files / ontocast-0.6.7.tar.gz
| Download URL | ontocast-0.6.7.tar.gz |
|---|---|
| Size | 1.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
953442cd5a6a38ac3be30f4d5ce3d26525b00d792f849f1682e952b92296bdad
|
|
BLAKE2b-256 checksum How to use checksums |
7ee137beb206f7f28b6f325739a8b47108334184baf6fe9cd0c59492f6504228
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / ontocast-0.6.7-py3-none-any.whl
| Download URL | ontocast-0.6.7-py3-none-any.whl |
|---|---|
| Size | 808.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c232a0d87661417639eed4088a7e3794c451ab6303ffecad0804e03c9282c7ab
|
|
BLAKE2b-256 checksum How to use checksums |
9ffdb7d166b553dd1f2435c1ddb3f44c5e52a97029e0c453974aca7dc5ad2070
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|