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.

ConceptWhat 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())
ContextGraphAn 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
ProvenanceManagerA 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 bridgessemantica.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 storessemantica.triplet_store ships Blazegraph and Oxigraph bridges — a genuine, separate RDF datastore option, not exercised under this charter (see below)
NER / entity extractionsemantica.semantic_extract.named_entity_recognizer — a real spaCy-backed named-entity recognizer with a pattern-matching fallback when no spaCy model is installed
Visualizationsemantica.visualization.kg_visualizer.KGVisualizer — a Plotly-based interactive network renderer, bundled with the base package (no extra install)
Knowledge Explorersemantica.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 serverReal — 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.

CapabilityLab treatment
Docling structural parsingIn 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 exportIn scope, lightweight. Tested against real decisions drawn from this repository’s own change logs
RDF triple storeOut of scope, pre-judged. A 14th datastore duplicating Neo4j — the identical substrate-duplication rule that rejected the EverOS runtime
Graph algorithmsOut 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 ontologyOpen, low priority. Collides conceptually with NAMS’s already-adopted POLE+O ontology
Rete/Datalog/SPARQL rule enginesDeferred. 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

ConcernOwner
Semantic retrieval and similarity search — the single vector substrate for Layer 7Qdrant (Layer 7) — Semantica’s own collection is additive, never a replacement
Canonical relational truth — business entities, workflow state, approvals, audit trailsSupabase PG17 (Layer 7)
Explicit relationships and lineage as production authorityNeo4j (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 envelopeprovenance.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/Stable classifier. 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-002 is 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, not ContextGraph.export_rdf()) is used — confirmed output includes proper prov:Entity, prov:Activity, prov:Agent, prov:wasGeneratedBy, and prov:qualifiedGeneration triples.
  • The Neo4j graph bridge is real but was initially unused. ContextGraph never touches a database on its own; semantica.graph_store.neo4j_store.Neo4jStore is a genuine Bolt driver, subsequently exercised end-to-end by pushing a real four-decision graph (drawn from this repository’s own change logs) into neo4j-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, and n8n were missed entirely; ADR-OS-002 was truncated to bare ADR. 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.OpenAIStore reads only an api_key, with no base_url override — confirmed by reading its source. The ingestion A/B instead reuses the same OllamaEmbeddings/nomic-embed-text call 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

  • 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