Skip to content

Commit 45750fd

Browse files
committed
Bump to v0.3.0: add ext-rdf, LOAD FROM, visualizer examples
- Bump all workspace crates from 0.2.0 → 0.3.0 - Add ext-rdf to publish.sh (Tier 5) - Update CHANGELOG with [0.3.0] release notes
1 parent 9af6bd2 commit 45750fd

28 files changed

Lines changed: 106 additions & 69 deletions

File tree

CHANGELOG.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,42 @@ All notable changes to KyuGraph are documented in this file.
44

55
## [Unreleased]
66

7+
## [0.3.0] — 2026-02-26
8+
9+
### Added
10+
11+
- **ext-rdf** — New extension crate for RDF Linked Data import following
12+
Linked Data Principles. Supported formats: Turtle (`.ttl`), N-Triples
13+
(`.nt`), N-Quads (`.nq`), RDF/XML (`.rdf`/`.owl`). Schema is inferred
14+
automatically from triples:
15+
- `rdf:type` → node table (local name as table name)
16+
- Literal-valued predicates → node properties (XSD datatype → LogicalType)
17+
- URI-valued predicates → relationship tables (hyperlinks as edges)
18+
- Subject URI stored as `STRING` primary key on every node table
19+
- Untyped subjects assigned to a `Resource` default table
20+
- Extension procedures: `CALL rdf.stats(path)`, `CALL rdf.prefixes(path)`,
21+
`CALL rdf.types(path)`
22+
23+
- **kyu-parser: `LOAD FROM` statement** — New statement that imports an RDF
24+
file and auto-creates all tables. Distinct from `COPY FROM` (which requires
25+
a pre-existing table): `LOAD FROM 'file.ttl'` creates the full schema from
26+
scratch.
27+
28+
- **kyu-binder** — Added `BoundLoadFrom` and `bind_load_from()` to resolve the
29+
new `LOAD FROM` AST node.
30+
31+
- **kyu-api: `Connection::exec_load_from()`** — Orchestrates the full RDF
32+
import pipeline: parse → infer schema → create node/rel tables → insert rows.
33+
34+
- **kyu-visualizer: library target** — Added `src/lib.rs` exposing
35+
`pub fn launch(db: Database)` so examples can each pre-seed the database
36+
independently before opening the visualizer window. The default binary now
37+
starts with an empty database.
38+
39+
- **kyu-visualizer: `examples/rdf_kg`** — New visualizer example that imports
40+
the FOAF + schema.org research knowledge graph via `LOAD FROM` and opens the
41+
interactive explorer pre-loaded with researchers, institutions, and papers.
42+
743
### Fixed
844

945
- **kyu-api: Multi-MATCH relationship creation**`exec_match_dml` now supports

Cargo.lock

Lines changed: 24 additions & 24 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -33,29 +33,29 @@ exclude = [
3333

3434
[workspace.dependencies]
3535
# Internal crates
36-
kyu-common = { version = "0.2.0", path = "crates/kyu-common" }
37-
kyu-types = { version = "0.2.0", path = "crates/kyu-types" }
38-
kyu-catalog = { version = "0.2.0", path = "crates/kyu-catalog" }
39-
kyu-storage = { version = "0.2.0", path = "crates/kyu-storage" }
40-
kyu-transaction = { version = "0.2.0", path = "crates/kyu-transaction" }
41-
kyu-delta = { version = "0.2.0", path = "crates/kyu-delta" }
42-
kyu-index = { version = "0.2.0", path = "crates/kyu-index" }
43-
kyu-parser = { version = "0.2.0", path = "crates/kyu-parser" }
44-
kyu-binder = { version = "0.2.0", path = "crates/kyu-binder" }
45-
kyu-planner = { version = "0.2.0", path = "crates/kyu-planner" }
46-
kyu-executor = { version = "0.2.0", path = "crates/kyu-executor" }
47-
kyu-expression = { version = "0.2.0", path = "crates/kyu-expression" }
48-
kyu-copy = { version = "0.2.0", path = "crates/kyu-copy" }
49-
kyu-extension = { version = "0.2.0", path = "crates/kyu-extension" }
50-
kyu-api = { version = "0.2.0", path = "crates/kyu-api" }
51-
kyu-graph = { version = "0.2.0", path = "crates/kyu-graph" }
52-
kyu-coord = { version = "0.2.0", path = "crates/kyu-coord" }
36+
kyu-common = { version = "0.3.0", path = "crates/kyu-common" }
37+
kyu-types = { version = "0.3.0", path = "crates/kyu-types" }
38+
kyu-catalog = { version = "0.3.0", path = "crates/kyu-catalog" }
39+
kyu-storage = { version = "0.3.0", path = "crates/kyu-storage" }
40+
kyu-transaction = { version = "0.3.0", path = "crates/kyu-transaction" }
41+
kyu-delta = { version = "0.3.0", path = "crates/kyu-delta" }
42+
kyu-index = { version = "0.3.0", path = "crates/kyu-index" }
43+
kyu-parser = { version = "0.3.0", path = "crates/kyu-parser" }
44+
kyu-binder = { version = "0.3.0", path = "crates/kyu-binder" }
45+
kyu-planner = { version = "0.3.0", path = "crates/kyu-planner" }
46+
kyu-executor = { version = "0.3.0", path = "crates/kyu-executor" }
47+
kyu-expression = { version = "0.3.0", path = "crates/kyu-expression" }
48+
kyu-copy = { version = "0.3.0", path = "crates/kyu-copy" }
49+
kyu-extension = { version = "0.3.0", path = "crates/kyu-extension" }
50+
kyu-api = { version = "0.3.0", path = "crates/kyu-api" }
51+
kyu-graph = { version = "0.3.0", path = "crates/kyu-graph" }
52+
kyu-coord = { version = "0.3.0", path = "crates/kyu-coord" }
5353

5454
# Extensions
55-
ext-algo = { version = "0.2.0", path = "extensions/ext-algo" }
56-
ext-fts = { version = "0.2.0", path = "extensions/ext-fts" }
57-
ext-vector = { version = "0.2.0", path = "extensions/ext-vector" }
58-
ext-rdf = { version = "0.2.0", path = "extensions/ext-rdf" }
55+
ext-algo = { version = "0.3.0", path = "extensions/ext-algo" }
56+
ext-fts = { version = "0.3.0", path = "extensions/ext-fts" }
57+
ext-vector = { version = "0.3.0", path = "extensions/ext-vector" }
58+
ext-rdf = { version = "0.3.0", path = "extensions/ext-rdf" }
5959

6060
# Allocator
6161
tikv-jemallocator = "0.6"

crates/kyu-api/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "kyu-api"
3-
version = "0.2.0"
3+
version = "0.3.0"
44
edition = "2024"
55
description = "Database and Connection API for KyuGraph with Arrow Flight support"
66
license = "MIT"

crates/kyu-binder/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "kyu-binder"
3-
version = "0.2.0"
3+
version = "0.3.0"
44
edition = "2024"
55
description = "Semantic analysis and name resolution for KyuGraph Cypher queries"
66
license = "MIT"

crates/kyu-catalog/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "kyu-catalog"
3-
version = "0.2.0"
3+
version = "0.3.0"
44
edition = "2024"
55
description = "Schema catalog for KyuGraph: node/rel table entries and DDL management"
66
license = "MIT"

crates/kyu-cli/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "kyu-graph-cli"
3-
version = "0.2.0"
3+
version = "0.3.0"
44
edition = "2024"
55
description = "Interactive Cypher shell for the KyuGraph database"
66
license = "MIT"

crates/kyu-common/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "kyu-common"
3-
version = "0.2.0"
3+
version = "0.3.0"
44
edition = "2024"
55
description = "Shared error types, IDs, and configuration for the KyuGraph database"
66
license = "MIT"

crates/kyu-coord/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "kyu-coord"
3-
version = "0.2.0"
3+
version = "0.3.0"
44
edition = "2024"
55
description = "Multi-tenant coordination layer for KyuGraph: task queues, worker pools, tenant registry"
66
license = "MIT"

crates/kyu-copy/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "kyu-copy"
3-
version = "0.2.0"
3+
version = "0.3.0"
44
edition = "2024"
55
description = "Bulk data import for KyuGraph: CSV, Parquet, Arrow IPC, and Kafka readers"
66
license = "MIT"

0 commit comments

Comments
 (0)