首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当对OWL类限制构造函数使用rdfs:subClassOf或OWL:等效类时(owl:SomeValuesFrom)?

当对OWL类限制构造函数使用rdfs:subClassOf或OWL:等效类时(owl:SomeValuesFrom)?
EN

Stack Overflow用户
提问于 2021-12-16 23:01:54
回答 1查看 103关注 0票数 3

我们将A类定义为owl:等效类,将类A2定义为rdfs:subClassOf,其基础是分别与B或C实例具有关系a_to_b和a_to_c的实例的交(和)。请参阅示例:

代码语言:javascript
复制
:A rdf:type owl:Class ;
   owl:equivalentClass [ owl:intersectionOf ( [ rdf:type owl:Restriction ;
                                                owl:onProperty :a_to_b ;
                                                owl:someValuesFrom :B
                                              ]
                                              [ rdf:type owl:Restriction ;
                                                owl:onProperty :a_to_c ;
                                                owl:someValuesFrom :C
                                              ]
                                            ) ;
                         rdf:type owl:Class
                       ] .

这里作为一个子类:

代码语言:javascript
复制
:A2 rdf:type owl:Class ;
   rdfs:subClassOf [ owl:intersectionOf ( [ rdf:type owl:Restriction ;
                                            owl:onProperty :a_to_b ;
                                            owl:someValuesFrom :B
                                          ]
                                          [ rdf:type owl:Restriction ;
                                            owl:onProperty :a_to_c ;
                                            owl:someValuesFrom :C
                                          ]
                                        ) ;
                     rdf:type owl:Class
                   ] .

使用owl:等效类的原因是什么,以及何时使用rdfs:subClassOf?我不完全清楚最后的区别和真正表达的是什么。

我的进一步意见/问题:

( a)当我创建一个包含三重值的实例x时:(x,a_to_b,b1)和(x,a_to_c,c1),x被自动推断为A的类型,而不是A2的类型。(c1为C型,b1为B型)。

( b)当我创建实例y并手动为y分配类型A和A2时,如果y通过a_to_b与B的实例没有关系,而通过a_to_c与C的实例没有关系,这会是一个问题吗?隐士推理者没有表现出任何问题的迹象,但这不是A类的必要条件(必须满足)吗?

( c)这些陈述是否适用于A:

( c1)如果我知道z来自A类型,它必须有一个与B的实例的关系a_to_b,它必须有一个与C的实例的关系a_to_C。

( c2)如果我知道z与B的一个实例有一个关系a_to_b,并且它有一个与C的实例的关系a_to_C,则z必须是A类型。

c3) A是所有事物的类,它们与B的实例有关系的a_to_b,与C的实例有关系的a_to_C。

我还可以说c1和c3关于A2或者如何更改语句吗?

我不太清楚这个意思。我希望有人能澄清一些事情。提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-19 08:54:19

我认为首先要注意的是,D equivalentClass E说,等价是D subClassOf EE subClassOf D的缩写。subClassOf的语义是子集。这意味着set D是set E的子集,set ED的子集,这意味着set D和set E完全相同。我们说它们是等价物。

现在请注意subClassOf的语义。如果我认识F subClassOf EG subClassOf E,关于FG之间的关系,我能说些什么呢?什么事也没有。这有点像知道自行车和卡车都是车辆。这并不能使自行车成为卡车,也不会使卡车成为自行车,尽管两者都是车辆。

因此,在您的示例中,可以将A扩展为两个公理

A subClassOf (a_to_b some B) and (a_to_c some C)

(a_to_b some B) and (a_to_c some C) subClassOf A

回答您的问题:

(a)对于x的断言,我们可以看到,x确实是A的一个实例。然而,没有任何信息wrt x使我们可以说xA2类型的。我们只知道xA2都是(a_to_b some B) and (a_to_c some C)的子类。

(b)这是由于开放世界的假设,这意味着推理者没有根据缺乏资料作出任何假设。如果您没有明确声明yB没有a_to_b关系,它将假定存在a_to_b关系,但只是不知道。这与数据库通常所作的封闭世界假设相反。也就是说,如果客户的雇主信息不存在,通常会假设客户没有被雇用。

您可以通过声明ya_to_b之间的关系来声明a_to_b max 0 B。然后,推理者会给出一个不一致的答案。

(c1)是的,但由于开放世界的假设,这些可能目前还不清楚。

(c2)是的,基于等价的语义

(c3)是的。

这是,而不是,因为它只是一个子类,而不是所有的事物,它们与B的实例有一个关系a_to_b,与C的一个实例有一个关系a_to_C。

何时使用等效的vs subClassOf

等价物用于定义。这是当您想要说明一些被称为A (从您的示例中)的必要条件和充分条件时。

当您想要定义从最一般到最具体的层次结构时,可以使用SubClassOf。也就是说,它通常是你在分类和编程中所看到的,你会把它看作是面向对象的类层次结构。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70386593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档