SWRL的疑问和知识图谱的应用

在上周五, Ian Horrocks来到了爱丁堡做了一个讲座,主要介绍知识图谱的基本概念,顺便宣传一下他们做的RDFox,让我们使用一下,给他们提改进意见。Ian是描述逻辑、语义网、和知识图谱方面举重若轻的人物,做了许多奠基性的工作,比如参与OWL 标准的起草,设计和实现了FaCT++,HermiT和ELK等推理器。他还参与起草了SWRL这个用于在语义网中描述规则的语言,而我在讲座侯的提问也恰好与SWRL有关。

长年以来我在心里隐隐有一个问题:推理(reasoning)就是根据一些推导规则(rule),从已有的事实(fact)中推导出新的事实。那么一个很自然的想法是,事实和规则是两种很不同的东西,需要我们分开处理。但是SWRL提供了一种让我们把规则也编码成事实的方法,那么事实和规则就统一起来了,可以放在同一个ontology里面。那么我们在什么时候应该把规则和事实分开,什么时候把他们统一起来呢?

Ian的回答则是,在他们(学者和工程师)眼里,规则和事实都应该尽可能分清楚。把事实和规则统一起来最大的好处只是可以把他们存放在同一个ontology里面,而代价就是这把事情搞得很混乱(原话是mess up the things)。不过W3C的那群人希望提供那么一个标准,让那些希想这么做的人有章可循,所以Ian他们就搞出了SWRL标准。但实际上Ian自己在处理事实和规则时也是尽可能分开的。在他主导设计实现的RDFox中,规则就是编码成了Datalog rules,而不是使用SWRL编码成triples。

SWRL的另一个重大缺点是,一旦允许使用SWRL把规则和其他事实编码进ontology中,那么OWL-RL就变得不可判定了。而OWL-RL本就是为了方便推理而设计,一旦它变得不可判定,那么整个OWL-RL就是去了存在的意义。这也是SWRL从2004年提出开始,到现在也没成为W3C标准的原因之一。

Ian这位SWRL的设计者彻底解开了我的疑惑。简单来说,尽量不要使用SWRL,除非我们工作的目的就是把规则编码金ontology中。尽管事实和规则可以在形式上看成是一样的东西,在计算机科学中也有类似的情况,比如冯诺依曼架构中就把指令和数据都堪称数据,存储在内存里,但我们对待这两样东西的处理方式还是很不一样的。哪怕是指令和数据的例子中,我们也只是在编写程序和存储程序的时候将他们堪称数据,在实际执行程序的时候还是会将它们严格区分开,指令存放在一个区域,数据存放在另一个区域。

讲座以后,我有幸陪同我导Jeff与Ian共进午餐,期间我们谈论到了知识图谱目前的应用情况。在我狭隘的视野中,我只看到了知识图谱在信息检索、自动问答、机器推荐等任务中的辅助作用,但Jeff和Ian告诉我他们看到的最大的应用其实是在工业制造里。一个典型的例子是智能化工厂中的机器配置问题。上产线上可能有成千上万个机器需要配置,每个机器的配置组合可以有成百上千种,那么整个生产线的配置就可以非常复杂。在这种情况下,使用知识图来存储和维护机器的配置就比以网使用关系数据库要更加灵活和方便。而由知识图谱的推理能力推导出来的新知识,也比统计模型中学习出来的知识更加安全,更适合大规模工业制造这种要求严谨的场景中。因此,Jeff和Ian都相信在工业制造领域,知识图谱有着比所有人想象中更大的潜力。至于信息检索、自动问答等任务,甚至Tim Berners Lee提出的语义网愿景里炫酷的应用,则还需要再等上一段不断的时间才能看到了。

你可能感兴趣的:(SWRL的疑问和知识图谱的应用)