一个上下文中的类可以被视为另一个中的实例吗?

时间:2018-01-14 23:15:26

标签: class types rdf ontology

在像RDF这样基于创建本体层次结构的知识表示系统中,一个上下文中的类是否可以被视为另一个中的实例?

以包含库目录的triplestore为例。它可能包含以下语句:

:Book a rdfs:Class

:gullivers_travels a :Book
:moby_dick a :Book

这是有道理的,但在另一个上下文中,您可能想要逐项列出各种版本的 Moby Dick ,因此它可能有意义将其视为一个上课,例如:

:moby_dick a rdfs:Class

:moby_dick_manuscript a :moby_dick
:moby_dick_first_edition a :moby_dick
:moby_dick_second_edition a :moby_dick

由于:moby_dick被视为类或实例,这是否意味着两组语句不能共存而不会导致逻辑不一致?

This question似乎暗示确实如此。

这是RDF中的设计限制,还是有更多逻辑上可行的方法来建模如上所述的关系?

1 个答案:

答案 0 :(得分:2)

正如AKSW所说,为什么不呢?实际上,在RDF中,所有类都是实例(rdfs:Classrdfs:Resource)。在OWL 2 DL中,类IRI 可以同时是实例IRI 。但是,由类IRI标识的类不能是实例,并且由实例IRI标识的实例不能是类。也就是说,在OWL 2 DL中,如果IRI识别出一个类和一个实例,它会识别两个东西,而不是一个。这可能令人惊讶的结果是以下是一致的:

ex:x1  a  owl:Thing, owl:Class .
ex:x2  a  owl:Thing, owl:Class;
    owl:sameAs  ex:x1;
    owl:disjointWith  ex:x1 .
ex:x3  a  ex:x1 .

因此,ex:x1(实例)与ex:x2(实例)相同,但ex:x1(类)与ex:x2(类)不同