在像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中的设计限制,还是有更多逻辑上可行的方法来建模如上所述的关系?
答案 0 :(得分:2)
正如AKSW所说,为什么不呢?实际上,在RDF中,所有类都是实例(rdfs:Class
和rdfs: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
(类)不同