2

オントロジーで次の状況を表現するのに問題があります。

4 人の投票者と 4 票があるとします (つまり、投票と有権者の間に 1 対 1 のマッピングがあります)。人々は賛成か反対かのどちらかに投票できます。3 人の投票の結果がわかれば、4 人目の投票を推測できるはずです。

繰り返しますが、ジョン、ボブ、メアリー、キャロルがそれぞれ投票します。4人なので4票です。投票の結果は引き分けです (賛成 2 人、反対 2 人)。その後、推論者は、ボブとジョンが反対票を投じたと判断します。次に、推論者は、Mary と Carol が賛成票を投じたと推測できるはずです。

現在、私は Jena の Java API を使用してオントロジーを構築しており、Jena Reasoner を使用して推論しているため、Jena がサポートするルール/セマンティクスを使用したいと考えています。

4

2 に答える 2

1

これは OWL オントロジーで行いますが、複雑です。まず、人が 1 票しか持っていないという事実をモデル化する必要があります。次に、ジョン、ボブ、メアリー、キャロルが投票したことを知っておく必要があります。2 つの「はい」と 2 つの「いいえ」があることを知っておく必要があります。ボブとジョンが「ノー」に投票したこと、そして彼らは 2 人であり、仮名を持った 1 人ではないことを知っておく必要があります。Mary と Carol は John と Bob とは違うことを知っておく必要があります。したがって、Turtle では次のようになります。

:votes  a  owl:FunctionalProperty .
:John  :votes  "no" .
:Bob  :votes  "no";
    owl:differentFrom  :John .
:Mary  a  [
        owl:onProperty  :votes;
        owl:minCardinality  1
    ];
    owl:differentFrom  :Bob, :John .
:Carol  a  [
        owl:onProperty  :votes;
        owl:minCardinality  1
    ];
    owl:differentFrom  :Bob, :John .
_:someone  a  [ owl:onProperty  :votes; owl:hasValue  "no" ];
    owl:differentFrom  _:someoneelse .
_:someoneelse  a  [ owl:onProperty  :votes; owl:hasValue  "no" ] .
_:anotherone  a  [ owl:onProperty  :votes; owl:hasValue  "yes" ];
    owl:differentFrom  _:anotheroneelse .
_:anotheroneelse  a  [owl:onProperty  :votes; owl:hasValue  "yes" ] .
[ owl:onProperty  :votes; owl:hasValue  "no" ]
    owl:oneOf  ( _:someone _:someoneelse ) .
[ owl:onProperty  :votes; owl:hasValue  "yes" ]
    owl:oneOf  ( _:anotherone _:anotheroneelse ) .

ここで本当に難しいのは、2 つの「はい」と 2 つの「いいえ」があることを表現することです。コンパクトにしたのでOWL 2 DLにはありませんが、OWL 2 DLのオントロジーにできるはずです。

これにより、複数の投票または投票をモデル化することはできないことに注意してください。さらに複雑なソリューションが必要になります (それでも実行可能です)。

于 2013-09-02T08:06:00.427 に答える