Я использую AllegroGraph 4. У меня есть тройной магазин, и я пытаюсь добавить новые тройки, только если они еще не существуют.
Вот мой пролог-запрос:
(select (?news) (alfas ?news) (a-- ?news !tst:has-annotation !tst:Test)))
, где alfas проверяет условие (оно работает нормально), а a--
определяется следующим образом:
(<-- (a-- ?s ?p ?o)
;; Fails unless all parts ground.
(lisp (not (triple-exists-p ?s ?p ?o)))
(lisp (add-triple ?s ?p ?o)))
Я также пытался определить это так:
(<-- (a-- ?s ?p ?o)
;; Fails unless all parts ground.
(lisp (not (get-triple :s ?s :p ?p :o ?o)))
(lisp (add-triple ?s ?p ?o)))
Но тройка добавляется в любом случае, независимо от того, существует она или нет. Почему?