semantica.explorer is a browser-based dashboard for exploring knowledge graphs, managing ontologies, and running visual analyses:
- Indexed search: 0.004ms on 118k nodes: no full scans
- Ontology Hub: visual editor, SHACL Studio, alignment authoring, and health dashboard
- Bidirectional path finding between any two nodes
- WebSocket progress streaming for live pipeline monitoring
- No code required after launch: full graph exploration in the browser
Getting Started
Install, export your graph to JSON, and launch:http://127.0.0.1:8000. The interactive API docs are at /docs.
Launch
CLI Reference
Thesemantica-explorer command accepts exactly four flags:
| Flag | Short | Default | Description |
|---|---|---|---|
--graph | -g | (required) | Path to a ContextGraph JSON file to load |
--port | -p | 8000 | Port to bind the server |
--host | : | 127.0.0.1 | Host to bind the server: use 0.0.0.0 to expose on the network |
--no-browser | : | off | Skip auto-opening the browser tab |
There are no flags for authentication, CORS, or log level in the CLI. CORS allowed origins are configured via the
EXPLORER_CORS_ORIGINS environment variable (comma-separated, default: http://localhost:5173,http://127.0.0.1:5173).What You Get
Graph Explorer
Interactive node/edge search, path finding, and neighborhood expansion. Indexed search at 0.004ms on 118k-node graphs.
Ontology Hub
SKOS vocabulary management, SHACL shape generation and validation, ontology alignment, health dashboard, and versioning.
Analytics
Degree centrality, community detection, connectivity analysis, graph validation, and distance matrices.
REST API
All features available as a REST API: fully documented at
/docs.WebSocket Updates
Real-time graph mutation events streamed over WebSocket at
/ws/graph-updates.CLI Launcher
semantica-explorer --graph my_graph.json for instant local startup.Features
- Graph Explorer
- Ontology Hub
- Analytics
- Decisions & Provenance
Core dashboard for navigating knowledge graphs:
- Indexed search: POST to
/api/graph/searchwith a query; 0.004ms on 118k-node graphs - Path finding: BFS or Dijkstra between any two nodes via
GET /api/graph/path?source=&target= - Neighbor expansion:
GET /api/graph/node/{id}/neighbors?depth=2 - Filter by entity type:
GET /api/graph/nodes?type=Person - Semantic neighborhood:
GET /api/graph/semantic-neighborhood?node_id=&top_k=20 - Distance matrix:
POST /api/graph/distance-matrix
API Endpoints
Full interactive docs athttp://localhost:8000/docs. All endpoints accept and return JSON.
Graph endpoints
Graph endpoints
| Endpoint | Method | Description |
|---|---|---|
/api/graph/stats | GET | Node count, edge count, entity type distribution |
/api/graph/nodes | GET | List nodes: ?type=&search=&skip=&limit=&cursor=&bbox= |
/api/graph/node/{id} | GET | Fetch a single node with all properties |
/api/graph/node/{id}/neighbors | GET | Neighbors of a node: ?depth=1 (1–5) |
/api/graph/edges | GET | List edges: ?type=&source=&target=&skip=&limit=&cursor= |
/api/graph/path | GET | Shortest path: ?source=&target=&algorithm=bfs&directed=true |
/api/graph/search | POST | Indexed search: body: {query, limit, filters, anchor_node} |
/api/graph/distance-matrix | POST | Pairwise distances: body: {node_ids, metric} (max 50 nodes) |
/api/graph/semantic-neighborhood | GET | Semantic neighbors: ?node_id=&top_k=20&min_similarity=0.0 |
Analytics, Enrich & Temporal
Analytics, Enrich & Temporal
Analytics:
Enrich:
Temporal:
| Endpoint | Method | Description |
|---|---|---|
/api/analytics | GET | Graph metrics: ?metrics=centrality,community,connectivity |
/api/analytics/validation | GET | Graph validation report |
| Endpoint | Method | Description |
|---|---|---|
/api/enrich/extract | POST | Entity extraction from text |
/api/enrich/links | POST | Link prediction for nodes |
/api/enrich/dedup | POST | Duplicate detection |
/api/enrich/merge | POST | Merge duplicate nodes |
/api/reason | POST | Run reasoning over graph |
| Endpoint | Method | Description |
|---|---|---|
/api/temporal/snapshot | GET | Graph snapshot at ?at=ISO8601 (defaults to now) |
/api/temporal/diff | GET | Diff between two times: ?from_time=&to_time= |
/api/temporal/patterns | GET | Temporal activity patterns |
/api/temporal/bounds | GET | Earliest and latest temporal bounds in graph |
/api/temporal/distance-history | GET | Distance history: ?source=&target= |
Ontology, Vocabulary & SPARQL
Ontology, Vocabulary & SPARQL
Ontology:
Vocabulary:
SPARQL:
| Endpoint | Method | Description |
|---|---|---|
/api/ontology/registry | GET | List loaded ontologies |
/api/ontology/load | POST | Load an ontology from URL or content |
/api/ontology/create | POST | Create a new ontology |
/api/ontology/search | GET | Search ontology entities: ?q=term |
/api/ontology/health | GET | Ontology health and coverage metrics |
/api/ontology/alignments | GET/POST | List or create ontology alignments |
/api/ontology/suggest-alignments | POST | AI-suggested alignments |
/api/ontology/shacl/generate | POST | Generate SHACL shapes |
/api/ontology/shacl/validate | POST | Validate RDF against SHACL |
/api/ontology/skos/schemes | GET | List SKOS concept schemes |
/api/ontology/skos/concept/{uri} | GET | Get a SKOS concept |
/api/ontology/proposals | GET/POST | Manage ontology change proposals |
/api/ontology/versions/{uri} | GET | Version history |
| Endpoint | Method | Description |
|---|---|---|
/api/vocabulary/schemes | GET | SKOS schemes via TripletStore |
/api/vocabulary/concepts | GET | Concepts in a scheme: ?scheme=URI |
/api/vocabulary/hierarchy | GET | Concept hierarchy tree |
/api/vocabulary/import | POST | Import SKOS/RDF vocabulary file |
| Endpoint | Method | Description |
|---|---|---|
/api/sparql | POST | Execute a SPARQL SELECT or ASK query |
Decisions, Provenance, Annotations & Export
Decisions, Provenance, Annotations & Export
Decisions:
Provenance:
Annotations:
Export / Import:
| Endpoint | Method | Description |
|---|---|---|
/api/decisions | GET | Paginated list of recorded decisions |
/api/decisions/{id} | GET | Single decision details |
/api/decisions/{id}/chain | GET | Causal chain for a decision |
/api/decisions/{id}/precedents | GET | Similar past decisions |
/api/decisions/{id}/compliance | GET | Policy compliance check |
/api/decisions/causal-distance | GET | Causal distance: ?source=&target= |
| Endpoint | Method | Description |
|---|---|---|
/api/provenance | GET | Entity provenance lineage: ?node_id= |
/api/provenance/report | GET | Provenance export report: ?node_id= |
| Endpoint | Method | Description |
|---|---|---|
/api/annotations | GET | List annotations: ?node_id= (optional) |
/api/annotations | POST | Create annotation (returns 201) |
/api/annotations/{id} | DELETE | Delete annotation (returns 204) |
| Endpoint | Method | Description |
|---|---|---|
/api/export | POST | Export graph as JSON or CSV: body: {format, node_ids} |
/api/export/distance-enriched | POST | Export pairwise distances as CSV or JSONL |
/api/import | POST | Import nodes/edges from .json or .csv file (max 50 MB) |
Health & Info
Health & Info
| Endpoint | Method | Description |
|---|---|---|
/api/health | GET | Returns {"status": "healthy"} |
/api/info | GET | Server name, version, status |
/docs | GET | Interactive Swagger UI: all endpoints |
WebSocket Graph Updates
Real-time graph mutation events are streamed over WebSocket atws://localhost:8000/ws/graph-updates:
connection_ack, pong, and graph_mutation (fired when nodes or edges are added/updated/removed via import or enrichment). Send the text "ping" to receive a pong response.
Performance
| Scenario | Latency |
|---|---|
| Node search (118k nodes, indexed) | 0.004ms |
| Neighbor expansion (depth 2) | < 5ms |
| BFS path (118k nodes) | < 50ms |
| SPARQL SELECT (simple pattern) | < 20ms |
| Distance matrix (50 nodes, semantic) | ~2s (with embedding cache) |
Troubleshooting
Browser tab does not open The browser is launched 1.5 seconds after the server starts. Use--no-browser and open http://127.0.0.1:8000 manually if the auto-open fails.
Error: graph file not found
The --graph path must be an existing file. Check the path and ensure the file exists before launching.
Error: uvicorn is required
Install the explorer extras: pip install "semantica[explorer]".
Connection refused on API calls
The server only binds to 127.0.0.1 by default. To access Explorer from another machine or container, launch with --host 0.0.0.0.
Empty graph after import
The import endpoint (/api/import) only parses .json and .csv files. Other formats return HTTP 422. JSON files must contain a top-level entities/nodes array or relationships/edges array.
PathFinder not available error from /api/graph/path
Path finding requires the semantica[kg] extras. Install with pip install "semantica[all]".
Semantic neighborhood returns 503
Semantic neighborhood requires node embeddings stored in node properties (keys embedding, vector, or node2vec_embedding). Graphs without embeddings return 503.
Session state lost after restart
Session state is in-memory only. Use POST /api/export to save a JSON snapshot before shutting down.
Context
Build and save the ContextGraph that Explorer loads.
Ontology
Programmatic ontology management and SHACL generation.
Visualization
Programmatic graph rendering without the Explorer server.
Export
Export to RDF, Parquet, and other formats without launching a server.
