Ruby中的RDF状态

我想知道Ruby目前对语义Web技术的支持。 有没有好的RDF选项? 最近的调查似乎是大约2007年( http://paul-classic.stadig.name/2007/10/26/the-state-of-rdf-support-in-ruby-2007/ )。 Redland的RDF包装器是获得RDF支持的最佳方式 – 该老化文章中提到的所有其他项目似乎都不受支持或删除。 如果追求与语义网相关的项目,Ruby可能是一个糟糕的选择吗?

嘿,Iaalto,我是你提到的调查文章的作者。 我一直在考虑做一项新的调查。

自从我做了原始调查以来,情况发生了一些变化,但并不多。 以下是需要考虑的几件事:

  1. ActiveRDF似乎已成为JRuby特定库的路线。 它们的几个适配器仅用于Java库。 不一定是问题,但需要注意的事项。
  2. Reddy只有一个基于记忆的图表。 同样,不一定是个问题。 我不会因为那个(过早优化)而给Reddy打折,但我也不会梦想存储数十亿的三元组。
  3. 我最近为Redland发现了一组名为RedLeaf的新Ruby绑定。 不确定它有多成熟,但看起来迈克尔已经开展了大约一年的工作。 直到最近我还没有听说过,因为它是离网的(没有RubyForge或GitHub项目)。
  4. 我在GitHub上创建了一个名为RubyRDF的项目(github.com/pjstadig/rubyrdf/tree/master)。 它没有大量的文档,但它主要是function性的。 它有一个Sesame兼容的适配器,支持事务。 我仍然对未来的方向有一些想法,并使其function更加完整,但并没有很大的推动力。 我欢迎任何贡献。

一句话如果JRuby不是你的问题,那么选择ActiveRDF,它是最完整和最成熟的。 如果基于内存的图形不是问题,那么下一个最成熟的可能是Reddy。

我刚刚写了一篇关于Ruby和RDF的新调查文章 。 我的一些结论是:

  • 围绕RDF.rb进行了大量活动,包括数据库适配器,序列化/反序列化插件以及与其他库的接口。 大多数最近的对象映射器也构建在RDF.rb之上。
  • 流行的Redland RDF库具有Ruby绑定 ,并且它得到了积极的维护。
  • ActiveRDF是RDF的首选对象映射器,但它似乎不再被主动维护。
  • 目前唯一的活动对象映射器似乎是Spira 。
  • 没有任何对象映射器正在利用ActiveModel 。 这将是非常光滑的,因为它将提供RDF和Rails之间更深层次的集成。

RDF.rb和Spira的作者也提出了一些有趣的后续评论。 特别是Ben Lavender已经考虑过如何将RDF巧妙地映射到Ruby对象上 。

我个人去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。 然而,“aptitude install raptor-utils”处理了这个问题。

我是Redland的作者,但我自己不使用Ruby。 ruby绑定可能仍然有效(它们在最后一个版本中通过了unit testing),但可能需要对任何较新的ruby语言更改有所了解。

纯Ruby用户我认为已经尝试过Active RDF ,它比你建议的其他东西更新,但专注于Rails。

否则我建议询问语义网兴趣组IRC频道 – irc.freenode.net上的#swig

编辑:如果你环顾四周,还有Reddy http://github.com/tommorris/reddy/tree/master和github上的其他ruby rdf代码。

AllegroGraph(RDF DB)有一个Ruby客户端 – https://github.com/phifty/agraph

有一个Ruby Sesame库: http : //github.com/tillsc/ruby-sesame

Sesame是Java最流行的两个RDF框架之一。 我们(Ontotext)开发了一个名为OWLIM的三重存储+内置推理引擎。 我们提供名为SwiftOWLIM的免费版本。

我们的一些用户通过上面的Ruby Sesame库将它与Ruby一起使用。