RDFS与SKOS,何时使用



因为我正在学习语义网&sparql,感应到RDFS&SKOS似乎提供了非常相似的语义关系建模功能。例如,

  • RDFS-RDFS:subClassOf,RDFS:superClassOf可用于对层次结构建模
  • SKOS-SKOS:较窄,SKOS:更宽可用于对层次结构进行建模

两者都提供双向传递性。

尽管

  • SKOS提供了更明确的属性来通过SKOS:chinterTransitive、SKOS:broaderTransitive和SKOS:related、SKOS:closeMatch等对传递性、相关关系和匹配进行建模
  1. 这是正确的理解吗
  2. 建模时是否有选择正确模式的指导
  3. 如果我认为skos语义提供了上述优势,为什么dbpedia使用了很多rdfs而不是skos

谢谢!

RDFS和SKOS可以很容易地同时使用,因为它们的重点有些不同。

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

RDFS侧重于推理;CCD_ 8和CCD_ 9是根据CCD_;rdfs:subClassOfrdfs:subPropertyOf是根据任意属性等的推断来定义的。当然(与OWL一起)也可以用它来描述词汇表本身,使其成为一种元RDF语言(但与OWL不同,它可以描述自己)。

RDFS类似于经典的面向对象语言,但它也使得表达类的类等成为可能;是";(rdf:type)和";是"的子类;(rdfs:subClassOf)。

SKOS忽略了RDF所看到的类和属性,因为它源于我们人类在我们周围观察到的:;"汽车类别";,我们谈论一辆汽车。集合和类留给逻辑学家和哲学家,留给我们的是概念。概念是我们在周围看到的东西,有些适用于各种各样的东西(汽车、电动汽车),有些只适用于一件事(我邻居的车)。我们不需要高阶集合论来讨论它们,SKOS也不需要,一切都被描述为一个单独的概念,有些比其他概念更一般/抽象。此外,从某种意义上说,SKOS明确禁止进入更高阶,因为概念不是概念方案。

SKOS在理论上可能是有限的,但它仍然很强大。有时,用它来谈论模糊的概念更容易("我邻居的车"是一个类还是一个个人?SKOS不在乎),有时有必要描述根本不符合RDFS层次结构的概念(相关的、接近的/完全匹配的),这不一定是计算机能理解的,但肯定是人类能理解的。

SKOS的模型让我想起了JavaScript,在这里你没有传统的类,但使用原型来表达继承,类似于skos:broader。在这方面,类是对象,对象是类;实例和子类之间没有区别。

希望您现在看到,是使用其中一个还是另一个的答案是在各自的位置同时使用。当您需要严格的定义时,可以将RDFS/OWL用于词汇表或推理,当您需要模糊的定义时可以将SKOS用于概念/分类法,但在某些地方两者都是完全可用的。

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

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

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

作为一种正式的知识表示语言,推理没有标准化,与其他知识库的互操作性可能会降低。

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

最新更新