人们将资源描述框架 (RDF) 视为无模式数据模型。但是,有一种叫做 RDF Schema (RDFS) 的东西。那么,为什么 RDF 是无模式数据模型呢?
3 回答
RDF Schema 的名称有些不妥。它不是一种真正的模式语言,至少在 XML 模式或 ER 模型是模式的意义上不同。
主要区别在于:模式是规定性的:它们规定了数据必须采用的确切形式:此列必须存在,可以省略,这必须与其他东西有这种特殊关系,等等。任何数据不完全符合架构(通过遗漏某些内容,或者通过添加一些不在架构中的列/元素/属性)被自动认为是无效的(当您尝试插入不具有您希望插入的表的正确列数等)。
另一方面,RDF Schema 应该更准确地称为“词汇描述语言”:它本质上是描述性的。换句话说,它为您提供了为您的数据定义词汇表的方法(“这些类和关系存在,它们就是这样连接在一起的”),但它不会强制您的数据符合该模式:它非常好拥有一个 RDF 数据集,该数据集使用特定 RDF 模式的某些部分,但不使用其他部分,或者另外使用来自其他模式的其他词汇表(甚至是任何RDF 模式中未明确定义的词汇表)。
这样想;对于关系数据库,这是一个典型的过度简化的工作流程:
- 创建表(模式)
- 插入一些行
使用 RDF,就像使用其他 No(t-only)SQL 解决方案一样,您可以反其道而行之。您只需开始创建一些数据,从而动态创建模式。
毕竟,如果你说,一个文档数据库,并插入一些 JSON 对象
{
"type": "User",
"id:" "123",
"name": "John Doe"
}
有人可能会争辩说type
,id
和name
键形成了某种模式,您的应用程序可能依赖它。唯一的区别是我在上面写的,不必预先声明模式。
RDF 通过在各处引入 URI 仅进了一步,但在其他方面的工作方式类似。在决定使用的 RDF 术语(属性和类)时,实际上是在构建或重用模式。
在说 RDF 的唯一好处是无模式时,我说的是 RDF 作为一个建模框架。构成链接数据堆栈的许多词汇表、本体和工具不是“RDF”,但它们是由它促进的。这些对于以分布式、类似 Web 的方式处理 Web 上的数据是必不可少的,但它们不需要 RDF 来工作。
另一方面,RDF Schema为 RDF提供了一个词汇表。
在我看来,只要您专门使用某些词汇表来验证您的 RDF,它就不再是无模式的了。在这方面,它就像 XML:您可以在没有模式的情况下使用它,但大多数人不这样做。