知识|产品视角下的知识图谱构建流程与技术理解( 五 )

<水泥,组成,混凝土>的RDF/XML具体的表示如下:
知识|产品视角下的知识图谱构建流程与技术理解
文章插图
每一个RDF实例都可以看成一个知识单元,也是图谱的最小组成部分。
RDF使用的是开放世界假设,即三元组<水泥,组成,混凝土>对于计算机而言意味着混凝土至少有水泥这一种组成材料,而不是只有水泥这一种组成材料。
RDF有一些基本词汇如rdf:
type用于指定资源类型,但如果想描述某个领域里类别和属性的层级结构、包含关系等是不够的。
比如限定<梁思成,毕业于,清华大学>,RDF可以表示梁思成和清华大学这两个实体有哪些属性,以及梁思成毕业于清华大学,但我们想定义梁思成是人,清华大学是地点,人有哪些属性,地点有哪些属性,人和地点之间存在什么关系,RDF就无法表示了。
为了解决这一问题,W3C推出RDF schema(RDFs),在RDF词汇基础上拓展了一套数据建模词汇来描述数据的模式层,对RDF中的数据进行约束与规范。
Schema英文翻译为纲要、图示、构架,Mysql中的Database又称Schema,其实就是定义了一类数据有哪些属性,RDFS可以方便的拓展类的属性。
RDF Schema 不提供实际的应用程序专用的类和属性,而是提供了描述应用程序专用的类和属性的框架,RDFS本质上就是RDF词汇的一个扩展,比如RDFs中有两个非常重要的词汇domain和range。
Domain表示属性的域,即属于哪个类别,range表示属性的取值类型,也就是,domain限定了属性的定义域,range限定了属性的值域。
举个例子,在三元组<职业,是,土木工程师>中,可以用domain限定“职业”的类别是“人”,用range限定“职业”的取值范围是字符串String。具体表示如下:
知识|产品视角下的知识图谱构建流程与技术理解
文章插图
这里还有一个要点,即RDFS不是根据对象可能具有的属性来定义类,而是根据属性可能归纳的类型和取值范围来定义。
具体来说,我们可以给职业“Career”归属到人“Person”的类别下,而不是像经典的面向对象编程中采用的先定义类person,再定义Career。
RDFS的这个要点使得我们可以在不需要重新修改这些类的原始描述的情况下,完成属性的添加,人们可以很容易的向已经定义的类中增加额外的属性,这也是以属性为中心构建类型系统的优势。
虽然RDFs对RDF的词汇进行了拓展,但其表达能力还是比较弱。
比如RDFs无法说明两个类或者多个类是否等价,或者两个类是否不相交(比如人的子类男人和女人不相交),或者属性特性的描述,比如传递性,逆属性(大于的逆关系是小于)。
为了进一步提高建模和推理能力,网络本体语言 OWL(Web Ontology Language)又被提出,其实也可以看做RDFS的进一步拓展。
OWL不但具有快速,灵活的数据建模能力,还可以通过一套定义的词汇帮助计算机进行推理。以下是owl中的一些重要词汇:
知识|产品视角下的知识图谱构建流程与技术理解
文章插图
通过以上图表中的词汇,owl可以进行部分推理与展示,比如A的祖先是B,B的祖先是C,自然可以得到A的祖先是C。通过不同词汇的应用,相比于RDFs,owl的表示能力和推理能力有了很大的进步。
RDFS/OWL序列化方式和RDF没什么不同,其实在表现形式上,它们就是RDF。
有了RDF数据库,还需要了解其查询语言。SPARQL提供了查询RDF数据的标准语法,查询规则以及结果返回形式。其实SPARQL和SQL很像,只是关键字的定义不同,以下是一个例子:
知识|产品视角下的知识图谱构建流程与技术理解