如何在OWL中建模独家或?

问题描述 投票:0回答:1

I OWL 我想对某个类仅允许一个或另一个子类的情况进行建模。我想建立一个限制模型,允许属性只能像

(A XOR B) OR (some general superclass)
那样链接到多个实例

X p A1 .
X p A2 .
X p M . # OK

Y p K .
Y p A3 .
Y p B1 . #Not ok, A and B linked.

具体例子:

我有一辆班级推车,每辆推车正好有 n 个座位。

有两种类型的座位(成人、儿童)以及未指定数量的其他部分,这是座位的超类。它们都是通过

:hasPart
关系联系在一起的。

:Cart a owl:Class .
:Part o owl:Class .
:hasPart a owl:ObjectProperty;
:rdfs:domain :Part .

:Seat a owl:Class ; rdfs:subClassOf :Part .
:AdultSeat a owlClass; rdfs:subClassOf :Seat .
:ChildSeat a owlClass; rdfs:subClassOf :Seat .

[a owl:AllDisjointClasses; owl:members ( .<every class>. )]

# some other parts

通过 OWL,我现在想对购物车可以有 AdultSeats x 或 ChildSeats 进行建模。

我认为我需要两个相反的限制来模拟。 我还在研究如何表述这两种情况。

但是,鉴于我拥有它们,我仍然想知道如何将

:hasPart
限制为其中一种情况,同时仍然允许链接其他部分。

owl semantic-web xor restriction knowledge-graph
1个回答
0
投票

您正在寻找课程的不相交。您可以使用

disjointWith
:

指定它
:AdultSeat owl:disjoinWith :ChildSeat.

这意味着

Seat
可以是
AdultSeat
ChildSet
,但不能同时是两者。

您可以使用相同的方法来介绍

CartWithOnlyAdultSeats
CartWithOnlyChildSeats
类。

© www.soinside.com 2019 - 2024. All rights reserved.