RDFS 与 SKOS,何时使用什么?

Sah*_*has 6 semantic-web rdfs skos

当我学习语义网络和 sparql 时,感觉到 RDFS 和 SKOS 似乎提供了非常相似的语义关系建模功能。例如,

  • RDFS - rdfs:subClassOf、rdfs:superClassOf 可用于对层次结构进行建模
  • SKOS - skos:narrower、skos:broader 可用于对层次结构进行建模

两者都提供双向传递性。

尽管

  • SKOS 通过 skos:narrowerTransitive、skos:broaderTransitive、skos:lated、skos:closeMatch 等提供更明确的属性来建模传递性、相关关系和匹配
  1. 这是正确的理解吗?
  2. 建模时是否有任何选择正确模式的指导?
  3. 如果我认为 skos 语义提供了上述优点,为什么 dbpedia 使用大量 rdfs 和 skos?

谢谢!

Ill*_*ack 9

RDFS 和 SKOS 可以轻松地并用,因为它们的侧重点有些不同。

\n

RDFS 是直接从 RDF 数据模型及其序列化产生的东西。它从 RDF 推理/蕴涵机制开始,该机制模拟任何人都可以从作为属性的三元组a b c\xe2\x80\x93推断出的最基本的东西,因此我们需要和 来表达这个事实(这就是为什么这两个不在 中)。更进一步,我们的 RDFS 再次从(使其范围成为一个类)和(推断它是一个类,并允许描述子属性)开始。然后我们有了 OWL,它允许更大程度的推理,而且还可以检测(或创建)矛盾。brdf:typerdf:Propertyrdfs:rdf:typerdf:Property

\n

RDFS专注于推理;它的所有类和属性都以它为中心:rdfs:domainrdfs:range根据 的推断来定义rdf:typerdfs:subClassOfrdfs:subPropertyOf根据任意属性的推断等进行定义。当然(与 OWL 一起)人们也可以使用它来描述词汇本身,使其成为一种元 RDF 语言(但是,与 OWL 不同,它可以描述自身) 。

\n

RDFS 类似于经典的面向对象语言,但它也使得表达类的类等成为可能。“作为...的实例”( rdf:type) 和“作为... 的子类”( rdfs:subClassOf) 之间也有区别。

\n

SKOS 忽略了 RDF 所看到的类别和属性,因为它源于我们人类在我们周围观察到的情况:我们通常不谈论“汽车类别”,我们谈论汽车。集合和类留给了逻辑学家和哲学家,而我们留下了概念。概念是我们在周围看到的事物,有些适用于广泛的事物(汽车、电动汽车),有些仅适用于一种事物(我邻居的汽车)。我们不需要高阶集合论来谈论它们,SKOS 也不需要,一切都被描述为一个单独的概念,有些比其他更普遍/抽象。此外,从某种意义上说,SKOS 明确禁止进入更高阶,因为概念不是概念方案。

\n

SKOS 可能在理论上受到限制,但它仍然很强大。有时,用它来谈论模糊概念会更容易(“我邻居的汽车”是一个类还是一个个体?SKOS 不在乎),有时有必要描述不适合 RDFS 层次结构的概念所有(相关、接近/完全匹配),不一定适合计算机理解,但绝对适合人类。

\n

SKOS 的模型让我想起了 JavaScript,其中没有传统的类,而是使用原型来表达继承,类似于skos:broader. 从这个意义上来说,类就是对象,对象就是类;实例和子类之间没有区别。

\n

希望您现在明白是否使用其中之一的答案是在各自的位置使用两者。当您需要严格的定义时,您可以使用 RDFS/OWL 进行词汇或推理;当您需要模糊的定义时,您可以使用 SKOS 进行概念/分类,但在某些地方两者都可以完美使用。

\n


Ign*_*zio 5

SKOS 规范中概述了 RDFS 和 SKOS 之间的主要区别:

https://www.w3.org/TR/skos-reference/#L1045

SKOS 数据模型的元素是类和属性,数据模型的结构和完整性是由这些类和属性的逻辑特征以及它们之间的相互依赖关系定义的。这可能是 SKOS 最强大但也可能令人困惑的方面之一,因为在更高级的应用程序中,SKOS 还可以与 OWL 一起使用来表达和交换有关领域的知识。然而,SKOS 并不是一种正式的知识表示语言。

它不是一种正式的知识表示语言,推理不标准化,并且与其他知识库的互操作性可能较低。

我无法代表 dbpedia 解释选择的原因,但这对我来说似乎是一个足够好的理由,所以如果这是其中的一部分,我不会感到惊讶。