KoPL具有以下四点优势:
- 注重过程:KoPL拆解问题的过程结果都是可见的,而SPARQL是无法定位中间过程的。
- 符合人类思维:KoPL是一种过程性语言,将一个问题拆分为多个简单问题,然后组合进行解决。
- 操作具有良好的可组合性:我们将知识图谱的复杂问答拆分为20多个简单操作,这些操作能够互相组合来解决各种各样的问题。
- 可以面向多种知识来源:除了结构化数据外,还可以对非结构化的文本数据进行操作,比如KoPL还可以对Wikipedia的非结构化文本,描述文本问答的复杂问题的解决过程。
2. 大规模知识库问答数据集——KQA Pro

基于KoPL的基本操作与组合,我们能够大规模地生成复杂问题,具体生成的策略有四个。第一个策略是模板,比如针对比较类型问题定义这样的模板“<>和<>谁的<属性>更<大/小>”,询问两个人的身高更高就可以套用这个模板,我们可以对这样的模板填充各种实体和属性得到不同的问题。第二个策略是采样,根据第一个策略得到的模板,我们在知识库中进行采样,然后对模板中空缺的位置进行填空,得到不同的问题。第三个策略是组合,根据KoPL的基本操作,我们可以做各种各样的排列组合得到不同的问题。第四个策略是递归,对于问题中已有的实体,我们对其进行递归拆解,增加问题的复杂度,比如将问题“勒布朗·詹姆斯和布朗尼·詹姆斯谁更高?”中的“布朗尼·詹姆斯”使用关系描述为“勒布朗·詹姆斯的儿子”,那么问题就会变为“勒布朗·詹姆斯和勒布朗·詹姆斯的儿子谁更高?”,这样问题的复杂度也就变高了。
基于这四种策略,我们可以生成大量多样化的高复杂度问题。

最终每个样例生成5个元素,由模板得到的问题,回答问题使用的SPARQL,问题拆解的KoPL,10个候选答案以及标准答案。
