JENA手册-入门

APACHE JENA,一款做语义网(Semantic Web)和连接资料(Link Data)应用的免费开源JAVA框架。JENA拥有一整套完整的添加删除、推理、SPARQL查询、存储的模块,来满足我们的需求。

APACHE JENA,一款免费的JAVA开源框架,用来做语义网(Semantic Web)和数据连接(Linked Data)的应用。Jena支持的RDF格式数据,是一套NoSQL(非关系数据库),即一套可推理的图数据库。Jena框架将这类数据的存储、添加、删除、推理,查询(Sparql)等所有的操作封装进一个框架,大大的方便了做相关应用的开发和使用。本手册主要介绍Jena框架及其操作,以便于日后查询,希望能对大家有所帮助。

jena-logo

语义网新手所需要的背景知识

由于Jena是一个对RDF数据进行管理的框架,因此该手册不涉及如何制作RDF数据,因此读者在看本册之前,需要具有一定的背景知识:

  1. 数据方面:XMLRDFOWL

PS. 里面主要列了两个地方的信息,W3CW3School,经过验证他们其实并没有联系。W3School因为早期常常在这个网站查HTML的资料,他给的例子都比较浅显,所以推荐一下。

  1. 本体方面:Protégé,一款开源的本体编辑器和框架, Stanford http://protege.stanford.edu/
  2. 编程方面:JAVA

如何阅读本手册

本手册主要介绍了Jena的各个模块和操作,除了本篇介绍外,将会分为以下四篇来介绍:

  1. The RDF API – 核心管理模块,对RDF进行添加、删除和修改;
  2. SPARQL – 查询模块,提供SPARQL语句,查询,管理RDF,类似SQL语句。
  3. Inference – 推理模块,介绍如何使用推理机对RDF进行推理。
  4. TDB – 存储模块,一个高效的硬盘存储方案,有别于内存存储,这个更加便于对大数据进行操作。

Jena框架的架构

Jena是一个框架,则必然有其架构,让我们从下面这个官网提供的架构图来了解Jena结构,了解其在我们应用开发中的位置,是一个非常好的开始。

jena-architect
Jena architecture overview – http://jena.apache.org/getting_started/index.html

从这个架构图来看,应用程序的入口可以分为两个部分:Java调用APIHTTP请求Fuseki。前者是在程序层面进行调用,后者是在服务器层面交互。 在这本手册里面,将会主要介绍如何调用Java API,这更便于我们去学习和理解如何管理整个数据库。图中,我们供看到五个API,我将他们分成三层,第一层是管理层,该层提供了RDF数据的添加、删除和查询功能,它包含了RDF APIOntology APISPARQL API;第二层是推理层,Inference API;第三层是存储层,Store API

管理层: RDF, Ontology, SPARQL

该层总共包含三个APIs(接口),他们分别的功能是:

  1. RDF API,在整个Jena框架中的核心模块,它包含了该层里面另外两个APIs,通过这个接口,我们可以对RDF的数据进行读写(左边凸出来的那个部分);
  2. Ontology API,是一个控制OWL格式数据的接口,该数据格式是一个非常常用的格式,Protege制作的本体就是按该格式保存的;
  3. SPARQL API,是一个对RDF数据执行查询或者更新的模块,而且是比较重要的一个交互接口,大部分应用都是通过这个来调用数据,类似于MySQLSQL

推理层:Inference API

语义网的推理功能,可以说是该类型数据库最大的亮点,执行推理实现数据与数据之间的关系,而不用直接写明,例如“AB的父亲,BC的父亲,现在设置一个规则,父亲的父亲是爷爷,我们就可以推理得出AC的爷爷”。在推理这层,我们可以使用

  1. 使用Jena本身的规则引擎
  2. 使用外部的推理机
  3. 什么都不使用,没有规则实现推理,这个是什么还不是很清楚。

存储层:Store API

数据都需要进行存储,数据存储的几个关键评价是存储、查询效率,存储数据大小,存储容器等等。该层主要有三种可选的存储方式:

  1. 内存存储,将所有的文件读进内存进行处理,该方法效率高,但是有瓶颈,对于大文件,内存不够,就没法操作;
  2. 关系数据库存储,SDB存储建立在关系数据库之上的,所以也能支持SQL的存储;
  3. 三元组存储,TDB存储通过建立索引的方式将数据存入到硬盘,官方说这个效率比SDB高,这种方式每次只能建立一个连接环境,不然会引起数据冲突。

作为入门篇,通过介绍了Jena的框架来对它的工作流程有一个大致的了解,每个模块的说明将在后面章节中具体介绍。对于第三方系统,Virtuoso已经在我的博客上介绍了,如果大家也有使用Sesame,欢迎提供相关教程,如果有其他补充,请多多指教。

本文版权归作者所有,请勿转载,违者必究。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.