OWL 双关语使用与 rdf:type 和 rdfs:subClassOf 的对象相同的资源?

OWL Punning using the same resource as object of rdf:type and rdfs:subClassOf?

使用 Punning,可以同时将相同的 RDF 资源建模为 class 和个人。但是,在我查看的示例中,资源从未用作同一主题的 rdf:typerdfs:subClassOf 的对象。这是一种可以接受的建模方式,还是描述该数据集的论文会因为可怕的建模实践而被拒绝?我不想使用任何 OWL 推理或推断,只是 SHACL 验证,这将启用。

例子

:Animal a owl:Class.
:family a owl:ObjectProperty; rdfs:domain :Animal.
:order  a owl:ObjectProperty; rdfs:domain :Animal.

:Elefant rdfs:subClassOf :Animal;
         rdf:type        :Animal;
 :family    :Elephantidae;
 :order     :Proboscidea.

我需要两者的原因是我想要一个子class层次结构,但我也有一些我想附加到每个层次结构的属性,rdfs:domain只适用于个人,而不是classes.

备选

或者,我可以通过以下方式对其进行建模,但对我来说感觉不太优雅:

:Animal a owl:Class.
:AnimalSubClass a owl:Class.
:family a owl:ObjectProperty; rdfs:domain :AnimalSubclass.
:order  a owl:ObjectProperty; rdfs:domain :AnimalSubclass.

:Elefant rdfs:subClassOf :Animal;
         rdf:type        :AnimalSubClass;
 :family    :Elephantidae;
 :order     :Proboscidea.

我可能会选择您的第一种方法,而不是其他方法。特别是因为双关语对 OWL 2 中的推理没有实质性影响。在 OWL 1 中,它导致 ontology 出现在 OWL 完整配置文件中,而不是 OWL DL 配置文件。对于 OWL 2,情况已不再如此。参见 OWL 2 DL and OWL 2 Full