首页 | 最新栏目 | 关于我们 | 读者园地 | 联系我们
计算机与信息技术
  >>>你现在的位置是—最新栏目 

 

基于Jena的语义信息检索应用研究

李桂华
(贵州大学 计算机科学与信息学院,贵州  贵阳 550025)
 
    摘  要  本体语言OWL和Jena应用接口是实现语义网应用的重要工具。针对传统信息检索系统查询质量不高的问题,引入语义网技术实现语义信息检索可以提高查询质量。语义信息检索的关键在于构建合适的本体。通过对计算机科学领域信息的收集,运用OWL语言创建计算机科学本体,并利用Jena提供的查询机制实现了对该本体的语义信息查询,与传统信息查询结果相比排除了很多无关信息。
    关键词  语义网;本体语言;信息检索;本体
 

1  引言

    语义网[7]是人们对下一代互联网的构想,是一个基于某种知识表达语言(如RDF(S)、OWL等)的、机器可处理的语义网文档集合,它是一个资源及其语义关系的网络,表现为本体文档,实例数据和各种语义关系。语义网的目标是让Web的信息能够被机器理解,从而实现Web信息的自动处理,以适应Web资源的快速增长。Berners-Lee提出的基于语义的体系结构-语义网体系结构可整理各种网络信息资源,以实现信息资源的语义表示。目前,用于语义知识表示的最主要方式是构建语义信息模型,模型的构建引入了本体理论。
    语义网的各种应用都离不开查询技术,语义网的查询对象是以各种语义网表示语言表示的文档或知识库。语义信息检索实际上就是要将Ontology所反映的语义关系应用到对信息资源的标注和检索中,具体是要通过对相关文档的解析和推理在语义层面实现信息检索,并以适当的形式和友好的界面与用户进行交流。语义信息检索包括本体文档检索、实例检索和语义关系检索。本体文档检索旨在找到含有特定类和属性的本体文档。实现本体文档检索一种思路是对本体文档进行适用于普通搜索引擎的改造处理,即通过对RDF文档进行一定的处理使其可被普通搜索引擎索引和检索,同时又能在某种意义上发挥其语义信息的作用。另一种思路是探索新的本体搜索方法和技术,如针对某个特定网站的搜索器或是基于Jena2的搜索器。系统将搜索到的语义网文档中抽取的元数据与原结构信息一起存入数据库,支持对含有某一特定类或属性的本体的查询。实例检索的目的是在基于本体的知识库中发现与搜索关于某一指定类的所有实例信息,它主要是基于结构化查询和推理的,并且基于RDF(S)、OWL等底层知识模型的图遍历与图模式得到广泛的应用。用语义网数据来补充传统检索结果的这一部分就属于实例检索,其语义网资源包括正式的语义网文档和语义标注信息。语义关系检索关注的不仅是简单的属性链关系,更是概念间各种复杂关联关系。就目前来说是一个相当困难、有待解决的问题。
    本文运用本体构建工具Protégé创建计算机科学的本体,运用语义网开发工具Jena提供的RDQL查询机制实现了对该领域的语义信息查询。

2  语义信息检索的框架设计

    以实例查询设计语义检索系统的框架,其主要包括两个部分:本体的处理模块与形式化查询模块。当创建好本体库被看作知识库时,本体处理模块就会自动对信息资源进行索引,形式化查询模块以关键词作为输入,输出则是一条RDQL查询记录。语义检索系统的框架结构如图1所示。
图1  语义信息检索系统框架

3  语义网描述语言

    本体的具体表示需用描述语言来实现,网络上的应用程序则需通用标准语言来表示本体,以避免在各种描述语言之间的转换。为了更好实现对信息的语义知识表示,W3C提供了标准的语义网描述语言。XML是目前网络上数据表示的标准语言,在此基础上开发了基于XML语法的语义网描述语言。这些语言包括RDF(S)、OIL、DAML+OIL、OWL等[6]
    RDF(资源描述框架)是一种用于表示网上信息的框架,也是用于表达万维网上资源和信息的语言,它借用了XML语法表示方法,形成了自己特有的XML序列化语法和形式语义。RDF Schema是RDF词汇集描述语言,它提供了一些建模原语,主要用于描述类与它的子类之间的关系,可用于定义某个特定领域的分类方法和类的性质。OIL是一种面向网络的本体语言,它将描述逻辑、框架等人工智能领域的工具和XML、RDF(S)等Web标准结合起来。OIL语言的结构基于框架,并使用了复合概念,延续XML、RDF(S)语法形式。DAML+OIL通过描述逻辑方式的模型理论给出形式语义,它保留了OIL语言的描述逻辑成分,但摒弃了框架结构,采用和其自身语法和模型理论一致的部分RDF(S)语义。OWL是W3C工作组在2001年创建的Web本体语言,它深受DAML+OIL、描述逻辑、框架和RDF(S)的影响,使其能够最大化地保持与现有Web语言向上兼容的需求,2004年2月10日起正式成为W3C推荐标准。

4  Jena的主要组成结构

    Jena是HP实验室语义网研究项目的开放资源,用于创建语义网应用系统的Java框架结构,它为RDF、RDFS、OWL提供了程序开发环境,其主要组成结构如下[1]

4.1  RDF应用程序接口

    RDF API[2]的主要功能包括创建、读和写RDF模型,操纵和检索RDF模型。
    (1)创建、读和写RDF模型:Jena设有表示图(graph)、资源(resource)、属性和文本(literal)的对象类,用来表示它们的接口分别为Resource、Property和Literal。RDF模型也被称为RDF图,通常由Model接口来表示,Model接口中根据不同的情况,设计了不同的Read和Write方法,完成RDF模型的读写。
    (2)操纵和检索RDF模型:Jena提供了一系列方法用于对RDF模型的操作和检索。处理RDF模型时,根据Resource的URI从模型中提取Resource对象,然后利用Resources对象提供的接口来处理相关的数据。利用RDF API查询大型模型有一定的局限性,要执行每类查询需要专门编写多行代码,而Jena以RDQL查询语言形式提供了一种表达通用查询机制。

4.2  RDF模型的持续性存储

    Jena允许将本体文件持久化存储到硬盘,保存为OWL文件或关系数据库。Jena提供了将RDF数据存入关系数据库的接口,应用程序不必直接访问数据库,也不必知道数据库的模式,而是通过Jena API访问。Jena提供支持数据库引擎MySQL、Oracle和PostgreSQL等的程序接口[3]。创建数据库模型或者打开先前创建的模型,通过以下四个步骤来完成:加载数据库JDBC驱动、创建数据库连接、为数据库创建一个ModelMaker,最后为本体创建一个模型。

4.3  Ontology子系统

    Jena框架包含的本体子系统如图2所示,它主要负责处理本体模型[4]。Jena通过文档管理器支持对导入本体的文档管理,通过特定的方法获得本体中类和属性的信息,完成类和属性的添加、删除等修改操作。Ontology子系统与推理子系统结合可以完成本体内部的知识推理,从本体中提取隐含信息。Ontology子系统处理的基本对象是Ontology Model,用户可以从中读取各种结构存储的Ontology数据,并对Ontology的类、属性和实例等元素进行操作、处理和一致性检查。
图2  Jena中本体的应用
4.4  RDQL查询语言
    RDQL查询语言是用来查询RDF模型的语言,主要用于RDF模型的检索,它的语法类似SQL的语法,不同的是RDQL从RDF Model(包括InfModel和OntModel等)中检索数据。RDF图以三元组的形式呈现,每个三元组有命名变量和RDF值(URI和Literals)组成;RDQL则提供一种查询方式,由用户定义一种图模式,使用这种模型对目标图集合进行匹配,获得所有符合定义模型的结果,它的主要优点是简单且易跨平台执行。

5  基于Jena的语义信息检索的实现

    传统文献检索主要以关键词搜索为主,本文设计的语义信息检索也以关键词检索为主,通过对比显示语义信息检索的优势。根据构建的计算机科学本体,通过对本体的查询和推理来实现语义信息检索。使用Jena的RDQL查询语言实现语义信息检索的具体过程如下:
    (1) 创建计算机文献本体文件(test.owl)[6]。OWL本体语言引用了面向对象的方法,来描述各种信息资源。通过对各类计算机文献进行分析,使用归类法的思想,构建一个计算机科学的本体模型,其模型结构如图3所示。
                
图3  计算机科学本体树型结构
    (2)加载文件形式的本体模型,使用Jena API中的read方法来解析本体文件,读入本体模型,若出现异常,则无法载入本体模型。程序代码如下。
model = ModelFactory.createDefaultModel();
public String filePath = "D:/Backup/我的文档/NetBeansProjects/Eclipse& jena/test.owl";
         InputStreamReader in;
         try {
                   FileInputStream file = new FileInputStream(filePath);
                   in = new InputStreamReader(file,"UTF-8");//处理中文
                   model.read(in,null);
                   in.close();
                   } catch (FileNotFoundException e) {
                            System.out.println("无法打开本体文件,程序将终止");
                            System.exit(0);
                   } catch (IOException e) {
                            e.printStackTrace();
                            System.exit(0);       }
    (3)利用RDQL查询语言来查询所想检索的信息,主要使用了接口Query中的方法。假如查询本体中所有的三元组,则查询条件如下表示:
    String queryStr="Select ?s ?p ?o where{ ?s ?p ?o. }";
    运用Query中的方法来执行该查询。根据上面给出的查询条件,构造一个查询对象query,然后执行对所加载的查询,并将查询的结果放入到结果记录集中,最后处理查询结果,可直接将结果输出,也可存储以便进一步处理。
    Query query = QueryFactory.create(queryStr);
    QueryExecution qe = QueryExecutionFactory.create(query,model);
    ResultSet results = qe.execSelect();
    QuerySolution soln = results.nextSolution();
    qe.close();
    查询结果处理的代码如下:
    while (results.hasNext()) {
         QuerySolution soln = results.nextSolution();
         System.out.print(soln.get("s").toString());
         System.out.print(soln.get("p").toString());
         System.out.print(soln.get("o").toString());}
    查询结果中的每一条称之为满足条件的一个solution,可以运用list方法来访问查询的结果,然后对查询结果进行处理,查询结果处理结束后,要关闭查询的执行。本文直接将得到最后的结果,以三元组的形式输出,如下所示是输出的部分结果。
    http://vision.pku.edu.cn/test.owl#B005       
    http://vision.pku.edu.cn/test.owl#hasAuthor       
    http://vision.pku.edu.cn/test.owl#A002
    http://vision.pku.edu.cn/test.owl#B005       
    http://www.w3.org/1999/02/22-rdf-syntax-ns#type
    http://vision.pku.edu.cn/test.owl#书籍
    http://vision.pku.edu.cn/test.owl#B005       
    http://vision.pku.edu.cn/test.owl#hasName       
    数据挖掘@zh
    http://vision.pku.edu.cn/test.owl#B005       
    http://vision.pku.edu.cn/test.owl#hasPublisher
    http://vision.pku.edu.cn/test.owl#P003
    上述结果是数据挖掘这本书的所有信息,可以知道,它的作者是A002,出版社是P003,并且是书籍的一个实例,还可以知道书籍有属性hasAuthor、hasName和hasPublisher。语义信息查询的结果就是本体模型中所定义的实例,在构建本体模型时,已经对所有实例进行筛选,最后检索的结果不会有无用的信息,所以语义信息检索要比传统信息检索的查询质量高。

5  结束语

    语义网应用离不开查询技术,语义网的查询对象是以各种语义网表示语言表示的文档或知识库。Jena是实现语义网应用系统的有力工具,也是实现语义信息检索系统的基本工具之一。本文通过对计算机科学领域信息的收集整理,运用Protégé工具创建计算机科学的OWL本体,利用Jena提供的RDQL查询语言实现了基本的语义信息查询功能,与传统查询结果相比查询质量有很大提高。下一步工作将对计算机科学本体进行完善,并引入垂直搜索的思想对计算机领域进行操作。

参考文献

    [1] Jena-A Semantic Web Framework for Java[EB/OL].http://jena.sourceforge.net
    [2] An Introduction to RDF and the Jena RDF API[EB/OL]. http://jena.sourceforge.net/tutorial/RDF_API/index.html
    [3] Jena2 Database Interface[EB/OL]. http://jena. sourceforge.net/DB/index.html
    [4] Jena Ontology API[EB/OL]. http://jena.sourceforge. net/ontology/index.html
    [5] 陶皖,廖述梅.当前本体编辑工具的分析与研究[J].计算机工程与设计,2005(3)
    [6] 刘琴. 语言Web上的Ontology表示语言研究[J]. 计算机工程与设计,2006(6)
    [7] 陆建江,张亚非. 语义网原理与技术[M]. 科学出版社,2007. 1-7
    [8] 王晓东,张合.基于Ontology的语义信息检索模型研究[J].计算机工程与设计,2008(11)
    收稿日期:11 月 27 日    修改日期:12 月 17 日

 

 

版权所有 © 2005 《计算机与信息技术》编辑部
地址: 合肥市金寨路155号黄金广场3幢605室 《计算机与信息技术》编辑部
互联网信息服务(ICP)备案编号: 皖ICP备10000534号 网络实名: 计算机与信息技术