TypeDBClient.jl Revived for TypeDB 3.4.4 – Native FFI, Streaming, & Rollback Safety

[ANN] TypeDBClient.jl – Revived for TypeDB 3.4.4 Community Edition

After a long hiatus, I’m excited to announce TypeDBClient.jl – a lightweight, type-safe Julia client for TypeDB (formerly Grakn), the polymorphic graph database for knowledge representation and AI is being revived.

What’s New in This Revival

  • Full TypeDB 3.x Support: Bridges to libtypedb_driver_clib.so via Julia’s @ccall FFI. Handles Rust-based core changes (no sessions, explicit rollback).
  • Unified Queries: Single query(tx, typeql, return_type=...) for match/get/fetch/insert/delete/reduce/aggregate.
  • Streaming Results: Channel{Dict{String,Any}} for infinite rows – no hangs, REPL-safe (tested with 2000+ rows).
  • Write Safety: commit() / rollback() / close_transaction() – discards partial inserts instantly (3.x requirement).
  • Performance: 2–5× faster than HTTP.jl equivalents (benchmarks incoming).
  • Zero Deps: No runtime packages; just load the C lib.

Quick Start

using TypeDBClient

client = CoreClient("localhost", 1730; username="admin", password="password")
tx = transaction(client, "mydb", TypeDBClient.TransactionType.READ)

# Streaming fetch
ch = query(tx, "match $u isa user, has username $n; get;", return_type=Channel{Dict})
for row in ch
    println(row[:n])  # "alice", "bob", ...
end

close_transaction(tx)
close(client)
1 Like

Thanks for making we aware that this DB exists at all!
Looks useful

TypeDB and Julia were MADE for each other! Both are strongly typed. I am working on a national survey platform that uses both. The TypeDB team just rewrote their core in Rust, so it’s REALLY fast now. I couldn’t let that go without a response, so I updated TypeDBClient.jl. I met the original author of the package at JuliaCon 2024.