目动物和海洋植物)。
假设我们有一个属性 covering,用来表示鱼的鳞片或哺乳动物的皮毛。我们现在可以将哺
乳动物类定义为“有毛发覆盖的动物”,使用属性限制来表示属性 covering 具有来自类 hair 的值。
同样,TropicalFish 可能是 fish 和以 TropicalOcean 为栖息地的生物的交集。
最后(对于这个简短的概述),我们可以更多地讨论 OWL 中的属性。在 RDFS 中,属性可
以 通 过 属 性 层 次 结 构 进 行 关 联 。 OWL 扩 展 了 这 一 特 性 , 它 允 许 将 属 性 表 示 为
transitive、symmetric 或 functional 的,并允许将一个属性声明为另一个属性的 inverse。OWL
还区分了将个体(RDF resource)作为其范围的属性和将数据值(在 RDF 术语中称为 literals)作为
其范围的属性。它们分别是对象属性和数据类型属性。OWL 的 RDF 沿袭的一个后果是 OWL
本体不能对文字值进行声明。在 RDF 中,我们不能说 seven 具有质数的性质。当然,我们可以
说质数类包括 seven,这样做不需要一个数字作为 RDF 语句的主语。在 OWL 中,这一区别很
重要:只有对象属性可以传递或对称。
OWL 语言被细分为三个语法类:OWL Lite、OWL DL 和 OWL Full。OWL DL 不允许在
OWL Full 中进行某些构造,而 OWL Lite 具有 OWL DL 的所有约束,并且还有更多的约束。
OWL Lite 和 OWL DL 的目的是使使用该子集中的表达式进行推理的任务更易于处理。具体来说,
OWL DL 旨在能够被描述逻辑推理机有效地处理。OWL Lite 旨在通过各种合理简单的推理算法
进行处理,尽管该领域的专家对这一实现的成功程度提出了质疑。
虽然 OWL 标准文档指出 OWL 构建在(修订的)RDF 规范之上,但是可以将 OWL 单独视为
一种语言,而不是构建在 RDF 基础上。该视图使用 RDF 作为序列化语法;以 RDF 为中心的视
图将 RDF 三元组作为 OWL 形式的核心。虽然这两个视图都是有效的,但是在 Jena 中,我们
采用的是以 rdf 为中心的视图。
5、本体语言和本体 API
如上所述,可以使用各种不同的本体语言在语义 web 上表示本体信息。它们的范围从最富
表现力的 OWL Full 到最弱的 RDFS。通过本体 API, Jena 旨在为本体应用程序开发提供一个一
致的编程接口,独立于您在程序中使用的本体语言。
Jena 本体 API 是与语言无关的:Java 类名并不特定于底层语言。例如,ontclass 的 Java 类
可以表示 OWL 类或 RDFS 类。为了表示不同表示之间的差异,每种本体语言都有一个概要文
件,其中列出了允许的构造以及类和属性的名称。
因 此 , 在 OWL 配 置 文 件 中 是 OWL:ObjectProperty
(http://www.w3.org/2002/07/owl#ObjectProperty 的缩写),在 RDFS 配置文件中是 null,因为
RDFS 没有定义对象属性。
文件被绑定到本体模型,这个本体模型是 Jena model 类的扩展版本。基本 model 允许访
问 RDF 数据集合中的语句。OntModel 通过添加对本体中期望的结构类型的支持来扩展这一点:
类(在类层次结构中)、属性(在属性层次结构中)和个体。
当您使用 Jena 中的本体时,所有的状态信息都被编码为 RDF 三元组(作为 Jena 语句访问),
并存储在 RDF 模型中。本体 API 不改变本体的 RDF 表示。它所做的是添加一组方便的类和方
法,使您更容易编写操纵底层 RDF 三元组的程序。
本体语言中定义的谓词名称对应于 API 中 Java 类的访问器方法。例如,一个 ontclass 有
一个方法来列出它的超类,它对应于 RDF 表示中的 subClasssOf 属性的值。有一点值得再次强
调:没有信息存储在 ontclass 对象本身中。当您调用本体类 listSuperClasses()方法时,Jena 将
评论0
最新资源