构建知识图谱的时候, 首先是要建立知识表达的的数据模型, 也就是知识图谱整个的数据组织体系, 主要是数据的分类及层次关系, 还有属性及属性的关系. 数据组织体系建立之后, 我们就要考虑数据如何表达的问题, 这种表达方式应该是既可以让人们容易理解, 也要让计算机能够理解和使用.
1 Linked Data
在语义网的技术栈中, 数据表示占了很大比重, 按照语义网技术标准要求, 所有的实体或属性数据都应该用 URI/IRI 来表示, 除了文本描述的数据, 所有数据都应该有一个统一的标识, 标识的形式可以是 xml,RDF,RDFS 或者本体语言 OWL, 这些都说明数据表示是整个语义网的基础.
万维网之父, 也是语义网的创始人, Tim Berners-Lee 也一直呼吁建立互联的数据(Linked Data), 还在 TED 上发表了演讲, 演讲题目是 raw data now, 号召人们开放共享原始数据, 让整个世界成为一个互通互联的世界. 他的演讲既说明了数据共享的重要性, 也说明了数据互联互通的重要性.
Tim Berners-Lee 为了鼓励人们开放共享数据, 制定了 Linked Data 的五星规则, 数据每加一颗星, 这样的数据就更容易被得到和利用, 能够增强数据的互联互通.
一星: 以开放的协议提供到互联网上(不论什么格式), 称为开放数据
二星: 能够被机器识别的结构化数据(比如 Excel, 而不是表格的扫描图片)
三星: 非专有格式(比如 CSV 代替 Excel)
四星: 加上以上要求, 使用开放标准从 W3C(RDF 和 SPARQL)到实体, 让人们能够根据表述就能确定你所要表达的东西.
五星: 满足以上所有要求, 并且能够将你的数据与其他人的数据链接起来, 提供上下文.
2 RDF
上面提到让数据互联互通, 那么, 数据以何种形式展示, 才能更好的互联互通呢, 知识图谱中, 数据的展示形式就是 RDF,RDF 是应为 Resource Description Framework 的缩写, 即资源描述框架, 它可以看作是一个数据模型, 也可以看作是表示数据的方法手段.
其中 Resource, 资源, 顾名思义, 是一种数据资源, 可以是图片, 视频, 也可以是人, 物或者概念等等, 是用 URI 可以唯一标识的对象.
Description, 描述, 是对资源的描述, 资源被 IRI 标识之后, 我们能够确定资源, 这个资源得内涵外延等具体的内容, 还是需要资源的属性和关系来确定. 描述就是对资源的属性和关系的内容.
Framework, 框架, 是描述资源的语言, 语法和模型.
在 RDF 中, 知识总是以三元组的形式出现, 一条知识都是分解为主语 (subject), 谓语(predicate) 和宾语 (object) 的三元组 (triple) 来表示.
我们以维基百科里面的莎士比亚为例, 来看一下 RDF 的表示方式, 莎士比亚的作品有哈姆雷特, 用 RDF 表示为:
https://www.wikidata.org/wiki/Q692 https://www.wikidata.org/wiki/Property:P800 https://www.wikidata.org/wiki/Q41567
其中 https://www.wikidata.org/wiki/Q692 是莎士比亚的 URI,https://www.wikidata.org/wiki/Property:P800 是 notable work 的 URI
https://www.wikidata.org/wiki/Q41567 是哈姆雷特的 URI.
在维基数据里, 关于莎士比亚的知识, 都是通过这样的 RDF, 将一条条的知识汇聚起来, 形成莎士比亚的知识卡片. 以下是莎士比亚的知识卡片的一部分.
在实际的应用中, RDF 还有几种序列化方法, 也就是存储和传输 RDF 数据的具体实现形式, 主要有 RDF/xml,N-Triples,Turtle,RDFa,JSON-LD 等. 这些都是满足 RDF 规则的数据表现形式, 各有特点, 适于不同的应用场景.
xml 格式技术成熟, 存储和解析方便, 但该格式比较冗长, 不便于阅读, 知识图谱很少使用这种格式来表示数据. N-Triples, 比较直观简单, 一行一个三元组表示一条知识, 方便解析和处理, 在知识图谱中应用较多. Turtle 可以看作是 N-Triples 的全面版本, 比 N-Triples 要复杂一些, 但相对原始的 RDF 要简洁, 语法规则也比较严谨清晰, 在知识图谱中使用比较广泛. RDFa,RDF in Attributes, 是将 RDF 数据嵌到网页中, 对于前端显示没有影响, 对于浏览器来说, 能够在非结构化数据中较方便的提取结构化信息, 有利于数据的获取和共享. JSON-LD,JSON for Linking Data, 用键值对的形式存储 RDF 数据, 也是为了网络数据的共享和传播.
和 RDF 一起使用的还有 RDFS(RDF Schema),RDF 表示的是数据层的内容, RDFS 表示的是模型层的内容, RDFS 为 RDF 数据提供一个类型系统, 定义了数据的类型, 子类型, 属性, 子属性, 主语的范围, 宾语的范围等信息, RDFS 为数据定义了一个规则范围, RDF 数据按照 RDFS 制定的规则组织数据.
3 OWL
OWL, 不是猫头鹰, 是 web Ontology Language,Web 本体语言, 是 W3C 制定一种适用于语义网使用的数据模型规范, 它融合了哲学中的本体的概念, 研究世界上的各种实体以及它们是如何关联的. OWL 是对 RDFS 的一种扩展, 弥补了 RDFS 在表达能力的一些缺陷. OWL 也是遵循 RDF 规范的, 比 RDF 更加严谨, 丰富了属性以及属性约束, 定义域, 值域的约束等等.
OWL 又分为 OWL Lite,OWL DL 和 OWL Full 三个子语言. OWL Lite 是最简单的 OWL, 可以看作是 OWL Full 的简化版本. OWL DL 在 OWL Lite 的基础上, 包括了 OWL 的所有属性约束. OWL Full 允许在预定义的词汇上增加词汇, 导致逻辑蕴含不可判定.
OWL 的新版本是 OWL2,OWL2 也有三个子语言, OWL2 QL,OWL2 EL 和 OWL2 RL,OWL2 QL 代表 Query Language, 专为基于本体的查询设计, 可以使用标准关系型数据库技术 (例如 SQL) 来实现, 仅需要依据公理扩展查询. OWL2 EL 为概念术语描述, 推理而设计, 拥有一个具备相对表达力的类表达式语言, 并且对类表达式如何可以用在公理中没有限制. 应用在大型生物健康本体模型的构建中. OWL2 RL 面向需要可扩展又不能牺牲太多表达能力的应用程序, 被设计用来适应可以牺牲语言的完整表达力以换取效率的 OWL2 应用程序, 以及需要一些来自 OWL2 的额外表达力的 RDF(S)应用程序.
OWL 和 OWL2 属于 W3C 推荐的语义网数据模型组织语言, 结构严谨, 逻辑全面, 但在实际的企业级应用中较少使用, 主要是因为 OWL 相对来说比较复杂, 不如直接使用 Turtle 或者 N-Triples 来的方便.
参考资料
- https://www.w3.org/DesignIssues/LinkedData.html
- https://zhuanlan.zhihu.com/p/32122644
- https://my.oschina.net/airship/blog/920020
来源: https://www.cnblogs.com/coodream2009/p/11218035.html