Open matthewhorridge opened 4 months ago
@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:
... 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"
},
@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:
https://github.com/bmir-radx/radx-project/issues/46#issuecomment-1939782535
and here:
https://github.com/bmir-radx/radx-project/issues/46#issuecomment-1939932614
In some cases, the oboID
matches the value of the notation
but not universally.
@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
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".