笔者在
本体开发导论
一文中简要的论述了本体开发的一般过程及相关概念的理解,这样我们可以对本体及其开发过程有一个初步的轮廓性的认识。本文将对本体开发中常见的一些问题进行阐述,以及对相关的规范进行介绍。
1
概念的命名规范
(
1
)概念命名时不要使用本体中默认的字符,如
“class
、
slot
、
property”
等,否则易引起混淆。
(
2
)在使用英文描述概念时,尽量不要使用缩略词,这样容易引起误解。
(
3
)某个类的子类的命名应当对称。如葡萄酒的子类可以描述为
“
白酒
”
和
“
红酒
”
,或者
“
白
”
与
“
红
”
,而不能写为
“
白酒
”
与
“
红
”
或者
“
白
”
与
“
红酒
”
。
(
4
)使用前缀或后缀来区分类与属性。如使用前缀
“has”
,后缀
“of”
。
(
5
)在使用英文时表示的单复数问题,并没有强制的规定,单复数均可,但要注意保证整个系统的一致性。
(
6
)在用英文命名时应注意使用大写和分割符。类的命名通常首字母大写,而槽的命名通常首字母小写。对于多个单词构成的命名,要使用分割符,如空格、下划线、横杠等,也可以结合大小写,如
Meal course,Meal_course,Meal_Course,Meal-course
等都是符合要求的,但这里仍要强调要保持系统的一致性。
2
其他问题说明
(
1
)在建设本体时,最好制定一个
内部规范
,并坚持执行。这样便于理解、维护和后续学习。
(
2
)
Inverse slots
(槽对称)。
在定义本体时往往要使用对称的概念,这样可以避免数据冗余(因为若存储两个方向的信息则显得资源浪费,如我们知道上海到武汉的距离,自然也就知道武汉到上海的距离,这样就只需要知道
其中一个的距离即可,而不必输入两个距离),但由于本体是对事物的一种显性化的描述,虽然我们能直接推知武汉到上海的距离,我们还是需要将其表示出来,这就是属性对称关系
Inverse slots
.
(
3
)
Disjoint subclass(
互斥类
)
。
两个类如果没有相同的实例,则这两个类可以定义为互斥类。
(
4
)本体所包含的信息应当依具体应用而定。本体不需要包含事物的所有的信息,概念的细化程度也需要移需要而定。
all of them depends on your application!
(
5
)
Multiple inheritance
(多重继承类)。有的类的父类可以是多个,这时我们将子类称为多重继承类。
(
6
)避免概念循环。如出现
A
的子类是
B
,
B
的子类又是
A
的情况。
(
7
)类的传递性。如
A
是
B
的子类,
B
是
C
的子类,则
A
是
C
的子类。
当然,对于本体的类、属性和实例之间的关系远不止这些,他们有许多种其他的关系。也正是由于他们之间的这种关系,才使得本体有着广泛的应用,才为后续的推理奠定了基础。
3
参考文献
[1]
Ontology Development 101: A Guide to Creating Your First Ontology
, Natalya Fridman Noy and Deborah L. McGuinness. Stanford Knowledge Systems Laboratory Technical Report KSL-01-05 and Stanford Medical Informatics Technical Report SMI-2001-0880, March 2001.