匿名 类 不是自动成为 owl:Class 的一种吗?

Aren't anonymous classes automatically a type of owl:Class?

这个 ontology 似乎不太符合我的想法:

@prefix xsd:      <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf:      <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:     <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl:      <http://www.w3.org/2002/07/owl#> .
@prefix :         <http://test/> .

:AClass a owl:Class .
:BClass a owl:Class .

# Class 1
:CClass owl:equivalentClass [
  owl:intersectionOf (
    :AClass
    :BClass
  )
] .

用隐士推理器加载这个我不认为 CClassAClassBClass 的子 class。但是以下工作:

.
.
.

# Class 1
:CClass owl:equivalentClass [
  rdf:type owl:Class ;
  owl:intersectionOf (
    :AClass
    :BClass
  )
] .

想知道为什么我需要添加 rdf:type owl:Class

  1. [ ... ] 不是自动属于 owl:Class 类型吗?
  2. 或者是两个 owl:Class 的交集?

谢谢

在您的第一个片段中,很明显交集必须是 OWL class,因为它是 OWL class 的交集。因此,:CClass 也必须是一个 OWL class。然而,这意味着一些基于术语定义的推理。 OWL 解析器不必应用推理,应该明确地指示术语是否是 OWL class、对象 属性、数据类型 属性 、个体、ontology、注解属性、数据类型或某种其他类型的注解。在 owl:intersectionOf 公理的情况下,您可能正在声明数据类型,而不是 OWL class。所以只有通过查看列表的内容,并找到其中的项是如何声明的(即 :AClass:BClass),你最终可以推断它们都是 OWL classes,因此交集是 OWL class,因此它等价于 OWL class,因此 :CClass 应该或可能在编辑器中显示为 OWL class。 OWL 工具可以出于稳健性的目的自由进行此类推断,但 OWL 标准并未强制要求。

编辑澄清: 该标准定义了一种将 RDF 图映射到 OWL 的抽象语法的方法,其中使用 owl:intersectionOf 的结构可以是映射到 class 定义或数据类型定义。标准建议区分这两种情况的唯一方法是明确添加 rdf:type owl:Classrdf:type rdfs:Datatype(请参阅 OWL 2 Web Ontology Language Mapping to RDF Graphs 的表 12 和表 13)。 OWL 解析器可能会超出标准建议的范围,并根据上下文推断某些类型,但他们不必这样做。我知道 OWL API 做了一些这样的句法推断以避免在每个无效本体上崩溃。