I have the following (working) predicate:
It is true, if ?user
and ?proposal
don't have a common ?opinion
or if they do, the ::value
of said ?opinion
is 0.
[(undecided? ?user ?proposal)
(or-join [?user ?proposal]
(not
[?user ::user/opinions ?opinion]
[?proposal ::proposal/opinions ?opinion])
(and
[?user ::user/opinions ?opinion]
[?proposal ::proposal/opinions ?opinion]
[?opinion ::value 0]))]
I suspect that I can improve it. I don't think I should have the clause [?user ::user/opinions ?opinion]
twice, but I can't figure it out. Can anyone can tell me if my suspicion is right and how I can improve the predicate?