1

hasResponseTypeというデータ型プロパティを持つ ResponseInformation というクラスがあります。これには、「Accept」、「Decline」、および「Provisional」の文字列値のみが必要です。

これを、ResponseType と呼ばれるクラスの個人のセットとしてモデル化できることを理解しています。これは、それぞれ受け入れ、拒否、および暫定と呼ばれ、owl:oneOf 公理は、クラス ResponseType がこのセットの「1 つ」と正確に同等であることを示しています。インスタンスの。しかし、OWL 2 が値のリストをデータ型プロパティの範囲としてサポートしていることに気付きました。たとえば、 Protege のhasResponseTypeプロパティの範囲として次のように指定できます: {"Accept" , "Decline" , "Provisional"}

追加のクラスや個体などを作成する必要がないため、これは 2 つのオプションのうち簡単なように思えます。

4

2 に答える 2

0

Antoine Zimmermann's answerは、これをかなりうまく行う方法をカバーしていると思います。2 つのアプローチを実装するために必要な労力が似ていることに同意します。私はこれをテストしていませんが、型指定されたリテラルは個人よりもはるかに高速に等値と不等値を比較できると期待しているため、一部のタイプの推論はデータ型オプションでより効率的であると予想しています。

ただし、少なくとも 2 つの理由から、列挙された個人 ( hasResponseTypeがオブジェクト プロパティになるように) を使用することをお勧めします。

  1. Atoine さんの回答が指摘しているように、応答の型が実際に文字列であるかどうかはやや疑わしいです。代わりに、応答タイプには、文字列であるラベル (または異なる言語などの複数のラベル) があるようです。
  2. (これが私の主なポイントです。) 応答タイプについて何か言いたい場合、それらは個人である必要があります。たとえば、応答タイプが個人の場合、追加のタイプを与えることができます。

    Accept a GuaranteedResponse
    Decline a not GuaranteedResponse
    Provisional a not GuaranteedResponse
    

    次に、たとえば、not GuaranteedRepsonses特定のポーラーが収集した数を尋ねることができます。コードを各応答タイプに関連付けることもできます。

    Accept hasCode "x789"
    Decline hasCode "x234"
    Provisional hasCode "x900"
    

    そして、これを応答に渡します:

    hasResponseCode subPropertyOf hasResponseType o hasCode
    

    ResponseTypes がリテラルの場合、リテラルはステートメントの対象にならないため、これを行うことはできません。

于 2013-09-13T13:01:32.703 に答える