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

Ignoring unknown fields in QALD #69

Merged
merged 1 commit into from
Apr 28, 2022
Merged

Conversation

nikit91
Copy link
Collaborator

@nikit91 nikit91 commented Apr 28, 2022

Hi @RicardoUsbeck,
Is it fine if we just ignore the unknown fields in the QALD format?

I recently faced a problem where the query results from the dbpedia endpoint introduced new fields which were not part of the
QALD format previously. However, these newly introduce fields do not affect the existing expected functionality and can be ignored. Below is the stacktrace for the problem:

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: (FileInputStream); line: 23, column: 42] (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.qa.commons.load.json.ExtendedQALDJSONLoader.readJson(ExtendedQALDJSONLoader.java:143) ~[commons-0.4.22.jar:0.4.22]
	at org.aksw.qa.commons.load.json.ExtendedQALDJSONLoader.readJson(ExtendedQALDJSONLoader.java:137) ~[commons-0.4.22.jar:0.4.22]
	at org.aksw.gerbil.dataset.impl.qald.FileBasedQALDDataset.init(FileBasedQALDDataset.java:95) ~[classes/:?]
	at org.aksw.gerbil.dataset.AbstractDatasetConfiguration.getPreparedDataset(AbstractDatasetConfiguration.java:87) ~[classes/:?]
	at org.aksw.gerbil.dataset.AbstractDatasetConfiguration.getDataset(AbstractDatasetConfiguration.java:74) ~[classes/:?]
	at org.aksw.gerbil.annotator.InstanceListBasedConfigurationImpl.loadAnnotator(InstanceListBasedConfigurationImpl.java:69) ~[classes/:?]
	at org.aksw.gerbil.annotator.InstanceListBasedConfigurationImpl.getAnnotator(InstanceListBasedConfigurationImpl.java:50) ~[classes/:?]
	... 5 more

What is your opinion of this?

ignores unknown fields while reading the QALD json
@RicardoUsbeck
Copy link
Member

Huh, can you show me the json line where it happens? I wasn't aware of a new field (/CC @xixi019 )

@RicardoUsbeck
Copy link
Member

I do not know if this is it but these, Xi, should also be removed from https://raw.githubusercontent.com/KGQA/QALD_10/main/data/qald_10/qald_10.json

        {
            "id": 42,
            "aggregation": false,
            "question": [
                {
                    "language": "en",
                    "string": "How long did the Han dynasty last?"
                },
                {
                    "language": "zh-cn",
                    "string": "汉朝持续了多长时间?"
                },
                {
                    "language": "de",
                    "string": "Wie lange bestand die Han-Dynastie?"
                },
                {
                    "language": "ru",
                    "string": "Как долго просуществовала династия Хань ?"
                }
            ],
            "answers": [
                {
                    "head": {
                        "vars": [
                            "result"
                        ]
                    },
                    "results": {
                        "bindings": [
                            {}
                        ]
                    }
                }
            ],
            "query": {
                "sparql": "SELECT ?result WHERE {wd:Q7209 wdt:P571 ?st; wdt:P576 ?et. BIND((?et - ?st) AS ?result)}"
            }
        },

@nikit91
Copy link
Collaborator Author

nikit91 commented Apr 28, 2022

Huh, can you show me the json line where it happens? I wasn't aware of a new field (/CC @xixi019 )

For example (do not mind the wrongly predicted sparql ;) ):

{
    "id": 71,
    "question": [
        {
            "language": "en",
            "string": "How many students does the Free University of Amsterdam have?"
        }
    ],
    "query": {
        "sparql": "SELECT (COUNT(DISTINCT ?selvar) AS ?c) WHERE { <http://dbpedia.org/resource/Amsterdam_University_College> <http://dbpedia.org/ontology/country> ?selvar .  }"
    },
    "answers": [
        {
            "head": {
                "link": [],
                "vars": [
                    "c"
                ]
            },
            "results": {
                "distinct": false,
                "ordered": true,
                "bindings": [
                    {
                        "c": {
                            "type": "typed-literal",
                            "datatype": "http://www.w3.org/2001/XMLSchema#integer",
                            "value": "1"
                        }
                    }
                ]
            }
        }
    ]
}

@RicardoUsbeck
Copy link
Member

Ah, that happens in the training file (/CC @Perevalov )I would say, we can safely ignore it. Aleksandr, what do you think?

@Perevalov
Copy link
Contributor

Ah, that happens in the training file (/CC @Perevalov )I would say, we can safely ignore it. Aleksandr, what do you think?

From the example by @nikit91, I understood that the:

                "distinct": false,
                "ordered": true,

and

"datatype": "http://www.w3.org/2001/XMLSchema#integer",

is something that should be ignored?

If yes, then I agree. It does not affect anything.

@RicardoUsbeck
Copy link
Member

Perfect, so let's go ahead here and resolve the QALD-10 test issue (empty answers in the repo).

@RicardoUsbeck RicardoUsbeck merged commit 977fa9e into master Apr 28, 2022
@MichaelRoeder
Copy link
Contributor

It would be nice to have this fix for GERBIL QA. 😉
Do you foresee to release and deploy a new version of qa.commons, soon? I would also be fine with a SNAPSHOT version.
Where will you deploy it? On the AKSW archiva or somewhere else? 🤔

@RicardoUsbeck
Copy link
Member

Erm...no, I am not foreseeing working on this repo anytime soon actually. But as far as I know, you could also mvn deploy it to archiva (honestly, I do not even have the keys anymore due to laptop changes)

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

Successfully merging this pull request may close these issues.

None yet

4 participants