首页 理论教育 基于本体分子的知识可视化描述

基于本体分子的知识可视化描述

时间:2023-02-18 理论教育 版权反馈
【摘要】:知识的表示方式有很多,可视化的任务能否良好完成,取决于普通用户的感受。由于本可视化系统是基于Prefuse工具包进行二次开发的,所以其基本体系架构与Prefuse相似。为解决不同对象的转换问题,可视化模型在Prefuse的基础上添加了数据对象映射层,负责本体和本体分子对象与Prefuse数据对象的互相映射转换。

基于本体分子的知识可视化描述

5.5 基于本体分子的知识可视化描述

我们需要了解可视化系统所面向的用户层及其需求。以什么样的展示方式能够更好地满足用户的需求并与用户的背景保持一致?知识的表示方式有很多,可视化的任务能否良好完成,取决于普通用户的感受。所以,在可视化需求的分析过程中,我们希望能够尽量选择最直观,最易被理解和接受的效果。

对于本体分子,直观上来理解,它的大小介于本体基本元素和本体库之间。从可视化方面来理解,它的大小应该能够包含实例和关系,而又能在屏幕上呈现直观性。如果本体实例和关系用结点和边来表示,那么本体分子最直观的表示方式就是结点和边的聚集。

Prefuse是美国加利福尼亚州伯克利大学计算机科学分部的Jeffrey Heer和Maneesh Agrawala开发的Java开源可视化工具包。它是一个比较强大的数据建模显示工程,支持多种数据的建模、显示以及与用户的交互。它提供了“表”、“图”和“树”作为数据的基本结构,在数据显示方面,它提供了大量的布局以及视觉编码技术,并且支持动画动态查询等。

选择Prefuse是基于以下几点考虑:第一,Prefuse基于Java,使用Java 2D图形,可以方便地进行二次开发,或与整体项目的各子系统进行整合;第二,Prefuse提供“图结构”和“聚集结构”,视觉效果丰富,比较符合内容方面的需求;第三,Prefuse的体系结构设计采用“信息可视化参考模型”做为蓝本,引入了大量优秀的可视化软件设计模式,可扩展性强,结构清晰合理,便于在此基础上进行功能扩展。

Prefuse采用了“信息可视化参考模型”做为设计框架的依据。此模型与当前国际上流行的MVC三层结构十分相似,只是前者通过另外引入一层模型结构而扩展了MVC结构,使其能更好地服务于前台用户界面的设计。基于体系结构图如图5-15所示。

img69

图5-15 Prefuse基本体系结构图

Prefuse将导入其中的原始数据(表模型、图模型、树形模型等)作为数据模型,是作为可以支持任意多的可视化效果的最底层裸数据存在的;将可视化数据(颜色数据、字体数据、形状数据、动画数据等)作为抽象可视化数据模型,则是针对每一种特殊的视觉效果和控制器而提供专门数据支持的数据模型;将前台界面的最终绘制作为交互界面;而将用户的交互事件作为前台控制。为方便数据的获取和传递,抽象可视化数据模型层中的类直接继承于数据模型层中的类。

由于本可视化系统是基于Prefuse工具包进行二次开发的,所以其基本体系架构与Prefuse相似。较大的不同点在于数据模型层,导入可视化系统的不是Prefuse自身独特的数据处理对象(“table”,“graph”和“tree”),而是本体对象,具体来说就是采用国际流行的开源Java本体开发工具包Jena所创建的OntModel,OntClass等本体对象,以及使用本系统为解决动态知识所开发的本体分子工具包所创建的本体分子对象。

为解决不同对象的转换问题,可视化模型在Prefuse的基础上添加了数据对象映射层,负责本体和本体分子对象与Prefuse数据对象的互相映射转换。数据模型层沿用Prefuse本身的内容。抽象可视化数据模型层进行了二次开发,加入了具有本系统特色的颜色、字体、动画等抽象数据类。交互界面层沿用了Prefuse。而前台控制层则加入了大量与用户的交互。模型的体系结构具体如图5-16所示。

img70

图5-16 可视化系统基本体系结构图

需要进行映射的数据对象及其对应关系如图5-17所示。

检索子系统将OntModel对象导入可视化模型的数据映射层,OntModel对象中包含大量类、关系以及实例对象。根据图5-17的映射关系,本体类和实例分别映射为对应的结点,本体分子对象映射为Prefuse的Aggregate聚集对象,对象特性(ObjectProperty)映射为对应的边,而所有本体对象的名称、URL、说明等数据特性(DataProperty)则做为其所对应的Prefuse对象的属性保存。

img71

图5-17 数据对象映射图

以下代码为本可视化系统的数据映射层,将Jena中的OntClass对象,映射为Prefuse中的Node对象的部分程序代码。

Node currNode=m_graph.addNode();

currNode.setString(″URI″,p_currentClass.getURI());

currNode.setString(″name″,p_currentClass.getLocalName());

currNode.setString(″type″,″class″);

p_currentClass为将要映射为Node类实例的OntClass类的实例,m_graph为Prefuse中Graph数据类的实例。m_graph在图结构中新建一个结点currNode作为本体对象p_currentClass在Prefuse中的映射副本,之后将p_currentClass的数据特性(URI、本体名称、类别)添加到其映射副本currNode以“URI”、“name”和“type”命名的属性的值域中。这样便完成了一次本体对象到Prefuse数据对象的简单映射过程。

可视化系统中的映射在不同的情况下,对不同的本体对象以及本体分子对象有不同的复杂的处理方式。(www.xing528.com)

在数据映射部分完成后,系统中已拥有了大量的Prefuse数据对象。这些对象接着被传送到系统的上层结构中。

系统在抽象可视化数据模型层将有关特定可视化的Prefuse数据对象,同其对应的颜色、形状等外观数据绑定在一起,将特定的结构同其对应的动画、将要应用于前台的用户交互控制以及最终绘制图像的绘制类型绑定在一起。

以下代码将深灰色与结点的文字颜色绑定。

ColorAction aText=new ColorAction(NODES,VisualItem.TEXTCOLOR);

aStroke.setDefaultColor(ColorLib.gray(100));

aStroke.add(″_hover″,ColorLib.rgb(255,100,100));

在交互界面层,绘制对象将所有的视觉对象绘制到前台界面的显示区域内。以下代码表示的是管理绘制的对象。

DefaultRendererFactory drf=new DefaultRendererFactory();

drf.setDefaultRenderer(labelR);

drf.add(″ingroup('aggregates')″,polyR);

drf.add(new InGroupPredicate(EDGES),edgeR);

随着用户与图像交互动作的发生,前台控制层将用户动作所对应的一系列操作反馈给数据映射、数据模型、抽象可视化数据模型和交互界面层,触发新一轮的图像绘制动作。以下代码为负责用户交互的控制类,它们通过addControlListener方法被注入到前台界面中,在用户发出动作时进行相应。

this.addControlListener(new AggregateDragControl());

this.addControlListener(new PopupControl());

图5-18(彩图)和图5-19(彩图)为本可视化系统的部分知识可视化外观。

图5-18所展示的是知识可视化模型所表示的文件知识本体之间的关系,包括实例与类之间的关系。在结点的右键菜单中可以清楚地看到用户交互的一些内容。橘黄色边表示类级别的关系(类与类、类与实例间的关系),淡蓝色的边代表实例级别的关系。

图5-19所展示的是政务动态知识演化图。图中,“周济”、“王守海”和“李宪生”分别在不同的时期担任武汉市市长。这里采用三个本体分子表示这三段时期中武汉市市长的演化过程。当用户将鼠标放置本体分子上时,会显示此本体分子的详细信息作为用户提示。

参考文献

[1]Protege.an Introduction to Developing Plug-in[OL].[2007-11-29].http://protege.stanford.edu/doc/pdk/plugins/overview.html.

[2]Protege.How to Write a Slot Widget Plug-in[OL].[2007-11-29].http://protege.stanford.edu/doc/pdk/plugins/slot_widget.html

[3]Protégé.How to Write a Tab Widget Plug-in[OL].[2007-11-29].http://protege.stanford.edu/doc/pdk/plugins/tab_widget.html

[4]Franz.AllegroGraph 64-bit RDFStoreTM[OL].[2007-11-29].http://agraph.franz.com/allegrograph/

[5]Carroll J J,Bizer C,Hayes P,et al.Named graphs,provenance and trust[R].Technical Report HPL-2004-57,HP Lab,2004

[6]Protege.How to Write a Back-end Plug-in[OL].[2007-11-29].http://protege.stanford.edu/doc/pdk/plugins/backend.html

[7]Protege.How to Write a Project Plug-in[OL].[2007-11-29].http://protege.stanford.edu/doc/pdk/plugins/project_plugin.html.

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈