2016-06-21 5 views
0

OWLオントロジーでは、与えられたクラスはStudentである。私はので、私はクラスではなく、プロパティとしてStudentsPairをしたい クラス個体を他のクラス個体の組み合わせとして定義する

Student(x) and Student (y) --> StudentsPair(x,y) 

すなわち

、自動的 Studentのすべての可能な二重の組み合わせを計算し、このような方法で、学生の任意のペアである別のクラス StudentsPairを、定義したいです追加の機能( averagePerformanceForPairなど)を持つことがあります。

StudentPair((John, Alex)) 
StudentPair((John, Mary)) 
StudentPair((Alex, Mary)) 

例えば、

前提

Student(John) 
Student(Alex) 
Student(Mary) 
----------------- 

結論は推論は何とかこれらの新しい個人を作成する必要があります!これは可能ですか?

+0

最初は、それは9組(3×3)以降を作成しようとする方が簡単だろうだろうおそらく順序を制限する大きな方法はなく、自己ペアを防ぐのは難しいかもしれません。しかし、AKSWによれば、各生徒を他の生徒と関連付けることは可能ですが、別のクラスのインスタンスを存在させることはできません。 –

答えて

1

あなたは、あなたはそのようなことがうまくいくかもしれない、記述論理ルールを使用することができ、追加の役割studentが必要になります。

Student ≡ ∃student.Self 
student ◦ U ◦ student ⊑ StudentPair 
+0

コードの2行目に 'U'とは何か、そして' StudentPair'をプロパティとして意図しましたか?私は私の質問で述べているように、私はそれをクラスにしたいからです。 –

+0

バイナリリレーションを持つクラスは、単項リレーションです。そして、「U」は普遍的役割を果たすだろう。 OWLには変数がないので、通常はルールを使用する必要があります。しかし、あなたのケースでは、推論家がそれ自身がクラスのインスタンスであるインスタンスのペアをどのように作成すべきかはわかりません。これは高次論理のようで、一次論理ではないように思えます。しかし、私はよくわからないし、他の人があなたを助けるかもしれない。 – AKSW

+0

ここで使用されている構成は、ローリングと呼ばれ、[OWL 2ローリング](http://stackoverflow.com/questions/16989042/owl-2-rolification)を含む多くの他の質問で議論されています。 –

関連する問題