0

我有两个属性

  • 赢了
  • hasQualifiedTo

两者的范围都是竞争,并且域不限于任何类别。我想将模型限制如下:

  • 要赢得 (hasWon) 比赛,必须有资格参加 (hasQualifiedTo) 比赛。如何在 Protege 中做到这一点以及如何在 DL 语法中表达它?

感谢任何建议。

4

1 回答 1

1

要赢得 (hasWon) 比赛,必须有资格参加 (hasQualifiedTo) 比赛。如何在 Protege 中做到这一点以及如何在 DL 语法中表达它?

至少有两种解释方式。您的意思是 (a) 要赢得比赛,必须有资格参加比赛,但不一定是同一个人;或 (b) 要赢得比赛,必须有资格参加同一比赛。(b) 实际上更容易一些;(a) 更复杂。

如果比赛必须相同

如果比赛必须相同,那么您是说

        hasWon(x,y) → hasQualifiedTo(x,y)

这是一个子属性公理,通常写成

        hasWon ⊑ hasQualifiedTo

您可以在 Protege 中轻松做到这一点:

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 中打开)中的样子。

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 .
于 2015-05-05T16:11:30.093 回答