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)))
ただし、トリプルが既に存在するかどうかに関係なく、とにかく追加されます。なんで?