【知识图谱搭建到应用】--知识表示--02

文章目录

  • 知识表示
  • CVT节点
  • RDF文件及序列化
  • rdflib库

知识表示

知识的表示方法有很多种,如产生式规则、谓词表示等;知识图谱中基础是“三元组”,可理解为主-谓-宾,两头是两个实体,中间是两者之间的关系,而在三元组的基础上因为关系的存在构成可表示负责知识的语义网,但本质的关系单元还是三元组。

CVT节点

Compound Value Type节点能更准确的建模实体之间的复杂关系。如,一个城市的人口是随时间变化的,这意味着每当查询人口时,都带有一个隐式的条件,即日期;该问题涉及两个值,人口和日期。此场景下CVT节点非常有用,如果没有,要对人口数据进行建模,需要创建一个主题,并将其命名为如“1997 年的温哥华人口”,然后在那里提交信息。

可以将CVT视为不需要创建显示名称的主题。CVT与普通主题一样,具有可以独立引用的GUID。在大多数情况下,CVT的每个属性都应该是消歧属性。

RDF文件及序列化

RDF、RDFS/OWL是类语义网概念背后通用的基本技术,而知识图谱是其中最广为人知的概念。RDF(Resource Description Framework),即资源描述框架,其本质是一个数据模型(Data Model)。它提供了一个统一的标准,用于描述实体/资源。简单来说,就是表示事物的一种方法和手段。RDF形式上表示为SPO三元组,有时候也称为一条语句(statement),知识图谱中我们也称其为一条知识。

目前,RDF序列化的方式主要有:RDF/XML,N-Triples,Turtle,RDFa,JSON-LD等几种:

  1. RDF/XML,顾名思义,就是用XML的格式来表示RDF数据。之所以提出这个方法,是因为XML的技术比较成熟,有许多现成的工具来存储和解析XML。然而,对于RDF来说,XML的格式太冗长,也不便于阅读,通常我们不会使用这种方式来处理RDF数据
  2. N-Triples,即用多个三元组来表示RDF数据集,是最直观的表示方法。在文件中,每一行表示一个三元组,方便机器解析和处理。开放领域知识图谱DBpedia通常是用这种格式来发布数据的
  3. Turtle, 应该是使用得最多的一种RDF序列化方式了。它比RDF/XML紧凑,且可读性比N-Triples好
  4. RDFa, 即“The Resource Description Framework in Attributes”,是HTML5的一个扩展,在不改变任何显示效果的情况下,让网站构建者能够在页面中标记实体,像人物、地点、时间、评论等等。也就是说,将RDF数据嵌入到网页中,搜索引擎能够更好的解析非结构化页面,获取一些有用的结构化信息。可以去这个页面感受一下RDFa,其直观展示了普通用户看到的页面,浏览器看到的页面和搜索引擎解析出来的结构化信息
  5. JSON-LD,即“JSON for Linking Data”,用键值对的方式来存储RDF数据,可以参考此网站

对于详细的知识图谱概念、搭建以及涉及的技术可以参考此知乎专栏

rdflib库

有众多的图数据库、原生数据库能用存储RDF三元组数据,并且上前也说了RDF序列化有多种保存格式,往往会存在格式之间的转换,rdflib这个pyhon库可以解析基本所有的RDF三元组格式,并且再将其序列化为其他的格式,实现RDF文件格式的转换。除了转换格式化,rdflib库可以直接使用结构化数据创建知识图谱,进行命名空间、类、关系、属性的定义以及实例的批量化添加,然后可序列化为RDF文件,从而提供给neo4j、jena等数据库实现三元组数据的解析与存储,完成知识图谱构建。除此之外,rdflib还能同时解析多个RDF文件进行知识融合,其官方文档见此链接https://rdflib.readthedocs.io/en/stable/index.html

你可能感兴趣的:(知识图谱搭建及应用,知识图谱,人工智能)