Fluree DB (GitHub Repo)
Fluree DB - 重要なデータを扱うためのグラフデータベース。
時間軸追跡機能、検証可能性、規格準拠、Git に似たブランチおよびマージ機能、そして AI エージェント向けに最適化 されています。外部依存関係なしで、ベクトル検索、テキスト検索、地理空間検索を統合し、きめ細やかなアクセス制御を実現します。
RDF 1.1 / 1.2、Open Cypher プレビュー、SPARQL、および JSON-LD クエリ(履歴クエリおよび Fluree の機能拡張を含む)に対応しています。
コモディティハードウェア上で数十億のグラフ事実を処理。1 秒あたり 200 万件以上の大量データインポートが可能。ベンチマークリーダーとして、次点のデータベースより 10.4 倍高速。215 億トリプルからなる完全な Wikidata ダンプにおいて、850 個の WGPB グラフパターンクエリすべてが完了し、幾何平均値は 43 ミリ秒です。
注記
Fluree Memory — Fluree DB CLI の一部です。AI コーディングアシスタント向けの永続的かつ検索可能なメモリ機能。Claude Code、Cursor、その他の AI ツールに、長期的なプロジェクトメモリを提供します。事実、意思決定、設定は、あなたが管理する Fluree リージャー(台帳)内でセッションを超えて保持されます。リポジトリ単位またはユーザー単位でスコープを定義し、Git を介して共有可能です。
インストール
クラウド/サーバーレス — flur.ee で無料の専用サーバーレススタック上で実行可能(利用制限あり)、必要に応じてオンデマンドで専用サーバーを起動できます。以下のインストール手順に従ってローカルの fluree CLI とシームレスに連携可能です。
Docker — 事前設定された HTTP サーバー。ポート 8090 でクエリを受け付ける準備ができています。API の試行や、Fluree をサービスとして実行する際に最適です。
docker run -p 8090:8090 fluree/server:latest
Homebrew、シェルインストーラー、または Windows PowerShell — CLI と埋め込みサーバー(fluree server run)の両方をバンドルした fluree バイナリをインストールします。
Homebrew (macOS / Linux)
brew install fluree/tap/fluree
シェルインストーラー (macOS / Linux)
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/fluree/db/releases/latest/download/fluree-db-cli-installer.sh | sh
Windows (PowerShell)
irm https://github.com/fluree/db/releases/latest/download/fluree-db-cli-installer.ps1 | iex
すべてのリリースにおける事前ビルド済みバイナリと変更履歴は、GitHub Releases ページ で確認できます。
60 秒でゼロからグラフへ
fluree init
fluree create movies
fluree insert '
@prefix schema: <http://schema.org/> .
@prefix ex: <http://example.org/> .
ex:blade-runner a schema:Movie ;
schema:name "Blade Runner" ;
schema:dateCreated "1982-06-25"^^<http://www.w3.org/2001/XMLSchema#date> ;
schema:director ex:ridley-scott .
ex:ridley-scott a schema:Person ;
schema:name "Ridley Scott" .
ex:alien a schema:Movie ;
schema:name "Alien" ;
schema:dateCreated "1979-05-25"^^<http://www.w3.org/2001/XMLSchema#date> ;
schema:director ex:ridley-scott .
'
fluree query --format table 'SELECT ?title ?date WHERE {
?movie a <http://schema.org/Movie> ;
<http://schema.org/name> ?title ;
<http://schema.org/dateCreated> ?date .
} ORDER BY ?date'
┌──────────────┬────────────┐
│ title │ date │
├──────────────┼────────────┤
│ Alien │ 1979-05-25 │
│ Blade Runner │ 1982-06-25 │
└──────────────┴────────────┘
これは SPARQL クエリです。同じクエリを JSON-LD で記述すると以下のようになります。
fluree query --jsonld '{
"@context": { "schema": "http://schema.org/" },
"select": ["?title", "?date"],
"where": [
{ "@id": "?movie", "@type": "schema:Movie",
"schema:name": "?title", "schema:dateCreated": "?date" }
],
"orderBy": "?date"
}'
両方の言語は同じエンジンにアクセスします。機能もパフォーマンスも同一です。
次に、データを更新して過去のデータもクエリしてみましょう。
Ridley Scott 監督の映画すべてにジャンルを追加する
fluree update '
PREFIX schema: <http://schema.org/>
PREFIX ex: <http://example.org/>
INSERT { ?movie schema:genre "sci-fi" }
WHERE { ?movie schema:director ex:ridley-scott }
'
その更新前のデータはどうなっていたか?
fluree query --at 1 'SELECT ?title ?genre WHERE {
?movie a <http://schema.org/Movie> ;
<http://schema.org/name> ?title .
OPTIONAL { ?movie <http://schema.org/genre> ?genre }
}'
→ Blade Runner(ジャンルなし)、Alien(ジャンルなし)
And now?
fluree query 'SELECT ?title ?genre WHERE {
?movie a <http://schema.org/Movie> ;
<http://schema.org/name> ?title .
OPTIONAL { ?movie <http://schema.org/genre> ?genre }
}'
→ Blade Runner "sci-fi", Alien "sci-fi"
すべての変更は保存されます。トランザクション番号、ISO タイムスタンプ、またはコミット ID を指定して、履歴の任意の時点のデータを照会できます。
What makes Fluree different
Time travel
すべてのトランザクションは不変です。トランザクション番号、ISO-8601 タイムスタンプ、またはコンテンツアドレス付きコミット ID を指定して、過去の任意の時点でのデータとして照会できます。特別なテーブルも不要、スローリーチンギングディメンション(slowly-changing dimensions)も不要です。これはストレージモデルに組み込まれています。
fluree query --at 2024-06-15T00:00:00Z 'SELECT * WHERE { ?s ?p ?o }'
詳細はこちら:Time travel concepts、time-travel cookbook。
Property graphs & edge annotations
ノードだけでなく、*関係* にもプロパティを付与できます。例えば、worksFor エッジには役割と開始日、主張(claim)にはソースと信頼度を付与します。Fluree は RDF 1.2 / SPARQL 1.2 の注釈構文を実装しているため、ラベル付きプロパティグラフエッジ、同じ 2 つのノード間の並列関係、そして単一の表面で RDF-star によるステートメントレベルの追跡可能性(provenance)が得られます。通常のトリプル照会はそのまま利用可能であり、注釈は要求された場合にのみカーディナリティに影響を与えます。
エッジ自体にメタデータを付与し、アリスやアコムには付与しない
INSERT DATA {
ex:alice ex:worksFor ex:acme {| ex:role "Engineer" ; ex:since 2024 |} .
}
エッジとそのメタデータを一括で一致させる
SELECT ?role ?since WHERE {
ex:alice ex:worksFor ex:acme {| ex:role ?role ; ex:since ?since |} .
}
同じ形状は、@annotation を介して JSON-LD でも利用可能です。名前付きグラフ内のエッジに対しても同様です。
詳細はこちら:エッジ注釈の概念、エッジ注釈クックブック。
統合検索
BM25 フルテキスト検索および HNSW ベクトル類似度検索は、クエリエンジンに組み込まれており、外部サービスを後付けしたものではありません。検索結果は、他のグラフパターンと同様に、結合(join)、フィルタリング、集約処理に参加できます。
{
"@context": { "ex": "http://example.org/" },
"from": "mydb:main",
"where": [
{ "@id": "?doc", "ex:title": "?title" },
["bind", "?score", "(fulltext ?title \"knowledge graph\")"]
],
"select": ["?doc", "?title", "?score"],
"orderBy": [["desc", "?score"]],
"limit": 10
}
専用の BM25 / HNSW グラフソースの場合、同じクエリエンジンが f:graphSource / f:searchText / f:queryVector パターンを駆動し、埋め込みインデックスまたはリモートの fluree-search-httpd サービスによってバックアップされます。
詳細は以下をご覧ください:BM25 フルテキスト検索、ベクトル検索、検索クックブック。
Git に似たデータ管理
ブランチ作成、リベース、マージ、プッシュ、プル — 開発者がすでにコードに対して使用しているのと同じワークフローが、データに対しても適用されます。実験用のためにデータをフォークして、本番環境に影響を与えることなく試すことができます。準備ができたらマージします。アップストリームの変更を取り込むためにリベースを行います。各ブランチには独自の独立したコミット履歴があります。
fluree branch create experiment
fluree use mydb:experiment
... 安全に変更を加える ...
fluree branch rebase experiment # main と同期する
fluree branch merge experiment # main へ高速フォワードマージ
fluree branch drop experiment # クリーンアップ
詳細は以下をご覧ください:ブランチ作成クックブック、Ledger とネームサービス。
3 レベルのアクセス制御
ポリシーは Ledger 内のデータであり、クエリ実行時およびトランザクション実行時に強制されます。ユーザーが見られるのは許可された情報のみです — 行でもテーブルでもなく、個々の事実のみです。アプリケーション層でのフィルタリングは不要です。
モデルについては Policy enforcement を、実装例については policy cookbook を、参照資料については Policy model and inputs をご覧ください。
Reasoning and inference
RDFS サブクラス/サブプロパティ推論、OWL 2 RL の前方連鎖(フォワードチェーン)、およびユーザー定義の Datalog ルールに対応しています。データベースは、明示的に保存されていない事実に基づいて推論を行います。
詳細はこちら:Reasoning and inference、OWL & RDFS support reference、Datalog rules。
Standards-first
W3C テストスイートに対して完全準拠(ゼロのコンプライアンス違反)を実現した SPARQL 1.1 をフルサポート。また、JSON API に適したネイティブな JSON-LD も提供します。両方のクエリ言語は、同じエンジンと同等の機能(タイムトラベル、ポリシー、グラフソースなど)を共有してアクセス可能です。
詳細はこちら:SPARQL reference、JSON-LD Query reference、Standards and feature flags。
Also worth knowing
- SHACL 検証 — トランザクション実行時に宣言的な形状制約が強制され、違反は対象ごと・プロパティごとに報告されます。
- OWL オントロジーインポート — f:schemaSource と owl:imports を用いて外部語彙を台帳に取り込み、コミット時点で具体化されます。
- Apache Iceberg / R2RML — ネイティブな Fluree データと同様に、Parquet ウェアハウスやリレーショナルストアをファーストクラスのグラフソースとしてクエリできます。
使い方はあなた次第
CLI — ターミナルからデータを探索し、パイプラインをスクリプト化し、台帳を管理します。
fluree query -f report.rq --format csv > output.csv
HTTP サーバー — OIDC 認証、コンテンツネゴシエーション、OpenTelemetry を備えた本番用 API として fluree サーバーを実行します。
fluree server run
curl -X POST http://localhost:8090/v1/fluree/query?ledger=mydb:main \
-H "Content-Type: application/sparql-query" \
-d 'SELECT ?s ?p ?o WHERE { ?s ?p ?o } LIMIT 10'
Rust ライブラリ — Fluree をアプリケーションに直接埋め込みます。サーバープロセスは不要です。
let fluree = FlureeBuilder::memory().build_memory();
fluree.create_ledger("mydb").await?;
let result = fluree.graph("mydb:main")
.query()
.sparql("SELECT ?s WHERE { ?s a <http://schema.org/Person> }")
.execute()
.await?;
MCP サーバー — Model Context Protocol を介して AI アシスタントに Fluree を公開します。
fluree mcp serve # Claude Desktop、Cursor などのための stdio トランスポート
機能
クエリ言語
データ形式
JSON-LD, Turtle, TriG, N-Triples, N-Quads
エッジ注釈
プロパティグラフのエッジとステートメントレベルのメタデータ (RDF 1.2 / SPARQL 1.2)
タイムトラベル
トランザクション番号、ISO タイムスタンプ、コミット ID
全文検索
Integrated BM25 with Block-Max WAND (統合された BM25 とブロック最大 WAND)
ベクトル検索
推論
RDFS, OWL 2 QL, OWL 2 RL, Datalog ルール
アクセス制御
地理空間
検証可能性
データソース
Apache Iceberg, R2RML リレーショナルマッピング
ストレージバックエンド
メモリ、ファイル、AWS S3 + DynamoDB, IPFS
レプリケーション
ブランチング
観測性 (Observability)
検証
ドキュメンテーション
ドキュメントや詳細情報については、labs.flur.ee/docs をご覧ください。
完全なドキュメントは docs/ にもあります:
- はじめに — インストール、リッジの作成、データの記述とクエリ
- SQL 開発者向けの Fluree — リレーショナルデータベースからの移行ならこちらから始めましょう
- エンドツーエンドチュートリアル — 検索、タイムトラベル、ブランチング、ポリシーを使用したナレッジベースの構築
- コンセプト — タイムトラベル、グラフソース、ポリシー、検証可能なデータ
- ガイド — 検索、タイムトラベル、ブランチング、ポリシー、SHACL 検証のための実践的なクックブック
- クエリ言語 — SPARQL および JSON-LD クエリリファレンス
- トランザクション — インサート、アップsert、更新パターン
- CLI リファレンス — すべてのコマンドとオプション
- HTTP API — サーバーエンドポイントと認証
- オペレーション — 設定、デプロイメント、テレメトリー
- コントリビューション — ソースからのビルド、テスト実行、PR ワークフロー
- ベンチマーク — パフォーマンスベンチマークの実行、理解、追加
ライセンス
このソフトウェアは Business Source License 1.1 に基づいてライセンスされています。ただし、そのファイルに指定された変更日付において Apache License 2.0 へ移行されます。
原文を表示
Fluree DB - A graph database for data that matters.
Temporal, verifiable, standards-compliant, git-like branching and merging, and optimized for AI agents. Integrated vector, text and geo search, and fine-grained access control with no external dependencies.
RDF 1.1 / 1.2, Open Cypher Preview, SPARQL and JSON-LD query (includes history query and other Fluree feature extensions).
Billions of graph facts on commodity hardware. Over 2M facts/second bulk import. Benchmark leader, 10.4x faster than next database. On the full 21.5-billion-triple Wikidata dump, all 850/850 WGPB graph-pattern queries complete with a 43 ms geometric mean.
Note
Fluree Memory — is part of the Fluree DB CLI.
Persistent, searchable memory for AI coding assistants. Give Claude Code, Cursor, and other AI tools long-term project memory: facts, decisions, and preferences persist across sessions in a Fluree ledger you control — scoped per-repo or per-user, shareable via git.
Install
Cloud / Serverless — Run in a dedicated serverless stack at no cost at flur.ee (usage limited), spin up dedicated servers on demand as needed. Interact seamlessly with local fluree CLI (install instructions below).
Docker — pre-configured HTTP server, ready to accept queries on port 8090. Best for trying out the API or running Fluree as a service.
docker run -p 8090:8090 fluree/server:latestHomebrew, shell installer, or Windows PowerShell — installs the fluree binary that bundles both the CLI and the embedded server (fluree server run).
# Homebrew (macOS / Linux)
brew install fluree/tap/fluree
# Shell installer (macOS / Linux)
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/fluree/db/releases/latest/download/fluree-db-cli-installer.sh | sh# Windows (PowerShell)
irm https://github.com/fluree/db/releases/latest/download/fluree-db-cli-installer.ps1 | iexPre-built binaries and the changelog for every release are on the GitHub Releases page.
Zero to graph in 60 seconds
fluree init
fluree create movies
fluree insert '
@prefix schema: <http://schema.org/> .
@prefix ex: <http://example.org/> .
ex:blade-runner a schema:Movie ;
schema:name "Blade Runner" ;
schema:dateCreated "1982-06-25"^^<http://www.w3.org/2001/XMLSchema#date> ;
schema:director ex:ridley-scott .
ex:ridley-scott a schema:Person ;
schema:name "Ridley Scott" .
ex:alien a schema:Movie ;
schema:name "Alien" ;
schema:dateCreated "1979-05-25"^^<http://www.w3.org/2001/XMLSchema#date> ;
schema:director ex:ridley-scott .
'
fluree query --format table 'SELECT ?title ?date WHERE {
?movie a <http://schema.org/Movie> ;
<http://schema.org/name> ?title ;
<http://schema.org/dateCreated> ?date .
} ORDER BY ?date'┌──────────────┬────────────┐
│ title │ date │
├──────────────┼────────────┤
│ Alien │ 1979-05-25 │
│ Blade Runner │ 1982-06-25 │
└──────────────┴────────────┘
That's a SPARQL query. The same query in JSON-LD:
fluree query --jsonld '{
"@context": { "schema": "http://schema.org/" },
"select": ["?title", "?date"],
"where": [
{ "@id": "?movie", "@type": "schema:Movie",
"schema:name": "?title", "schema:dateCreated": "?date" }
],
"orderBy": "?date"
}'Both languages access the same engine — same features, same performance.
Now update the data and query the past:
# Give every Ridley Scott movie a genre
fluree update '
PREFIX schema: <http://schema.org/>
PREFIX ex: <http://example.org/>
INSERT { ?movie schema:genre "sci-fi" }
WHERE { ?movie schema:director ex:ridley-scott }
'
# What did the data look like before that update?
fluree query --at 1 'SELECT ?title ?genre WHERE {
?movie a <http://schema.org/Movie> ;
<http://schema.org/name> ?title .
OPTIONAL { ?movie <http://schema.org/genre> ?genre }
}'
# → Blade Runner (no genre), Alien (no genre)
# And now?
fluree query 'SELECT ?title ?genre WHERE {
?movie a <http://schema.org/Movie> ;
<http://schema.org/name> ?title .
OPTIONAL { ?movie <http://schema.org/genre> ?genre }
}'
# → Blade Runner "sci-fi", Alien "sci-fi"Every change is preserved. Query any point in history by transaction number, ISO timestamp, or commit ID.
What makes Fluree different
Time travel
Every transaction is immutable. Query data as it existed at any point in time — by transaction number, ISO-8601 timestamp, or content-addressed commit ID. No special tables, no slowly-changing dimensions. It's built into the storage model.
fluree query --at 2024-06-15T00:00:00Z 'SELECT * WHERE { ?s ?p ?o }'Learn more: Time travel concepts, time-travel cookbook.
Property graphs & edge annotations
Attach properties to a *relationship*, not just a node — a role and since date on a worksFor edge, a source and confidence on a claim. Fluree implements the RDF 1.2 / SPARQL 1.2 annotation syntax, so you get labeled-property-graph edges, parallel relationships between the same two nodes, and RDF-star statement-level provenance on a single surface. Plain triple queries are left untouched — annotations only change cardinality when you ask for them.
# Attach metadata to the edge itself, not to Alice or Acme
INSERT DATA {
ex:alice ex:worksFor ex:acme {| ex:role "Engineer" ; ex:since 2024 |} .
}
# Match the edge and its metadata together
SELECT ?role ?since WHERE {
ex:alice ex:worksFor ex:acme {| ex:role ?role ; ex:since ?since |} .
}The same shape is available in JSON-LD via @annotation, including on edges inside named graphs.
Learn more: Edge annotations concept, edge-annotations cookbook.
Integrated search
BM25 full-text search and HNSW vector similarity are built into the query engine — not bolted-on external services. Search results participate in joins, filters, and aggregations like any other graph pattern.
{
"@context": { "ex": "http://example.org/" },
"from": "mydb:main",
"where": [
{ "@id": "?doc", "ex:title": "?title" },
["bind", "?score", "(fulltext ?title \"knowledge graph\")"]
],
"select": ["?doc", "?title", "?score"],
"orderBy": [["desc", "?score"]],
"limit": 10
}For dedicated BM25 / HNSW graph sources, the same query engine drives the f:graphSource / f:searchText / f:queryVector patterns and can be backed by an embedded index or a remote fluree-search-httpd service.
Learn more: BM25 full-text, vector search, search cookbook.
Git-like data management
Branch, rebase, merge, push, pull — the same workflow developers already use for code, applied to data. Fork a dataset to experiment without affecting production. Merge when ready. Rebase to catch up with upstream changes. Every branch has its own independent commit history.
fluree branch create experiment
fluree use mydb:experiment
# ... make changes safely ...
fluree branch rebase experiment # catch up with main
fluree branch merge experiment # fast-forward merge into main
fluree branch drop experiment # clean upLearn more: branching cookbook, Ledgers and the nameservice.
Triple-level access control
Policies are data in the ledger, enforced at query and transaction time. Users see only what they're authorized to see — not rows, not tables, individual facts. No application-layer filtering required.
See Policy enforcement for the model, the policy cookbook for worked examples, and Policy model and inputs for the reference.
Reasoning and inference
RDFS subclass/subproperty reasoning, OWL 2 RL forward-chaining, and user-defined Datalog rules. The database infers facts you didn't explicitly store.
Learn more: Reasoning and inference, OWL & RDFS support reference, Datalog rules.
Standards-first
Full SPARQL 1.1 with zero compliance failures against the W3C test suite. Native JSON-LD for idiomatic JSON APIs. Both query languages access the same engine with the same capabilities — time travel, policies, graph sources, and all.
Learn more: SPARQL reference, JSON-LD Query reference, Standards and feature flags.
Also worth knowing
- SHACL validation — declarative shape constraints enforced at transaction time, with violations reported per-target, per-property.
- OWL ontology imports — pull external vocabularies into a ledger via f:schemaSource + owl:imports, materialized at commit time.
- Apache Iceberg / R2RML — query Parquet warehouses and relational stores as first-class graph sources alongside native Fluree data.
Use it your way
CLI — Explore data, script pipelines, manage ledgers from the terminal.
fluree query -f report.rq --format csv > output.csvHTTP Server — Run fluree server for a production API with OIDC auth, content negotiation, and OpenTelemetry.
fluree server run
curl -X POST http://localhost:8090/v1/fluree/query?ledger=mydb:main \
-H "Content-Type: application/sparql-query" \
-d 'SELECT ?s ?p ?o WHERE { ?s ?p ?o } LIMIT 10'Rust library — Embed Fluree directly in your application. No server process needed.
let fluree = FlureeBuilder::memory().build_memory();
fluree.create_ledger("mydb").await?;
let result = fluree.graph("mydb:main")
.query()
.sparql("SELECT ?s WHERE { ?s a <http://schema.org/Person> }")
.execute()
.await?;MCP server — Expose Fluree to AI assistants over the Model Context Protocol.
fluree mcp serve # stdio transport for Claude Desktop, Cursor, etc.Capabilities
Query languages
Data formats
JSON-LD, Turtle, TriG, N-Triples, N-Quads
Edge annotations
Property-graph edges & statement-level metadata (RDF 1.2 / SPARQL 1.2)
Time travel
Transaction number, ISO timestamp, commit ID
Full-text search
Integrated BM25 with Block-Max WAND
Vector search
Embedded HNSW or remote service
Reasoning
RDFS, OWL 2 QL, OWL 2 RL, Datalog rules
Access control
Triple-level policy enforcement
Geospatial
Verifiability
JWS-signed transactions, Verifiable Credentials
Data sources
Apache Iceberg, R2RML relational mappings
Storage backends
Memory, file, AWS S3 + DynamoDB, IPFS
Replication
Clone, push, pull between instances
Branching
Fork ledgers, independent commit histories
Observability
OpenTelemetry tracing, structured logging
Validation
Documentation
For documentation and more information, visit labs.flur.ee/docs.
Full documentation also lives in docs/:
- Getting started — Install, create a ledger, write and query data
- Fluree for SQL developers — Coming from relational? Start here
- End-to-end tutorial — Build a knowledge base using search, time travel, branching, and policies
- Concepts — Time travel, graph sources, policies, verifiable data
- Guides — Practical cookbooks for search, time travel, branching, policies, and SHACL validation
- Query languages — SPARQL and JSON-LD query reference
- Transactions — Insert, upsert, update patterns
- CLI reference — All commands and options
- HTTP API — Server endpoints and authentication
- Operations — Configuration, deployment, telemetry
- Contributing — Build from source, run tests, PR workflow
- Benchmarking — Run, understand, and add performance benchmarks
License
Licensed under the Business Source License 1.1, with a Change Date
to Apache License 2.0 as specified in that file.
関連記事
OpenAI、GPT-5.5 Instant を更新しチャット GPT の自然さと有用性を向上
OpenAI はチャット GPT の基盤モデル「GPT-5.5 Instant」を更新し、対話の自然さと実用性を高める改良を加えた。
Fable 5 がアマゾン・ベッドロックにも登場したとの報道
AI シミュレーションツール「Fable 5」が、Amazon のクラウドサービス「Bedrock」プラットフォーム上で利用可能になったと報じられています。
Perplexity の弁護士向けコンピューター(3 分読み)
AI 検索企業 Perplexity が、法律専門家の業務支援を目的とした専用コンピューター機能を発表した。
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み