加载中…
正文 字体大小:

[转载]本体库可视化展示

(2011-05-10 20:49:00)
标签:

转载

这个界面创意不错,我学习学习
原文地址:本体库可视化展示作者:布衣

    历时一个多月的时间,终于把项目本体库可视化的核心模块写好了。作为阶段的成果,现将其整理总结。(注:该项目是和XXXX的合作项目,按照二十四史来建立人物、时间、地点、时间、职官本体库,具体类属结构不便于在此展示

 

一、使用的技术及工具

1. AlleGroGraph3.3 一个优秀的本体库存储工具,与一般的关系数据库最大的不同在于以文件的形式将数据存储在磁盘,这个特性使其具有存储亿级Triple的能力,同时具有高效的检索性能。支持Jena2 API,RDFS++推理,SPARQL查询语言等。官网http://www.franz.com/

2. Jena2 API 对本体库的解析处理一般都少不了Jena 的身影,在该模块中我主要使用了其基本的API来对本体库进行操作,系统中使用Model接口代替了OntModel接口,主要是考虑到OntModel接口的性能太低,它是把本体文件整个加载到java虚拟机,导致了其处理大Triple数据量比较吃力。同时还使用了RDFS++来弥补Model接口中不具备OntModel的逻辑推理能力。在该模块中还使用了Jena中的推理接口,主要是GenericRuleReasoner,由于逻辑关系在本系统中的作用不大,所以使用了基于规则的推理。推理规则文件中已经建立了100条左右的规则。

3.RDFS++ 逻辑推理工具。现在只支持rdf:type rdfs:subClassOf rdfs:domain and rdfs:range rdfs:subPropertyOf owl:sameAs owl:inverseOf owl:TransitiveProperty 这些谓语。本模块中使用了rdf:type rdfs:subClassOf来找到一个本体实例的最高类型。

4.SPARQL RDF查询语言。本模块中使用SPARQL来查询具体本体实例,使用了FILTER regex()来实现模糊匹配等,具体请参见W3C的SPARQL文档http://www.w3.org/TR/rdf-sparql-query/

5.TouchGraph 本体库的可视化插件。该插件是基于AWT的,使用了java的Vector集合,现在估计已经不再更新了,支持protégé中的TGVizlab标签,可实现节点的旋转、缩放、拖拽、按半径扩展等功能。

6.其他。JE分词工具包(可添加用户词典)

 

二、模块功能

1.本体实例模糊查询,主要是通过SPARQL实现,得到本体实例列表。核心语句如下:

"SELECT DISTINCT ?s " + "WHERE {" +

" ?s ?p ?o "+ "FILTER regex(str(?s),""+subKeyword+""" +")"+ "}";

其中subKeyword为待查询的字段。

2.繁简转化功能。由于中华书局要求本体库使用繁体建立,所以就有了这样一个功能,主要一点是解决了一个简体对应多个繁体的问题,该工具类使用的是北大教授制作的一个比较全的繁简对照表。

3.本体关系检索。给出两个本体实例找到两者之间的关系,目前只做了3层关系(层级越高算法越复杂,效率比较低),即A->B->C,A->B<-C,C->B->A,其中每条路径(如A->B)可能是经过推理得到的,所以最终的关系层次可能多于3层。

4.属性检索。给定一个本体实例及其需要查询的属性(如:曹操 儿子)将得到其属性值。

5.异称查询。由于人物和地点又别称,模块可实现异称查询,这点是由于本体库中本体实例的属性中对应有相应的异称,比较容易实现。

 

三、功能界面

1.本体实例查询

[转载]本体库可视化展示
    这是TouchGraph的效果图,“曹操”节点的周围是其属性(对象属性,Resource类型的),其中蓝色边是本体实例固有的属性,橘色边是推理得到的节点的不同颜色代表了节点属于不同的本体类型,这是使用RDFS++得到的。节点右上角的数字表示该节点上隐藏的边的数目鼠标置于边上,该边会高亮并显示关系名称;右键点击边会弹出如下所示的菜单:

[转载]本体库可视化展示

 

    点击“隐藏关系”会隐藏该边,点击“显示推理”会打印出推理路径(该部分未来会坐在前台)如右键点击“曹操”和“郭皇后”之间的边的“显示推理”会打印出:

 

曹操  --->  son  --->  曹丕

曹丕  --->  spouse  --->  郭皇后

   ===>> 

曹操  --->  daughterinlaw  --->  郭皇后

 

同时单击某个节点时,会显示该节点的数据属性(Literal类型的),这里不演示。

实例检索考虑到属性太多,属性节点之间的关系就没有显示,若要得到某个属性节点的关系,可以右键点击“展开节点”得到该节点的属性,可以按照本体的类型进行展开,类型后面括号里面的数字是对应的还未展开的边数,如下图:

[转载]本体库可视化展示
[转载]本体库可视化展示
   同时双击某一节点会得到一次新的检索,不再演示。

2. 关系检索

3. 属性检索

关系检索和属性检索的表现形式和实例检索一样,只是检索的更加具体,只上小图吧:

关系检索例子:曹操和某地的关系                属性检索例子:曹操 的 孙子

[转载]本体库可视化展示[转载]本体库可视化展示

 

0

阅读 评论 收藏 转载原文 喜欢 打印举报
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有