使用属性来描述 类

Use properties to describe classes

我认为可以使用属性来描述rdfs classes。然而,就语义而言,这真的是一个好习惯吗?

例如,假设我们有:

:Animal        a          rdfs:Class.
:Lion          a          rdfs:Class.
:Lion   rdfs:subClassOf   :Animal.

现在考虑我们要说明所有狮子的一些事情;例如,他们有 30 颗牙齿并覆盖着毛皮:

:countOfTeeth          a      rdf:Property.
:Lion           :countOfTeeth "30"^^xsd:Integer.
:coveredWith           a      rdf:Property.
:Lion           :coveredWith  :fur.

请注意,我说的是描述 class 本身的属性,即不是它的实例。

问题

  1. 我发现这在语法上没有错。对吗?
  2. 现在语义上:这是一种常见的做法吗?这种建模方式的含义是什么?
  3. 现在 :Lion 的实例如何,这些知识是否适用?
  4. 任何标准的 W3C 资源?

请注意,我正在质疑属性的用法以这种方式描述 classes;不是这种关于狮子牙齿和皮毛的建模知识的方式是不是最好的。

编辑

我是从词汇构建的角度来谈的。解释在很大程度上取决于应用程序方面。因此,使 :Lion 成为匿名限制的子 class 之类的解决方案并不是我所需要的。

回答您的问题,顺序为:

  1. 这在语法上确实没有任何错误 - 尽管根据您的意图,它可能 语义 不正确(例如:它可能没有说出您想要的它说);

  2. 这并不少见——你会经常在分类模型中看到这种东西(例如,在生物或医学领域,如评论中所述)。当然,这并不意味着在 you 想到的任何用例中它都是正确的建模选择;

  3. 在 RDFS 中,class :Lion 具有齿数这一事实与任何 实例 的属性无关class 有。没有推论可以使单个狮子有 30 颗牙齿,也没有任何证据表明添加新的狮子时,它们的牙齿数量是正确的。

    在 OWL 中,您通常会使用不同的建模方法,通过引入 属性 限制 而不是公然断言 属性 在 class 级别。老实说,你的警告在这里让我感到困惑:这种事情 词汇构建。

  4. OWL 2 Primer 是一个好的开始,特别是关于 属性 限制和“双关语”( = 允许重复使用标识符作为 class 和一个人)。