Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[QA] JSON response of a system is not allowed to have any additional information #409

Open
MichaelRoeder opened this issue Feb 10, 2022 · 0 comments

Comments

@MichaelRoeder
Copy link
Member

Problem

When a system sends any additional information, the JSON parser of GERBIL QA is configured to abort the parsing process. This may lead to additional development effort on the system side to remove additional information.

An example is the following response

{"questions": [{"id": "1", "question": [{"language": "en", "string": "What is the alma mater of the chancellor of Germany Angela Merkel?"}], "query": {"sparql": "SELECT ?Almamater WHERE { <http://dbpedia.org/resource/Angela_Merkel> <http://dbpedia.org/ontology/almaMater> ?Almamater }"}, "answers": [{"head": {"link": [], "vars": ["Almamater"]}, "results": 
{"distinct": false,
 "ordered": true,
 "bindings": [{"Almamater": {"type": "uri", "value": "http://dbpedia.org/resource/Leipzig_University"}}, {"Almamater": {"type": "uri", "value": "http://dbpedia.org/resource/German_Academy_of_Sciences_at_Berlin"}}]}}]}]}

It causes the following exception

2022-02-10 12:42:41,996 [pool-35-thread-17] ERROR [org.aksw.gerbil.annotator.decorator.ErrorCountingAnnotatorDecorator] - <Got an Exception from the annotator ExampleAnnotator>
org.aksw.gerbil.exceptions.GerbilException: Couldn't parse the response.
        at org.aksw.gerbil.annotator.impl.qa.ExtendedQALDBasedWebService.answerQuestion(ExtendedQALDBasedWebService.java:123) ~[classes/:?]
        at org.aksw.gerbil.annotator.decorator.TimeMeasuringAnnotatorDecorator.performQATask(TimeMeasuringAnnotatorDecorator.java:276) ~[classes/:?]
        at org.aksw.gerbil.annotator.decorator.TimeMeasuringAnnotatorDecorator$TimeMeasuringQASystem.answerQuestion(TimeMeasuringAnnotatorDecorator.java:205) ~[classes/:?]
        at org.aksw.gerbil.annotator.decorator.ErrorCountingAnnotatorDecorator.performQATask(ErrorCountingAnnotatorDecorator.java:401) [classes/:?]
        at org.aksw.gerbil.annotator.decorator.ErrorCountingAnnotatorDecorator$ErrorCountingQASystem.answerQuestion(ErrorCountingAnnotatorDecorator.java:213) [classes/:?]
        at org.aksw.gerbil.annotator.decorator.SingleInstanceSecuringAnnotatorDecorator.performQATask(SingleInstanceSecuringAnnotatorDecorator.java:352) [classes/:?]
        at org.aksw.gerbil.annotator.decorator.SingleInstanceSecuringAnnotatorDecorator$SingleInstanceSecuringQASystem.answerQuestion(SingleInstanceSecuringAnnotatorDecorator.java:211) [classes/:?]
        at org.aksw.gerbil.execute.ExperimentTask.runExperiment(ExperimentTask.java:530) [classes/:?]
        at org.aksw.gerbil.execute.ExperimentTask.run(ExperimentTask.java:167) [classes/:?]
        at org.aksw.simba.topicmodeling.concurrent.workers.WorkerImpl.run(WorkerImpl.java:44) [topicmodeling.concurrent-0.0.2-SNAPSHOT.jar:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_191]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_191]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_191]
Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "distinct" (class org.aksw.qa.commons.load.json.EJResults), not marked as ignorable (one known property: "bindings"])
 at [Source: (ByteArrayInputStream); line: 1, column: 298] (through reference chain: org.aksw.qa.commons.load.json.QaldJson["questions"]->java.util.Vector[0]->org.aksw.qa.commons.load.json.QaldQuestionEntry["answers"]->java.util.Vector[0]->org.aksw.qa.commons.load.json.EJAnswers["results"]->org.aksw.qa.commons.load.json.EJResults["distinct"])
        at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61) ~[jackson-databind-2.9.10.5.jar:2.9.10.5]
        at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:823) ~[jackson-databind-2.9.10.5.jar:2.9.10.5]
        at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1153) ~[jackson-databind-2.9.10.5.jar:2.9.10.5]
        at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1589) ~[jackson-databind-2.9.10.5.jar:2.9.10.5]
        at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1567) ~[jackson-databind-2.9.10.5.jar:2.9.10.5]
        at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:294) ~[jackson-databind-2.9.10.5.jar:2.9.10.5]
        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151) ~[jackson-databind-2.9.10.5.jar:2.9.10.5]
        at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129) ~[jackson-databind-2.9.10.5.jar:2.9.10.5]
        at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288) ~[jackson-databind-2.9.10.5.jar:2.9.10.5]
        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151) ~[jackson-databind-2.9.10.5.jar:2.9.10.5]
        at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:286) ~[jackson-databind-2.9.10.5.jar:2.9.10.5]
        at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245) ~[jackson-databind-2.9.10.5.jar:2.9.10.5]
        at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:27) ~[jackson-databind-2.9.10.5.jar:2.9.10.5]
        at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129) ~[jackson-databind-2.9.10.5.jar:2.9.10.5]
        at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288) ~[jackson-databind-2.9.10.5.jar:2.9.10.5]
        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151) ~[jackson-databind-2.9.10.5.jar:2.9.10.5]
        at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:286) ~[jackson-databind-2.9.10.5.jar:2.9.10.5]
        at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245) ~[jackson-databind-2.9.10.5.jar:2.9.10.5]
        at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:27) ~[jackson-databind-2.9.10.5.jar:2.9.10.5]
        at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129) ~[jackson-databind-2.9.10.5.jar:2.9.10.5]
        at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288) ~[jackson-databind-2.9.10.5.jar:2.9.10.5]
        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151) ~[jackson-databind-2.9.10.5.jar:2.9.10.5]
        at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4014) ~[jackson-databind-2.9.10.5.jar:2.9.10.5]
        at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3071) ~[jackson-databind-2.9.10.5.jar:2.9.10.5]
        at org.aksw.qa.commons.load.json.ExtendedQALDJSONLoader.readJson(ExtendedQALDJSONLoader.java:115) ~[commons-0.4.22.jar:0.4.22]
        at org.aksw.gerbil.annotator.impl.qa.ExtendedQALDBasedWebService.answerQuestion(ExtendedQALDBasedWebService.java:110) ~[classes/:?]
        ... 12 more

Solution

The parser should be allowed to ignore key-value pairs that it can not match.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant