foodon icon indicating copy to clipboard operation
foodon copied to clipboard

mapping of FooDB to FoodOn

Open realmarcin opened this issue 5 years ago • 15 comments

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

realmarcin avatar Aug 21 '19 20:08 realmarcin

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

ddooley avatar Aug 21 '19 20:08 ddooley

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.

ddooley avatar Aug 21 '19 20:08 ddooley

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 .

mateolan avatar Aug 21 '19 21:08 mateolan

We're curating the mapping now but it will take another week...

ddooley avatar Aug 25 '19 14:08 ddooley

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.

ddooley avatar Sep 13 '19 12:09 ddooley

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)".

ddooley avatar Sep 13 '19 12:09 ddooley

Shall I generate another lexmapr file for your review? It seems like the previous run has expired.

ddooley avatar Sep 29 '19 07:09 ddooley

I am following up with the FooDb folks about what they may like to see as a mapping.

ddooley avatar Nov 04 '19 14:11 ddooley

Hi all, any updates here?

g-simmons avatar Oct 12 '21 01:10 g-simmons

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 avatar Oct 12 '21 02:10 ddooley

@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" ?

g-simmons avatar Oct 12 '21 02:10 g-simmons

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 avatar Oct 12 '21 03:10 ddooley

@ddooley Nice, thank you! Any suggestions on resolving from FoodOn to NCBI TaxID?

g-simmons avatar Oct 12 '21 03:10 g-simmons

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&amp;data=04%7C01%7Ckatherine.thornton%40yale.edu%7C799be19484b34d00fa5008d9699262e2%7Cdd8cbebb21394df8b4114e3e87abeb5c%7C0%7C0%7C637656899723009171%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=z2Nc%2Bgx3YpR%2BBVc0AFZce40IuNJXy02ZrctwSFPKLOE%3D&amp;reserved=0>
              <owl:someValuesFrom rdf:resource="https://nam12.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpurl.obolibrary.org%2Fobo%2FNCBITaxon_29780%2522%2F&amp;data=04%7C01%7Ckatherine.thornton%40yale.edu%7C799be19484b34d00fa5008d9699262e2%7Cdd8cbebb21394df8b4114e3e87abeb5c%7C0%7C0%7C637656899723009171%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=SUf%2BfCS7sUILRYhvVE5U8H1YtRji0w%2BtO4o6Q98WvYQ%3D&amp;reserved=0>
          </owl:Restriction>
      </rdfs:subClassOf>

Hope that helps?

ddooley avatar Oct 12 '21 04:10 ddooley

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>

ddooley avatar Oct 16 '21 21:10 ddooley