目录
主要总结知识专栏知识图谱的理论部分
A knowledge graph consists of a set of interconnected typed entities and their attributes.
用更正式的说法,知识图谱是由本体(Ontology)作为Schema层,和RDF数据模型兼容的结构化数据集。
语义网络的缺点:
-
节点和边的值没有标准,完全是由用户自己定义。
-
多源数据融合比较困难,因为没有标准。
-
无法区分概念节点和对象节点。
-
无法对节点和边的标签(label,我理解是schema层,后面会介绍)进行定义。
RDF的提出解决了语义网络的缺点1和缺点2,在节点和边的取值上做了约束,制定了统一标准,为多源数据的融合提供了便利。另外,RDF对is-a关系进行了定义,即,rdf:type(是rdf标准中的一个词汇,之后的文章会介绍)。因此,不管在哪个语义网络中,表达is-a关系,我们都用rdf:type,在语法上形成了统一。
举个例子,假如我们有两个语义网络A和B。在A中,熊是哺乳动物的一个实例。在B中,熊是哺乳动物的一个子类。前者是is-a关系,后者是subClassOf关系。这种情况常有发生,我们建模的角度不同,那么同一个事物的表示也可能不同。如果我们不能用一种方法来区别两者,不仅会给我们带来理解上的困难,在进行融合的时候也会造成数据冲突。我们不能说A既是B的一个实例,又是B的一个子类。W3C制定的另外两个标准RDFS/OWL解决了这个问题,如下图。
在语义网技术栈中,RDFS和OWL是RDF更上一层的技术,主要是为了解决语义网络的缺点3和缺点4,其提供了schema层的描述。
Tom Gruber把本体定义为“概念和关系的形式化描述”,分别指实体的类层次和关系层次。
关系我们也称为属性(Property),根据是实体和实体之间的关系还是实体和数据值之间的关系分为对象属性(Object Property)和数据属性(Data Property)。在图中,罗纳尔多和里约热内卢的关系(本例中是对象属性)与罗纳尔多和全名的关系(本例中是数据属性)用RDF就可以表示为:
- www.kg.com/person/1 kg:hasBirthPlace www.kg.com/place/10086
- www.kg.com/person/1 kg:fullName “Ronaldo Luís Nazário de Lima”^^xsd:string
RDF的表达能力有限,无法区分类和对象,也无法定义和描述类的关系/属性。
RDFS/OWL本质上是一些预定义词汇(vocabulary)构成的集合,用于对RDF进行类似的类定义及其属性的定义。
我们这里只介绍RDFS几个比较重要,常用的词汇:
-
rdfs:Class. 用于定义类。
-
rdfs:domain. 用于表示该属性属于哪个类别。
-
rdfs:range. 用于描述该属性的取值类型。
-
rdfs:subClassOf. 用于描述该类的父类。比如,我们可以定义一个运动员类,声明该类是人的子类。
-
rdfs:subProperty. 用于描述该属性的父属性。比如,我们可以定义一个名称属性,声明中文名称和全名是名称的子类。
我们也可以把OWL当做是RDFS的一个扩展,其添加了额外的预定义词汇。
owl区分数据属性和对象属性(对象属性表示实体和实体之间的关系)。词汇owl:DatatypeProperty定义了数据属性,owl:ObjectProperty定义了对象属性。
描述属性特征的词汇
-
owl:TransitiveProperty. 表示该属性具有传递性质。例如,我们定义“位于”是具有传递性的属性,若A位于B,B位于C,那么A肯定位于C。
-
owl:SymmetricProperty. 表示该属性具有对称性。例如,我们定义“认识”是具有对称性的属性,若A认识B,那么B肯定认识A。
-
owl:FunctionalProperty. 表示该属性取值的唯一性。 例如,我们定义“母亲”是具有唯一性的属性,若A的母亲是B,在其他地方我们得知A的母亲是C,那么B和C指的是同一个人。
-
owl:inverseOf. 定义某个属性的相反关系。例如,定义“父母”的相反关系是“子女”,若A是B的父母,那么B肯定是A的子女。
本体映射词汇(Ontology Mapping)
-
owl:equivalentClass. 表示某个类和另一个类是相同的。
-
owl:equivalentProperty. 表示某个属性和另一个属性是相同的。
-
owl:sameAs. 表示两个实体是同一个实体。
本体映射主要用在融合多个独立的Ontology(Schema)。回想我们在第二篇文章中提到的Linked Open Data,如果没有OWL,我们将无法融合这些知识图谱。
知识图谱的推理主要分为两类:基于本体的推理和基于规则的推理。我们这里谈的是基于本体的推理。想象一个场景,我们有一个庞大数据库存储人物的亲属关系。里面很多关系都是单向的,比如,其只保存了A的父亲(母亲)是B,但B的子女字段里面没有A,如下表。
如果我们用inversOf来表示hasParent和hasChild互为逆关系,就可以做这个推理。
OWL 2包含了三个标准,或者三种配置(Profile),它们是OWL 2完整标准(OWL 2/Full)的一个子集。读者目前不用考虑它们之间的差别,只有当我们要用到OWL自动推理功能的时候才需要考虑到底使用哪一种配置。且在大多数情况下,我们需要知道哪种配置才是最合适的。下面简单说说它们使用的场景:
-
OWL 2/EL 使用场景:本体结构中有大量相互链接的类和属性,设计者想用自动推理机得到里面复杂的关系。
-
OWL 2/QL 使用场景:有大量的实例数据。OWL 2 QL本体可以被改写为SQL查询,适用于使用OBDA(ontology based data access)的方式来访问关系数据库。也就是说我们不用显式地把关系数据库中的数据转为RDF,而是通过映射的方式,将数据库转为虚拟RDF图进行访问。
-
OWL 2/RL 使用场景:需要结合基于规则的推理引擎(rule-based reasoning engine)的场合。
SPARQL即SPARQL Protocol and RDF Query Language的递归缩写,专门用于访问和操作RDF数据,是语义网的核心技术之一。
从SPARQL的全称我们可以知道,其由两个部分组成:协议和查询语言。
-
查询语言很好理解,就像SQL用于查询关系数据库中的数据,XQuery用于查询XML数据,SPARQL用于查询RDF数据。
-
协议是指我们可以通过HTTP协议在客户端和SPARQL服务器(SPARQL endpoint)之间传输查询和结果,这也是和其他查询语言最大的区别。
来源:CSDN
作者:math_computer
链接:https://blog.csdn.net/math_computer/article/details/104287728