АллегроГраф проверяет существующую тройку - PullRequest
2 голосов
/ 01 февраля 2012

Я использую 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)))

Но тройка добавляется в любом случае, независимо от того, существует она или нет. Почему?

...