《Clojure数据分析秘笈》——1.10节读取RDF数据

本节书摘来自华章社区《Clojure数据分析秘笈》一书中的第1章,第1.10节读取RDF数据,作者(美)Eric Rochester,更多章节内容可以访问云栖社区“华章社区”公众号查看

1.10 读取RDF数据
使用不同格式的链接数据越来越多地出现在互联网上:微格式(microformat)、RDFa和RDF/XML是其中的一些常见形式。链接数据提供了更大的灵活性且功能强大,但是其处理过程比较复杂。通常,为了高效处理链接数据,需要使用某种类型的三元组存储。在本方法和接下来的三种方法中,将用到Sesame(http://www.openrdf.org/)和kr Clojure库(https://github.com/drlivingston/kr)。

1.10.1 准备工作
首先,需要确保相关依赖列于project.clj文件中:


7d41a6e7304ccce5dd82b2b170f7f939886affcf

在本例中,从Telegraphis的链接数据库获取数据。将从http://telegraphis.net/data/currencies/ currencies.ttl得到货币数据库。为了安全起见,文件下载并另存为data/currencies.ttl,可以从这个目录访问它。

1.10.2 具体实现
本过程最费时的部分将是定义数据。使用的库完成这项工作。

  1. 建立三元组存储并注册数据使用的命名空间。将三元组存储名字绑定到名称tstore。


7305b61c74b3b65a75652b94464a04c531cd719c


171cbbcca9940b534f2a1cb3be662b567b1cb866

1.10.3 实现原理
首先介绍一下背景知识:资源描述格式(Resource Description Format,RDF)不是XML格式的数据,尽管RDF通常是用XML编写的(还有其他的数据格式,如N3和Turtle)。RDF将世界看成一个声明集合。每条声明至少包含三部分(三元组):主语(Subject)、谓词(predicate)和宾语(object)。主语和谓词需要是URI(URI和URL近似,但比其更通用。例如uri:7890就是一个有效的URI)。宾语可以是文本或者URI。所有的URI构成一幅图。它们相互连接并通过声明相互描述。这就是linked-in的链接数据的来源。
如果你需要链接数据的更多信息,http://linkeddata.org/guides-and-tutorials上有一些好的推荐。
回到之前介绍的方法中:从总体上来看,在这里使用的处理过程非常简单。

  1. 创建三元组存储(kb-memstore和init-kb)。
  2. 读取数据(load-data)。
  3. 查询并仅取出需要的数据(q和load-data)。
  4. 将之转换为Incanter可以使用的数据(rekey和col-map)。
  5. 创建Incanter数据集(load-data)。
    本例中使用的查询格式是个新事物。kb使用类SPARQL的领域专用语言描述查询。事实上,由于kb简单易用,因此使用它而不是直接处理未经加工的RDF数据。以“?/”开始的条目是变量;这将作为查询结果映射中的键值。其他条目格式如rdf-namespace/value。命名空间取自在init-kb中定义的已注册命名空间。这些命名空间与Clojure的不同,尽管它们的作用相同:划分和提供上下文。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值