抽象和类型

互联网2021-02-18 20:04:16
最佳答案

上一篇文章说明「建模」,但文章最后留下一个尾巴「抽象」,因为抽象和建模彼此之间是有密切关係的。这一篇文章会完成这个部分的解释。一方面作为前情提要,二方面是重要的事情值得重複,我再说一遍:良好建模的重点在于 1. 记录「目的」相关的要点、 2. 记录有「差异」的点。

差异是比较出来的。两个事物比较的结果就是某些方面「相同」且某些方面「相异」。当我们把「一群事物」集中在一起做比较,再把它们相同的资讯集合起来,这个过程就是抽象(abstraction),而抽象的结果是概念(concept)。比方说,糖果、甘蔗、巧克力可以抽像出「甜」的概念;跑步、跳绳、举重可以抽像出「运动」的概念;你、我、爱因斯坦可以抽像出「人」的概念。

概念是有意义的,概念本身可以单独存在,我们也可以把概念扩充为类型(type)。类型包含了概念,但比概念多了「对某些关键讯息的要求」。也就是说,某个事物想要属于某种类型,就必须满足这个类型的概念,同时提供这个类型要求的关键讯息。例如:人是一个概念(有自身的意义),也可以是一个类型(除了概念的意义,还必须要具备身分证字号、地址、电话...等讯息)。

当然,概念自身的意义是什么,以及类型需要的关键讯息有哪些,都要根据明确的目的才能得知。这就是为什么我认为 Schema.org 很难成功,你可以上 Schema.org 网站看看。Schema.org 试图把现代社会需要的类型(以及概念)整理出来,变成规範。例如:人、交通工具、行为、地点,但 Schema.org 为了通用,没有限定使用目的,这就会导致讯息繁杂,导致最终难以使用。20 年前的 IBM San Francisco 专案试图对各种企业内的各种事物做通用的抽象,最后过于複杂而失败,殷鉴不远。

建模的方式有两种,一种是使用类型,一种是不使用类型。当建模没有基于类型时,需要记录很多资讯;而基于类型的建模只需要记录类型要求的关键讯息(也就是和基本概念有差异的部分),这就是本文章第一段所说的:良好建模的第二个重点在于记录有「差异」的点,所以在建模之前,最好先抽象,把一些概念和其扩充出来的类型确定下来。另外,类型本身是有意义的,所以基于类型的建模,不只是纪录资料,也具有意义。因此,我建议最好一定要在类型的基础上建模。

任何一群事物都可以被抽象为概念并扩充为类型,但近似的一群事物抽象起来意义才大,否则会很笼统。例如:地毯、桌子、米饭只能被抽像出的概念大概就是「东西」,东西是非常笼统的,概念(和类型)太泛太模糊,所以价值很低。

所以在抽象的过程中,往往牵涉到「分类」(classification)。把这一大堆我们想要建模的东西「依据某些特质」分成几类,再为每一类抽象出概念,扩充出类型,这么一来,可以降低概念和类型的模糊,提升概念和类型的价值。这裏提到「依据某些特质」,对「特质」的选择,靠的也是对目的的理解。

做任何事情都不要忘了当初的目的,分类的目的是为了更好地抽象,抽象的目的是更好地建模,良好建模的第一个重点在于记录目的相关的要点。所以我们在抽象和分类时,要持续思考:我们现在进行抽象和分类的行动,未来要如何能够满足建模的目的。

当你试图把一群概念或类型集合在一起,对它们继续抽象时,阶层(hierarchy)就出现了。这就是你在 Schema.org 看到的阶层关係。对于这方面,我简单地总结:採用阶层设计,好处是重複使用定义,缺点是稍微变複杂了。

一定要记得:对「一件」事物做建模,对「一群」事物做抽象。不管是东西、动作、想法、或其他,只要目的清楚,任何一群事物都可以被抽象为概念,扩展为类型。在读过这两篇文章后,你已经清晰地理解模型、建模、抽象、概念、类型、分类。

免责声明:本文由用户上传,如有侵权请联系删除!