edgextract vs ontocast
Markdown to knowledge graph with an ontology you write: a small local decision model answers closed yes/no questions per candidate, and your cutoff keeps, queues for review or drops each link. — versus — Agentic ontology-assisted RDF extraction: co-evolves domain ontologies and fact graphs in a map/reduce pipeline with RDF 1.2 provenance, entity disambiguation and SHACL autofix.
Both do ontology-guided extraction into a graph; OntoCast co-evolves the ontology with an LLM, edgextract keeps your ontology fixed and gates each link by calibrated probability.
| edgextract | ontocast | |
|---|---|---|
| Stars | 100 | 240 |
| Forks | 11 | 27 |
| Language | TypeScript | Python |
| License | Apache-2.0 | Apache-2.0 |
| Last activity | 7 days ago | 7 days ago |
| Topics | knowledge-graphs, decision-models | knowledge-graphs |
| Curated connections | 4 | 8 |
edgextract — the curator's take
Use it when a wrong edge in your graph costs more than a missing one — every link is a probability you threshold, uncertain ones go to a human queue, and nothing is free-form JSON. Runs fully local (tev1 via Ollama, or WebGPU in the browser through its Rust/WASM core). Small project (~100 stars) and it extracts only what your ontology allows; for open-ended extraction over messy corpora an LLM extractor covers more ground.
ontocast — the curator's take
The extractor to pick when ontology drift is the thing that has burned you: schema and instances evolve in one loop, GraphUpdate insert/delete patches replace whole-graph regeneration, and SHACL validation repairs machine-fixable violations without another LLM pass. Runs as a REST service, a batch CLI, or a LangGraph node, with pyoxigraph in memory by default and Fuseki when you need persistence. Realities: it's research-grade (Zenodo DOI, 228 stars) with a configuration surface to match — 202 environment variables, and the docs sensibly ship a 47-variable minimal file plus playbooks. The LLM critic is off at the default `MAX_VISITS_PER_NODE=1`, so quality out of the box is one render pass.