セマンティックWebテクノロジーに対するRubyの現在のサポートについて疑問に思っています。良いRDFオプションはありますか?行われた最後の調査は2007年頃だったようです(http://paul-classic.stadig.name/2007/10/26/the-state-of-rdf-support-in-ruby-2007/)。RedlandのRDFラッパーはRDFサポートを利用するための最良の方法ですか?その古い記事で言及されている他のすべてのプロジェクトはサポートされていないか、削除されているようです。セマンティックWebに関連するプロジェクトを追求する場合、Rubyはおそらく悪い選択ですか?
7 に答える
ねえ、Iaalto、私はあなたが言及した調査記事の著者です。私は新しい調査をすることを考えていました。
最初の調査から少し変わっていますが、それほどではありません。考慮すべき点がいくつかあります。
- ActiveRDFは、JRuby固有のライブラリになる道を進んだようです。それらのアダプタのいくつかは、Java専用ライブラリ用です。必ずしも問題ではありませんが、注意が必要です。
- Reddyにはメモリベースのグラフしかありません。繰り返しますが、必ずしも問題ではありません。そのためにReddyを軽視するつもりはありませんが(時期尚早の最適化)、何十億ものトリプルを保存することも夢見ていません。
- 最近、 RedLeafと呼ばれるRedland用の新しいRubyバインディングのセットを見つけました。どれだけ成熟しているかはわかりませんが、マイケルは約1年間取り組んできたようです。オフグリッド(RubyForgeやGitHubプロジェクトはない)なので、最近まで聞いたことがありませんでした。
- 私はGitHubでRubyRDF(github.com/pjstadig/rubyrdf/tree/master)というプロジェクトを作成しました。大量のドキュメントはありませんが、ほとんど機能しています。トランザクションをサポートするSesame互換アダプタがあります。私はまだ将来の方向性についていくつかのアイデアを持っており、それをより完全な機能にすることはできますが、それに取り組むための大きな推進力はありません。どんな貢献も歓迎します。
結論: JRubyが問題にならない場合は、ActiveRDFを使用すると、最も完全で成熟したものになります。メモリベースのグラフが問題にならない場合、次に成熟しているのはおそらくReddyです。
個人的にはRDF.rbに行きました。彼らのウェブサイトにはOKのドキュメントがあり、ブログのチュートリアルを使い始めるのは簡単だったからです。
ActiveRDFはより大きなプロジェクトのように見えますが、そのwikiはダウンしています(実際にはメインページはarchive.comのwikiのコピーにリンクしています)。すべての例でSPARQLクエリについて説明しています。
これは単純なトリプルルックアップの例です。これは私の最初のRubyスクリプトであったため、ばかげた構文についてお詫びします。
require 'rubygems'
require 'rdf'
require 'rdf/raptor'
scufl2 = RDF::Vocabulary.new("http://ns.taverna.org.uk/2010/scufl2/ontology/")
dc = RDF::Vocabulary.new("http://purl.org/dc/elements/1.1/")
graph = RDF::Graph.load("../resources/workflows/example.ttl")
graph.query([nil, scufl2.workflow, nil]) do |bundle,p,workflow|
graph.query([workflow, scufl2.name, nil]) do |wf,p,workflow_name|
# Should just be one
print workflow_name
end
end
残念ながら、多くのRubyおよびPythonの依存関係と同様に、TurtleまたはRDF/XMLを読み取るためにいくつかのバイナリも必要でした。ただし、「aptitudeinstallraptor-utils」がそれを処理しました。
Ruby と RDF に関する新しい調査記事を作成しました。私の結論のいくつかは次のとおりです。
- RDF.rbを取り巻く膨大な量のアクティビティがあり、多数のデータベース アダプター、シリアライゼーション/デシリアライゼーション プラグイン、および他のライブラリへのインターフェイスがあります。最近のオブジェクト マッパーのほとんども、RDF.rb の上に構築されています。
- 人気のある Redland RDF ライブラリにはRuby バインディングがあり、積極的にメンテナンスされています。
- ActiveRDFは RDF の主要なオブジェクト マッパーでしたが、現在は積極的に維持されていないようです。
- 現時点で唯一の最近のアクティブなオブジェクト マッパーはSpiraのようです。
- ActiveModelを利用しているオブジェクト マッパーはまだありません。これは、RDF と Rails の間のより深い統合を提供するため、非常に巧妙です。
RDF.rb と Spira の作成者からの興味深いフォローアップ コメントもあります。特に Ben Lavender は、RDF を Ruby オブジェクトに適切にマッピングする方法について多くのことを考えてきました。
私はRedlandの作成者ですが、 Ruby 自体は使用していません。Ruby バインディングはおそらくまだ機能しますが (前回のリリースでは単体テストに合格しました)、おそらく新しい Ruby 言語の変更にはいくらかの愛が必要です。
純粋なRubyユーザーは、あなたが提案する他のものよりも最近ですが、Railsに焦点を当てたActive RDFを試したと思います。
それ以外の場合は、Semantic Web Interest Group の IRC チャネル (irc.freenode.net の #swig) で質問することをお勧めします。
編集: Reddy http://github.com/tommorris/reddy/tree/masterや他の ruby rdf コードも github にあります。
AllegroGraph (RDF DB) には Ruby クライアントがあります - https://github.com/phifty/agraph
Ruby Sesame ライブラリがあります: http://github.com/tilsc/ruby-sesame
Sesame は、Java で最も人気のある 2 つの RDF フレームワークの 1 つです。私たち (Ontotext) は、OWLIM と呼ばれるトリプル ストレージ + 組み込みの推論エンジンを開発しています。SwiftOWLIM と呼ばれる無料版を提供しています。
一部のユーザーは、上記の Ruby Sesame ライブラリを介して Ruby で使用しています。