foodon
foodon copied to clipboard
mapping of FooDB to FoodOn
We are interested in global analysis of the FooDB data to identify similar food subgroups and to find potential therapies to remedy excess/deficit of chemical compounds in specific human conditions.
As it stands FooDB does not use FoodOn, which is a pain. So we are looking for a mapping of FoodOn terms to FooDB, to enable things like parent propagation and enrichment analysis.
FWIW mapping by scientific names should be straightforward. FooDB also has a food hierarchy, however for our purposes we could move to work completely with FoodOn as long as we can map the species from FooDB. E.g. FooDB classification for kiwi:
Classification
Fruits Tropical fruits
http://foodb.ca/foods/4
I'd certainly welcome a mapping between the two, and happy to incorporate that on the foodon side via a database cross reference annotation. It looks like Foodb has 728 food items judging by their search page. Do you happen to have a flat list of these? One thing we distinguish is the plant as a whole (and its taxon) from the actual fruit, leaf, stem, root, seed etc. So one question would be where to attach the cross-references to.
I'm curious about your project - is there a website for it?
Cheers,
Damion
I just located the file. I'll have someone on our team run it through a text mining to ontology app; that should provide a decent mapping and invariably some items we'll have to curate into existence.
I have been working on this from a more manual text matching approach--looking forward to what Damion and team come up with...between the two of us...apropos timing to be sure. ~mc
On Wed, Aug 21, 2019 at 1:32 PM Damion Dooley [email protected] wrote:
I just located the file. I'll have someone on our team run it through a text mining to ontology app; that should provide a decent mapping and invariably some items we'll have to curate into existence.
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/FoodOntology/foodon/issues/63?email_source=notifications&email_token=AAMZGI7AG6P3O445V5X3CQDQFWQ5PA5CNFSM4IONW3DKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD43BCLY#issuecomment-523637039, or mute the thread https://github.com/notifications/unsubscribe-auth/AAMZGI6K7P7V5NIPKLQNOULQFWQ5PANCNFSM4IONW3DA .
We're curating the mapping now but it will take another week...
Here is a mapping file from FooDb terms to FoodOn classes that will exist for the next week for review: https://watson.bccdc.med.ubc.ca/lexmapr/temp/221845606988268505477102318172468941135/
If it looks good, we could add DBXrefs in foodon directly to the FooDb items. Alternately, just use the above https://watson.bccdc.med.ubc.ca/lexmapr tool to rerun the job or do future foodon mappings. It is a new service we're just launching after help documentation is finalized.
I should add that we are approaching the mapping of terms with the semantic most of the time that the given food should be treated as an ingredient, so we match "peach" to "peach (whole, raw)". If the ingredient of a recipe is "canned peach" then foodon may have a precomposed term to match, otherwise it will return "peach (whole, raw)" and "food (canned)".
Shall I generate another lexmapr file for your review? It seems like the previous run has expired.
I am following up with the FooDb folks about what they may like to see as a mapping.
Hi all, any updates here?
So far no uptake on the Foodb side, but I can say that one can use the http://mapr.cidgoh.ca/ service to convert any new batch of Foodb food labels to FoodOn identifiers. The previous one I did led to an iteration to make sure FoodOn had coverage of Foodb items, and this should be reflected in the service now.
@ddooley thanks! By food labels do you mean the natural language name for the food, e.g. "Pineapple" or "Mango"? Or the FooDB internal ID for the food, e.g. "FOOD00012" or "FOOD00106" ?
The natural language name. If you put the Foodb id as first column of a comma separated table, and the natural language name as 2nd column, and have first row be column titles, then that service should do a good job of returning FoodOn ids for those terms.
@ddooley Nice, thank you! Any suggestions on resolving from FoodOn to NCBI TaxID?
Many single-source foods have an OWL equivalency statement in the ontology indicating what NCBITaxon they derive from. See this google sheet for plant and seafood linkage: https://docs.google.com/spreadsheets/d/1VJtz4m67tdUNDqRe3m1Okdxll64nTR46GSvCOmb0APE/edit#gid=0 . Its an ongoing project to fill more in though. If you are querying using SPARQL, I'll have an upcoming foodon website help page but in meantime, it helps to run a robot reason command first so that equivalencies are made into simpler subclass statements that can be queried a bit more directly:
http://robot.obolibrary.org/relax
When in the /src/ontology/folder, run:
robot relax --input foodon-merged.owl --output reasoned.owl
When you look at reasoned.owl entry for items that by equivalence are linked to NCBITaxon items, you will see a simpler expression has been added:
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="https://nam12.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpurl.obolibrary.org%2Fobo%2FRO_0001000%2522%2F&data=04%7C01%7Ckatherine.thornton%40yale.edu%7C799be19484b34d00fa5008d9699262e2%7Cdd8cbebb21394df8b4114e3e87abeb5c%7C0%7C0%7C637656899723009171%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=z2Nc%2Bgx3YpR%2BBVc0AFZce40IuNJXy02ZrctwSFPKLOE%3D&reserved=0>
<owl:someValuesFrom rdf:resource="https://nam12.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpurl.obolibrary.org%2Fobo%2FNCBITaxon_29780%2522%2F&data=04%7C01%7Ckatherine.thornton%40yale.edu%7C799be19484b34d00fa5008d9699262e2%7Cdd8cbebb21394df8b4114e3e87abeb5c%7C0%7C0%7C637656899723009171%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=SUf%2BfCS7sUILRYhvVE5U8H1YtRji0w%2BtO4o6Q98WvYQ%3D&reserved=0>
</owl:Restriction>
</rdfs:subClassOf>
Hope that helps?
Woops, I see the reasoned.owl example had a cut and paste from someone else's example with masked URLS. Here is the simpler paste:
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="http://purl.obolibrary.org/obo/RO_0001000"/>
<owl:someValuesFrom rdf:resource="http://purl.obolibrary.org/obo/NCBITaxon_29780"/>
</owl:Restriction>
</rdfs:subClassOf>