Ruby中的RDF状态

时间:2009-05-31 07:26:36

标签: ruby rdf redland

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

7 个答案:

答案 0 :(得分:12)

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

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

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

答案 1 :(得分:7)

我刚刚写了new survey article on Ruby and RDF。我的一些结论是:

  • RDF.rb周围有大量活动,包括数据库适配器,序列化/反序列化插件和其他库的接口。大多数最近的对象映射器也构建在RDF.rb之上。
  • 受欢迎的Redland RDF库有Ruby bindings,并且它得到了积极维护。
  • ActiveRDF是RDF的首选对象映射器,但它似乎不再被主动维护。
  • 目前唯一的最新活动对象映射器似乎是Spira
  • 所有对象映射器都没有利用ActiveModel。这将是非常光滑的,因为它将在RDF和Rails之间提供更深入的集成。

RDF.rb和Spira的作者也有一些有趣的后续评论。特别是Ben Lavender已经考虑了很多关于sanely map RDF onto Ruby objects的方法。

答案 2 :(得分:6)

就个人而言,我去了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”处理了这个问题。

答案 3 :(得分:4)

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

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

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

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

答案 4 :(得分:3)

答案 5 :(得分:1)

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

答案 6 :(得分:0)

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

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

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