6. 什么是名称
确定本体概念的命名约定,然后严格遵守这些约定不仅使本体更容易理解,而且有助于避免一些常见的建模错误。概念的命名方法可以有很多选择。我们需要
原则:为本体的类和槽位定义形成一个命名约定,并遵守它。
知识表示系统的以下特征影响命名约定的选择:
系统对于类,槽位和实例有相同的命名空间吗?也就是说,系统是否允许具有相同名称的类和槽位(例如”酒厂“类和“酒厂”槽位)?
系统是否区分大小写?也就是说,系统是否将不同大小写的名称视为不同的名称(如winery和Winery)?
系统在名称中允许哪些分隔符?也就是说,名称可以包含空格,逗号,星号等吗?例如,Protege-2000为其所有框架维护一个单一的名称空间。它是区分大小写的。因此,我们不能有重名概念(例如 一个类“酒厂”和一个槽位“酒厂”)。然而,我们可以有一个类“酒厂”(Winery 首字母大写)和一个槽“酒厂”(winery 首字母小写)。另一方面,CLASSIC系统不区分大小写,并为类,槽位和实例维护不同的名称空间。因此,从系统角度来说,一个类和一个槽位都叫Winery在CLASSIC系统里没有任何问题.
6.1大小写和分隔符
首先,如果我们对概念名称使用一致的大小写,我们可以大大提高本体的可读性。例如,通常将类名称首字母大写并使用小写字母为槽位命名(假设系统区分大小写)。当概念名称包含多个单词(例如膳食课程)时,我们需要分隔单词。这里有一些可能的选择。
使用空格分隔:“膳食 课程” (Meal Course)(许多系统,包括Protege ,允许概念名称里包含空格)。
使用驼峰命名法(合并单词并将每个单词大写):MealCourse
使用下划线或连字符或其他分隔符,例如 Meal_Course,Meal_course,Meal-course,Meal-Course。 (如果您使用分隔符,则还需要确定每个新词是否大写)
如果知识表示系统允许名称中的空格,则使用它们可能是许多本体开发人员最直观的解决方案。但是,考虑系统可能会与其他系统交互,而那些系统不使用空格,或者如果显示媒体不能很好地处理空格符号,可以使用其他处理方法。
6.2单数或复数
类名称表示对象的集合。例如,葡萄酒类实际上代表所有的葡萄酒。因此,一些设计师可以更自然地称之为Wines 而不是Wine。虽然两种方法各有千秋,在实践中更常使用单数形式作为类名称。注意,无论选择什么方案,在整个本体中应该保持一致的命名机制。一些系统甚至要求用户提前声明它们是否将对概念名称使用单数或复数形式,并且不允许用户偏离该选择。始终使用相同的形式也可以防止设计者在建模时犯错误:先建立一个Wines类,然后创建一个类Wine作为其子类(参见第4.1节).
6.3前缀和后缀约定
一些知识库方法建议在名称中使用前缀和后缀约定来区分类本体。两个常见做法是添加一个前缀“has"或y一个后缀“of" 到槽位名称中。如果我们选择了”has“的约定,我们的槽位名称将成为“has-maker" 或 “has-winery“。如果我们选择了”of"约定,那么这些槽位就成为“maker-of“ 或 “winery-of“。这种方法允许任何看任何术语的人立即确定该术语是一个类还是一个槽位。但是,术语名称变得稍长一些.
6.4其他命名注意事项
定义命名约定还需要考虑以下几点:
不要将字符串“class”,“property”,“slot”等添加到概念名称中。概念的类型(一个类或是一个槽位)应该很容易从上下文中看清楚。例如,我们可以对类和槽位使用不同的命名约定(例如,首字母大写或不大写),名称本身及可以表示概念是什么。
避免概念名称中的缩写(通常是一个好主意) ,使用赤霞珠(Cabernet Sauvignon 而不是Cab)
类的直接子类的名称应该同时包括或同时不包括父类的名称。例如,如果我们正在创建Wine类的两个子类来表示红葡萄酒和白葡萄酒,那么这两个子类名称应该是红葡萄酒(Red Wine)和白葡萄酒(White Wine) 或者红(Red)和白(White)White或Red,而不是红葡萄酒(Red Wine)和白(White).
Last updated
Was this helpful?