Files
Baradb/docs/de/graph.md
T
dimgigov a5d34c001a
CI / test (push) Has been cancelled
CI / verify (push) Has been cancelled
docs: add German (DE) documentation + update all docs for Sessions 10-12
New German documentation (docs/de/):
- index.md, quickstart.md, installation.md
- baraql.md, graph.md, vector.md, mcp.md

Updated English documentation:
- changelog.md: all Sessions 10-12 features
- graph.md: SQL GRAPH_TABLE, CREATE GRAPH, all 8 algorithms, Cypher, similarity_nodes, node2vec
- vector.md: hybrid RAG, chunk(), embed_text(), auto-embed, nl_to_sql(), schema_prompt()
- baraql.md: new AI & Cross-Modal Functions section, updated keyword tables
- mcp.md: MCP Server documentation (new file)
- index.md: added German (DE) language link
2026-05-17 16:15:45 +03:00

3.4 KiB

Graph Engine

Adjazenzlisten-Speicher mit eingebauten Algorithmen für Graph-Traversierung und -Analyse. Vollständig integriert in den SQL-Executor via GRAPH_TABLE().

SQL — Graph DDL

Graph erstellen

CREATE GRAPH org_chart;

Erstellt automatisch zwei Tabellen:

  • org_chart_nodes (id INTEGER PRIMARY KEY, node_label TEXT, properties TEXT)
  • org_chart_edges (source_id INTEGER, dest_id INTEGER, edge_label TEXT, weight REAL)

Graph löschen

DROP GRAPH org_chart;

SQL — Daten einfügen

-- Knoten
INSERT INTO org_chart_nodes (id, node_label) VALUES (1, 'CEO');
INSERT INTO org_chart_nodes (id, node_label) VALUES (2, 'VP');

-- Kanten
INSERT INTO org_chart_edges (source_id, dest_id, edge_label) VALUES (1, 2, 'manages');

Alle INSERTs werden automatisch mit dem nativen Graph-Objekt synchronisiert.

SQL — GRAPH_TABLE Abfragen

BFS (Breitensuche)

SELECT * FROM GRAPH_TABLE(org_chart MATCH (n)-[r]->(m)
    ALGORITHM bfs
    START 1 MAXDEPTH 2
    COLUMNS (id, node_label));

DFS (Tiefensuche)

SELECT * FROM GRAPH_TABLE(org_chart MATCH (n)-[r]->(m)
    ALGORITHM dfs START 1
    COLUMNS (id, node_label));

PageRank

SELECT id, node_label, rank FROM GRAPH_TABLE(org_chart
    ALGORITHM pagerank
    COLUMNS (id, node_label, rank))
ORDER BY rank DESC;

Community Detection (Louvain)

SELECT id, node_label, community FROM GRAPH_TABLE(org_chart
    ALGORITHM community
    COLUMNS (id, node_label, community));

Kürzester Pfad (Shortest Path)

SELECT * FROM GRAPH_TABLE(org_chart
    ALGORITHM shortest_path
    START 1 END 3
    COLUMNS (id, node_label));

Dijkstra (gewichtete kürzeste Pfade)

SELECT * FROM GRAPH_TABLE(org_chart
    ALGORITHM dijkstra START 1
    COLUMNS (id, node_label, distance));

SQL-Funktionen

Knotenähnlichkeit

-- Jaccard-Ähnlichkeit zwischen allen Knotenpaaren
SELECT similarity_nodes('social', 'jaccard') AS result;

-- Adamic-Adar-Ähnlichkeit
SELECT similarity_nodes('social', 'adamic_adar') AS result;

Node2Vec Embeddings

-- Graphstruktur-Embeddings generieren (64 Dimensionen)
SELECT node2vec_embed('social', 64) AS result;

Cypher-Kompatibilität

-- Cypher-Syntax automatisch nach GRAPH_TABLE übersetzen
SELECT cypher('MATCH (a)-[r]->(b) WHERE a.node_label = ''CEO'' RETURN b.node_label') AS result;

Algorithmen

Algorithmus Beschreibung SQL
bfs Breitensuche ALGORITHM bfs
dfs Tiefensuche ALGORITHM dfs
dijkstra Gewichtete kürzeste Pfade ALGORITHM dijkstra
pageRank Knoten-Wichtigkeit ALGORITHM pagerank
louvain Community Detection ALGORITHM community
shortestPath Kürzester Pfad ALGORITHM shortest_path START X END Y
similarityNodes Knotenähnlichkeit similarity_nodes()
node2vec Graph Embeddings node2vec_embed()

Native Nim API

import barabadb/graph/engine

var g = newGraph()
let alice = g.addNode("Person", {"name": "Alice"}.toTable)
let bob = g.addNode("Person", {"name": "Bob"}.toTable)
discard g.addEdge(alice, bob, "knows")

let bfs = g.bfs(alice)
let path = g.shortestPath(alice, bob)
let ranks = g.pageRank()
let communities = louvain(g)
let similarities = g.similarityNodes(smJaccard)
let embeddings = g.node2vec(64, 10, 5)