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