RDF/SPARQL 実装の内部構造について詳しく知りたいのですが、ほとんどのフレームワークは (必然的に) 現実世界のパフォーマンスと実装を考慮すると多少複雑です。低レベルの教育ツールとして適した「参照」実装があるかどうか知りたいですか? コードの観点から最小/最もクリーンな RDF/SPARQL 実装は何ですか?
5 に答える
- RDF Primerを読んでみてください- とても簡単です。
- SPARQL Query Languageは非常に理解しやすい言語です。
- SPARQL で遊ぶための「SPARQL エンドポイント」の Google。いくつか見つかります ( 1または2または3または4など)。
- 私のwikiページにいくつかのリソースがあります。そこから始めることができます。
- セマンティック Web に関する優れた書籍が入手可能です。詳細については、私に尋ねてください。
始めることを恐れないでください。任意の RDF エンジンを使用して、タスクを定義し、プログラミングしてください! ごまから始めることをお勧めします。
言語は非常に複雑で表現力があり、ほとんどの実装 (私自身のものも含む) は、顧客/認識された使用シナリオの要求に応じて、構文にさまざまな拡張機能を追加するため、小さくてクリーンな SPARQL 実装を見つけるのは難しいでしょう。
AFAIK Jena's documentation は、SPARQL実装が実際にどのように機能するかについて最も包括的な説明を提供しますが、あなたが言うように、それはかなり複雑です。
SPARQL を理解し教えることだけでも、SPARQL 代数を理解することが非常に重要です。代数を理解していれば、クエリがどのように代数に変換され、それを手動で実行するかを手作業で解決できます。明らかに、非常に小さなデータセットでの比較的単純なクエリ以外でこれを試すことはお勧めしません!
教えるべきもう 1 つの重要なことは、言語は手続き型ではないということです。実装は、クエリの実際の意味を変更しない限り、適切と思われる方法でクエリを自由に並べ替えたり調整したりできます。
公式のリファレンス実装についての言及は見たことがありません。
しかし、これは役立つかもしれません...「SPARQLクエリ言語実装レポート」をご覧になりましたか?14のSPARQL実装を一般的なテストスイートと比較します。
Dave Beckett のRedlandは、始めるのに最適な方法です。
特徴:
Redland は、Resource Description Framework (RDF) のサポートを提供するフリー ソフトウェア C ライブラリのセットです。
* Modular, object based libraries and APIs for manipulating the RDF graph, triples, URIs and Literals.
* Storage for graphs in memory and persistently with Sleepycat/Berkeley DB, MySQL 3-5, PostgreSQL, AKT Triplestore, SQLite, files or URIs.
* Support for multiple syntaxes for reading and writing RDF as RDF/XML, N-Triples and Turtle Terse RDF Triple Language, RSS and Atom syntaxes via the Raptor RDF Parser Library.
* Querying with SPARQL and RDQL using the Rasqal RDF Query Library.
* Data aggregation and recording provenance support with Redland contexts.
* Language Bindings in Perl, PHP, Python and Ruby via the Redland Bindings package.
* Command line utility programs rdfproc (RDF), rapper (parsing) and roqet (query).
* Portable, fast and with no known memory leaks.
ゴマから始めましょう。これはシンプルで、解析 (Rio を使用) やトリプルストアとして適しています。デフォルトのインストールは、2 つの Web アプリケーションに分割されています。1 つはエンドポイント用で、もう 1 つはエンドポイントの管理/クエリを実行するためのものです。セサミは Sail と呼ばれる抽象インターフェースを定義しており、いくつかのベンダーが実装していることを考慮してください。そのため、同じインターフェースをほとんど手間をかけずに使用して、データを実際に jena、virtuoso、allegrograph、bigowlim に保存したり、tinkerpop スタックを介して neo4j などの他のグラフデータベースの王様に保存したりすることができます。