我有两个属性
- 赢了
- hasQualifiedTo
两者的范围都是竞争,并且域不限于任何类别。我想将模型限制如下:
- 要赢得 (hasWon) 比赛,必须有资格参加 (hasQualifiedTo) 比赛。如何在 Protege 中做到这一点以及如何在 DL 语法中表达它?
感谢任何建议。
要赢得 (hasWon) 比赛,必须有资格参加 (hasQualifiedTo) 比赛。如何在 Protege 中做到这一点以及如何在 DL 语法中表达它?
至少有两种解释方式。您的意思是 (a) 要赢得比赛,必须有资格参加比赛,但不一定是同一个人;或 (b) 要赢得比赛,必须有资格参加同一比赛。(b) 实际上更容易一些;(a) 更复杂。
如果比赛必须相同,那么您是说
hasWon(x,y) → hasQualifiedTo(x,y)
这是一个子属性公理,通常写成
hasWon ⊑ hasQualifiedTo
您可以在 Protege 中轻松做到这一点:
由于两者的范围都已经是比赛,你可以肯定,如果有人赢得了什么,那么那是一场比赛。现在你也想说,赢得比赛的,也一定有资格参加某种比赛。这是一个域公理。您可以简单地将类(hasQualifiedTo some Competition)添加为hasWon的域。那么你可以推断,如果某样东西赢得了比赛,那么它也有资格参加一些比赛。我不知道在 DL 语法中表达域和范围有一种完美的标准方式,但你可以说属性 P 的域是 D 具有如下公理:
⊤ ⊑ ∀ P -1 .D
这表示每个 X(即 ⊤ 的每个元素)是这样的,如果 P -1 (X,Y)(这意味着 P(Y,X)),则 Y ∈ D。这意味着P 中的每个主题(subject,object) 断言必须是 D 的一个元素。所以,在本例中,我们有:
⊤ ⊑ ∀ hasWon -1 .(∃ hasQualifiedTo)
用简单的英语来说,如果有人赢得了某些东西,那么他们也有资格获得某些东西(但不一定是相同的东西)。这是 Protege 和生成的本体(您可以下载并在 Protege 中打开)中的样子。
@prefix : <http://www.semanticweb.org/taylorj/ontologies/2015/4/untitled-ontology-39#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
:Competition a owl:Class .
:qualified a owl:ObjectProperty ;
rdfs:range :Competition .
:won a owl:ObjectProperty ;
rdfs:domain [ a owl:Restriction ;
owl:onProperty :qualified ;
owl:someValuesFrom :Competition
] ;
rdfs:range :Competition .