2

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)))

ただし、トリプルが既に存在するかどうかに関係なく、とにかく追加されます。なんで?

4

1 に答える 1