【问题标题】:The State of RDF in Ruby [closed]Ruby 中的 RDF 状态 [关闭]
【发布时间】:2009-05-31 07:26:35
【问题描述】:

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

【问题讨论】:

    标签: ruby rdf redland


    【解决方案1】:

    嗨,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。

    【讨论】:

    • 这是很棒的信息。谢谢 pjstadig!
    【解决方案2】:

    我个人选择了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”可以解决这个问题。

    【讨论】:

    • RDF.rb 可以用作纯红宝石,无需二进制文件。当然,rdf/raptor 确实使用了 raptor 绑定,但是有许多阅读器和编写器是用纯 ruby​​ 实现的(尽管如果 nokogiri 可用会更好)。
    【解决方案3】:

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

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

    还有来自 RDF.rb 和 Spira 的作者的一些有趣的后续 cmets。尤其是 Ben Lavender,对如何sanely map RDF onto Ruby objects 思考了很多。

    【讨论】:

      【解决方案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 代码。

      【讨论】:

      • 非常感谢dajobe的输入,非常感谢!
      【解决方案5】:

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

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

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2023-04-04
            • 2010-09-28
            • 1970-01-01
            • 2010-11-12
            • 2012-03-09
            • 1970-01-01
            • 2021-08-07
            • 1970-01-01
            相关资源
            最近更新 更多