Rdf 使用属性来描述类

Rdf 使用属性来描述类,rdf,owl,rdfs,Rdf,Owl,Rdfs,我认为可以使用属性来描述rdfs类。然而,就语义而言,这真的是一个很好的实践吗 作为一个例子,考虑到我们有: :Animal a rdfs:Class. :Lion a rdfs:Class. :Lion rdfs:subClassOf :Animal. 现在我们想对所有的狮子说些什么;例如,它们有30颗牙齿并覆盖着毛发: :countOfTeeth a rdf:Property. :Lio

我认为可以使用属性来描述rdfs类。然而,就语义而言,这真的是一个很好的实践吗

作为一个例子,考虑到我们有:

: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.
请注意,我正在声明描述类本身的属性,即,不是它的实例

问题

  • 我觉得这在语法上没有什么问题。对吧?
  • 现在从语义上来说:这是一种普遍的做法吗?这种建模方式的含义是什么
  • 现在看看
    :Lion
    的例子,这些知识是否适用
  • 有标准的W3C资源吗
  • 请注意,我正在询问如何使用属性以这种方式描述类;这不是关于狮子牙齿和皮毛的建模知识是否是最好的

    编辑


    我是从建立词汇的角度讲的。解释在很大程度上取决于应用程序端。因此,我并不需要像使
    :Lion
    成为匿名限制的子类这样的解决方案。

    回答您的问题,顺序如下:

  • 这在语法上确实没有什么错误——尽管根据你的意图,它在语义上可能是不正确的(比如:它可能不会说你想说的话)

  • 这并不少见——你会经常在分类模型中看到这种情况(例如,在评论中提到的生物或医学领域)。当然,这并不意味着无论您考虑的是什么用例,它都是正确的建模选择

  • 在RDFS中,类
    :Lion
    具有齿数这一事实与该类的任何实例具有的属性无关。没有任何推论可以让每只狮子拥有30颗牙齿,也没有任何证据表明,当添加一只新狮子时,它们的牙齿数量是正确的

    在OWL中,您通常会使用不同的建模方法,通过引入属性限制,而不是在类级别公开声明属性。老实说,你的警告让我很困惑:这种事情就是词汇积累

  • 这是一个很好的开始,特别是关于属性限制和“双关语”(允许将标识符作为类和个人重复使用)的部分


  • 这并不少见,在生物学和医学领域也很常见。那为什么不呢。在OWL2中,它将被称为双关语,即对个人和类使用相同的URI。3)不,它只适用于实例
    :Lion
    ,而不适用于类
    :Lion:
    的个人。或者至少不是通过RDFS或OWL语义。使用OWL类表达式,然后执行
    :Lion subassof::countOfTeeth value 30
    ,即使用
    hasValue
    限制作为超类,可以清楚地对个人进行陈述。但是你说你不想要这个。。。