[Attempto] [Illegal argument: arglist_namevaluelist/2 error]

Kaarel Kaljurand kaljurand at gmail.com
Wed Feb 3 00:21:57 CET 2016


Hi,

regarding starting/stopping the APE server, the idea would be to use
the same session for multiple inputs/outputs and even for multiple
users. I'm not sure what's the best way to start/stop the server
programmatically. We have used launchd on MacOS and cron jobs on
Linux, and simply left the server running continuously, automatically
starting it on reboot.

On Linux you can stop the server by killing its process.

$ nohup swipl -x ape.exe -- -httpserver -port 8001 > stdout.txt 2> stderr.txt &
[1] 6408

$ ps ax | fgrep "ape.exe"
 6408 pts/1    Sl     0:00 swipl -x ape.exe -- -httpserver -port 8001
 6412 pts/1    S+     0:00 fgrep --color=auto ape.exe

$ kill 6408

$ ps ax | fgrep "ape.exe"
 6414 pts/1    S+     0:00 fgrep --color=auto ape.exe
[1]+  Terminated              nohup swipl -x ape.exe -- -httpserver
-port 8001 > stdout.txt 2> stderr.txt

You should search for a solution that best matches your OS and
programming language to perform these operations in the simplest and
most reliable manner.

Best,
Kaarel

On Mon, Feb 1, 2016 at 12:07 PM, Mohammed Nasri
<mohammed.nasri at gmail.com> wrote:
> Hi Kaarel,
>
> ---------------
> Sincères salutations
> Mohammed NASRI
>
> 2016-01-31 23:38 GMT+00:00 Kaarel Kaljurand <kaljurand at gmail.com>:
>>
>> Hi,
>>
>> you don't need to have an internet connection to use the HTTP-based
>> service (i.e. APEWebservice). Just start the server:
>>
>>     ./ape.exe -httpserver
>>
>> and then call from your application, e.g.
>>
>> http://localhost:8000/?text=Every+man+is+a+human.&solo=drsxml
>
>
> Ok, I think it's a good solution. the only concern is the fact that in our
> platform (Amine), things must not be complicated for users, which are often
> not computer scientists, so they would not have to run any external program.
> If the APE HTTP server start/stop operations can be performed
> programmatically, it would be perfect, the platform runs the server before
> the analysis of the ACE text, and stop it once the DRS is generated.
>
> What do you think ? and if the command line ape.exe -httpserver runs the
> server, how to stop it ?
>
>>
>>
>> and parse the result. Actually the Java Interface for APE does the
>> parsing for you, see the Javadoc
>> http://attempto.ifi.uzh.ch/site/docs/java/apidocs/index.html and a
>> concrete example how to use the webservice:
>>
>>
>> https://github.com/Attempto/APE/blob/master/java/src/test/java/ch/uzh/ifi/attempto/ape/APEWebserviceTest.java
>>
>> i.e. you just need to start the server and have attempto-ape.jar on
>> your classpath to be able to use it via simple Java methods.
>
>
> It's perfect.
>
>>
>>
>> I agree, getting the JPL-based access (i.e. APELocal) to work is
>> complicated. That's one of the reasons I prefer the HTTP-interface.
>> Your error (NoClassDefFoundError) indicates that JPL is not found on
>> the Java class path. Have you tried the instructions on
>> https://github.com/Attempto/APE/tree/master/java? I just tried, and
>> all the tests worked (mvn test). I had to make the following
>> modification:
>>
>>
>> https://github.com/Attempto/APE/commit/b1eab4e0640ab09fecdeb69ccccb8473dd4af947
>>
>
> I made the modifications, but I have probably a jar versionning problem, the
> version of my jpl is 7 (because I have SWI-Prolog 7.3.16), which is, I
> suppose, not compatible with the attempto-ape.jar.
>
>> You probably need to do something similar. (We don't currently have a
>> more general solution, that would work out of the box.)
>>
>> I'd prefer to continue this discussion on the mailing list, in this
>> way other users can profit from it as well.
>>
>>
>> Best,
>> Kaarel
>>
>>
>> On Sun, Jan 31, 2016 at 11:33 PM, Mohammed Nasri
>> <mohammed.nasri at gmail.com> wrote:
>> > Hi Kaarel,
>> >
>> > Thank you for you answers and your suggestions.
>> >
>> > For information, here is the exact command line I generate :
>> > /Users/mohammednasri/Travail/TLN/tln/tools/APE/ape.exe -text "John eats
>> > an
>> > apple." -solo drsxml
>> >
>> > When I copy/paste this line and run it in the terminal, it seems to be
>> > correct, but with the java application, I get the following error :
>> > ERROR: Illegal argument: arglist_namevaluelist/2: eats
>> >
>> > Otherwise, I cannot use the APE HTTP interface if it requires an
>> > internet
>> > connection.
>> >
>> > I suppose, on the other hand, that the Java bridge is the best solution,
>> > if
>> > it calls the locat APE instance. The problem with this bridge is, in my
>> > opinion, so complicated to implement. I tried many times but in vain.
>> > Today,
>> > I began from the begining, I installed the SWI prolog 7.3.16
>> > (recommended
>> > for mac os El Captain), it contains the jpl.jar library and I created a
>> > new
>> > java application. In this application I added the attempto-ape.jar and
>> > the
>> > jpl.jar libraries, I created a sample class with the following code :
>> >
>> > String s = APELocal.getInstance().getSoloOutput("John eats an apple.",
>> > OutputType.DRSXML);
>> > System.out.println(s);
>> >
>> > But I get this error : Exception in thread "main"
>> > java.lang.NoClassDefFoundError: jpl/Term
>> >
>> > I tried an other solution, by following the steps you recommend in the
>> > https://github.com/Attempto/APE/tree/master/java.
>> > I created a new maven project, with the pom you gave in the URL. But I
>> > always get the error that the artifact jpl:jpl:jar:6.4.1 is missing, I
>> > tried
>> > others versions of the jar: 2.0.2 and 1.0.1 but in vain.
>> >
>> > Now if you already have a java project with all the dependencies or a
>> > java
>> > project that successefully run the APE local project, I would be very
>> > thankfull if you can shared it with me.
>> >
>> > Best regards.
>> >
>> > ---------------
>> > Sincères salutations
>> > Mohammed NASRI
>> >
>> > Hi,
>> >
>> > it's hard to tell for sure without seeing the actual command line that
>> > is generated by the application, but I suspect that the quotation
>> > marks are not represented correctly and APE thinks that "eats" is not
>> > meant to be part of the input text but some (unsupported) command.
>> >
>> > May I suggest to call APE via its HTTP interface
>> > (https://github.com/Attempto/APE#http-interface-to-ape) or the Java
>> > bridge (https://github.com/Attempto/APE/tree/master/java). It would be
>> > _much_ faster and would also avoid errors in commandline generation.
>> >
>> > Best,
>> > Kaarel
>> >
>> > On Fri, Jan 29, 2016 at 4:59 PM, Mohammed Nasri
>> > <mohammed.nasri at gmail.com> wrote:
>> >> Hello,
>> >>
>> >> I developed a Java application that uses APE (Attempto Parser Engine).
>> >> In
>> >> this application, I get the ACE text from a input text field and then I
>> >> generate the command line to be passed to APE.
>> >>
>> >> For example, the command line I generate for the following example :
>> >> "John
>> >> eats an apple." is :
>> >>
>> >> APE_PATH/ape.exe -text "John eats an apple." -solo drsxml
>> >> or
>> >> APE_PATH/ape.exe -noclex -ulexfile CUSTOM_CLEX_PATH/clex_lexicon.pl
>> >> -text
>> >> "John eats an apple." -solo drsxml
>> >>
>> >> Depending on whether we use or not a custom clex file.
>> >>
>> >> When I run these two command lines in the terminal directly, APE works
>> >> fine
>> >> and prints the following same result:
>> >>
>> >> <?xml version="1.0" encoding="UTF-8"?>
>> >>
>> >> <DRS domain="A B">
>> >>   <object
>> >>       ref="A"
>> >>       noun="apple"
>> >>       struct="countable"
>> >>       unit="na"
>> >>       numrel="eq"
>> >>       num="1"
>> >>       sentid="1"
>> >>       tokid="4"/>
>> >>   <predicate
>> >>       ref="B"
>> >>       verb="eat"
>> >>       subj="named('John')"
>> >>       obj="A"
>> >>       sentid="1"
>> >>       tokid="2"/>
>> >> </DRS>
>> >>
>> >> But when I run this sentence within my application, I get this error :
>> >>
>> >> Illegal argument: arglist_namevaluelist/2: eats
>> >>
>> >> Do you have any idea of what can be the source of the issue ?
>> >>
>> >> Thank you.
>> >>
>> >>
>> >> ---------------
>> >> Sincères salutations
>> >> Mohammed NASRI
>
>


More information about the attempto mailing list