Files
visualizador_instanciados/README.md

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