举例来说,我们可以通过<rdfs:subClassOf>来表示父类与子类之间从属的关系。如图所示,中国是国家这个类的实例,北京是城市这个类的实例,而城市和国家又都是地区这个父类的子类,通过RDFS可以清晰的划分出类与实例之间的层次关系,并通过类之间的关系连接来推理出更多的知识。
在本例中我们可以推断一个国家的首都是某一个城市这样的知识,这样就可以泛化的涵盖所有国家与首都城市之间的关系连接,这种对于知识的泛化在语音智能问答产品中是非常重要的技术,我们会在后续的文章中对智能问答产品做详细讲解。
虽然通过RDFS可以表示一些简单的语义,但在更复杂的场景下,RDFS语义表达能力显得太弱,在表达知识的能力上依然存在缺陷,缺少诸多常用的特征。
例如对于局部值域的属性定义:RDFS中通过rdfs:range定义了属性的值域,该值域是全局性的,但无法表示该属性应用于某些具体的类时具有的特殊值域限制;无法表示多个类、实例和属性之间是等价还是不等价;无法表示多个类之间是相交关系还是互斥关系;无法对某些属性值的取值范围进行约束;无法表示某些属性具有传递性、函数性等特性等。
因为RDFS无法很好的满足知识的表示需求,W3C在2002年发布了OWL本体语言(OWL,Web Ontology Language)作为RDFS的扩展,并将其作为语义网中表示本体的推荐语言,目前OWL已经迭代至OWL2版本,最初的OWL又称之为OWL1。
相较于RDFS,OWL扩充了非常多的描述属性,弥补了RDFS的不足之处,例如增加了等价性声明、传递关系声明、对称性、数值约束等。以下为主要的核心描述词汇:
除了以上列举的几种之外,OWL还有非常多的属性描述词汇,在构建知识图谱时需要了解这些属性词汇,并具备相关领域的专业知识才能正确的描述出知识的特征,如果需要了解更多的OWL相关描述,可以通过W3C的官方文档查看。
2. 知识图谱构建流程 2.1 知识建模知识图谱从覆盖的知识面来分,可以分为通用知识图谱(General-purpose Knowledge Graph,GKG)和行业知识图谱(Domain-specific Knowledge Graph,DKG)两种类型,行业知识图谱因使用的场景是面相特定的领域,故又称领域知识图谱。虽然他们都是知识图谱,但在知识表示、知识获取和知识应用层面来看,两者又有很大的区别,如表所示。
第一是从知识广度来看,通用知识图谱覆盖的知识面较宽,主要涵盖的是日常生活中的常识性问题,例如Google搜索引擎的知识图谱就是面相全领域的通用知识图谱,在2012年发布时就包含了5亿多个的实体,10亿多条的关系,中文的典型通用知识图谱有复旦大学知识工场实验室研发并维护的大规模通用领域中文百科知识图谱(CN-Dbpedia),该项目包含900多万的实体信息以及6700多万的三元组关系,已在问答机器人、智能玩具、智慧医疗、智慧软件等领域产生了3.5亿次API调用量。
行业知识图谱的广度通常较窄,一般只涵盖某一个专业领域的相关知识,目前除搜索引擎和语音助手使用的知识图谱外,大多数的知识图谱项目都是行业知识图谱。典型的应用例如美国帕兰提尔(Palantir)公司的政务领域知识图谱, GeoNames的全球地理知识图谱(该数据库包含了近200种语言的1100万个地名和200万种别名),以及国内包含了中医养生、中医美容等内容的中医药知识服务系统(TCM knowledge service system)等,如图所示。
第二是从知识深度来看,通用知识图谱的层级体系一般较浅,对于知识的泛化而言通常没有太多的归纳,这与通用知识图谱获取知识的方式有关,也跟通用知识图谱的使用场景有关,对于通用知识图谱而言多数的使用场景都是基于某个具体的实体。而行业知识图谱的层级体系一般较深,例如在电商领域的商品分类中,关于服装的分类就不仅仅只是上衣和下装这么简单,各种风格、时尚元素、款式、材质都有可能构成不同的类。
第三是从知识颗粒度来看,通用知识图谱的颗粒度一般比较粗,而行业知识图谱一般颗粒度较细。在通用知识图谱中,组成知识的基本单元一般是一个完整的文档或者资源,例如一篇文章,一首歌,一个视频等。但是对于行业知识图谱而言,需要的颗粒度根据业务的不同要划分为更细的颗粒度,以教育领域的知识图谱为例,一个数学公式、一篇语文课文中的一句话、一个英文单词都有可能构成独立的知识实体,才能满足学生对于个性化学习的需求。
正因为通用知识图谱和行业知识图谱的应用场景有很大的不同,让这两种知识图谱的知识获取方式有着显著的区别,对于知识获取方式而言可以根据人工参与度的不同划分为自顶向下和自底向上两种方法。
具体来说,行业知识图谱大多采用自顶向下的知识获取方法,这种方法是通过领域专家手工将知识进行整理和归纳,编辑为知识图谱的数据结构。