本人翻译自 http://sourceforge.net/apps/trac/aperture/wiki/RDF2Go

在Aperture中使用RDF2Go

Aperture是基于RDF2Go建立的,它是一个抽象层,允许Aperture易于与流行的RDF存储引擎如Sesame, Jena工作。支持的RDF存储引擎的完整列表和详细文档请参阅RDF2Go主页http://rdf2go.semweb4j.org/

本指南不打算作为RDF2go的详细文档,只是是开发者意识到一定的RDF2go问题对于使用Aperture是重要的。本章需要一些Aperture知识,所以如果你是新手,请先熟悉本教程的其余部分。

RDF2Go 基础

在RDF2Go中Model是最重要的接口, 它封装了RDF存储引擎的选择及提供与之交互的方法。由于RDF2Go仅仅是一个抽象层,每一个用户需要一个具体的Model实现与之工作,有少数Model实现(见这里)。对于每一个支持的RDF存储引擎有一个适配器,一个jar文件包含了Model的实现及其他所有的必要的接口。你需要有rdf2go.api的jar,适配器的 jar和你选择的RDF存储引擎实现的jar。(至少三个)。aperture发布版在必须的lib文件夹中自带了rdf2go.api,连同可选的lib文件夹中的sesame-runtime-osgi.jar和rdf2go.impl.sesame23.jars,你可以通过简单的在你的classpath中替换成合适的jar用不同的RDF存储引擎替换后面两者

初始化Model

有许多方式初始化Model,普通的开发者应该至少意识到三种,第一种是最简单的(例子中使用是来自于sesame2实现的类,它应该对于所有其他存储引擎是足够相似的)

Model model = new RepositoryModel(false)
model.open();

上面是使用的RepositoryModel类的一个构造函数,这将创建一个简单的、非推理的在内存中的仓库。对于许多情况已经足够了。如果你需要更多的灵活性,并且愿意学习你的实现的复杂性(或者已经从内心熟悉他们)你可以创建一个你自己的repository实例,并传给RepositoryModel的构造函数。Sesame文档包含了一个详细的页面,通过各种方式创建Repository接口的实例。基于文件的RDF持久化repository的例子如下所示

// you can initialize the repository the way you want, add any elements
// to the sail stack, use hard disk or data base persistence ...
// the full power of sesame lies at your fingertips
Repository repository =new RepositoryImpl(new RDFSRules(new NativeStore(new File("path/to/the/store/folder"))));
Model model = new RepositoryModel(repository);
model.open();

如果你需要你的代码与任何具体的rdf2go实现相分离,第三部分派上用场了,但是仍想创建Model。(例如Aperture)RDF2go提供了一个称为RDF2Go的单例,该类能够在运行时检测安装的RDF2Go适配器实现。它类似于在SLF4J日志框架这发现的模式,对于RDF2Go检测它们,只要适配器的jar在classpath中就足够了。你可以显式的调用RDF2Go.register()方法和RDF2Go.unregister()方法重写此行为。有了它,创建模型更简单。

Model model = RDF2Go.getModelFactory().createModel();
model.open();

也也可以设置一些属性来影响创建的模型的类型 ".createModel( Properties props );"

打开与关闭

打开与关闭模型

RDF2Go 模型工作往往需要一定的资源,可能包括打开的文件,数据库连接,http连接或者任何其他的所需的底层的实现。因此使用模型和当它们不再需要时返回它们前有必要显式的获取这些资源。这是拥有一个统一的API来访问一个简单的5个三元组和数以百万计的海量数据库的内存模型的代价。。

如此的模型工作遵循以下模式;

Model model = prepareTheModelAndTheUnderlyingImplementation();
model.open(); // 'open' the model and aquire all necessary system resources
doYourWork(model);
model.close(); // return the resources...

或者,更通用:

Model model = null;
try {model = prepareTheModelAndTheUnderlyingImplementation();model.open(); // 'open' the model and aquire all necessary system resourcesdoYourWork(model);
} catch (Exception e) {doSomethingWithTheException(e);
} finally {if (model != null) model.close(); // return the resources...
}

必须记住它,如果你试图使用一个未打开的模型你可以能得到错误,如果不适当关闭则会警告。这一特征很重要,因为它意味着在Aperture中的其他的设计决策。

打开和关闭RDFContainer

RDFContainer封装了模型,因此为了与container工作,模型必须是打开的,记住当你传输模型到RDFContainer构造函数,模型是自动打开的,至少在默认的实现里面。当你用RDFContainer停止运行,你需要释放它。我们不鼓励你通过调用container.getModel().close()手动关闭底层的模型。在很多情况下,当多个RDFContainer共享相同的模型,它们代表存储在同一模型中的各种资源的属性,如果你一个container停止运行并且要关闭关闭底层的模型-所有其他的container将会变为无效,可能导致细微的bug

我们介绍了一种方法来避免这种情况。RDFContainerImpl的构造函数可能接受第三个布尔参数。将其设置为true,并且底层模型将被视为共享和处理RDFContainer将不会关闭底层模型。设计应用程序时,请记住这一点。

详细在source code of the dispose() method 在RDFContainerImpl类。

打开和关闭DataObject

DataObject封装了(间接)两个RDFContainers。实际的元数据container和数据源的配置。第一个是通过dataObject.getMetadata()可用,和第二个通过dataObject.getDataSource().getConfiguration()可用。

当你释放data object,元数据container跟着释放。(我要强调的是RDFContainer被释放,不是强调元数据模型被关闭)数据源的配置并没有。没有DataSource.dispose()方法,所以当你创建一个数据源实例你需要记得关注配置RDFCOntainer,当你不再需要它时。

详细在source code of the DataObjectBase class, the dispose() method

---------------------------------------------------------------------------

本系列WEB数据挖掘系本人原创

作者 博客园 刺猬的温驯

本文链接 http://www.cnblogs.com/chenying99/archive/2013/06/14/3135296.html

本文版权归作者所有,未经作者同意,严禁转载及用作商业传播,否则将追究法律责任。

转载于:https://www.cnblogs.com/chenying99/archive/2013/06/14/3135296.html

WEB数据挖掘(十)——Aperture数据抽取(6):在Aperture中使用RDF2Go相关推荐

  1. oracle 11g dul,学习笔记:Oracle dul数据挖掘 导出Oracle11G数据文件坏块中表中

    试验模拟导出Oracle 11G数据库中数据文件坏块中表中的数据 以前一直以为dul对应的版本只能恢复最高的数据库版本一致,今天测试发现dul 10可以恢复11g最新版的数据库. 模拟环境SQL> ...

  2. WEB数据挖掘(八)——Aperture数据抽取(4):Aperture整体结构

    为了更好的使用Aperture组件,我们需要熟悉他的整体流程以及相关API接口 下面是关于Aperture组件的通用结构,文章翻译自 http://sourceforge.net/apps/trac/ ...

  3. 大数据的常用算法(分类、回归分析、聚类、关联规则、神经网络方法、web数据挖掘)

    目录 (1)分类 (2)回归分析 (3)聚类 (4)关联规则 (5)神经网络方法 (6)Web数据挖掘 在大数据时代,数据挖掘是最关键的工作.大数据的挖掘是从海量.不完全的.有噪声的.模糊的.随机的大 ...

  4. 网页抓取/数据抽取/信息提取软件工具包MetaSeeker

    MetaSeeker是一个Web网页抓取/数据抽取/页面信息提取工具包,能够按照用户的指导,从Web页面上筛选出需要的信息,并输出含有语义结构的提取结果文件(XML文件),众所周知,Web页面显示的信 ...

  5. Tribon模型数据抽取之sx700.exe详解

    Tribon模型数据抽取之sx700.exe详解 一:简介 网络上关于Tribon模型数据抽取的论文最早流传的是2006哈尔滨工程大学姚竞争的工学硕士学位论文<TRIBON模型的数据抽取及二次开 ...

  6. 软件开发全套视频教程汇总(javaSE,javaEE,linux,android开发,C# ,web前端,大数据云计算,数据挖掘,web前端,php开发,UI设计,C++开发,3D视频)

    软件开发全套视频教程汇总(javaSE,javaEE,linux,android开发,C# ,web前端,大数据云计算,数据挖掘,web前端,php开发,UI设计,C++开发,3D视频) 这是我以前学 ...

  7. java实时数据抽取_试用Web-HarvestJava开源Web数据抽取...

    Web-Harvest是一个Java开源Web数据抽取工具.它能够收集指定的Web页面并从这些页面中提取有 用的数据.Web-Harvest主要是运用了像XSLT,XQuery,正则表达式等这些技术来 ...

  8. XML与Web数据挖掘

    面向Web的数据挖掘是一项复杂的技术,由于Web数据挖掘比单个数据仓库的挖掘要复杂的多,因而面向Web的数据挖掘成了一个难以解决的问题.而XML的出现为解决Web数据挖掘的难题带来了机会. 面向Web ...

  9. 数据挖掘十大经典算法笔记

    主要总结一下数据挖掘十大经典算法,包括各自优缺点, 适用数据场景,做个小笔记,分享一下 数据挖掘主要分为分类算法,聚类算法和关联规则三大类,这三类基本上涵盖了目前商业市场对算法的所有需求.而这三类里又 ...

  10. 十大数据爱好者必备书籍

    十大数据爱好者必备书籍 转载请注明! 这是一个独一无二的书籍前十推荐,对每个十大推荐展示出顶级付费或免费书籍推荐.如果你对数据书籍感兴趣,这个列表可能合你口味. Matthew Mayo 发表于 KD ...

最新文章

  1. 阿里资深算法专家:如何突围大厂算法面试?
  2. Android APP更新下载工具类——简单封装DownloadManager
  3. java 转发上传文件_Java 发送http请求上传文件功能实例
  4. C语言-将数字转化为字符串
  5. java grizzly_Grizzly简介
  6. 怎样使用DBMS_OUTPUT.PUT_LINE?
  7. SAP Hybris backoffice登录时的语言选择
  8. 全国计算机等级考试题库二级C操作题100套(第18套)
  9. OpenWrt 之 MT7628 使用GPIO中断
  10. NanUI文档 - 如何实现C#与Javascript的相互通信
  11. matlab保存格式可以用cad打开文件,怎么将TXT文件导入CAD中生成图形
  12. Redis的主从复制和 哨兵模式
  13. Simple2D-24 Sprite 渲染树
  14. 让我们来谈谈合并排序算法
  15. 当前最快的实例分割模型:YOLACT 和 YOLACT++
  16. 关于开通全国计算机技术与软件专业技术资格(水平)考试继续教育远程培训平台的通知...
  17. pytorch中lstm用法详解(二)
  18. 在计算机上OF键开机键,电脑开机时出现英文字母串需要按回车键才能继
  19. 什么水果有利于饭后消化?
  20. 策略模式(策略设计模式)详解

热门文章

  1. 联合主键使用in和not in
  2. 解决在DHCP环境下私自指定IP和私自搭建DHCP服务器的方法
  3. 最新Tuxera NTFS for mac2020读写NTFS磁盘工具 更新详情介绍
  4. 程序员的生活照,最后一个绝了!有同感吗?
  5. 一个注解搞定 Spring Boot 日志!还有谁不会?
  6. 2020年4月编程语言排行榜:少儿编程真有这么火吗?
  7. 如何胜任一个小型公司的技术总监?
  8. 运维派送福利,就是这么任性!
  9. 请善待身边的 IT 狗
  10. 程序员必备简捷开发辅助工具总结