因为要进行通过知识图谱的假新闻检测,所以搭建知识图谱是我们构建的第一步,目前我们选用的数据源是DBpedia,它的实体和关系都是从维基百科中抽取的,所以有较高的可信度。本来想将DBpedia数据导入到Neo4j中,但是数据繁多就放弃了,初步设想是使用SPARQL来检索信息。所以这一切的一切都要先对语义网络中的RDF、RDFS和OWL有一个初步了解,同时也需要对语义网络、语义网、链路数据以及知识图谱有一定的了解。

语义网络(Semantic Network)

上图是语义网络的一个样例,可以大概感知语义网络大概是什么了,其优势就不说了,主要说一下语义网络之处的不足之处:

  1. 边和节点没有统一标准,如“猫”中文中是“猫”而在别的语言中有可能是“cat”,这样没有统一的标准导致多方数据融合的时候容易出现问题;
  2. 没有对概念和对象区分。概念是抽象的,如人泛指我们人类的时候是一个概念,而是指定某一个人的时候就是一个对象了;
  3. 无法对节点和边的标签进行定义。

RDF

RDF的引入是为了解决问题1,在节点和边的定义中增加了约束,同时规定ref: type代表"is-a",这为多数据源融合提供了便利。

# rdf:type是"is a"的意思
猫 rdf:type 哺乳动物

RDFS和OWL

RDF只是解决了问题1,问题2还是没有得到解决,就上面的例子而言,猫可以使具体的,也可以是抽象的:

  • 当“猫”是特指一个动物的时候,其表达式就与上面的例子是相同的,即猫 rdf:type 哺乳动物;
  • 当“猫”是泛指一个种群的时候,那么他代表的就是一种概念,所以应该是“哺乳动物”的一个子类,即表达式为猫 rdfs:subClassOf 哺乳动物(表现形式为RDFS)。

那么在RDFS或OWL中,可以声明类(概念),子类(概念)和实例(对象),具体方式如下:

# 声明类
哺乳动物 rdf:type rdfs:Class	# RDFS
哺乳动物 rdf:type owl:Class		# OWL

# 声明子类(仅演示RDFS)
猫 rdf:type rdfs:Class		# RDFS
猫 rdfs:subClassOf 哺乳动物		# RDFS

# 声明实例,以下两种形式均可
猫 rdf:type 哺乳动物
猫 a 哺乳动物

语义网(Semantic Web)和链路数据(Linked Data)

首先注意语义网络是Semantic Network,语义网是Semantic Web,这是两个完全不同的东西。看得出来Web更倾向于描述万维网中资源和数据之间的关系,他的概念最接近于知识图谱的,但是它更倾向于资源与资源的连接,也就是web的含义了,而KG则更加强调提供信息和服务的。

知识图谱(Knowledge Graph)

只是图谱的Scheme层是本体(Ontology),数据层是使用RDF描述。在知识图谱中IRI是某各类的实例的唯一标识符,边表示关系或属性,其中分为两种属性:对象属性和数值属性,下面将做详细描述。

目前我主要想使用知识图谱做假新闻检测,所以可以首先借助对象到数值这种方式确定对象,然后在根据事实进行推断,最终达到假新闻检测的目的。

REFERENCES