Одно из решений состоит в следующем, используя отрицание Пролога:
is_unique(X) :- fruitid(X,T1,I1),
\+ exists_other_fruit(X,T1,I1).
exists_other_fruit(X,T1,I1) :-
fruitid(X,T2,I2),
(T1,I1) \= (T2,I2).
Для обработки ошибок вы можете использовать оператор Пролог if / 3 (определенный, например, в SICStus Prolog; я не знаю о других Прологах) и делать следующее:
is_unique2(X) :-
if(fruitid(X,T1,I1),\+ exists_other_fruit(X,T1,I1),
(print('Unknown Fruit: '), print(X),nl,fail)).
Код работает следующим образом:
| ?- is_unique(X).
X = 'Pear' ? ;
no
| ?- is_unique2(X).
X = 'Pear' ? ;
no
| ?- is_unique2('Apple').
no
| ?- is_unique2(pineapple).
Unknown Fruit: pineapple