APACHE JENA,一款免费的JAVA开源框架,用来做语义网(Semantic Web)和数据连接(Linked Data)的应用。Jena支持的RDF格式数据,是一套NoSQL(非关系数据库),即一套可推理的图数据库。Jena框架将这类数据的存储、添加、删除、推理,查询(Sparql)等所有的操作封装进一个框架,大大的方便了做相关应用的开发和使用。本手册主要介绍Jena框架及其操作,以便于日后查询,希望能对大家有所帮助。
语义网新手所需要的背景知识
由于Jena是一个对RDF数据进行管理的框架,因此该手册不涉及如何制作RDF数据,因此读者在看本册之前,需要具有一定的背景知识:
- 数据方面:XML、RDF、OWL
- RDFa 1.1 Primer – Third Edition, W3C
https://www.w3.org/TR/rdfa-primer/ - OWL 2 Web Ontology Language Primer (Second Edition), W3C
https://www.w3.org/TR/2012/REC-owl2-primer-20121211/ - XML教程, W3School
http://www.w3school.com.cn/xml/index.asp - RDF教程, W3School
http://www.w3school.com.cn/rdf/
- RDFa 1.1 Primer – Third Edition, W3C
PS. 里面主要列了两个地方的信息,W3C和W3School,经过验证他们其实并没有联系。W3School因为早期常常在这个网站查HTML的资料,他给的例子都比较浅显,所以推荐一下。
- 本体方面:Protégé,一款开源的本体编辑器和框架, Stanford, http://protege.stanford.edu/
- 编程方面:JAVA
- Java从入门到精通(第3版), 我是通过这本书学的。
http://product.dangdang.com/22862060.html - Java教程, RUNOOB
http://www.runoob.com/java/java-tutorial.html
如何阅读本手册
本手册主要介绍了Jena的各个模块和操作,除了本篇介绍外,将会分为以下四篇来介绍:
- The RDF API – 核心管理模块,对RDF进行添加、删除和修改;
- SPARQL – 查询模块,提供SPARQL语句,查询,管理RDF,类似SQL语句。
- Inference – 推理模块,介绍如何使用推理机对RDF进行推理。
- TDB – 存储模块,一个高效的硬盘存储方案,有别于内存存储,这个更加便于对大数据进行操作。
Jena框架的架构
Jena是一个框架,则必然有其架构,让我们从下面这个官网提供的架构图来了解Jena结构,了解其在我们应用开发中的位置,是一个非常好的开始。
从这个架构图来看,应用程序的入口可以分为两个部分:Java调用API、HTTP请求Fuseki。前者是在程序层面进行调用,后者是在服务器层面交互。 在这本手册里面,将会主要介绍如何调用Java API,这更便于我们去学习和理解如何管理整个数据库。图中,我们供看到五个API,我将他们分成三层,第一层是管理层,该层提供了RDF数据的添加、删除和查询功能,它包含了RDF API、Ontology API和SPARQL API;第二层是推理层,Inference API;第三层是存储层,Store API。
管理层: RDF, Ontology, SPARQL
该层总共包含三个APIs(接口),他们分别的功能是:
- RDF API,在整个Jena框架中的核心模块,它包含了该层里面另外两个APIs,通过这个接口,我们可以对RDF的数据进行读写(左边凸出来的那个部分);
- Ontology API,是一个控制OWL格式数据的接口,该数据格式是一个非常常用的格式,Protege制作的本体就是按该格式保存的;
- SPARQL API,是一个对RDF数据执行查询或者更新的模块,而且是比较重要的一个交互接口,大部分应用都是通过这个来调用数据,类似于MySQL的SQL。
推理层:Inference API
语义网的推理功能,可以说是该类型数据库最大的亮点,执行推理实现数据与数据之间的关系,而不用直接写明,例如“A是B的父亲,B是C的父亲,现在设置一个规则,父亲的父亲是爷爷,我们就可以推理得出A是C的爷爷”。在推理这层,我们可以使用
- 使用Jena本身的规则引擎
- 使用外部的推理机
- 什么都不使用,没有规则实现推理,这个是什么还不是很清楚。
存储层:Store API
数据都需要进行存储,数据存储的几个关键评价是存储、查询效率,存储数据大小,存储容器等等。该层主要有三种可选的存储方式:
- 内存存储,将所有的文件读进内存进行处理,该方法效率高,但是有瓶颈,对于大文件,内存不够,就没法操作;
- 关系数据库存储,SDB存储建立在关系数据库之上的,所以也能支持SQL的存储;
- 三元组存储,TDB存储通过建立索引的方式将数据存入到硬盘,官方说这个效率比SDB高,这种方式每次只能建立一个连接环境,不然会引起数据冲突。
作为入门篇,通过介绍了Jena的框架来对它的工作流程有一个大致的了解,每个模块的说明将在后面章节中具体介绍。对于第三方系统,Virtuoso已经在我的博客上介绍了,如果大家也有使用Sesame,欢迎提供相关教程,如果有其他补充,请多多指教。
本文版权归作者所有,请勿转载,违者必究。
发表回复