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

Add OBO Id Badges for terms that are OBO Ids #310

Open
matthewhorridge opened this issue Mar 20, 2024 · 3 comments
Open

Add OBO Id Badges for terms that are OBO Ids #310

matthewhorridge opened this issue Mar 20, 2024 · 3 comments
Assignees

Comments

@matthewhorridge
Copy link

This is a UI enhancement request. In search results, for terms that are OBO Ids, I would like to be able to clearly see the OBO Id.

I've mocked up an example in the image below to illustrate what I think a solution could be. Here we see a search result for the term that has an OBO Id of CL:0000256. This is the actual string that I searched for "CL:0000256".

image

@jvendetti jvendetti self-assigned this Mar 20, 2024
@jvendetti
Copy link
Member

@mdorf - do I understand correctly that the OBO IDs Matthew refers to are found in the "notation" field in our REST API?

For example, given the following REST call:

https://data.bioontology.org/search?q=melanoma&display_context=false&display_links=false&exact_match=true&include=prefLabel,notation

... I noticed that some of the notation fields are the same as the preferred label, whereas other notation fields resemble the {ontology_acronym}:{term_id} format:

"collection": [
        {
            "prefLabel": "melanoma",
            "notation": "melanoma",
            "@id": "http://www.gamuts.net/entity#melanoma",
            "@type": "http://www.w3.org/2002/07/owl#Class"
        },
        {
            "prefLabel": "melanoma",
            "notation": "DOID:1909",
            "@id": "http://purl.obolibrary.org/obo/DOID_1909",
            "@type": "http://www.w3.org/2002/07/owl#Class"
        },

@mdorf
Copy link
Member

mdorf commented Mar 27, 2024

@jvendetti, the notation field is constructed during the OWL API processing phase. At that time, either the notation property OR the prefixIRI property gets added to each class (unless the actual notation property already natively exists within the ontology, in which case, that value is preserved). At the indexing phase, we add the value of either the notation or the prefixIRI attribute to the notation field in the index. The oboID field is a separate attribute, which is ONLY used in search. It exists in the index schema and gets populated using the logic referred to here:
bmir-radx/radx-project#46 (comment)
and here:
bmir-radx/radx-project#46 (comment)
In some cases, the oboID matches the value of the notation but not universally.

@jvendetti
Copy link
Member

@mdorf - thanks for the reply. I know about the initial processing step where we ensure that all classes coming into BioPortal have either a skos:notation or prefixIRI property.

I think what I was trying to ask is whether the OBO IDs that Matthew refers to are surfaced by the REST API so that clients like the Rails application could display them. Assuming I understood what you said above, it sounds like the OBO IDs only exist as field values in solr's index schema?

For example - if I execute a term search using an OBO ID like NCIT:C20047, I get results back from the REST API. But if I look at the classes in the JSON result set, there's nothing there to indicate if they have associated OBO IDs:

{
  "prefLabel": "Diagnostic or Prognostic Factor",
  "synonym": [
      "Diagnostic or Prognostic Factor"
  ],
  "definition": [
      "A characteristic of an organism that contributes to the diagnosis or treatment of a disease or to the prediction of clinical outcomes."
  ],
  "obsolete": false,
  "ontologyType": "ONTOLOGY",
  "provisional": false,
  "@id": "http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl#C20047",
  "@type": "http://www.w3.org/2002/07/owl#Class"
},
{
  "prefLabel": "Diagnostic or Prognostic Factor",
  "definition": [
      "A characteristic of an organism that contributes to the diagnosis or treatment of a disease or to the prediction of clinical outcomes."
  ],
  "obsolete": false,
  "matchType": "notation",
  "ontologyType": "ONTOLOGY",
  "provisional": false,
  "@id": "http://purl.obolibrary.org/obo/NCIT_C20047",
  "@type": "http://www.w3.org/2002/07/owl#Class"
},

I tried modifying the REST call to use the include parameter to return notation values, but this has a side effect of modifying the makeup of the returned JSON. Keys like obsolete are eliminated, which the Rails application makes use of to alter the display of obsolete classes:

{
  "prefLabel": "Diagnostic or Prognostic Factor",
  "synonym": [
      "Diagnostic or Prognostic Factor"
  ],
  "definition": [
      "A characteristic of an organism that contributes to the diagnosis or treatment of a disease or to the prediction of clinical outcomes."
  ],
  "notation": "Thesaurus:C20047",
  "@id": "http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl#C20047",
  "@type": "http://www.w3.org/2002/07/owl#Class"
},
{
  "prefLabel": "Diagnostic or Prognostic Factor",
  "definition": [
      "A characteristic of an organism that contributes to the diagnosis or treatment of a disease or to the prediction of clinical outcomes."
  ],
  "notation": "NCIT:C20047",
  "@id": "http://purl.obolibrary.org/obo/NCIT_C20047",
  "@type": "http://www.w3.org/2002/07/owl#Class"
},

And currently there is no possibility to adjust the include parameter to get everything required:

"errors": [
  "The `include` query string parameter cannot accept obsolete, please use only prefLabel, synonym, definition, notation, cui, semanticType, properties"
],
"status": 400

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

3 participants