16

我想知道 Ruby 目前对语义 Web 技术的支持。有没有好的 RDF 选项?最后一次调查似乎是在 2007 年左右(http://paul-classic.stadig.name/2007/10/26/the-state-of-rdf-support-in-ruby-2007/)。Redland 的 RDF 包装器是获得 RDF 支持的最佳方式吗?在那篇陈旧的文章中提到的所有其他项目似乎都不受支持或被丢弃。如果要从事与语义网络有关的项目,Ruby 可能是一个糟糕的选择吗?

4

7 回答 7

12

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

自从我进行最初的调查以来,发生了一些变化,但变化不大。这里有几点需要考虑:

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

底线:如果 JRuby 对你来说不是问题,那么选择 ActiveRDF,它是最完整和最成熟的。如果基于内存的图不是问题,那么下一个最成熟的可能是 Reddy。

于 2009-07-25T11:49:18.327 回答
7

我个人选择了RDF.rb,因为他们的网站有很好的文档,并且很容易开始使用博客教程。

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”解决了这个问题。

于 2010-08-06T00:39:14.987 回答
7

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

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

RDF.rb 和 Spira 的作者也有一些有趣的后续评论。尤其是 Ben Lavender,对如何将RDF 巧妙地映射到 Ruby 对象上进行了很多思考。

于 2010-12-21T14:17:15.643 回答
4

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

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

否则,我建议在 Semantic Web Interest Group IRC 频道上询问 - irc.freenode.net 上的#swig

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

于 2009-05-31T15:51:28.503 回答
3

查看 RDF.rb http://rdf.rubyforge.org/

于 2010-05-12T05:48:56.477 回答
1

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

于 2010-12-17T21:02:47.107 回答
0

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

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

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

于 2010-08-27T07:49:16.447 回答