5.2 知识图谱中的异构问题

优质
小牛编辑
113浏览
2023-12-01

在解决局部领域中信息共享问题的同时,知识图谱的使用也引入了新的问题。首先,由于同一领域中不同组织建立的知识图谱往往是异构的,基于不同知识图谱的系统间的互操作依然困难;其次,交叉领域中的知识通常是异构的,相互之间的信息交互问题依然没有解决;最后,由于人类本身知识体系的复杂性和对世界的不同主观看法,建立一个包罗万象的统一知识图谱并不现实。因此,随着知识图谱的广泛应用,知识图谱异构带来的信息互操作困难将普遍存在。在基于知识图谱的应用中,由于获取数据或者为了实现特定的功能,不同系统间常常要进行信息交互,同一系统也往往要处理来自多个领域的信息。这些具体应用都涉及知识图谱异构,处理知识图谱间的异构问题成为大量系统实现互操作的关键。

实际上,针对模型之间的异构问题的研究早在面向对象建模和数据库建模领域中就已经开展了[1] 。模型间的不匹配是导致异构的根本原因。与这些模型相似,知识图谱之间的不匹配正是造成知识图谱异构的直接原因。然而,知识图谱中的本体远比面向对象模型或数据库模式更为复杂,造成本体异构的不匹配因素更多;知识图谱中的实例规模通常较大,其异构形式也具有多样性。尽管知识图谱的异构形式多种多样,但总的来说,这些异构的情形都可被划分为两个层次[2] :第一个层次是语言层不匹配,是指用来描述知识的元语言是不匹配的,其中既包括描述知识语言的语法和所使用的语言原语上的不匹配,还包括定义类、关系和公理等知识成分机制上的不匹配;第二个层次是模型层不匹配,是指由于本体建模方式不同所造成的不匹配,包括不同的建模者对事物的概念化抽象不匹配、对相同概念或关系的划分方式不匹配,以及对本体成分解释的不匹配。明确这些不匹配的因素是解决知识图谱异构问题的基础。下面分别阐述这两种层次上的异构。

5.2.1 语言层不匹配

在知识工程发展的过程中出现了多种知识表示语言。不同的时期都存在着几种流行的语言,如早期有Ontolingua和Loom等本体语言,近年则有DAML+OIL、RDF(S)、OWL和 OWL2等。这些本体语言之间往往并非完全兼容。当不同时期构建的知识或同一时期采用不同语言表示的知识进行交互时,首先面临着由于知识表示语言之间的不匹配所造成的异构问题[3] 。这类语言层次上不匹配的情形分为语法不匹配、逻辑表示不匹配、原语的语义不匹配和语言表达能力不匹配四类。

1.语法不匹配

不同的知识描述语言常采用不同的语法。近年来的本体语言基本采用 XML 的书写格式,而早期的本体语言则没有固定的格式可言。以如何定义一个概念为例:在 RDF Schema 中,定义一个概念可采用<rdfs:Class rdf:ID="CLASSNAME"/>的形式;在 Loom中,可采用(defconcept CLASSNAME)定义一个类;而在 Ontolingua 中,定义一个类则采用(define-class COMPONENT (?x)…)的形式。这种语法上的差异是本体之间最简单的不匹配之一。一般来说,如果表示的成分在两种语言中都是存在的,则采用一个简单的重写机制就足以解决这类问题。但是,语法上的不匹配通常不会单独出现,而是与其他语言层上的差异同时出现。因此,尽量将不同的语言转化为同样的语法格式能方便解决其他本体不匹配问题。

2.逻辑表示不匹配

不同语言的逻辑表示也可能存在着不匹配。例如,为了表示两个类是不相交的,一些语言可能采用明确的声明,如在 OWL 中可表示为:<owl:Class rdf:ID="A"><owl:disjointWith rdf:resource="#B"/> </owl:Class>,而另一些语言则必须借助子类和非算子来完成同样的声明,即采用A subclass-of (NOT B)、B subclass-of (NOT A)来表示同样的结果。这就是说,不同的语言可能采用不同的形式来表示逻辑意义上的等价结果。这一类的不匹配与本体语言所采用的逻辑表示有关。相对而言,这类不匹配也容易解决,例如,通过定义从语言L1 逻辑表示到语言L2 的逻辑表示的转换规则。

3.原语的语义不匹配

在语言层的另一个不匹配是语言原语的语义。尽管有时不同的语言使用同样名称的原语来进行本体构建,但它们的语义是有差异的。例如,在OWL Lite和OWL DL语言中,原语“Class”声明的对象只能作为本体中的概念,而在OWL Full和RDF(S)中,“Class”声明的对象既可以作为一个类,也可以作为一个实例。有时,即使两个本体看起来使用同样的语法,但它们的语义是有差别的。例如,在OIL和RDF Schema中,当定义一个关系时往往都需要声明关系的定义域,即<rdfs:domain>,但是OIL将<rdfs:domain>的声明解释为其中参数的交,而RDF Schema则将它解释为这些参数的并。因此,当采用不同语言的本体交互时,需要注意它们的原语表达的意义的差异。

4.语言表达能力不匹配

最后一种语言层的不匹配是指不同本体语言表达能力上的差异。这种不匹配体现在一些本体语言能够表达的事情在另一些语言中不能表达出来。一些语言支持对资源的列表、集合以及属性上的默认值等功能,而一些语言则没有;一些语言已经具有表达概念间非、并和交,以及关系间的包含、传递、对称和互逆等功能,而一些语言则不具有这样的表达能力;一些语言具有表示概念空集和概念全集的概念,如 OWL 中的 owl:Thing 和owl:Nothing。这一类的不匹配对本体的互操作影响很大[4] 。一般来说,当本体语言的表达能力不同时,为了方便解决本体之间的异构,需要将表达能力弱的语言向表达能力强的语言转换;但是,如果表达能力强的语言并不完全兼容表达能力弱的语言,这样的转换可能会造成信息的损失。

5.2.2 模型层不匹配

当不同的本体描述相交或相关领域时,在本体的模型层次上也存在着不匹配。模型层次上的不匹配与使用的本体语言无关,它们既可以发生在以同一种语言表示的本体之间,也可以发生在使用不同语言的本体之间。Visser P R S 等人将本体模型层上的不匹配区分为概念化不匹配和解释不匹配两种情况[3] 。概念化不匹配是由于对同样的建模领域进行抽象的方式不同造成的;解释不匹配则是由于对概念化说明的方式不同造成的,这包括概念定义和使用术语上的不匹配。

1.概念化不匹配

概念化不匹配又可分为概念范围的不匹配和模型覆盖的不匹配两类。

(1)概念范围的不匹配。 同样名称的概念在不同的领域内表示的含义往往有差异;同时,不同的建模者出于对领域需求或主观认识上的不同,在建模过程中对概念的划分往往也有差异,这些都统称为概念范围的不匹配。有时,不同本体中的两个概念从表面上看似乎表示同样的概念(如具有同样的名称),而且它们之间对应的实例可能有相交,但却不可能拥有完全一样的实例集合。以一个概念“Hero”为例,对于在文化和认识上差异较大的两个团体来说,各自本体中的概念“Hero”往往难以有一致的实例集合。此外,在本体建模过程中需要从现实事物抽象出概念,并根据概念抽象层次的不同进行划分。当不同的建模者对不同的概念进行划分时,可能会对一个概念的划分持有不同的观点。例如,在考虑对动物相关的知识进行本体建模时,一些建模者将概念“动物”划分为“哺乳动物”和“鸟”两个子类,而另一些人则是把“动物”划分为“食肉动物”和“食草动物”。最后,还存在将同一个概念定义在不同抽象层次上的不匹配。例如,本体 O1 将人概念化为“Persons”,而本体O2 没有“Persons”这样的概念,它用“Males”和“Females”来表示人。

(2)模型覆盖的不匹配。 不同本体对于描述的领域往往在覆盖的知识范围上有差异,而且对于所覆盖的范围,它们之间描述的详细程度也有差异,这就是模型覆盖的不匹配。一般来说,有三种不同维度的模型覆盖。

① 模型的广度,即本体模型描述的领域范围,也就是哪些领域内的事物是包含在本体内的,哪些领域内的事物不是当前本体所关心的。

② 模型的粒度,即本体对所建模的领域进行描述的详细程度,如有的本体仅仅列出概念,有的本体则进一步列出概念的属性,甚至概念之间所具有的各种关系等。

③ 本体建模的观点,这决定了本体从什么认识角度来描述领域内的知识。从上述不同的维度进行本体建模所得到的结果都是有差异的。例如,关于公共交通的本体可能包括也可能不包括有关“出租车”的知识(广度上的不匹配),可能区分不同类型的火车(如客车和货车),也可能不进行这样的区分(粒度上的不匹配),还可能从技术角度描述或从功能角度描述(观点的不匹配)。由于本体的建模反映了建模者的主观性,这一类的不匹配情况在实际应用中很普遍。

2.解释不匹配

本体模型层上的另一类不匹配现象是解释不匹配,它又包含了模型风格的不匹配和建模术语上的不匹配。

(1)模型风格的不匹配

范例不匹配。 不同的范例可用来表示相同的概念,这也就出现了不匹配。例如,对时间的表示可以采用基于时间间隔的方式,也可以使用基于时间点的方式[5] 。此外,在建模过程中使用不同的上层本体也往往会造成这一类的不匹配,因为不同上层本体往往对时间、行为、计划、因果和态度等概念有着不同的划分风格。

概念描述不匹配。 在本体建模中,对同一个概念的建模可以有几种选择。例如,为了区别两个类,既可以使用一个合适的属性,也可以引入一个独立的新类。描述概念时,不同抽象层次的概念是以Is-a的关系建立的:概念抽象的区别可以通过层次的高层或低层体现出来。然而,有的本体从高层到低层描述这种概念层次,有的则是从低层到高层来描述,这便造成了概念描述的不匹配。

(2)建模术语上的不匹配

同义术语。 不同本体中含义上相同的概念常常由于建模者的习惯而被使用不同的名字表示。例如,为了表示“汽车”,一个本体中使用词汇“Car”,而另一个词汇中使用词汇“Automobile”。这类的不匹配问题称为同义术语。同义术语引起的问题经常和其他的语义问题共同存在,如果没有人工或其他技术的帮助,机器是无法识别这些术语是否是同义的。

同形异义术语。 另一类重要的建模术语不匹配是术语之间的同形异义现象。例如,术语“Conductor”在音乐领域和电子工程领域的意义分别是“指挥家”和“半导体”。这种本体不匹配问题更加难以处理,往往需要考虑术语所处的上下文并借助人类的知识来解决。

编码格式。 最后的一种不匹配是由于本体表示中采用不同的编码格式造成的。例如,日期可被表示为“dd/mm/yyyy”或“mm-dd-yy”,距离可以用“Mile”描述,也可以用“Kilometer”描述,人的姓名可以用全名“FullName”形式,也可以用“FirstName+LastName”的形式。这样的不匹配种类很多,没有通用的自动识别和发现算法。但是,如果能发现这种不匹配,对它的处理则是很容易的,一般只需要做一个转换就能消除。

不同本体间的不匹配是造成本体异构的直接原因,明确这些异构便于选择合理的方法去处理实际中的问题。例如,如果异构是语言层不匹配造成的,则进行语言之间的转换即可;如果是模型层上不匹配造成的,可以根据匹配类型的不同选择正确的算法。