Semantica — Lab Component
Lab component — not in the Synedrix OS tech stack·Evaluated under LAB-002·Not required in any deployment mode
Not a Synedrix OS platform. Semantica is not one of the twelve platforms and holds no OS layer. It appears nowhere in the canonical document set prior to
LAB-002— unlike EverOS, there is no prior ADR position to respect or discharge here; this is a first look at a set of independent capabilities, not a follow-through. This page is lab reference material, evaluated in structural isolation from production — not a stack platform page, and not citable as authority by any canonical document.
What Semantica is
Semantica (semantica-agi/semantica) is a Python knowledge-graph and GraphRAG toolkit — real, active, MIT licensed, at PyPI version v0.6.5. It bundles several genuinely independent capabilities rather than one narrow function.
| Concept | What it is |
|---|---|
DocumentParser (DoclingParser) | Semantica’s own wrapper class around IBM’s Docling library — structural document parsing that extracts tables, headings, and layout, not a literal semantica.split call (that name does not exist as documented; the real API is TextSplitter(...).split()) |
ContextGraph | An in-memory, in-process knowledge/decision graph — record_decision, add_causal_relationship, entity extraction, to_dict()/save_to_file() serialization. Holds no database connection of its own |
ProvenanceManager | A separate module producing genuine, standards-compliant W3C PROV-O export (track_entity() + export_prov(format="turtle")) — distinct from ContextGraph’s own export_rdf(), which emits only Semantica’s private vocabulary |
| Graph store bridges | semantica.graph_store ships real Bolt/driver-level bridges to several external graph databases (Neo4j, FalkorDB, Amazon Neptune, Apache AGE) — generic CRUD wrappers, not a ContextGraph-to-database autosync |
| RDF triplet stores | semantica.triplet_store ships Blazegraph and Oxigraph bridges — a genuine, separate RDF datastore option, not exercised under this charter (see below) |
| NER / entity extraction | semantica.semantic_extract.named_entity_recognizer — a real spaCy-backed named-entity recognizer with a pattern-matching fallback when no spaCy model is installed |
| Visualization | semantica.visualization.kg_visualizer.KGVisualizer — a Plotly-based interactive network renderer, bundled with the base package (no extra install) |
| Knowledge Explorer | semantica.explorer — a genuine FastAPI/Uvicorn single-page web app (routes for graph, decisions, provenance, temporal, SPARQL, ontology) loading from a saved ContextGraph JSON file. Requires the [explorer] extra; self-issues a no-auth warning if bound beyond loopback without SEMANTICA_API_KEY |
| MCP server | Real — python -m semantica.mcp_server, 12 tools including record_decision and get_graph_analytics — but stdio-only, no HTTP/SSE transport; meant to be subprocess-spawned by an MCP client, not called over a port |
What Semantica is normally used for
- GraphRAG retrieval — building a knowledge graph over a document corpus so multi-hop questions (tracing every document a decision touched, following a causal chain) become answerable, which pure vector similarity search structurally cannot do
- Decision and provenance tracking — recording a decision, its reasoning, and its outcome as a queryable graph node, then exporting that lineage in a standards-compliant format
- Structural document ingestion — extracting tables and layout faithfully from source documents before chunking, rather than treating a document as an undifferentiated block of text
How Synedrix OS uses it
Synedrix OS does not use Semantica in production. LAB-002 evaluates a deliberately narrow subset of its capabilities, scoped by what is genuinely undecided rather than testing everything it bundles equally.
| Capability | Lab treatment |
|---|---|
| Docling structural parsing | In scope — the main event. Drives an ingestion A/B: a separate, additive Qdrant collection (synedrix_os_kb_semantica_v1) compared against the production collection, never a replacement for it |
| PROV-O export | In scope, lightweight. Tested against real decisions drawn from this repository’s own change logs |
| RDF triple store | Out of scope, pre-judged. A 14th datastore duplicating Neo4j — the identical substrate-duplication rule that rejected the EverOS runtime |
| Graph algorithms | Out of scope. Neo4j GDS, run directly against the production graph, already provides PageRank/Louvain/Node2Vec/link prediction with no new component at all |
| OWL/SHACL/SKOS ontology | Open, low priority. Collides conceptually with NAMS’s already-adopted POLE+O ontology |
| Rete/Datalog/SPARQL rule engines | Deferred. Belongs to Policy Guard’s (os-agt-002) rule surface, not a general context-graph tool |
flowchart LR
n1([Semantica]):::term
subgraph What it owns
n2[Nothing in production]:::agent
end
n1 --> n2
subgraph What it does not own
n3[Semantic retrieval and similarity search]:::warn
n4[Qdrant]:::term
n3 --> n4
n5[Canonical relational truth]:::warn
n6[Supabase PG17]:::term
n5 --> n6
n7[Explicit relationships and lineage as production authority]:::warn
n8[Neo4j]:::term
n7 --> n8
end
n1 --> n3
subgraph Why Semantica is not yet in the stack
n9[Pre-1.0 despite a Production/Stable classifier]:::term
n10[The RDF/graph-algorithm capabilities duplicate what the OS already has]:::term
n11[The one genuinely novel claim is not yet verified]:::term
n12[Worth evaluating precisely because nothing here is decided yet]:::term
n13[Docling parsing works with one real tempering finding]:::term
n14[PROV-O export is real and genuinely standards-compliant once the correct API]:::term
n15[The Neo4j graph bridge is real but was initially unused]:::term
end
n1 --> n9
What it owns
Nothing in production. Inside LAB-002’s isolation boundary, a Semantica-built Qdrant collection and a Semantica-built decision graph in neo4j-lab are both reachable only from lab infrastructure, never from a registered agent, and hold no production tenant data.
What it does not own
| Concern | Owner |
|---|---|
| Semantic retrieval and similarity search — the single vector substrate for Layer 7 | Qdrant (Layer 7) — Semantica’s own collection is additive, never a replacement |
| Canonical relational truth — business entities, workflow state, approvals, audit trails | Supabase PG17 (Layer 7) |
| Explicit relationships and lineage as production authority | Neo4j (Layer 7) — a Semantica-built graph in neo4j-lab is a lab evaluation artifact, not a second production graph store |
| Decision provenance already covered by the canonical envelope | provenance.source_event_id / derived_from / validity_interval (Memory Fabric Spec §4.2/§4.4) |
Why Semantica is not (yet) in the stack
- Pre-1.0 despite a
Production/Stableclassifier. Commit history is heavily concentrated — 1,823 of the top contributor’s commits versus 239 for the next-largest, across 54 nominal contributors — a materially less mature project than its PyPI classifier implies. - The RDF/graph-algorithm capabilities duplicate what the OS already has. The same substrate-duplication rule that rejected EverOS’s runtime applies directly: a triple store duplicates Neo4j, and Semantica’s graph algorithms are self-implemented Python (NetworkX/Gensim), not a Neo4j GDS integration — strengthening, not weakening, the case for leaving both out of scope.
- The one genuinely novel claim is not yet verified. Whether Docling’s structural parsing measurably improves retrieval over the existing chunker requires a recall@k/MRR comparison on a labelled query set, split by query type — not yet built. A populated comparison collection existing is not the same as the comparison having run.
- Worth evaluating precisely because nothing here is decided yet. Unlike EverOS, no prior ADR has ruled on Semantica —
LAB-002is a first look, and a negative result on any capability above is exactly as valid an outcome as a positive one.
Real findings from standing it up (Phase 8 onward, August 2026)
Not assumed from documentation — Semantica was actually built, run, and exercised against real repository content:
- Docling parsing works, with one real tempering finding. A 14×7 table in this repository’s own Tech Stack document was extracted perfectly, header row intact. A different, clean, well-formed 6-row table in the same document was parsed as three separate fragments by Docling itself — Semantica’s own dependency is not immune to the table-fragmentation problem this lab exists to test.
- PROV-O export is real and genuinely standards-compliant, once the correct API (
ProvenanceManager, notContextGraph.export_rdf()) is used — confirmed output includes properprov:Entity,prov:Activity,prov:Agent,prov:wasGeneratedBy, andprov:qualifiedGenerationtriples. - The Neo4j graph bridge is real but was initially unused.
ContextGraphnever touches a database on its own;semantica.graph_store.neo4j_store.Neo4jStoreis a genuine Bolt driver, subsequently exercised end-to-end by pushing a real four-decision graph (drawn from this repository’s own change logs) intoneo4j-lab— 20 nodes, 21 relationships, correctly connected. - Generic NER quality is genuinely mixed on this corpus. With no spaCy model installed, extraction falls back to naive pattern-matching and misses everything meaningful. With the spaCy English model installed, it catches company/product-shaped entities (
Qdrant,Supabase,LangGraph) but misses or mangles this corpus’s own domain identifiers —LanceDB,SQLite, andn8nwere missed entirely;ADR-OS-002was truncated to bareADR. A reliable knowledge graph over this specific corpus needs pattern-based extraction for its own identifier conventions (ADR-OS-\d+,LAB-\d+,os-agt-\d+), not generic NER alone. - The embedding provider cannot be pointed at Ollama.
semantica.embeddings.OpenAIStorereads only anapi_key, with nobase_urloverride — confirmed by reading its source. The ingestion A/B instead reuses the sameOllamaEmbeddings/nomic-embed-textcall the production pipeline already uses, bypassing Semantica’s own embedding module entirely. - The MCP server is stdio-only — the original lab compose file’s port mapping for it was wrong and has since been corrected; it now runs idle for
docker exec-based use.
Full findings, including the pre-registered exit-evidence questions this evaluation is scored against, are in LAB-002.
Deployment and licensing
Self-hosting. Semantica is a pip package with optional extras ([parse-docling], [graph-neo4j], [explorer]) — no first-party Docker image exists; the lab builds its own container per-package. The MCP server, when used, is subprocess-spawned by a client rather than run as a standalone service.
Licence — verified. Semantica is licensed under the MIT License, confirmed directly from the LICENSE file in the official semantica-agi/semantica repository.
Official documentation
Related Synedrix OS documents
LAB-002— Semantica Lab Charter — Full evidence, capability-by-capability scope, pre-registered exit criteria, and Phase 8 findings.- ADR-OS-002 — Memory Fabric Control Plane — §4.2/§4.4, the existing provenance fields Semantica’s PROV-O export is compared against.
- ADR-OS-004 — Lab Lane — The governance mechanism this evaluation runs under.
- Neo4j — The production graph store Semantica’s RDF/graph-algorithm capabilities would duplicate.
- Qdrant — The single vector substrate; Semantica’s ingestion A/B is read-only against it and writes only to its own additive lab collection.
Synedrix OS · Platform reference · Lab · Semantica