Jena总共支持三种内置存储模式,分别是RDB,SDB,和TDB。其中RDB现在几乎不用了,因为速度比较慢。而官方推荐的则是TDB,速度快,操作简单,支持几十亿条记录,且支持几百个并行查询。

本来说要继续写TDB的文章的,但是最近一直没有写成。实在是看不下去这篇短得不能再短的关于TDB的介绍,又获得了大量的点击率,所以,还是认真修改一下。

关于Jena这整个的Project,有一个需要事先声明一下,像ARQ,TDB,SDB这些API里面都包含了Jena的jar文件,所以你下载了任何一个,都可以不需要下载Jena了。之前有一个人写的代码老是报错,然后问我。我在我的电脑上运行的时候,发现没有错。最好发现是她既把TDB的Jar加进去了,又把Jena的Jar加进去了,导致出错。
我不明白Jena的开发者为什么要这样做,搞得挺麻烦的。
首先,要明确一点,Jena所有的东西都是围绕着Model进行的。一个TDB里面可以包含多个的Model,就像一个数据库里面可以包含多个的表,这些Model都有各自的名字,你可以访问各个Model,而不用把其他的Model加载到内存里面。由于测试的时候,大部分数据并不是很大,一般都是用DefaultModel这个Model,下面是简单创建一个TDB并加载RDF文件到TDB里面去的例子:

package TDB教程的例子;import com.hp.hpl.jena.query.Dataset;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.tdb.TDBFactory;
import com.hp.hpl.jena.util.FileManager;/*** 我的邮箱:shahuwang@qq.com* 我的博客:www.shahuwang.com* 创建时间:2012-5-18* @author 王瑞期*/
public class CreateTDB
{public static void main(String [] args){Dataset ds = TDBFactory.createDataset("test");//建立了一个test的TDB,如果存储test的TDB,则表示使用这个TDBModel model = ds.getDefaultModel();//这里使用TDB的默认ModelFileManager.get().readModel(model, "RDFFile");//读取RDF文件到指定的model里面/** 这里要详细说一下如何读取RDF到Model里面的方法了,其实model就有* read方法可以对RDF进行读取,但是上面用FileManager会比较好一点,它会自动* 处理许多问题*/model.commit();//这里类似于数据库的commint,意思是把现在的操作立刻提交model.close();//结束使用的时候,一定要对Model和Dataset进行关闭ds.close();}}

上面的代码很简单,这样就可以把RDF文件加载到TDB里面了。

现在会面临另一个问题,怎么对TDB进行查询呢?sparql的查询分好几种,最常用的是select查询,还有其他的查询是ASK查询,update查询,以及construct查询,这里只介绍一下select查询和update查询。
package TDB教程的例子;import com.hp.hpl.jena.query.Dataset;
import com.hp.hpl.jena.query.QueryExecution;
import com.hp.hpl.jena.query.QueryExecutionFactory;
import com.hp.hpl.jena.query.ResultSet;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.update.UpdateAction;/*** 我的邮箱:shahuwang@qq.com* 我的博客:www.shahuwang.com* 创建时间:2012-5-18* @author 王瑞期*/
public class queryTDB
{/** 查询的方式有多种,查询的对象也有多种,可以对一个Dataset进行查询* 也可以对一个Model进行查询,还可以对一个Graph进行查询,总之Jena* 能提供很强大的功能*/public ResultSet SelectQuery(Dataset ds, String queryString){QueryExecution qexec = QueryExecutionFactory.create(queryString, ds);ResultSet resultSet = qexec.execSelect();return resultSet;}/*** @param model* @param queryString* @return 返回的是查询的结果,类型为ResultSet类型**/public ResultSet SelectQuery(Model model,String queryString){QueryExecution qexec = QueryExecutionFactory.create(queryString, model);ResultSet resultSet = qexec.execSelect();return resultSet;}public void updateQuery(Dataset ds,String updateFile){UpdateAction.readExecute(updateFile, ds);//updateFile是含有更新操作的sparql文件,就是把sparql保存到文件里面去}}


国内很多专家们,大多数搞语义网都不是专搞这个,而是因为这个好发论文,评职称什么的好一些,所以很多根本就不关注语义网的发展,比如到现在还有不少的老师,一想到存储,就立刻告诉学生用关系数据库来存储RDF,对于TDB这些Native Repository,根本就不去了解。TDB已经很不错了,相信在Apache基金会的帮助下,会变得更加得强大。
如果有其他的问题,可以问我,尽我所能帮助大家。


文章转载自:http://www.shahuwang.com/2011/11/24/用jena将rdf文件导入tdb.html



												

Jena TDB的使用简介相关推荐

  1. 知识图谱实践篇(四):Apache jena SPARQL endpoint及推理

    在上一篇我们学习了如何利用D2RQ来开启endpoint服务,但它有两个缺点: 1. 不支持直接将RDF数据通过endpoint发布到网络上. 2. 不支持推理. 这次我们介绍的Apache Jena ...

  2. Jena对本体、RDF三元组的API操作记录

    目录 目标 导入RDF 导入本体文件 新增三元组 (1)Statement方式 (2)Resource方式 问题记录 参考文献 目标 通过这份源码以及对应配套的博客内容的学习,基本上是了解和掌握了知识 ...

  3. Linux系统中Jena环境变量配置及使用

    前言:最近在使用jena开发知识图谱,总结一下最近的使用过程. 文末有 apache-jena-3.6.0,Apache-jen.a-fuseki-3.6.0以及d2rq-0.8.1tar 文件.因为 ...

  4. 我爱机器学习网机器学习类别文章汇总

    机器学习领域的几种主要学习方式 From Stumps to Trees to Forests KDD-2014 – The Biggest, Best, and Booming Data Scien ...

  5. 知识图谱——领域知识问答系统简单介绍

    一.概念介绍 [知识图谱] A knowledge graph consists of a set of interconnected typed entities and their attribu ...

  6. 我爱机器学习--机器学习方向资料汇总

    转载:http://blog.csdn.net/shuimanting520/article/details/45748505 机器学习爱好者资料 机器学习领域的几种主要学习方式 From Stump ...

  7. 中国碎石机市场趋势报告、技术动态创新及市场预测

    [出版商]贝哲斯咨询 [免费目录下载]碎石机是一种非侵入性的医疗器械,可破坏和清除肾结石和胆结石,也用于唾液结石和胰腺结石的破碎,一般采用共振等方式将结石破碎,避免手术带来的各种风险. 碎石机市场的企 ...

  8. Jena 简介:通过 Jena Semantic Web Framework 在 Jave 应用程序中使用 RDF 模型

    简介: RDF 越来越被认为是表示和处理半结构化数据的一种极好选择.本文中,Web 开发人员 Philip McCarthy 向您展示了如何使用 Jena Semantic Web Toolkit,以 ...

  9. mysql jena rdf_RDF和Jena RDF API简介

    这是官方文章<An Introduction to RDF and the Jena RDF API>的译文.原文是在刺猬的温驯这里看到的.其中的图片没法显示了,还有一段丢失了.于是我在此 ...

  10. Protege、D2RQ、JENA与SPARQL

    引言 关于的知识图谱的相关概念在从语义网络到知识图谱这篇博文中有简单的描述,下面介绍一下在知识图谱实际使用中的一些工具. 数据 来源于The Movie Database (TMDb)抓取的电影数据, ...

最新文章

  1. 解决binwalk运行提示缺少LZMA模块
  2. webform计算某几列结果_大数据测试场景科普 流计算篇 (上)
  3. Bash脚本教程之行操作
  4. h5支付不能打开支付宝 ios_iOS WKWebview中无法调起支付宝/微信客户端支付问题的解决方法...
  5. 禅道11.0windows本机安装
  6. python输入整数n计算并输出1+22+333_Python 经典练习题-016
  7. windows 安装docker_Windows下docker安装 postgresql12.0
  8. Kubernetes知识体系-从入门到精通
  9. ssis 映射列 使用变量_SSIS中的动态列映射:SqlBulkCopy类与数据流
  10. Docker安装Mysql8.0,并配置忽略大小写,一句命令搞定
  11. 面向对象和结构化程序设计的区别
  12. 网络安全学习--007--漏洞分析简介
  13. maven 打包命令的使用
  14. Halcon 入门教程(01)
  15. 高漫 1060 Pro 数位板 Mac OS X 下无法设置 shift 快捷键解决方法
  16. 【数据结构与算法】1.2 数据结构与算法分析
  17. Vue番外之循环数组从指定下标开始
  18. 门函数卷积_卷积及其应用
  19. 例3.1 有人用温度计测量出用华氏法表示的温度,今要求把它转换为以摄氏法表示的温度。
  20. 苹果手机怎么验证app_【图文】苹果手机如何下载安装APP

热门文章

  1. 阿里云盘帮我扩容了10个T,拿来吧你!
  2. js html监听ctrl v,js监听组合按键
  3. 三维地理信息系统应用的关注要点
  4. 如何用css写出一个三角形
  5. 软件测试研究生院校排名,自动化专业考研学校有哪些 最新考研院校排名
  6. 智能手机与pc计算机的区别,手机cpu和电脑cpu有什么区别
  7. 计算机 硬盘 数据,我们电脑硬盘里的数据还能保存多久?
  8. CTFshow——web入门——php特性(上篇)
  9. 支招:如何提高芝麻信用分到800以上
  10. SuperMap云许可配置