97 lines
2.6 KiB
Markdown
97 lines
2.6 KiB
Markdown
# Visualizador Instanciados
|
|
|
|
Docker Compose stack for exploring large RDF/OWL graphs stored in AnzoGraph.
|
|
|
|
## What Runs Here
|
|
|
|
- `anzograph`: SPARQL store
|
|
- `backend`: Go API that queries AnzoGraph and serves cached graph snapshots
|
|
- `frontend`: React/Vite app with a WebGL left graph and a right-side `cosmos.gl` selection graph
|
|
- `owl_imports_combiner`: one-shot Python service that can merge `owl:imports`
|
|
- `radial_sugiyama`: Rust hierarchy layout pipeline used in two ways:
|
|
- standalone SVG generator through the `radial` Compose profile
|
|
- optional hierarchy layout engine for the Go backend
|
|
|
|
## Current Flow
|
|
|
|
- The backend always builds graph snapshots from SPARQL queries against AnzoGraph.
|
|
- `graph_query_id=default` and `graph_query_id=types` use the Go layout path.
|
|
- `graph_query_id=hierarchy` can use either:
|
|
- the Go layout path
|
|
- the Rust radial Sugiyama path when `HIERARCHY_LAYOUT_ENGINE=rust`
|
|
- When the Rust hierarchy path is enabled, the backend sends the hierarchy graph to Rust over JSON, Rust lays it out, returns node positions + routed edge segments, and also rewrites:
|
|
|
|
```text
|
|
radial_sugiyama/out/layout.svg
|
|
```
|
|
|
|
That SVG is a debug artifact for the exact Rust layout run used by the backend.
|
|
|
|
## Quick Start
|
|
|
|
1. Put your TTL files under `./data/`.
|
|
2. Copy or edit `.env` as needed.
|
|
3. Start the stack:
|
|
|
|
```bash
|
|
docker compose up --build
|
|
```
|
|
|
|
Open:
|
|
|
|
- Frontend: `http://localhost:5173`
|
|
- Backend health: `http://localhost:8000/api/health`
|
|
|
|
Stop:
|
|
|
|
```bash
|
|
docker compose down
|
|
```
|
|
|
|
## Rust Hierarchy Layout
|
|
|
|
To use Rust for the `hierarchy` graph mode, set this in the repo root `.env`:
|
|
|
|
```env
|
|
HIERARCHY_LAYOUT_ENGINE=rust
|
|
```
|
|
|
|
The backend also reads `radial_sugiyama/.env` for the Rust layout settings such as:
|
|
|
|
- `RADIAL_ROOT_CLASS_IRI`
|
|
- `RADIAL_OUTPUT_DIR`
|
|
- `RADIAL_OUTPUT_FILE`
|
|
- `RADIAL_RING_DISTRIBUTION`
|
|
|
|
The debug SVG for backend-driven hierarchy requests is written to:
|
|
|
|
```text
|
|
radial_sugiyama/out/layout.svg
|
|
```
|
|
|
|
You can still run the standalone Rust SVG pipeline directly with:
|
|
|
|
```bash
|
|
docker compose --profile radial up --build radial_sugiyama
|
|
```
|
|
|
|
## Main API
|
|
|
|
- `GET /api/health`
|
|
- `GET /api/stats`
|
|
- `GET /api/graph`
|
|
- `GET /api/graph_queries`
|
|
- `GET /api/selection_queries`
|
|
- `POST /api/selection_query`
|
|
- `POST /api/selection_triples`
|
|
- `POST /api/sparql`
|
|
|
|
## Repo Layout
|
|
|
|
- `backend_go/` Go API and SPARQL snapshot logic
|
|
- `frontend/` React/Vite UI
|
|
- `radial_sugiyama/` Rust hierarchy layout and SVG export
|
|
- `python_services/owl_imports_combiner/` import-flattening helper
|
|
- `data/` local shared data mounted into containers
|
|
- `docker-compose.yml` service wiring
|