knowsys/nemo
A fast in-memory rule engine
Nemo – 高速かつメモリ内Datalogエンジン
何であるか
- Nemoは、データをクエリおよび変換するためのDatalogプログラム(論理ルール)を書けるルールエンジンです。完全にメモリ上で実行され、高速性を追求しています。
- Rustで実装されており、コマンドラインツール(
nmo)、言語バインディング、ブラウザベースのUIとして提供されます。
なぜ重要なのか
- Datalogは、知識グラフの推論、データ統合、静的解析などでよく使われる宣言型言語です。Nemoは、低レベルシステムのパフォーマンスと、高レベルで論理ベースのクエリ言語の使いやすさを組み合わせることを目指しています。
- データモデルはRDFおよびSPARQLと互換性があり、セマンティックウェブデータセット用の軽量な推論エンジンとして利用できます。
主な機能(READMEに記載)
| カテゴリ | 詳細 |
|---|---|
| パフォーマンスとスケーラビリティ | メモリ内実行、Rustで記述、大規模な分析ワークロードをサポート。 |
| 宣言型ルール言語 | 分層否定、算術、集約、および存在ルール(TGD)を備えたDatalog方言。 |
| データフォーマット対応 | 入出力:CSV、TSV、汎用DSV、N-Triples、Turtle、RDF/XML、N-Quads、TriG、および直接SPARQLエンドポイントアクセス。 |
| 相互運用性 | コマンドラインクライアント(nmo)、言語バインディング、ブラウザ上で完全に動作するWeb UI。 |
| 互換性 | RDF/SPARQLデータモデルと互換性を持ちつつ、従来の論理プログラミングの意味論を維持。 |
| オープンソース | Apache-2.0およびMITの二重ライセンス。貢献歓迎。 |
導入方法
- インストール – リリースページから事前コンパイル済みバイナリを入手するか、
cargo build -rでソースからビルド(LinuxではRustおよびOpenSSL開発ライブラリが必要)。 - 実行 –
nmo --helpでCLIオプションを表示。例題プログラムとデータセットは別途の*nemo-examples*リポジトリにあります。 - 探索 – https://tools.iccl.inf.tu-dresden.de/nemo/ でライブデモを試す。ブラウザ上でエンジンが直接実行されます。
- 詳細を学ぶ – 完全なドキュメント、チュートリアル、APIリファレンスは https://knowsys.github.io/nemo-doc/ にあります。
一般的な利用例
- RDF知識グラフ上の推論(例:既存データから新しい三項組を推論)。
- CSV/TSVソースとセマンティックデータをルールで統合する複雑なデータ統合パイプライン。
- 論理プログラミング、ルール推論、知識表現に関する学術研究。
プロジェクトの状態
- READMEではNemoは大幅な開発中であり、現在のリリースは不安定であると注意されています。頻繁な更新や破壊的変更が予想されます。
コミュニティ
- GitHubでの議論、Gitter/Matrixチャットルーム、活発なドキュメントサイト。
結論 Nemoは、伝統的な論理プログラミングと現代のRDF/SPARQLエコシステムを橋渡しする高速なRustベースのDatalogエンジンを提供し、構造化データ上で高性能なルール推論が必要な誰にとっても有用です。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト