2

私は映画に関する知識ベースを持っています。私の俳優と女優の述語は次のようになります。

% actor(M,A,R) -- actor A played role R in movie M
% actress(M,A,R) -- actress A played role R in movie M

ナレッジ ベース内の個別の俳優と女優を数えようとしています。私は単に書くだろう:

count(Nr):-
setof(Name,actor(Movie,Name,Role),List1),
setof(Name,actress(Movie,Name,Role),List2),
length(List1,Nr1),
length(List2,Nr2),
Nr is Nr1+Nr2.

それは機能しませんが、そのように機能します:

count(Nr):-
setof(Name,(Movie^Role^actor(Movie,Name,Role)),List1),
setof(Name,(Movie^Role^actress(Movie,Name,Role)),List2),
length(List1,Nr1),
length(List2,Nr2),
Nr is Nr1+Nr2.

それで、その「^」は何ですか?

編集:すべての映画とすべての役割を1回だけ選択することについての何かのようです. しかし、私はまだ確信が持てません。

4

0 に答える 0