Ruby中的RDF状态

Dan*_*iel 15 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可能是一个糟糕的选择吗?

小智 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兼容的适配器,支持事务.我仍然对未来的方向有一些想法,并使其功能更加完整,但并没有很大的推动力.我欢迎任何贡献.

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


emk*_*emk 7

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

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

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


Sti*_*yes 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
Run Code Online (Sandbox Code Playgroud)

不幸的是,像许多Ruby和Python依赖项一样,这也需要一些二进制文件才能读取Turtle或RDF/XML.然而,"aptitude install raptor-utils"处理了这个问题.