在 OWL 中混合等效类和子类

发布于 2024-10-08 07:19:17 字数 780 浏览 0 评论 0原文

我很好奇在类描述中混合 SubClassOf 和 EquivalentClass 以及推理机的行为方式。

具体来说,如果我对同一类同时具有 EquivalentClass 和 SubClassOf 断言,那么要将个体分类到该类中,是否需要同时满足 EquivalentClass 和 SubClassOf 条件,还是只满足 EquivalentClass?

或者这是一个不好的做法?

例如(声明省略):

ObjectPropertyRange(:format :Bar)
ObjectPropertyRange(:format owl:Thing)
EquivalentClass(:Foo ObjectSomeValuesFrom(:format :Bar))
SubClassOf(:Foo :Sna)

我想确保在下面的情况下, :x 被分类为 :Foo,因为 EquivalentClass 和 SubClassOf 断言都满足:

ClassAssertion(:x :Sna)
ObjectPropertyAssertion(:format :x :someBar)

但是:y 不是,因为 SubClassOf 不满足:

ClassAssertion(:y :NotASna)
ObjectPropertyAssertion(:format :y :someOtherBar)

谢谢,

乔纳森

I'm curious about mixing SubClassOf and EquivalentClass in a Class description, and how a reasoner would behave.

Specifically, if I have both an EquivalentClass and a SubClassOf assertion for the same Class, do both the EquivalentClass AND the SubClassOf conditions need to be satisfied for an individual to be classified in that Class, or only the EquivalentClass?

Or is this a bad practice?

For example (Declarations omitted):

ObjectPropertyRange(:format :Bar)
ObjectPropertyRange(:format owl:Thing)
EquivalentClass(:Foo ObjectSomeValuesFrom(:format :Bar))
SubClassOf(:Foo :Sna)

I want to ensure that in the case below, :x is classified as :Foo, because both the EquivalentClass and SubClassOf assertions are satisfied:

ClassAssertion(:x :Sna)
ObjectPropertyAssertion(:format :x :someBar)

But :y is not, because the SubClassOf is not satisfied:

ClassAssertion(:y :NotASna)
ObjectPropertyAssertion(:format :y :someOtherBar)

Thanks,

Jonathan

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

用心笑 2024-10-15 07:19:17

我不完全理解你的问题,但我会尽力澄清一些事情。首先,以下公理似乎与您的问题无关(无论如何,第二个公理都是多余的,因为 owl:Thing 是任何属性的范围):

ObjectPropertyRange(:format :Bar)
ObjectPropertyRange(:format owl:Thing)

另一件事是 EquivalentClasses -axioms 可以被视为 SubClassOf-axioms 的语法糖,例如

EquivalentClasses(C1 C2)

在逻辑上等同于

SubClassOf(C1 C2)
SubClassOf(C2 C1)

因此您可以将您的 EquivalentClasses 重写为:

SubClassOf(ObjectSomeValuesFrom(:format :Bar) :Foo)
SubClassOf(:Foo ObjectSomeValuesFrom(:format :Bar))

这可能会简化对您的含义的理解本体论使得。

现在,如果您说:

ClassAssertion(:x :Sna)
ObjectPropertyAssertion(:format :x :someBar)

我假设您想说:

ClassAssertion(:x :Sna)
ClassAssertion(:someBar :Bar)
ObjectPropertyAssertion(:format :x :someBar)

这意味着 :x 既是 :Foo 又是 :Sna,这这当然是可能的,因为 :Foo:Sna 的子类。

当您说

ClassAssertion(:y :NotASna)
ObjectPropertyAssertion(:format :y :someOtherBar)

我假设您的意思是:

ClassAssertion(:y :NotASna)
ClassAssertion(:someOtherBar :Bar)
DisjointClasses(:NotASna :Sna)
ObjectPropertyAssertion(:format :y :someOtherBar)

这是逻辑上的不一致,因为 :y 必然是 :Foo (它是 :Sna< 的子类) /code>),但同时 :y 被断言位于与 :Sna 不相交的类中。

知识。

SubClassOf(:Foo ObjectSomeValuesFrom(:format :Bar))

另请注意,我们没有使用从 EquivalentClasses 公理中得出的

I don't completely understand your question but I'll try to clarify some things. First of all, the following axioms seem irrelevant for your question (and the second is redundant anyway because owl:Thing is any property's range):

ObjectPropertyRange(:format :Bar)
ObjectPropertyRange(:format owl:Thing)

The other thing is that the EquivalentClasses-axioms can be seen as a syntactic sugar for SubClassOf-axioms, e.g.

EquivalentClasses(C1 C2)

is logically equivalent to

SubClassOf(C1 C2)
SubClassOf(C2 C1)

So you can rewrite your EquivalentClasses as:

SubClassOf(ObjectSomeValuesFrom(:format :Bar) :Foo)
SubClassOf(:Foo ObjectSomeValuesFrom(:format :Bar))

This would maybe simplify understanding of what entailments your ontology makes.

Now, if you say:

ClassAssertion(:x :Sna)
ObjectPropertyAssertion(:format :x :someBar)

I am assuming that you want to say:

ClassAssertion(:x :Sna)
ClassAssertion(:someBar :Bar)
ObjectPropertyAssertion(:format :x :someBar)

This entails that :x is both :Foo and :Sna, which is certainly possible because :Foo is a subclass of :Sna.

When you say

ClassAssertion(:y :NotASna)
ObjectPropertyAssertion(:format :y :someOtherBar)

I assume that you mean:

ClassAssertion(:y :NotASna)
ClassAssertion(:someOtherBar :Bar)
DisjointClasses(:NotASna :Sna)
ObjectPropertyAssertion(:format :y :someOtherBar)

This is a logical inconsistency because :y is entailed to be a :Foo (which is a subclass of :Sna), but at the same time :y is asserted to be in a class that is disjoint from :Sna.

Note also that we didn't use the knowledge that

SubClassOf(:Foo ObjectSomeValuesFrom(:format :Bar))

which followed from the EquivalentClasses-axiom.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文