petermr / ami3

Integration of cephis and normami code into a single base. Tests will be slimmed down
Apache License 2.0
17 stars 5 forks source link

amidict create issues #63

Open AmbrineH opened 3 years ago

AmbrineH commented 3 years ago

I am trying to create a dictionary from SPARQL query using amidict

The query I am using: amidict -vv --dictionary country --directory ami_12_08_2020/amidict7 --input ami_12_08_2020/country.xml create --informat wikisparqlxml --sparqlmap name=wikidataLabel,term=wikidataLabel,description=wikidataDescription,wikidataURL=wikidata,wikidataID=wikidata,wikipediaPage=wikipedia,wikipediaURL=wikipedia,_3166=_iso3166 --transformName wikidataID=EXTRACT(wikidataURL,.*/(.*)) --synonyms=synonym

but I am getting the error:

Version:

Generic values (DictionaryCreationTool)
================================
--testString        : d      null
--wikilinks         : d [Lorg.contentmine.ami.tools.AbstractAMIDictTool$WikiLink;@45fd9a4d
--datacols          : d      null
--hrefcols          : d      null
--informat          : m wikisparqlxml
--linkcol           : d      null
--namecol           : d      null
--outformats        : d [Lorg.contentmine.ami.tools.AbstractAMIDictTool$DictionaryFileFormat;@1a760689
--query             : d      null
--sparqlmap         : m {name=wikidataLabel, term=wikidataLabel, description=wikidataDescription, wikidataURL=wikidata, wikidataID=wikidata, wikipediaPage=wikipedia, wikipediaURL=wikipedia, _3166=_iso3166}
--sparqlquery       : d      null
--synonyms          : m  [ynonym]
--template          : d      null
--termcol           : d      null
--termfile          : d      null
--terms             : d      null
--transformName     : m {wikidataID=EXTRACT(wikidataURL,.*/(.*))}
--wptype            : d      null
--input             : d      null
--inputnamelist     : d      null
--help              : d     false
--version           : d     false
--dictionary        : d [country]
--directory         : d ami_12_08_2020\amidict7

Specific values (DictionaryCreationTool)
================================
--testString        : d      null
--wikilinks         : d [Lorg.contentmine.ami.tools.AbstractAMIDictTool$WikiLink;@45fd9a4d
--datacols          : d      null
--hrefcols          : d      null
--informat          : m wikisparqlxml
--linkcol           : d      null
--namecol           : d      null
--outformats        : d [Lorg.contentmine.ami.tools.AbstractAMIDictTool$DictionaryFileFormat;@1a760689
--query             : d      null
--sparqlmap         : m {name=wikidataLabel, term=wikidataLabel, description=wikidataDescription, wikidataURL=wikidata, wikidataID=wikidata, wikipediaPage=wikipedia, wikipediaURL=wikipedia, _3166=_iso3166}
--sparqlquery       : d      null
--synonyms          : m  [ynonym]
--template          : d      null
--termcol           : d      null
--termfile          : d      null
--terms             : d      null
--transformName     : m {wikidataID=EXTRACT(wikidataURL,.*/(.*))}
--wptype            : d      null
--input             : d      null
--inputnamelist     : d      null
--help              : d     false
--version           : d     false
--dictionary        : d [country]
--directory         : d ami_12_08_2020\amidict7
dictionaryName: country
{wikidataLabel=[name, term], wikidataDescription=[description], _iso3166=[_3166], wikipedia=[wikipediaPage, wikipediaURL], wikidata=[wikidataURL, wikidataID]}
WS>[wikidataID, name, description, term, wikidataURL, wikipediaPage, wikipediaURL, _3166]
Personal ami name: _3166
[_3166, description, name, term, wikidataID, wikidataURL, wikipediaPage, wikipediaURL]
No search values given for sparqlVariables in WikidataSparql
java.lang.NullPointerException
        at org.contentmine.ami.tools.dictionary.WikidataSparql.checkWikidataVariables(WikidataSparql.java:82)
        at org.contentmine.ami.tools.dictionary.WikidataSparql.readSparqlVariablesAndCreateMapping(WikidataSparql.java:117)
        at org.contentmine.ami.tools.dictionary.WikidataSparql.readSparqlCreateDictionary(WikidataSparql.java:107)
        at org.contentmine.ami.tools.dictionary.DictionaryCreationTool.createAndWriteDictionary(DictionaryCreationTool.java:411)
        at org.contentmine.ami.tools.dictionary.DictionaryCreationTool.runSub(DictionaryCreationTool.java:318)
        at org.contentmine.ami.tools.AbstractAMIDictTool.runSpecifics(AbstractAMIDictTool.java:433)
        at org.contentmine.ami.tools.AbstractAMIDictTool.runCommands(AbstractAMIDictTool.java:97)
        at org.contentmine.ami.tools.AbstractAMIDictTool.call(AbstractAMIDictTool.java:78)
        at org.contentmine.ami.tools.AbstractAMIDictTool.call(AbstractAMIDictTool.java:55)
        at picocli.CommandLine.executeUserObject(CommandLine.java:1933)
        at picocli.CommandLine.access$1100(CommandLine.java:145)
        at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2332)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2326)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2291)
        at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2159)
        at org.contentmine.ami.tools.AMIDict.enhancedLoggingExecutionStrategy(AMIDict.java:160)
        at picocli.CommandLine.execute(CommandLine.java:2058)
        at org.contentmine.ami.tools.AMIDict.main(AMIDict.java:87)

C:\Users\eless>
C:\Users\eless>
C:\Users\eless>amidict -vv --dictionary country --directory ami_12_08_2020/amidict7  --input ami_12_08_2020/country.xml create --informat wikisparqlxml --sparqlmap name=wikidataLabel,term=wikidataLabel,description=wikidataDescription,wikidataURL=wikidata,wikidataID=wikidata,wikipediaPage=wikipedia,wikipediaURL=wikipedia,_3166=_iso3166  --transformName wikidataID=EXTRACT(wikidataURL,.*/(.*)) --synonyms=synonym
Version:

Generic values (DictionaryCreationTool)
================================
--testString        : d      null
--wikilinks         : d [Lorg.contentmine.ami.tools.AbstractAMIDictTool$WikiLink;@45fd9a4d
--datacols          : d      null
--hrefcols          : d      null
--informat          : m wikisparqlxml
--linkcol           : d      null
--namecol           : d      null
--outformats        : d [Lorg.contentmine.ami.tools.AbstractAMIDictTool$DictionaryFileFormat;@1a760689
--query             : d      null
--sparqlmap         : m {name=wikidataLabel, term=wikidataLabel, description=wikidataDescription, wikidataURL=wikidata, wikidataID=wikidata, wikipediaPage=wikipedia, wikipediaURL=wikipedia, _3166=_iso3166}
--sparqlquery       : d      null
--synonyms          : m [synonym]
--template          : d      null
--termcol           : d      null
--termfile          : d      null
--terms             : d      null
--transformName     : m {wikidataID=EXTRACT(wikidataURL,.*/(.*))}
--wptype            : d      null
--input             : d      null
--inputnamelist     : d      null
--help              : d     false
--version           : d     false
--dictionary        : d [country]
--directory         : d ami_12_08_2020\amidict7

Specific values (DictionaryCreationTool)
================================
--testString        : d      null
--wikilinks         : d [Lorg.contentmine.ami.tools.AbstractAMIDictTool$WikiLink;@45fd9a4d
--datacols          : d      null
--hrefcols          : d      null
--informat          : m wikisparqlxml
--linkcol           : d      null
--namecol           : d      null
--outformats        : d [Lorg.contentmine.ami.tools.AbstractAMIDictTool$DictionaryFileFormat;@1a760689
--query             : d      null
--sparqlmap         : m {name=wikidataLabel, term=wikidataLabel, description=wikidataDescription, wikidataURL=wikidata, wikidataID=wikidata, wikipediaPage=wikipedia, wikipediaURL=wikipedia, _3166=_iso3166}
--sparqlquery       : d      null
--synonyms          : m [synonym]
--template          : d      null
--termcol           : d      null
--termfile          : d      null
--terms             : d      null
--transformName     : m {wikidataID=EXTRACT(wikidataURL,.*/(.*))}
--wptype            : d      null
--input             : d      null
--inputnamelist     : d      null
--help              : d     false
--version           : d     false
--dictionary        : d [country]
--directory         : d ami_12_08_2020\amidict7
dictionaryName: country
{wikidataLabel=[name, term], wikidataDescription=[description], _iso3166=[_3166], wikipedia=[wikipediaPage, wikipediaURL], wikidata=[wikidataURL, wikidataID]}
WS>[wikidataID, name, description, term, wikidataURL, wikipediaPage, wikipediaURL, _3166]
Personal ami name: _3166
[_3166, description, name, term, wikidataID, wikidataURL, wikipediaPage, wikipediaURL]
No search values given for sparqlVariables in WikidataSparql
java.lang.NullPointerException
        at org.contentmine.ami.tools.dictionary.WikidataSparql.checkWikidataVariables(WikidataSparql.java:82)
        at org.contentmine.ami.tools.dictionary.WikidataSparql.readSparqlVariablesAndCreateMapping(WikidataSparql.java:117)
        at org.contentmine.ami.tools.dictionary.WikidataSparql.readSparqlCreateDictionary(WikidataSparql.java:107)
        at org.contentmine.ami.tools.dictionary.DictionaryCreationTool.createAndWriteDictionary(DictionaryCreationTool.java:411)
        at org.contentmine.ami.tools.dictionary.DictionaryCreationTool.runSub(DictionaryCreationTool.java:318)
        at org.contentmine.ami.tools.AbstractAMIDictTool.runSpecifics(AbstractAMIDictTool.java:433)
        at org.contentmine.ami.tools.AbstractAMIDictTool.runCommands(AbstractAMIDictTool.java:97)
        at org.contentmine.ami.tools.AbstractAMIDictTool.call(AbstractAMIDictTool.java:78)
        at org.contentmine.ami.tools.AbstractAMIDictTool.call(AbstractAMIDictTool.java:55)
        at picocli.CommandLine.executeUserObject(CommandLine.java:1933)
        at picocli.CommandLine.access$1100(CommandLine.java:145)
        at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2332)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2326)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2291)
        at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2159)
        at org.contentmine.ami.tools.AMIDict.enhancedLoggingExecutionStrategy(AMIDict.java:160)
        at picocli.CommandLine.execute(CommandLine.java:2058)
        at org.contentmine.ami.tools.AMIDict.main(AMIDict.java:87)
Priya-Jk-15 commented 3 years ago

I was also trying to create disease dictionary with this sparql_file by the syntax

amidict -vv --dictionary disease --directory dic --input disease_icd10_sparql create --informat wikisparqlxml --sparqlmap name=wikidataLabel,term=wikidataLabel,description=wikidataDescription,wikidataURL=wikidata,wikipediaPage=wikipedia,_p494_icd10code=ICD_10 --transformName wikidataID=EXTRACT(wikidataURL,.*/(.*))  --synonyms=wikidataAltLabel

But got the error output

Version:

Generic values (DictionaryCreationTool)
================================
--testString        : d      null
--wikilinks         : d [Lorg.contentmine.ami.tools.AbstractAMIDictTool$WikiLink;@12abca6
--datacols          : d      null
--hrefcols          : d      null
--informat          : m wikisparqlxml
--linkcol           : d      null
--namecol           : d      null
--outformats        : d [Lorg.contentmine.ami.tools.AbstractAMIDictTool$DictionaryFileFormat;@1217633
--query             : d      null
--sparqlmap         : m {name=wikidataLabel, term=wikidataLabel, description=wikidataDescription, wikidataURL=wikidata, wikipediaPage=wikipedia, _p494_icd10code=ICD_10}
--sparqlquery       : d      null
--synonyms          : m [wikidataAltLabel]
--template          : d      null
--termcol           : d      null
--termfile          : d      null
--terms             : d      null
--transformName     : m {wikidataID=EXTRACT(wikidataURL,.*/(.*))}
--wptype            : d      null
--input             : d      null
--inputnamelist     : d      null
--help              : d     false
--version           : d     false
--dictionary        : d [disease]
--directory         : d       dic

Specific values (DictionaryCreationTool)
================================
--testString        : d      null
--wikilinks         : d [Lorg.contentmine.ami.tools.AbstractAMIDictTool$WikiLink;@12abca6
--datacols          : d      null
--hrefcols          : d      null
--informat          : m wikisparqlxml
--linkcol           : d      null
--namecol           : d      null
--outformats        : d [Lorg.contentmine.ami.tools.AbstractAMIDictTool$DictionaryFileFormat;@1217633
--query             : d      null
--sparqlmap         : m {name=wikidataLabel, term=wikidataLabel, description=wikidataDescription, wikidataURL=wikidata, wikipediaPage=wikipedia, _p494_icd10code=ICD_10}
--sparqlquery       : d      null
--synonyms          : m [wikidataAltLabel]
--template          : d      null
--termcol           : d      null
--termfile          : d      null
--terms             : d      null
--transformName     : m {wikidataID=EXTRACT(wikidataURL,.*/(.*))}
--wptype            : d      null
--input             : d      null
--inputnamelist     : d      null
--help              : d     false
--version           : d     false
--dictionary        : d [disease]
--directory         : d       dic
dictionaryName: disease
{wikidataLabel=[name, term], wikidataDescription=[description], ICD_10=[_p494_icd10code], wikipedia=[wikipediaPage], wikidata=[wikidataURL]}
WS>[name, description, term, wikidataURL, wikipediaPage, _p494_icd10code]
sparqlMap SHOULD contain key: wikidataID
sparqlMap SHOULD contain key: wikipediaURL
Personal ami name: _p494_icd10code
java.lang.NullPointerException
        at org.contentmine.ami.tools.dictionary.WikidataSparql.searchValuesInTarget(WikidataSparql.java:87)
        at org.contentmine.ami.tools.dictionary.WikidataSparql.checkWikidataVariables(WikidataSparql.java:80)
        at org.contentmine.ami.tools.dictionary.WikidataSparql.readSparqlVariablesAndCreateMapping(WikidataSparql.java:107)
        at org.contentmine.ami.tools.dictionary.WikidataSparql.readSparqlCreateDictionary(WikidataSparql.java:98)
        at org.contentmine.ami.tools.dictionary.DictionaryCreationTool.createAndWriteDictionary(DictionaryCreationTool.java:410)
        at org.contentmine.ami.tools.dictionary.DictionaryCreationTool.runSub(DictionaryCreationTool.java:317)
        at org.contentmine.ami.tools.AbstractAMIDictTool.runSpecifics(AbstractAMIDictTool.java:433)
        at org.contentmine.ami.tools.AbstractAMIDictTool.runCommands(AbstractAMIDictTool.java:97)
        at org.contentmine.ami.tools.AbstractAMIDictTool.call(AbstractAMIDictTool.java:78)
        at org.contentmine.ami.tools.AbstractAMIDictTool.call(AbstractAMIDictTool.java:55)
        at picocli.CommandLine.executeUserObject(CommandLine.java:1933)
        at picocli.CommandLine.access$1100(CommandLine.java:145)
        at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2332)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2326)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2291)
        at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2159)
        at org.contentmine.ami.tools.AMIDict.enhancedLoggingExecutionStrategy(AMIDict.java:160)
        at picocli.CommandLine.execute(CommandLine.java:2058)
        at org.contentmine.ami.tools.AMIDict.main(AMIDict.java:87)
petermr commented 3 years ago

Thanks, Please can each of you post the of your Wikidata SPARQL output. It's possible that there's an undefined name. Meanwhile I will add in some debug statements.

-- Peter Murray-Rust Founder ContentMine.org and Reader Emeritus in Molecular Informatics Dept. Of Chemistry, University of Cambridge, CB2 1EW, UK

AmbrineH commented 3 years ago

My Sparql dictionary heads:

<head>
        <variable name='wikidata'/>
        <variable name='wikidataLabel'/>
        <variable name='_iso3166'/>
        <variable name='wikipedia'/>
        <variable name='alt'/>
        <variable name='synonym'/>
        <variable name='wikidataDescription'/>
        <variable name='term'/>
    </head>
Priya-Jk-15 commented 3 years ago

My SPARQL input heads

<head>
        <variable name='wikidata'/>
        <variable name='wikidataLabel'/>
        <variable name='wikipedia'/>
        <variable name='wikidataAltLabel'/>
        <variable name='wikidataDescription'/>
        <variable name='ICD_10'/>
</head>
Priya-Jk-15 commented 3 years ago

To create the disease dictionary using the input_sparql, I used the syntax

amidict -v --dictionary disease --directory dic --input disease_icd10_sparql create --informat wikisparqlxml --sparqlmap name=wikidataLabel,term=wikidataLabel,description=wikidataDescription,wikidataAltLabel=wikidataAltLabel,wikidataURL=wikidata,wikipediaPage=wikipedia,_p494_icd10code=ICD_10 --transformName wikidataID=EXTRACT(wikidataURL,.*/(.*)) --synonyms=wikidataAltLabel

The disease dictionary was successfully created! It is at https://github.com/petermr/openVirus/blob/master/dictionaries/diseases/disease.xml