2

人们将资源描述框架 (RDF) 视为无模式数据模型。但是,有一种叫做 RDF Schema (RDFS) 的东西。那么,为什么 RDF 是无模式数据模型呢?

4

3 回答 3

6

RDF Schema 的名称有些不妥。它不是一种真正的模式语言,至少在 XML 模式或 ER 模型是模式的意义上不同。

主要区别在于:模式是规定性的:它们规定了数据必须采用的确切形式:此列必须存在,可以省略,这必须与其他东西有这种特殊关系,等等。任何数据不完全符合架构(通过遗漏某些内容,或者通过添加一些不在架构中的列/元素/属性)被自动认为是无效的(当您尝试插入不具有您希望插入的表的正确列数等)。

另一方面,RDF Schema 应该更准确地称为“词汇描述语言”:它本质上是描述性的。换句话说,它为您提供了为您的数据定义词汇表的方法(“这些类和关系存在,它们就是这样连接在一起的”),但它不会强制您的数据符合该模式:它非常好拥有一个 RDF 数据集,该数据集使用特定 RDF 模式的某些部分,但不使用其他部分,或者另外使用来自其他模式的其他词汇表(甚至是任何RDF 模式中未明确定义的词汇表)。

于 2015-11-23T21:34:12.320 回答
3

这样想;对于关系数据库,这是一个典型的过度简化的工作流程:

  1. 创建表(模式)
  2. 插入一些行

使用 RDF,就像使用其他 No(t-only)SQL 解决方案一样,您可以反其道而行之。您只需开始创建一些数据,从而动态创建模式。

毕竟,如果你说,一个文档数据库,并插入一些 JSON 对象

{
  "type": "User",
  "id:" "123",
  "name": "John Doe"
}

有人可能会争辩说type,idname键形成了某种模式,您的应用程序可能依赖它。唯一的区别是我在上面写的,不必预先声明模式。

RDF 通过在各处引入 URI 仅进了一步,但在其他方面的工作方式类似。在决定使用的 RDF 术语(属性和类)时,实际上是在构建或重用模式。

于 2015-11-23T10:09:28.187 回答
1

在说 RDF 的唯一好处是无模式时,我说的是 RDF 作为一个建模框架。构成链接数据堆栈的许多词汇表、本体和工具不是“RDF”,但它们是由它促进的。这些对于以分布式、类似 Web 的方式处理 Web 上的数据是必不可少的,但它们不需要 RDF 来工作。

一篇关于 RDF 的异常明智的帖子

另一方面,RDF Schema为 RDF提供了一个词汇表。

在我看来,只要您专门使用某些词汇表来验证您的 RDF,它就不再是无模式的了。在这方面,它就像 XML:您可以在没有模式的情况下使用它,但大多数人不这样做。

于 2015-11-23T07:36:36.897 回答