摘 要:随着语义检索的发展,近年来涌现了许多基于本体的研究和应用,但本体本身仍离不开领域专家手工或半自动化的构建,成为了本体研究领域的一个瓶颈。因此,本文着眼于本体的自动化构建,提出了一种用FCA(形式概念分析)从文本中提取并自动生成符合W3C标准的OWL通用本体库的方法。解决了目前本体构建自动化程度低,领域依赖性强的问题,使得本体的发展和应用不再是空中楼阁。
关键词:本体;形式概念分析;本体描述语言
一、背景介绍 近年来,“万维网之父”Berners-Lee提出的语义网进行形式概念分析,得到如下图3的概念格:
图3 Live In Water概念格 自顶向下地考察这个概念格,为方便描述,称相邻两个节点中,位于上方的是父节点(直接超概念),位于下方的叫子节点(直接子概念)。图3为便于展示简化了概念格,只显示每个节点相对其父节点新增的属性和相对其子节点新增的对象。因此,不难看出最顶端的节点拥有所有对象但拥有的属性最少或为空,最底端节点拥有所有属性但对象最少或为空。这不难理解,因为概念格中的每个节点的含义是,该节点中所有对象所共有的属性,所以把越多对象放在一起,能找到的共同点(即共有属性)就越少。正好说明概念格结构与本体想要描述的客观现实是一致的。 我们按节点生成的次序将每个概念格节点标上序号,并作为其id存储到整个格数组中。其中每个格节点存储的信息应包括:该节点的对象集E和属性集I,该节点新增的对象和属性,该节点的父节点id以及子节点id。得到这样的概念格后,还需理解格的语义信息,从中提取本体要素,并输出生成OWL描述的本体。三、从概念格到OWL本体3.1 OWL介绍 OWL(本体论Web 语言,Ontology Web Language)是W3C推荐的本体描述语言的标准。 其基本元素有类、属性和实例。 综上所述,得到概念格至OWL本体的生成转化算法:
for (i=0;i<length of lattice;i++) { //遍历每个格节点
//输出类及其子类
fprintf(outputFile, "<owl:Class rdf:ID=/"_%i/">n", i);
sup = getFirstSet (supC); //获取第一个直接超概念
while(sup != -1) { //判断是否还存在直接超概念
fprintf(outputFile, " <rdfs:subClassOf rdf:resource=/"#_%i/"/>n", sup);
sup = getNextSet(supC, sup); //获取下一个直接超概念}
fprintf(outputFile, "</owl:Class>n");
//输出该类的属性
if((atr = getFirstSet(newAtrs))!=-1) //判断该节点是否有新增属性
fprintf (outputFile, "n");
while (atr != -1) { //若存在新增属性,则将新增属性作为该类的属性输出
fprintf(outputFile, "<owl:ObjectProperty rdf:>n", atr);
fprintf(outputFile, " <rdfs:domain rdf:resource="#_%i"/>n", i);
fprintf(outputFile, "</owl:ObjectProperty>n");
atr = getNextSet(newAtrs, atr); //获取下一个新增属性}
//输出该类的实例
if((obj = getFirstSet(newObjs))!=-1) //判断该节点是否有新增对象
fprintf (outputFile, "n");
while (obj != -1) { //若存在新增对象,则将新增对象作为该类的实例输出
fprintf (outputFile, "<owl:Thing rdf:/>n", obj);
fprintf (outputFile, "<owl:Thing rdf:about="#%s">n", obj);
fprintf (outputFile, " <rdf:type rdf:resource="#_%i"/>n", i);
fprintf (outputFile, "</owl:Thing>n");
obj = getNextSet(newObjs, obj); //获取下一个新增对象}
}
<?xml:namespace prefix = rdfs />
<owl:Class rdf:>
<rdfs:subClassOf rdf:resource="#_3"/>
</owl:Class>
<owl:ObjectProperty rdf:>
<rdfs:domain rdf:resource="#_6"/>
</owl:ObjectProperty>
<owl:Thing rdf:/>
<owl:Thing rdf:about="#Bean">
<rdf:type rdf:resource="#_6"/>
</owl:Thing>
…. 为可视化查看生成的本体,我们将Live In Water本体的OWL文档导入由斯坦福大学的Stanford Medical Informatics开发的一个开放源码的本体编辑器Protégé软件中,以便作进一步评价和修正。通过点击Protégé中的Properties标签可以查看类所具有的属性。此外,用OWL Viz插件还可图形化展示该本体结构,但如图4所示,只显示类名,属性和实例不可见。可以看出此时的本体与之前的概念格结构如出一则。说明本体的转化与概念格的语义是一致的,但由于类名只是简单地用节点的序号表示无实际意义,所以该本体仍待改进。
中国论文网(www.lunwen.net.cn)免费学术期刊论文发表,目录,论文查重入口,本科毕业论文怎么写,职称论文范文,论文摘要,论文文献资料,毕业论文格式,论文检测降重服务。