How to use the APE pack?

In the swipl top level I did pack_install('ape') and that successfully installed. But when I try to use the module I get an error. Does this mean that the library got installed someplace it can’t be found!?!?

ERROR: source_sink `utils/drs_to_ascii' does not exist
ERROR: In:
ERROR:   [20] throw(error(existence_error(source_sink,...),_217322))
ERROR:   [16] '$resolve_source_path'(utils/drs_to_ascii,_217354,[if(not_loaded),...]) at /opt/local/lib/swipl/boot/init.pl:2487
ERROR:   [15] '$load_file_e'(utils/drs_to_ascii,user,[if(not_loaded),...]) at /opt/local/lib/swipl/boot/init.pl:2456
ERROR:   [14] '$load_file'(utils/drs_to_ascii,user,[if(not_loaded),...]) at /opt/local/lib/swipl/boot/init.pl:2423
ERROR:    [9] toplevel_call(user:user: ...) at /opt/local/lib/swipl/boot/toplevel.pl:1173
ERROR: 
ERROR: Note: some frames are missing due to last-call optimization.
ERROR: Re-run your program in debug mode (:- debug.) to get more detail.

I don’t know enough about where SWI looks for things to resolve this on my own. Any suggestions? Or is this indicate some other problem?

I seem to have figured it out. This largely comes from my unfamiliarity with SWI’s module system, apparently.

Once the pack is installed this now works.

?- use_module(library(ape)).
true.

?- use_module(ape(utils/drs_to_ace), [drs_to_ace/2]).
true.

?- drs_to_ace(drs([A, B], [object(A, cat, countable, na, eq, 1)-1/4, predicate(B, own, named('Adam'), A)-1/2]), AceSentenceList).
AceSentenceList = [['Adam owns a cat.']].
1 Like