程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

知识图谱和知识推理背后的直觉解释

balukai 2025-02-07 16:28:01 文章精选 7 ℃

关系数据库尽管名称很差,但由于它强加了不利于连接的存储结构,因此不能很好地表达数据关系。

图数据库尽管名称很像图,但为表达数据点之间的关系提供了更大的灵活性。这些关系可以是任何类型,并表示为数据点之间的边。


在图形中存储关系很有趣,但对于提取知识和见解不是很有用。因此,知识图谱由存储数据的图数据库和在数据中搜索和具体化模式的推理层组成。

本文介绍了知识图和RDF图上的推理的基本概念和直觉,并在RDFox上演示了一个实例,其中介绍了高性能知识图和语义推理引擎。

知识图谱

RDF数据模型要求数据点以三元组的形式表示:subject-predicate-object。RDF图的主要查询语言是。

RDF中的推理功能是从RDF图和一组规则计算逻辑上遵循的三元组的能力。RDFox中实现了这种逻辑结果,成为图中的新三元组。

规则的使用可以大大简化RDF数据的管理,并为用户查询提供更为完整的答案。例如,考虑一个包含以下三元组的图:

:oxford:located_in:oxfordshire

:oxfordshire:located_in:england

:england:located_in:uk

这种关系:located_in 在直观上是传递性的:从牛津位于牛津郡和牛津郡位于英格兰的事实,我们可以推断出牛津位于英格兰。但是,图中没有三元组:oxford :located_in :england ,并且要求所有英语城市的SPARQL查询都不会返回牛津作为答案。

当然,我们可以手动将缺少的三元组添加到图表中,从而确保牛津大学被列入英语城市列表中。但是,这样做有许多重要的缺点。

  • 可能存在数百万个涉及该:located_in 关系的缺失三元组,并且每个三元组都需要手动添加,这既麻烦又容易出错。
  • 更重要的是,通过手动添加缺失的三元组,我们无法捕获关系的传递性,该关系普遍适用于图中由该关系连接的所有对象。

特别是,如果将:england :located_in :uk 三元组添加到图中,则应得出以下三元组作为:located_in 关系的可传递性的逻辑结果:

:oxford:located_in:uk

:oxfordshire:located_in:uk。

我们可以使用规则来忠实地代表关系的传递性。这样的规则说明这种传递性。

IF

(任何)对象?x在图中由:located_in连接到一个对象?y

AND

?y又通过:located_in连接到一个对象?z

Then

?x也必须由被:located_in连接到?z

在此,?x?y?z是可以绑定到图中任何对象的变量。

特别是,可以使用RDFox的规则语言编写如下规则:

[?x,:located_in,?z]:- [?x,:located_in,?y],[?y,:located_in,?z]

该规则建立了不同数据三元组之间的因果关系;

事实上,

三元组:oxford, :located_in, :england 成立是因为三元:oxford, :located_in, :oxfordshire 和:oxfordshire, :located_in, :england 也成立。

假设我们后来发现它:oxford 不在:oxfordshire,而是位于美国密西西比州,因此我们从图中删除了以下三元组:

:oxford:located_in:oxfordshire

然后,三元组:oxford, located_in, :england 并且:oxford, :located_in, :uk 也必须回退,因为它们不再合理。

仅通过添加和/或删除三元组就很难处理这种情况。相反,可以使用RDFox中的规则以高效,优雅的方式自动处理它们。



规则语言

规则语言确定哪些语法表达式是有效规则,并且还为每个规则提供定义明确的含义。特别是,在给定一组语法上有效的规则和任意RDF图的情况下,必须明确定义从将规则应用于图之后的新三元组。

Datalog

自1980年代以来,在数据管理和人工智能领域一直使用规则语言。基本规则语言称为Datalog。这是一种非常容易理解的语言,它构成了许多后续规则形式主义的核心,这些形式主义具有广泛的扩展性。

数据记录规则可以看作一条IF ... THEN 语句。特别是我们的示例规则

[?x,:located_in,?z]:- [?x,:located_in,?y],[?y,:located_in,?z]。

是Datalog规则。

  • IF规则的一部分也称为主体或前身。
  • THEN规则的部分被称为头或后续
  • 首先写出头部,并用符号将其与身体隔开:-

主体和头部都由一系列条件组成,其中用逗号隔开,并且每个用语是可能发生变量的三元组。

在我们的示例中,主体为[?x, :located_in, ?y], [?y, :located_in, ?z] ,头部为[?x, :located_in, ?z] 。

每个Datalog规则传达的思想是,根据输入RDF图中三元组的某些组合,我们可以从逻辑上推断出某些其他三元组也必须是图的一部分。

特别是,规则中的变量会覆盖RDF图中所有可能的节点。只要为这些变量分配了使规则主体成为图形子集的值,我们就会看到这些变量的值是什么,将这些值传播到规则的开头,并推断得出的三元组也必须是其中图的一部分

在我们的例子中,一全特定规则应用绑定变量?x于:oxford ,变量?y:于oxfordshire和变量?z于:england,然后意味着在规则的头部,该三元组:oxford :located_in :england 通过:oxford替换?x和:england替换?z保持为逻辑结果。

一个不同的规则应用绑定?x到:oxfordshire,?y到:england和?z到:uk; 结果,三元组:oxfordshire :located_in :uk也可以作为逻辑结果导出。

理解单个Datalog规则应用程序对RDF图的含义的另一种方法是将其视为INSERTSPARQL中语句的执行,这会向该图添加一组三元组。特别是声明

插入{?x:located_in?z},其中{ ?x:located_in?y。 ?y:located_in?z}

对应于我们的示例规则导致三元组的插入

:oxford:located_in:england :oxfordshire:located_in:uk。

但是,存在一个根本的区别,那就是规则比INSERT SPARQL中的简单语句更强大,即规则是递归应用的。

事实上,我们已经得出后Oxford位于England,我们可以再次匹配应用规则?x 来:oxford ,?y 到:england 和?z 到:uk ,推导:oxford :located_in :uk ---即通过INSERT表达式得不到的三元组。

这样,通过迭代应用规则,可以在图形上捕获一组Datalog规则的逻辑结果,直到无法将新信息添加到图形中为止。

重要的是要注意,所获得的逻辑结果集完全独立于执行规则应用程序的顺序以及给出规则主体不同元素的顺序。特别是,以下两个规则是完全等效的:

[?x,:located_in,?z]:- [?x,:located_in,?y],[?y,:located_in,?z]

[?x,:located_in,?z]:- [?y,:located_in,?z],[?x,:located_in,?y]


实践中的知识图谱

知识图提供了各种应用程序,这些应用程序并不总是被人们所了解。

使用RDFox构建的知识图在动态查找数据中基于规则的复杂模式或验证它们不会发生时特别有效。

基于规则的模式提供了一种直观的方式来编码领域专业知识。模式可以例如建模如何将组件组装成功能正常的产品,或者用户需要满足的要求才能进行整个过程。

大多数响应式应用程序都需要即时评估这些规则,而这对于在预期响应时间内大规模地使用传统推理引擎来执行通常是不切实际的。您可以阅读RDFox如何帮助Festo将配置复杂产品的时间从几小时减少到几秒钟。

知识图谱还可以通过提供更灵活,更一致的存储知识的方法,将聊天机器人转变为真正的智能推理代理。规则还可以帮助改善对措辞不佳的问题的解释。

知识图的另一个关键用例是检测网络中代表不良行为(例如欺诈或内部交易)的循环关系。RDFox可以通过有效地导航传递关系来无缝地在网络中建立连接。RDFox可以自动标记或阻止不应该存在的连接,而与网络的复杂程度无关。

使用RDFox操作知识图

RDFox是一种高性能的知识图和语义推理引擎,可以大规模,动态地评估复杂的查询和规则。

RDFox是一个高度可扩展的内存RDF三元组存储,支持共享内存并行OWL 2 RL推理。 它是用C ++编写的跨平台软件,带有一个Java包装器,允许与任何基于Java的解决方案(包括OWL API)轻松集成。

RDFox是针对速度和并行推理进行优化的内存中RDF三元组存储,克服了传统数据库和推理引擎的灵活性和性能限制。

在过去的十年中,牛津大学开发并完善了RDFox的新颖设计和概念,并在同行评审研究中进行了数学验证。

RDFox保证了规则实现和查询结果的正确性,这些要求可以在生产级服务器和受内存限制的设备上大规模,即时地交付。



最近发表
标签列表